主成分分析法(PCA)

PCA作用

在这里插入图片描述
先从一个简单数据集开始
在这里插入图片描述
如果只测量一个基因,则可以将数据绘制在一个一维的数轴上
即使这是一个简单的图,它也展示了小鼠123之间的相似性要比它们与456的相似性更高
在这里插入图片描述

如果测量两个基因,则可以将数据绘制在一个二维XY图上

在这里插入图片描述

如果我们测量三个基因,我们将在图上添加另一个坐标轴,使其看起来像三维

如果我们测量四个基因,我们将无法再绘制数据
所以我们会讨论PCA如何进行四个或更多基因测量,并制作二维的PCA图,如下图
在这里插入图片描述
我们还将讨论PCA如何告诉我们哪个基因或变量对数据聚类最有价值?例如PCA可能告诉我们基因3承担了沿x轴分离样本,如下图
在这里插入图片描述
最后,我们将讨论PCA告诉我们2d图像准确性的启示,如下图
在这里插入图片描述

两个特征

要了解PCA的功能及其工作原理,让我们回到只有两个基因的数据集

将从绘制数据开始;
然后,我们计算基因1和基因2的平均测量数
在这里插入图片描述
在这里插入图片描述
通过平均值,我们可以计算数据的中心
在这里插入图片描述
然后我们移动数据,使中心位于图形中的原点(0,0)之上。这个过程中,不会改变数据点之间的相对位置
在这里插入图片描述
现在数据以原点为中心了,我们可以尝试为其拟合一条线:

  • 首先绘制一条穿过原点的随机线
  • 然后我们旋转线,直到它尽可能地拟合数据,和仍然穿过原点的情形下

在这里插入图片描述
首先我们需要谈PCA如何判定拟合度的高低

  • 为了量化这条线拟合数据的程度,PCA将数据投影到该线上
  • 然后它可以测量数据到线的距离,并尝试找到使这些距离最小的线 / 尝试找到使投影点到原点的距离最大的线

如下图
可以发现,当线更拟合时,这些距离会变大
在这里插入图片描述
从数学角度解释:由于a(因此a的平方)固定不变,当b变大,c就会变小。如下图
在这里插入图片描述
因此,PCA可以最小化与线之间的距离 / 最大化从投影点到原点的距离

由于“ 最大化从投影点到原点的距离”更容易计算,所以PCA找到拟合线是通过“ 最大化从投影点到原点的平方和”

测量从投影点到原点的距离,计算所有分别的距离的平方;
然后我们将所有的距离求平方和(即SSD),简称为SS

旋转线,重复以上操作,直到得到一条有着最大的投影点到原点距离平方和的线。这条线就叫做主成分1(或PC1)
PC1的斜率是0.25,换句话说,我们沿着基因1轴每向外移动4个单位,沿着基因2轴上升一个单位。这意味着数据大部分沿着基因1轴分布,沿着基因2轴只扩散了一点点
见下图
在这里插入图片描述
同时,pca把最佳拟合线距离的平方和称为PC1的特征值;而PC1特征值的平方根成为PC1的奇异值

接下来讲PC2
由于这只是一个二维图,PC2就是一条通过原点的线,垂直于PC1,没有更多需要做的优化了
如下图
在这里插入图片描述
已经得到了PC1和PC2.要绘制最终的PCA图,我们只需旋转所有内容,使PC1呈水平状态
然后我们用投影点来定位PCA图中的样本位置
如下图
在这里插入图片描述
以上,这就是如何用SVD(奇异值分解)得到PCA的方式

一旦确定了这些,我们就能确定每个PC占的差异率
在这里插入图片描述
在这里插入图片描述

三个特征

现在让我们快速过一个稍微有点复杂的例子,3个变量的PCA
在这里插入图片描述
找到了最佳拟合线,如下图
在这里插入图片描述

然后找到PC2,第二拟合线,它穿过原点且和PC1垂直,如下图
在这里插入图片描述
最后我们找到PC3,穿过原点并垂直于PC1和PC2的最佳拟合线
在这里插入图片描述
实际上PC的数量要么是变量的个数,要么是样本数,谁小选谁

然后计算每个PC分别占的差异率
在这里插入图片描述
这意味着仅使用PC1和PC2的2d图形可以很好地近似话这个3d图形,因为它可以解释数据差异的94%

将3d图转换为二维的PCA图,我们就除掉所有东西,除了数据和PC1&PC2,如下图
在这里插入图片描述然后将样本投影到PC1和PC2
在这里插入图片描述
然后旋转,使PC1呈水平,而PC2则垂直,便于视觉理解
在这里插入图片描述
最终效果如下
在这里插入图片描述

大于三个特征

如果我们对每只小鼠测量4个基因,我们无法绘制数据的四维图,但这不能阻止我们做PCA
在这里插入图片描述
在这里,PC1和PC2占了90%的差异,因此我们可以仅用它们绘制二维PCA图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意,如果碎石图看起来像这样,那么仅使用前两个PC不能很精确地代表我们的数据
但是,即使像这样的不清晰的PCA图也可以用来识别数据团:这些样本彼此之间的相似性仍然高于其他样本
在这里插入图片描述

参考

【中字】主成分分析法(PCA)| 分步步骤解析 看完你就懂了!

### 主成分分析法 (PCA) 的原理 主成分分析是一种用于降维的技术,旨在通过线性变换将一组可能存在相关性的变量转换成一组线性不相关的变量。这组新的变量被称为“主成分”,其中第一个主成分具有最大的方差,第二个主成分则是在与第一个主成分正交的前提下拥有最大方差,以此类推[^2]。 为了实现这一目标,算法会尝试找到能够最大化数据投影后方差的方向作为新坐标轴方向。这样做不仅减少了维度数量,还尽可能保持了原有数据集中的重要信息[^1]。 ### 实现过程概述 具体来说,PCA 的实现通常遵循以下几个方面: #### 数据预处理 在执行 PCA 之前,需要先对输入的数据进行中心化(即减去均值),有时还需要进一步标准化(即将标准差调整为 1)。这是因为不同尺度上的特征会影响最终的结果,因此有必要使各个特征处于相似的数量级上[^3]。 #### 计算协方差矩阵并求解特征值和特征向量 接着计算样本间的协方差矩阵或相关系数矩阵,并对该矩阵做谱分解得到对应的特征值及其相应的特征向量。这些特征向量定义了新的坐标系下的基底;而它们所关联的特征值反映了沿该方向变化的程度大小——较大的特征值意味着更多的变异被捕捉到了这条线上面。 ```matlab CM = corrcoef(SA); % 计算标准化后的数据的相关系数矩阵 [V, D] = eig(CM); % 计算相关系数矩阵的特征值D和特征向量V ``` #### 构建映射矩阵 选取前 k 个具有最高特征值的特征向量组成投影矩阵 W,这里 k 小于等于原空间维度 n 并决定了输出低维表示的空间维数 m=k。此操作实际上是从高维到低维的一个线性映射 T(x)=W^T * x ,它能有效地降低原始数据集中存在的冗余度同时保留大部分有用的信息。 ```python import numpy as np def pca(X, num_components): # 中心化数据 X_meaned = X - np.mean(X , axis=0) cov_mat = np.cov(X_meaned , rowvar=False) eigen_values , eigen_vectors = np.linalg.eigh(cov_mat) sorted_index = np.argsort(eigen_values)[::-1] sorted_eigenvectors = eigen_vectors[:,sorted_index] chosen_components = sorted_eigenvectors [:,:num_components] reduced_data = np.dot(chosen_components.transpose() , X_meaned.transpose()).transpose() return reduced_data ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值