机器学习算法(五):主成分分析PCA

目录

1 PCA简介

2 PCA实例

3 PCA推导

3.1 最大方差理论与最大可分性

3.1.1 最大方差理论

3.1.2 最大可分性

3.2 最小平方误差理论与最近重构性

3.2.1 最小平方误差理论

3.2.2 最近重构性

4 PCA算法

5  PCA理论意义

6  总结与讨论


1 PCA简介

       在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。

      因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析因子分析就属于这类降维的方法。

       数据降维:假设三维空间中有一系列点,这些点分布在一个过原点的斜面上,如果你用自然坐标系x,y,z这三个轴来表示这组数据的话,需要使用三个维度,而事实上,这些点的分布仅仅是在一个二维的平面上。如果你再仔细想想,能不能把x,y,z坐标系旋转一下,使数据所在平面与x,y平面重合。如果把旋转后的坐标系记为x',y',z',那么这组数据的表示只用x'和y'两个维度表示即可。如果想恢复原来的表示方式,那就得把这两个坐标之间的变换矩阵存下来。这样就能把数据维度降下来了。但是,我们要看到这个过程的本质,如果把这些数据按行或者按列排成一个矩阵,那么这个矩阵的秩就是2。这些数据之间是有相关性的,这些数据构成的过原点的向量的最大线性无关组包含2个向量,这就是为什么一开始就假设平面过原点的原因。那么如果平面不过原点呢?这就是数据中心化的缘故。将坐标原点平移到数据中心,这样原本不相关的数据在这个新坐标系中就有相关性了。有趣的是,三点一定共面,也就是说三维空间中任意三点中心化后都是线性相关的,一般来讲n维空间中的n个点一定能在一个n-1维子空间中分析。

        上一段文字中,认为把数据降维后并没有丢弃任何东西,因为这些数据在平面以外的第三个维度的分量都为0。现在,假设这些数据在z'轴有一个很小的抖动,那么我们仍然用上述的二维表示这些数据,理由是我们可以认为这两个轴的信息是数据的主成分,而这些信息对于我们的分析已经足够了,z'轴上的抖动很有可能是噪声,也就是说本来这组数据是有相关性的,噪声的引入,导致了数据不完全相关,但是,这些数据在z'轴上的分布原点构成的夹角非常小,也就是说在z'轴上有很大的相关性,综合这些考虑,就可以认为数据在x',y' 轴上的投影构成了数据的主成分。

        特征选择的问题,其实就是要剔除的特征主要是和类标签无关的特征。而这里的特征很多是和类标签有关的,但里面存在噪声或者冗余。在这种情况下,需要一种特征降维的方法来减少特征数,减少噪音和冗余,减少过度拟合的可能性。

        主成分分析(Principal Component Analysis)是最常用的一种降维方法,是利用在正交属性空间上的样本点,用一个超平面对所有样本进行恰当的表达。 

        机器学习算法(五):主成分分析PCA_第1张图片

       如果,这里我们 可以用直线的斜率截距(k,b)来表示超平面的一些点,点在直线上的投影点(这时可以把直线看作一维的)来表示。 
     若存在这样的超平面,则应具有的性质为

  • 最近重构性:样本点到这个超平面的距离都足够近(对应下文 3.2最小平方误差理论)
  • 最大可分性: 样本点在这个超平面上的投影能尽可能分开(对应下文 3.1最大方差理论)

    PCA的思想是将n维特征映射到k维上(k

     若内积空间中两向量的内积为0,则称它们是正交的。对称阵不同的特征值对应的特征向量是相互正交的,证明如下:

            机器学习算法(五):主成分分析PCA_第2张图片

(1)矩阵转置基本性质:

               机器学习算法(五):主成分分析PCA_第3张图片

(2)方差和协方差的定义:

        在统计学中,方差是用来度量单个随机变量离散程度,而协方差则一般用来刻画两个随机变量相似程度,其中,方差的计算公式为

        机器学习算法(五):主成分分析PCA_第4张图片

        其中, 表示样本量,符号  表示观测样本的均值,这个定义在初中阶段就已经开始接触了。

        在此基础上,协方差的计算公式被定义为: 

        机器学习算法(五):主成分分析PCA_第5张图片 

        在公式中,符号  分别表示两个随机变量所对应的观测样本均值,据此,我们发现:方差 可视作随机变量  关于其自身的协方差  。

(3)从方差/协方差到协方差矩阵:  

       根据方差的定义,给定   个随机变量  ,则这些随机变量的方差

        

        其中,为方便书写,  表示随机变量  中的第  个观测样本,  表示样本量,每个随机变量所对应的观测样本数量均为  。 

        对于这些随机变量,我们还可以根据协方差的定义,求出两两之间的协方差,即

       机器学习算法(五):主成分分析PCA_第6张图片

        因此,协方差矩阵为:

        机器学习算法(五):主成分分析PCA_第7张图片

        其中,对角线上的元素为各个随机变量的方差,非对角线上的元素为两两随机变量之间的协方差,根据协方差的定义,我们可以认定:矩阵  为对称矩阵(symmetric matrix),其大小为  。 

 2 PCA实例

        现在假设有一组数据如下:

                 

       行代表了样例,列代表特征,这里有10个样例,每个样例两个特征。可以这样认为,有10篇文档,x是10篇文档中“learn”出现的TF-IDF,y是10篇文档中“study”出现的TF-IDF。

       (1)第一步数据预处理,进行均值标准化或者特征缩放分别求x和y的平均值,然后对于所有的样例,都减去对应的均值(均值标准化)。这里x的均值是1.81,y的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到

               

     (2)第二步求特征协方差矩阵。

             如果数据是3维,那么协方差矩阵是:

               

             这里只有x和y,协方差矩阵为2*2,求解得

              

        对角线上分别是x和y的方差,非对角线上是协方差

        在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。期望值分别为 E[X]E[Y的两个实随机变量XY之间的协方差Cov(X,Y)定义为:

        

        协方差是衡量两个变量同时变化的变化程度。协方差大于0表示x和y若一个增,另一个也增;小于0表示一个增,一个减。如果x和y统计独立的,那么二者之间的协方差就是;但是协方差是0,并不能说明x和y是独立的。协方差绝对值越大,两者对彼此的影响越大,反之越小。协方差是没有单位的量,因此,如果同样的两个变量所采用的量纲发生变化,它们的协方差也会产生数值上的变化。

        (3)第三步求协方差的特征值和特征向量,得到

                

         上面是两个特征值,下面是对应的特征向量,这里的特征向量都归一化为单位向量

        线性代数:如何求特征值和特征向量

        https://jingyan.baidu.com/article/27fa7326afb4c146f8271ff3.html

  单位向量

  • 一个单位向量的平面直角坐标系上的坐标表示可以是:(n,k) ,则有n²+k²=1。
  • 一个非零向量除以它的模,可得所需单位向量。设原来的向量是,则与它方向相同的的单位向量

       (4)第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵

            这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是(-0.677873399,  -0.735178656)T

       (5)第五步,将样本点投影到选取的特征向量上。假设样例数m特征数n,减去均值后的样本矩阵为DataAdjust(m*n)协方差矩阵n*n,选取的k个特征向量组成的矩阵为EigenVectors(n*k)。那么投影后的数据FinalData

           FinalData(10*1) = DataAdjust(10*2矩阵) x 特征向量(-0.677873399, -0.735178656)T

            FinalData(m*k) = DataAdjust (m*n) x 特征向量 (n*k)

          得到的结果是:

                

     这样,就将原始样例的n维特征变成了k维,这k维就是原始特征k维上的投影。

    上面的数据可以认为是learn和study特征融合为一个新的特征叫做LS特征,该特征基本上代表了这两个特征。上述过程如下图2描述:

              

        正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量由于协方差矩阵是对称的,因此其特征向量正交。将两向量做内积,得出结果为0,则两特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量对应的轴上做投影。

       整个PCA过程貌似及其简单,就是求协方差的特征值特征向量,然后做数据转换。但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的k维向量?其背后隐藏的意义是什么?整个PCA的意义是什么?

3 PCA推导

        

        假定只有二维,即只有两个变量,它们由横坐标和纵坐标所代表;因此每个观测值都有相应于这两个坐标轴的两个坐标值;如果这些数据形成一个椭圆形状的点阵,那么这个椭圆有一个长轴和一个短轴。在短轴方向上,数据变化很少;在极端的情况,短轴如果退化成一点,那只有在长轴的方向才能够解释这些点的变化了;这样,由二维到一维的降维就自然完成了。

        上图中,u1就是主成分方向,然后在二维空间中取和u1方向正交的方向,就是u2的方向。则n个数据在u1轴离散程度最大(方差最大),数据在u1上的投影代表了原始数据的绝大部分信息,即使不考虑u2,信息损失也不多。而且,u1、u2不相关。只考虑u1时,二维降为一维。

        椭圆的长短轴相差得越大,降维也越有道理。

        有三个理论来解释PCA推导,即要解释为什么协方差矩阵的特征向量就是k维理想特征:分别是根据方差推导(最大方差理论与最大可分性)最小错误理论坐标轴相关度理论。这里简单探讨前两种,最后一种在讨论PCA意义时简单概述。

3.1 根据方差(最大方差理论与最大可分性)

3.1.1 最大方差理论

     在信号处理中认为信号具有较大的方差噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。如前面的图,样本在u1上的投影方差较大,在u2上的投影方差较小,那么可认为u2上的投影是由噪声引起的。

     因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大

     比如我们将下图中的5个点投影到某一维上,这里用一条过原点的直线表示(数据已经中心化):

     

      假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据之前的方差最大化理论,左边的好,因为投影后的样本点之间方差最大(也可以说是投影的绝对值之和最大)。

      计算投影的方法见下图5:

       机器学习算法(五):主成分分析PCA_第8张图片

       图中,红色点表示样例蓝色点表示u上的投影u直线的斜率也是直线的方向向量,而且u是单位向量蓝色点在u上的投影点,离原点的距离是(即或者)。由于这些样本点(样例)的每一维特征均值都为0,因此投影到u上的样本点(只有一个到原点的距离值)的均值仍然是0

      回到上面左右图中的左图,我们要求的是最佳的u,使得投影后的样本点方差最大

      由于投影后均值为0,因此方差为:

                  机器学习算法(五):主成分分析PCA_第9张图片

       中间那部分很熟悉啊,就是样本特征的协方差矩阵的均值为0,一般协方差矩阵都除以m-1,这里用m)。

      为什么样本方差(sample variance)的分母是 n-1:为什么样本方差(sample variance)的分母是 n-1?_意念回复的博客-CSDN博客_样本方差为什么是n-1

      用来表示表示,那么上式写作

      由于u是单位向量,即,上式两边都左乘u,,即就是的特征值,u是特征向量。最佳的投影直线是特征值最大时对应的特征向量,其次是第二大对应的特征向量,依次类推。

机器学习算法(五):主成分分析PCA_第10张图片

机器学习算法(五):主成分分析PCA_第11张图片      因此,我们只需要对协方差矩阵进行特征值分解,得到的前k大特征值对应的特征向量就是最佳的k维新特征,而且这k维新特征是正交的。得到前k个u以后,样例通过以下变换可以得到新的样本。 

                机器学习算法(五):主成分分析PCA_第12张图片    

      其中的第 j 维就是上的投影。

     通过选取最大的k个u,使得方差较小的特征(如噪声)被丢弃。

3.1.2 最大可分性

  • 最大可分性: 样本点在这个超平面上的投影能尽可能分开

        样本点在新空间上的投影为,在新坐标系中的投影方差为,要使所有的样本的投影方差和最大,也就是最大化 的迹,可知优化目标函数为

               

         注:在线性代数中,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A(或迹数),一般记作tr(A)

     求解该优化函数,d′ 为降维后的样本特征维度

          

           其中,

            对ω求导,得到,可以知道ω为的特征向量。 ω求导有疑问??)

           W为d'个特征向量组成的矩阵,而−λ的若干特征值组成的矩阵,特征值在主对角线上,其余位置为0。当我们将数据集从d维降到d'维时,需要找到最大的d'个特征值对应的特征向量。这d'个特征向量组成的矩阵W即为我们需要的矩阵。对于原始数据集,我们只需要用,就可以把原始数据集降维到最小投影距离的d'维数据集。

        注:在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有 n 个变量与 k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。

       矩阵的迹求导:矩阵求导_意念回复的博客-CSDN博客_前导不变后导转置 第5章

