干货分享教学第一步先讲什么 (通俗讲解pca分析)

01 引言

之前发了几篇文章关于矩阵中 特征向量和PCA主元分析的文章,大家反响不错。当时并没有涉及到数*运学**算,只是大概讲了讲原理。

这篇文章我们一起来一步一步解读

  • PCA的计算过程
  • 如何用Python实现PCA分析

干货满满教小白了解考研,干货如何从零开始学数据分析

准备就绪

02 第一步:数据获取

第一步,大量的数据收集是必须的。手边此时并没有数据,就通过python自己制造点数据吧。

干货满满教小白了解考研,干货如何从零开始学数据分析

构造数据框架

我们的项目计划是 看看 白种人和黄种人的基因差别

gene = ['gene' + str(i) for i in range(1, 101)] #创造100个基因

白种人取5人(Wh1 到 Wh5)和黄种人取5人(Ye1 到 Ye5)

white = ['Wh' + str(i) for i in range(1, 6)]

yellow = ['Ye' + str(i) for i in range(1, 6)]

data = pd.DataFrame(columns = [*white, *yellow], index = gene)

将所有的数据通过pandas包放入一个数据矩阵中。如下所示:

干货满满教小白了解考研,干货如何从零开始学数据分析

数据矩阵

现在,我们给这个矩阵赋值,完全随机的,不要去管数据严谨性,毕竟全是假设的数据。

干货满满教小白了解考研,干货如何从零开始学数据分析

数据代码

干货满满教小白了解考研,干货如何从零开始学数据分析

数据

搞定数据了,一般数据都是现成的。下一步,咱们开始PCA分析。

03 数据中心化

什么叫数据中心化呢?太高大上了!其实就是求平均值,将所有的数据和平均值联系起来。

我们还是用二维数据解释比较顺溜,假设数据如下:

干货满满教小白了解考研,干货如何从零开始学数据分析

杜撰数据

干货满满教小白了解考研,干货如何从零开始学数据分析

二维数据

假设我们有6组数据,x轴代表 影响因子1, y轴代表 影响因子2。蓝色小球代表数据,紫色小球代表数据平均值。

数据中心化,就是所有数据 减去 平均值,而图像的变化就是将平均值的点(紫色)移动到原点,其他数据点跟着移动。

干货满满教小白了解考研,干货如何从零开始学数据分析

数据中心化

干货满满教小白了解考研,干货如何从零开始学数据分析

数据中心化

简单吧!数据中心化后还有一步,是将数据缩放一下。

你看哦!

数据中心化的过程中,数据的方差是没有变化的。为了数据比较的方便,对数据还需要缩放一下,过程很简单。

干货满满教小白了解考研,干货如何从零开始学数据分析

数据缩放

所有数据 除以 方差,这样最后的数据的方差都变成 1 了。

上面的python代码我们创建了100个基因,10个人的数据包。总共数据是100 * 10。

我们给中间中心化和缩放一下。

scaled_data = preprocessing.scale(data.T) # 搞定!

干货满满教小白了解考研,干货如何从零开始学数据分析

数据缩放

04 PCA分析

干货满满教小白了解考研,干货如何从零开始学数据分析

PCA分析

线性规划大家还记得吧。

干货满满教小白了解考研,干货如何从零开始学数据分析

线性规划

如上图所示,我们需要划出一条线使得所有的数据点到达这条线的距离的平方和(红色线段)最小。

干货满满教小白了解考研,干货如何从零开始学数据分析

线性规划

为了详细说明线性规划,我们拿一个点来说明。

当B是无数数据点中的一个,AC(绿线)是一条最匹配的直线。那么我们需要保证:

  • B到AC的距离,BC的长度的平方和最小;
  • 或者C到A的距离平方和最大(勾股定理可证),两者是等效的。

所有数据点在主元坐标轴上的投射点到原点的距离(如上图中AC)的平方和叫做 Sum of Squared Distances (SSD)

主元1 上的投射点的 Sum of Squared Distances 就是 主元1的特征值(Eigenvalue),可以参见我之前的文章。

主元2上的投射点的Sum of Squared Distances 就是 主元2的特征值(Eigenvalue)

干货满满教小白了解考研,干货如何从零开始学数据分析

Sum of Squared Distances

我们注意到上图中最后一列是Variation。这是通过:

SSD / (数据个数 - 1)求得的。

Variation有什么用的?

主元1的Variation是2.20,主元2的Variation是0.20。那么一共是2.2 + 0.2 = 2.4。

那么,主元1占有:2.2 / 2.4 = 91.5%

主元2占有:0.2 / 2.4 = 8.5%

也就是说,PCA分析后,主元1保留了91.5%的原始数据信息,占比比主元2大的多。那么,主元1就是第一主元

分析完毕,大功告成!

干货满满教小白了解考研,干货如何从零开始学数据分析

PCA

对于上述数据做PCA分析后,我们看出主元1占比高达95%。自然是第一主元。

干货满满教小白了解考研,干货如何从零开始学数据分析

05 总结

如果大家喜欢我的文章,请关注“逃学博士”。

感谢StatQuest。

“逃学博士”:理工科直男一枚,在冰天雪地的加拿大攻读工程博士。闲暇之余分享点科学知识和学习干货。