机器学习之PCA主成分分析

Posted steed

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之PCA主成分分析相关的知识,希望对你有一定的参考价值。

前言

           以下内容是个人学习之后的感悟,转载请注明出处~

 

 

简介

  在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的

信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反

映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立

尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。

  降维算法有很多,比如PCA、ICA、SOM、MDS、ISOMAP、LLE等,在此不一一列举。PCA是一种无监督降维算法,

它是最常用的降维算法之一,可以很好地解决因变量太多而复杂性、计算量增大的弊端。

 

PCA主成分分析原理

1、协方差原理

  样本X和样本Y的协方差(Covariance):

                                        

  协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。Cov(X,X)就是

X的方差(Variance).当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是Cn2。比如对于3

维数据(x,y,z),计算它的协方差就是:

                                                   

2、SVD分解原理

  若AX=λX,则称λ是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得

X的长度发生了变化,缩放比例就是相应的特征值λ。当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。

  特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:

                                               

  对A进行奇异值分解就能求出所有特征值和Q矩阵。A∗Q=Q∗D,D是由特征值组成的对角矩阵由特征值和特征向量的定

义知,Q的列向量就是A的特征向量。

3、PCA原理及实现

  PCA主要通过把数据从高维映射到低维来降低特征维度。如下图所示,但映射的时候要保留尽量多的主要信息。

                        

  PCA的算法步骤如下:

  • 输入数据集x={x(1)x(2)x(3),.....,x(m)}、需要降到K维;
  • 对所有样本进行均值归一化,如右图所示; 
  • 计算协方差矩阵
  • 对协方差矩阵进行奇异值分解
  • 选取最大的前K个特征值对应的特征向量u(1)u(2)u(3),.....,u(k)
  • 输出降维的投影特征矩阵Ureduce={u(1)u(2)u(3),.....,u(k)}
  • 输出降维后的数据集z=UreduceTx

4、选择降维后的维度K(主成分的个数)

   如何选择主成分个数K呢?先来定义两个概念:

                  

  选择不同的K值,然后用下面的式子不断计算,选取能够满足下列式子条件的最小K值即可。

                                          

  其中t值可以由自己定,比如t值取0.01,则代表了该PCA算法保留了99%的主要信息。当你觉得误差需要更小,

你可以把t值设的更小。上式还可以用SVD分解时产生的S矩阵来表示,如下面的式子:

                                                       

  注意1:虽然PCA有降维的效果,也许对避免过拟合有作用,但是最好不要用PCA去作用于过拟合。

  注意2:在训练集中找出PCA的主成分,(可以看做为映射 mapping),然后应用到测试集和交叉验

              证集中。而不是对所有数据集使用PCA然后再划分训练集,测试集和交叉验证集。

 

 

 

 

以上是全部内容,如果有什么地方不对,请在下面留言,谢谢~

以上是关于机器学习之PCA主成分分析的主要内容,如果未能解决你的问题,请参考以下文章

机器学习之主成分分析

机器学习之主成分分析(PCA&特征选择)

主成分分析(PCA)原理及R语言实现

PCA(主成分分析) 一

python机器学习 主成分分析(PCA)

python机器学习 主成分分析(PCA)