3.2 最小平方误差理论与最近重构性

3.2.1 最小平方误差理论

       机器学习算法(五):主成分分析PCA_第13张图片

        假设有这样的二维样本点(红色点),回顾我们前面探讨的是求一条直线,使得样本点投影到直线上的点的方差最大。本质是求直线,那么度量直线求的好不好,不仅仅只有方差最大化的方法。再回想我们最开始学习的线性回归等,目的也是求一个线性函数使得直线能够最佳拟合样本点,那么我们能不能认为最佳的直线就是回归后的直线呢?回归时我们的最小二乘法度量的是样本点直线坐标轴距离。比如这个问题中,特征是x类标签是y。回归时最小二乘法度量的是距离d。如果使用回归方法来度量最佳直线,那么就是直接在原始样本上做回归了,跟特征选择就没什么关系了。

     因此,我们打算选用另外一种评价直线好坏的方法,使用点到直线的距离d’来度量。

     现在有n个样本点,每个样本点为m维(这节内容中使用的符号与上面的不太一致,需要重新理解符号的意义)。将样本点在直线上的投影记为,那么我们就是要最小化

        

    这个公式称作最小平方误差(Least Squared Error)。

    而确定一条直线,一般只需要确定一个点,并且确定方向即可

   (1)确定点

      假设要在空间中找一点来代表这n个样本点,“代表”这个词不是量化的,因此要量化的话,我们就是要找一个m维的,使得 

        

      最小。其中平方错误评价函数(squared-error criterion function)。

      假设m为n个样本点的均值

        

      那么平方错误可以写作:

        机器学习算法(五):主成分分析PCA_第14张图片

      后项与无关,看做常量,而,因此最小化时,是样本点均值。

     (2)确定方向

             我们从拉出要求的直线(这条直线要过点m),假设直线的方向是单位向量e。那么直线上任意一点,比如就可以用点me来表示。 

             

              其中到点m的距离。

              重新定义最小平方误差

             

              这里的k只是相当于i就是最小平方误差函数,其中的未知参数是e

              实际上是求的最小值。首先将上式展开:    

            机器学习算法(五):主成分分析PCA_第15张图片

      ①对进行求导:我们首先固定e,将其看做是常量,,然后对进行求导,得

        

       这个结果意思是说,如果知道了e,那么将e做内积,就可以知道了e上的投影离m的长度距离。

      ②对e求偏导数:然后是固定,对e求偏导数,我们先将公式(8)代入,得          

          机器学习算法(五):主成分分析PCA_第16张图片

        其中,与协方差矩阵类似,只是缺少个分母n-1,我们称之为散列矩阵(scatter matrix)。

        然后可以对e求偏导数,但是e需要首先满足,引入拉格朗日乘子,来使最大最小),令

                

         求偏导 

               

        这里求导时可以将看作是,将看做是。         

        导数等于0时,得

             

      两边除以n-1就变成了,对协方差矩阵求特征值向量了。

     从不同的思路出发,最后得到同一个结果,对协方差矩阵求特征向量,求得后特征向量上就成为了新的坐标,如下图:

        机器学习算法(五):主成分分析PCA_第17张图片

           这时候点都聚集在新的坐标轴周围,因为我们使用的最小平方误差的意义就在此。

