【编程】三分钟搞懂PCA主成分分析!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【编程】三分钟搞懂PCA主成分分析!相关的知识,希望对你有一定的参考价值。

参考技术A

Principal components analysis ,简单说就是物体的分类来说,它们的哪些属性更重要,这些重要的属性就叫做主要成分Principal components 。比如对于人的身材来说,身高、体重、体脂率这些肯定是主要成分,年龄、月收入这些肯定不是。

但数学运算根本不懂这些现实道理,有没有办法直接用数学方法,把那些对分类影响最大的属性找出来呢?PCA主成分析就是用数学运算来判断哪些属性更重要,哪些不重要,——它根本不管你是要区分胖瘦还是区分贫富。

三个人,韩梅梅、李雷和小明,体重分别是40,50,60。 平均数mean 就是160,那么 方差Variance 就是

所以方差其实是和平均数的差的平方之和, 方差其实是差、方、和

更多数字的方差也是一样,如下图,中间红线是水平方向7个点的平均值,方差就是蓝色虚线长度的平方和,反正要平方也就无所谓正负。

方差公式就是:

什么样的分布数据最好用?能帮助我们进行分类的数据就是好数据。

如上图所示,蓝色A的分布情况最好,一眼就能开出平均值左右分成两类;橙色的B也不错,但怎么划分就看不大懂了;绿色C就糟糕了,都挤在中间,没法划分。但也不要觉得绿色中间那一堆有问题,去掉两端的两个,把中间这一堆横向拉长舒展开,就是红色D的情况,其实并不比B差。

用数学表示就是A的方差最大,B其次,C最小。结论就是,在一般情况下, 对于一个属性的数据分布来说,方差越大越好分类

那么两个属性相比,怎么判断哪个数据更好一些?

把样本当做圆点,两个属性分别对应 和 轴,画到二维坐标上,这样计算方差用的 就分别落到了横向和竖向的坐标轴上面。如下图所示。

协方差Covariance 就是每个点P对应的蓝色虚线乘以绿色虚线,然后把得到的所有乘积再相加。公式如下,其中 是横向平均数, 是竖向平均数,即图中所示短红线:


即:

如果 和 是同一个属性的话就变成了方差 。

不过说这些都没用,我们也不用讨论到底是蓝色虚线加起来大还是绿色虚线加起来大,因为它们两个肯定都不是最大的,谁是最大呢?

“横看成岭侧成峰”,对于一排数据来说,高低起伏的山峦从侧面看成一座秃山那就是废了。对分类影响比较大的一定是既成簇又分团的数据。

观察角度不好就是千手观音,角度好了才能看出高矮胖瘦。比如下面这个图上的五个采样点,无论是横轴和纵轴看,分布的都比较均匀。但如果沿着 方向看,就会发现这5个点在 方向上投影的灰色圆点呈簇分布,而且在 方向上各个点的虚线也都比蓝色或者绿色虚线长,也就是方差比较大。

所以说,不要拘泥于现有数据的角度来观察,要变换到方差最大的角度来分析。现有的数据角度未必是对分类产生最大影响的数据,那条斜着的 属性才是影响分类的 主要成分 Principal components,一般叫做PC1。和PC1垂直的 就是PC2。

从这个旋转后的坐标可以更加清晰的看出这些点的分布主要由PC1决定。而PC1和PC2影响力的比例也可以用各自方向上的方差来计算。

同样对于 三维坐标中的一团样本点,像云朵一样分布,我们仍然可以找到贯穿整个云朵的最长的那条轴线,以及和它互相垂直的另外两条轴线。这样我们就针对 变换得到新的 即PC1、PC2、PC3。

其实某种意义上讲, 和 就是原来 的另外一种角度的表现形式。

得到主成分轴向(属性)的目的就是为了可以舍弃其他次要的成分,当然,主成分属性也是优于其他成分的属性,缺点就是这个属性没法用语言来解释。

假象我们有1000个属性数据,实在太多了,这时候就可以用主成分分析。把它们放到一千维的坐标系里面,每个属性占一维。然后在这个复杂空间中的样本云中找出贯穿其中方差最长的那个方向,它就是PC1,再找出方差其次长的PC2,PC3,...PC1000。

原本1000个属性我们不知道谁重要谁不重要,但现在我们知道PC1最重要,PC2其次...所以我们就可以只留下前面比较重要的PC1到PC10,其余的900个都忽略掉。注意这里PC1并不是和第一个属性对应的,甚至1000个新PC属性和原来1000个属性之间没有一一对应关系,谁也不知道在这1000维的坐标空间中PC1这个箭头指向哪里,更没法说它是和身高、体重、年龄那个属性对应了。

END

以上是关于【编程】三分钟搞懂PCA主成分分析!的主要内容,如果未能解决你的问题,请参考以下文章

主成分分析法

主成分分析PCA

详解主成分分析PCA

主成分分析(PCA)

主成分分析-PCA

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