zoukankan      html  css  js  c++  java
  • 机器学习公开课笔记第七周之主成分分析法

    一,主成分分析法(Principal Component Analysis)

    1,主成分分析法(PCA)是比较常用的数据压缩算法,把高维度数据投影到低维度平面(超平面)上,使投影误差平方最小

    2,PCA与线性回归区别

    在代价函数里线性回归计算的是预测值与实际值的误差(y的差值),PCA里计算的是投影与原特征的差值(x的差值), PCA不需要y值

    二,PCA计算方法

    1,PCA算法的预处理

    进行PCA之前先进行特征缩放,使所有的特征的数据范围在同一量级,否则会造成有些取值范围大的特征投直接全部落到超平面上,投影误差小,范围小的投影误差大

    2,PCA算法的目标

    假如从n维数据降到k维数据,目标是找到代表投影平面的k个向量(u^{(1)}, u^{(2},.... u^{(k}),把该数据到超平面的投影来代替原始数据

     

    3,PCA算法步骤

     

    从n维降到k维的算法步骤:

    1),计算协方差矩阵(covariance matrix)

    (sum = frac{1}{m} sum_{i=1}^{i=m}(X^{(i)})(X^{(i)})^T = frac{1}{m} (X^{T}*X)) 

    2),计算协方差矩阵(covariance matrix)的特征向量(eigenvector)

    [U, S, V] = svd(Sigma);

    (U = egin{bmatrix}
    | & | & | & ... & | \
    u^{(1)} & u^{(2)} & u^{(3)} & ... & u^{(n)} \
    | & | & | & ... & |
    end{bmatrix} in mathbb{R}^{n ast n} )

    3),选定U的前k列乘以X获得投影之后的坐标(特征)Z

    (z = egin{bmatrix}
    | & | & | & ... & | \ 
    u^{(1)} & u^{(2)} & u^{(3)} & ... & u^{(k)} \ 
    | & | & | & ... & |
    end{bmatrix}^{T} * x, x in mathbb{R}^{n ast 1})

    (Z^ = X * egin{bmatrix}
    | & | & | & ... & | \ 
    u^{(1)} & u^{(2)} & u^{(3)} & ... & u^{(k)} \ 
    | & | & | & ... & |
    end{bmatrix}, X in mathbb{R}^{m ast n} )

    4,Octave或MATLAB伪代码

     5,从投影数据还原成原数据

    设(Ureduce = egin{bmatrix}
    | & | & | & ... & | \ 
    u^{(1)} & u^{(2)} & u^{(3)} & ... & u^{(k)} \ 
    | & | & | & ... & |
    end{bmatrix} )

    (x_{approx} = Ureduce * z)

    (X_{approx} = Z * Ureduce^{T})

    还原回的(x_{approx})与原(x)应该非常接近

    三,使用PCA算法的建议

    1,如何选择投影平面的维度K的大小

    求出差异性小于0.01~0.05的k的最小值,保留99%~95%的差异性

    (frac{frac{1}{m}sum_{i=1}^{m} left | x^{(i)} - x_{approx}^{(i)}   ight | ^{2}}{frac{1}{m}sum_{i=1}^{m} left | x^{(i)} ight |^{2}} leqslant 0.01 sim 0.05)

    2,选择k的算法步骤

    一种是从小到大依次选择k值,计算差异值是否符合自己的要求,这样至多会执行n次SVD算法

    还有一种是利用SVD算法返回的S值

    S是一个对角矩阵(对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为 0 的矩阵)

    (S = egin{bmatrix}
    S_{11} & 0 & 0 & 0 & 0\
    0 &S_{22} & 0 & 0 & 0\
    0 & 0 &S_{33} & 0 & 0\
    0 & 0 & 0 &... & 0\
    0 & 0 & 0 & 0 &S_{nn}
    end{bmatrix})

    对于给定k

    (frac{frac{1}{m}sum_{i=1}^{m} left | x^{(i)} - x_{approx}^{(i)} ight | ^{2}}{frac{1}{m}sum_{i=1}^{m} left | x^{(i)} ight |^{2}}  = 1 - frac{sum_{ii=1}^{k}S_{ii}}{sum_{ii=1}^{n}S_{ii}} leqslant 0.01 Rightarrow frac{sum_{ii=1}^{k}S_{ii}}{sum_{ii=1}^{n}S_{ii}} geqslant 0.99)

    总结起来就是

     3,PCA应用于监督学习(Supervised Learning)

    PCA可压缩监督学习的数据特征,从而提高学习算法的速率,由((x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),..... ,(x^{(m)},y^{(m)}) Rightarrow (z^{(1)},y^{(1)}),(z^{(2)},y^{(2)}),..... ,(z^{(m)},y^{(m)})) 

    如果无监督学习应用PCA,不仅要应用于(X_{train}),而且要应用于(X_{CV}),(X_{test})

     4,PCA应用

    PCA应用于数据压缩和数据可视化

     5,PCA不能用于抑制过度拟合

    因为用PCA压缩数据,数据多少总会失真,抑制过度拟合最好还是用正则化

     6,不要在设计机器学习系统的开始阶段就使用PCA

    PCA是一种会使原始数据失真的优化方法,不要一开始就使用

    使用PCA之前必须先用原来的方法试试,如果学习速度太慢不符合要求,或者想可视化数据,第二次再使用PCA算法

  • 相关阅读:
    IBM QRadar SIEM 社区版安装
    haproxy+keepalived+rabbitmq3.8实现集群的高可用
    windows使用vmware虚拟机搭建centos7开发环境①打通笔记表和虚拟机之间的网络
    mysql8学习笔记②选择合适的存储引擎和字段类型
    mysql8学习笔记①业务分析和数据库三范式
    centos7.8环境安装rabbitmq3.8.5最新版并设置集群
    centos7环境下编译安装redis5.0.8
    使用ansible的palybook创建指定的www站点nginx和apache配置
    如何在element-UI 组件的change事件中传递自定义参数
    Go 相关库
  • 原文地址:https://www.cnblogs.com/xchaos/p/6769646.html
Copyright © 2011-2022 走看看