3.2.2 最近重构性

       假定对数据样本进行了中心化,即Σ,投影变换后得到的新坐标系为{ω1,ω2,…,ωd},其中ωi标准正交基向量,若丢弃新坐标系中的部分向量,则可将维度降为d′,假设现在丢弃后的坐标系为W={ω1,ω2,…,ωd′},则样本点在低维坐标系中的投影,其中 xi 在新坐标系下第 j 维的坐标,若基于 zi 来重构 xi ,则得到
        对整个训练集,原样本点 xi 与基于投影重构的样本点之间的距离为 

        机器学习算法(五):主成分分析PCA_第18张图片

     最后一步利用了tr(AB)=tr(BA)

     根据最近重构性,可得优化目标函数 

       

        其中 ωj 标准正交基协方差矩阵。

4 PCA算法

    输入:样本集D={x1,,˙xm},低维空间维数d′
    过程:

  1.  对所有样本进行中心化
  2. 计算样本的协方差
  3. 对协方差特征值分解
  4. 取最大的d′个特征值所对应的特征向量ω1,ω2,dots,ω3;

      输出:投影矩阵W={ω1,…,ωd′}

     代码:https://blog.csdn.net/u010910642/article/details/51442939

5  PCA理论意义

       PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA要保证降维后,还要保证数据的特性损失最小。再看回顾一下PCA的效果。经过PCA处理后,二维数据投影到一维上可以有以下几种情况:      我们认为左图好,一方面是投影后方差最大,一方面是点到直线的距离平方和最小,而且直线过样本点的中心点。为什么右边的投影效果比较差?直觉是因为坐标轴之间相关,以至于去掉一个坐标轴,就会使得坐标点无法被单独一个坐标轴确定。

       PCA得到的k个坐标轴实际上是k个特征向量,由于协方差矩阵对称,因此k个特征向量正交。看下面的计算过程。

      假设我们还是用来表示样例,m个样例n个特征。特征向量为e,      得到的新的样例矩阵就是m个样例k个特征向量的投影,也是这k个特征向量线性组合e之间是正交的。从矩阵乘法中可以看出,PCA所做的变换是将原始样本点(n维),投影到k个正交的坐标系中去,丢弃其他维度的信息。

      举个例子,假设宇宙是n维的(霍金说是11维的),我们得到银河系中每个星星的坐标(相对于银河系中心的n维向量),然而我们想用二维坐标去逼近这些样本点,假设算出来的协方差矩阵的特征向量分别是图中的水平和竖直方向,那么我们建议以银河系中心为原点的x和y坐标轴,所有的星星都投影到x和y上,得到下面的图片。然而我们丢弃了每个星星离我们的远近距离等信息。

