PCA(主成分分析)-------原理,推导,步骤、实例、代码

最近一直在学习主成分分析(PCA),所以想把最近学的一点知识整理一下,如果有不对的还请大家帮忙指正,共同学习。

一、PCA简介

1.概念:主成分分析是一种统计方法,通过正交变换将一组可能存在相关性的变量转换成一组线性不相关的变量,转换后的这组变量叫主成分。

2.思想:PCA的思想是将n维特征映射到m维上(m<n),这m维是全新的正交特征,称为主成分,这m维的特征是重新构造出来的,不是简单的从n维特征中减去n-m维特征。PCA的核心思想就是将数据沿最大方向投影,数据更易于区分。

二、PCA推导

1.给定一组数据

     Z={z1,z2,z3,z4......zn}; z是一个列向量,每个z代表一个特征,这里是n个特征,z向量的长度代表样本个数。

2.中心化数据  

 求出每个特征的均值       

                         

数据减去均值后为  X={z1-u1,z2-u2,......zn-un};

3.中心化之后的数据,我们寻找可以让分布散的最开的方向d1,也就是说在d1方向上的投影的绝对值之和最大(也可以说方差最大),计算投影的方法就是将x与d1做内积,由于只需要求d1的方向,所以设d1是单位向量。

也就是最大化下式:

                   

为了把绝对值去掉我们最大化  

            

两个向量做内积相当于矩阵乘法

                          

目标函数为

                          

又因为d1与i无关,所以目标函数为

                             

我们的目标函数如果没有,它就是个标准的二次型。并且XX'(为了方便,用'表示转置)得到的矩阵是一个半正定的对称阵!为什么?首先XX'是对称阵,因为(XX')'=XX',下面证明它是半正定,什么是半正定?就是所有特征值大于等于0。

假设XX'的某一个特征值为,对应的特征向量为,则有:

                                                                             

                                                                 

                                                                

                      

                                                      

证明完毕!对于半正定阵的二次型,存在最大值!现在问题就是如何求目标函数的最大值?以及取最大值时d1的方向?

接下来我们选择使用奇异值分解(svd)来求最大方向

首先,对于向量x,其二范数(也就是模长)的平方为:

                                   

所以有:

                            

把二次型化成一个范数的形式,最大化上式也即这个问题:对于一个矩阵,它对一个向量做变换,变换前后的向量的模长伸缩尺度如何才能最大?这个很有趣,简直就是把矩阵的真面目给暴露出来了。为了给出解答,下面引入矩阵分析中的一个定理:

                         

表示矩阵A的最大奇异值!一个矩阵A的奇异值为AA'(或A'A)的特征值开平方,前面讲过AA'的特征值都大于等于0。当x为单位向量时,上式就是我们的目标函数表达式。然而,上式只是告诉我们能取到最大值是多少,并没有说取到最大值时x的方向,要想知道取到最大值时的方向,那就来证明这个定理吧!

考察对称阵

                   

               

为其n个特征值,并令与之对应的单位特征向量为:

                  

对了,忘了提醒,对称阵不同特征值对应的特征向量两两正交!这组特征向量构成了空间中的一组单位正交基。

任意取一个向量x,将其表示为

                             

                          

           

代入上式可得

     

由于这些单位特征向量两两正交,只有相同的做内积为1,不同的做内积为0.所以上式做内积出来的结果为:

     

根据特征值的大小关系有

                        

所以

                            

定理得证!

显然,当时取得最大值

                        

                                        

再回到我们的问题,需要最大化:

                                       

将X'代入上面证明过程中的矩阵A,则d1的方向即为A'A=(X')'X'=XX'对大特征值对应的特征向量的方向!

所以第一主轴已经找到,第二主轴为次大特征值对应的特征向量的方向,以此类推。

三、PCA降维步骤

1.我们一般选择一行是一个特征,对每个特征求平均值;原来的数据减去平均值得到新的中心化之后的数据;

2.求特征协方差矩阵;

3.根据协方差矩阵,求特征值与特征向量

4.对特征值按照降序的顺序排列,相应的也给出特征向量,选择几个主成分,求投影矩阵。

5.根据投影矩阵求出我们降维后的数据。

四、简单实例

在这里我们有两个特征即语文成绩与数学成绩,样本数为5,这里为了讲解方便就选择了5。
                                                                                           表1
学生1学生2学生3学生4学生5
数学成绩10085756990
语文成绩8582818483
首先假设语文成绩与数学成绩不相关,也就是说两者的成绩没有关系(语文考多少与数学考多少无关)。从表1中可以看出数学成绩是数据的主要成分(数学成绩相差较大)。为什么我们一眼就可以看出了主成分呢,因为我们坐标轴选对了。我们再来看下表2。
表2
学生编号语文数学物理化学英语历史
1846561727981
2647777765570
3656763495767
4748069756374
5847470807482

这次我们选择的样本依旧是5,但是特征项增加了,这次是不是看不出主成分了,因为在坐标系下数据分布很散乱。对于更高维的数据,能想象其分布吗?就算能描述分布,如何精确地找到这些主成分的轴?如何衡量你提取的主成分到底占了整个数据的多少信息?所以,我们就要用到主成分分析的处理方法。我们先对表2进行主成分分析找到主成分。

(1).对每个特征求均值

均值为:

74.2=(84+64+65+74+84)/5

以此类推

(2).去均值后的矩阵(每一行是一个特征)

9.8=84-74.2   -10.2=64-74.2  -9.2=68-74.2  -0.2=74-74.2  9.8=84-74.2

以此类推

(3)计算协方差矩阵的特征值与特征向量

协方差矩阵为

      

特征值为

  

特征向量为

      

(4).对特征值进行排序

对特征值排序

                      

我们选择前两个特征作为主成分,即英语和历史是主要成分。得到投影矩阵

(5)利用投影矩阵,得出降维的数据

五、降维的目的

1.减少预测变量个数;

2.确保这些变量是相互独立的;

3.提供一个框架来解释结果;

4.去除噪声;

六、总结

1.降维是一种数据集预处理技术,往往在数据应用其他算法之前使用,它可以去除数据的一些冗余信息和噪声,使数据变得更加简单高效,提高其他机器学习的效率。

2.PCA可以从数据中识别主要特征,通过将数据坐标轴旋转到数据角度上那些最重要的方向(方差最大),然后通过特征值分析,确定出需要保留的主成分个数,舍弃其他主成分,从而实现数据的降维。


---------------------
作者:xxty1122
来源:CSDN
原文:https://blog.csdn.net/xxty1122/article/details/79859185
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值