机器学习算法学习路上的伙伴们,早安、午安、晚安,机器学习一些基础算法的初级知识学的差不多啦,跟着《机器学习算法实战》这本书来看看在使用这些算法之前,对数据处理的一些方法。首先看看降维(dimensionality reduction)。
降维简单说就是指减少计算时的特征维度,因为很多特征可能对于最后的分析不重要,尤其是当特征值很多的情况下,完全可以通过减少这些不重要的特征来降低计算的复杂度,提升算法效率,同时一定程度上可以去除噪声。目前,主要降维方法有:主成分分析法(Principal Component Analysis, PCA)、因子分析法(Factor Analysis)、独立成分分析(Independent Component Analysis, ICA),本篇文章主要学习主成分分析法(PCA)。
主成分分析法(Principal Component Analysis, PCA)
你还记得高维向量空间里的向量的基么?面对高维的向量,求解一些线性不相关列向量来表示向量空间内的任何一个向量;主成分分析方法其实也是这样的想法,希望找到这些主要的特征。简单说:主成分分析(PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
最大方差理论:在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。
如图1所示,样本在u1上的投影方差较大,在u2的投影方差较小,那么可以认为u2上的投影是由噪声引起的。因此,u1就是主成分方向。那么,实际计算中,u1,u2这种轴怎么计算呢,主要是依据协方差矩阵。
啥是协方差矩阵?
协方差:当存在两个变量时(X,Y),分析他们的关系时就出现了协方差的概念:
二维协方差公式:Cov(X,Y)=E{[X−E(X)][Y−E(Y)]}=E(XY)−E(X)E(Y)
当样本含有大量维度(随机变量多)的时候,我们就需要使用矩阵来刻画各个维度之间的关联关系。设某个矩阵如下:(下面矩阵中每一行代表一个样本,每一列代表一个随机变量。)
则此时各个变量之间的关系就得用协方差矩阵来表示:
图3中,协方差矩阵对角线上的值表示对应特征的方差。
综上,再简单说明下PCA的计算模式:在PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择饿的是原始数据中方差最大的方向(也就是协方差对角线上数值最大的特征),第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目。事实表明,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行了降维处理。
PCA伪代码
将数据转换为前N个主成分的伪代码大致如下:去除平均值(将数据统一在坐标原点,利于计算)->计算协方差矩阵->计算协方差矩阵的特征值和特征向量->将特征值从大到小排序->保留最上面的N个特征向量->将数据转换到上述N个特征向量构建的新空间中。
代码如下:
结合数据,查看效果(蓝色的三角形表示原始点,红色的圆点表示主成分分析得到的):
好哒,关于主成分分析法PCA的初步学习基本到这里,希望对大家有用,也请大牛不吝赐教,非常感谢。