6  总结与讨论

      PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

      PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。 
但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。为线性的空间中。这类根据先验知识对数据预先进行非线性转换的方法就成为kernel-PCA,它扩展了PCA能够处理的问题的范围,又可以结合一些先验约束,是比较流行的方法。

      有时数据的分布并不是满足高斯分布

      高斯分布:正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二项分布的渐近公式中得到。正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

      如图 5所示,在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式      图 5:数据的分布并不满足高斯分布,呈明显的十字星状。 
     这种情况下,方差最大的方向并不是最优主元方向。

     另外PCA还可以用于预测矩阵中缺失的元素

7 主成分分析(PCA)主成分维度个数怎么选择?

学术界标准95%。

确定主成分数量有三个标准:

1、 Kaiser-Harris准则建议保留特征值大于1的主成分,也就是y大于1的主成分。特征值小于1的成分所解释的方差比包含在单个变量中的方差少。

2、 Cattell碎石检验,绘制了特征值与主成分数的图形,这类图形可以展示图形弯曲情况,在图形变化最大处之上的主成分都可以保留。

3、 依据与初始矩阵相同大小的随机数据矩阵来判断要提取的特征值。若基于真实数据的某个特征值大于一组随机数据矩阵相应的平均特征值,那么该主成分可以保留。

根据图示,选择两个主成分比较合适:

机器学习算法(五):主成分分析PCA_第19张图片

 

参考:主成分分析(PCA)原理详解_李春春的专栏-CSDN博客_主成分分析

一篇深入剖析PCA的好文 - 能力工场-小马哥 - 博客园

https://blog.csdn.net/u010910642/article/details/51442939

样本方差的无偏估计与(n-1)的由来:样本方差的无偏估计与(n-1)的由来_真实的荒漠_新浪博客

协方差矩阵:PCA (主成分分析)详解 (写给初学者)_浩瀚之水的专栏-CSDN博客_pca分析

矩阵微分:矩阵微分(变分)法 - 百度文库

学渣笔记之矩阵的导数与迹 - 狂徒归来 - 博客园

你可能感兴趣的:(机器学习,机器学习算法,机器学习,算法,人工智能)