zoukankan      html  css  js  c++  java
  • SVD小结

    1.矩阵分解

    假设一个矩阵Data是m行n列,SVD(奇异值分解)将Data分解为U,E,VT 三个矩阵:

    Datam*n=Um*kEk*kVTk*n

    E是一个对角矩阵,对角元素为奇异值,对应Data的奇异值,即Data*DataT特征值的平方

    2.选取特征

    下面确定选取哪几维特征实现降维,去除噪声和冗余信息,用低维数据集表示原数据集。

    典型做法是保留矩阵90%能量信息,公式如下,先选一个值h:

    奇异阵的平方 sig=ETE

    如果奇异阵的平方中前i项的和大于奇异阵的平方总和,即sum(sig[:h]) > sum(sig)*0.9,就可以把原矩阵转换成一个h维的矩阵,新矩阵具体为:

    newDatam*n=DataTm*n * U[:,:h]m*h * E-1h*h

    3.python实现

    numpy中线性代数工具箱linalg包的svd方法可方便得到奇异阵E。另,linalg包的norm方法可用于计算范数。

    SVD一些典型应用如推荐系统,06年的Netflix大赛即使用SVD。

  • 相关阅读:
    人月神话阅读笔记01
    HTML中常用meta整理
    前端开发中的SEO
    webGL学习笔记
    webGL 学习教程
    HTMl5的sessionStorage和localStorage
    Validform使用
    gulp详细入门教程
    gulp.spriteSmith使用
    gulp.spritesmith修改px为rem单位
  • 原文地址:https://www.cnblogs.com/ffan/p/3762449.html
Copyright © 2011-2022 走看看