Loading

PCA,MDS的推导分析

对于PCA和MDS降维两种方法,在数据分析,还是建模中我用到了很多次,很多时候都是直接在sklearn中调函数,或者直接网上找现成的,现在终于到了分析它的处理原理(数学角度)。

PCA降维

PCA可谓是我用的第二多的,我知道的要晚一些,(我看好多人都是先知道PCA,然后知道MDS,我竟然是反的)这里只推导它的过程,矩阵的处理啥的。

公式推导

首先有个数据矩阵X,大小为m*n,一行为一个样本,也就是\(x_i\),共有n个样本,m表示数据的维度。

\[X \]

然后求X的平均值\(\overline{X}\)后定义新的矩阵A

\[A=X-\overline{X} \]

定义矩阵B,B为A的转置矩阵*A

\[B=A^{T}A \]

然后求B矩阵的特征值,特征向量。将特征值进行大到小排序,如果你想降维到2维,那么只需要找到前两个特征值对应的特征向量,并将其组成2*m的矩阵P,然后即可求得降维后的矩阵D

\[D = XP \]

在这里插入图片描述

MDS降维

公式推导

第一步,需要定义一个距离函数,一般纯数据多采用欧氏距离,其他距离也可以具体数据具体分析。

数据矩阵为X,大小为m*n,一行为一个样本,也就是\(x_i\),共有n个样本,m表示数据的维度。

\[X \]

首先求得两两样本的距离矩阵D(主对角线元素为0)

\[D: d_{ij}=dist(x_i,x_j) \]

然后分别定义3个dist函数

\[dist_{i*}: d_{ij}=\frac{1}{m}\sum_{j=1}^{m}{dist_{ij}^2} \]

\[dist_{j*}: d_{ij}=\frac{1}{m}\sum_{i=1}^{m}{dist_{ij}^2} \]

\[dist_{ij*}: d_{ij}=\frac{1}{m}\sum_{i=1}^{m}\sum_{j=1}^{m}{dist_{ij}^2} \]

然后根据以上3个dist求得矩阵B

B:

\[b_{ij}=-\frac{1}{2}(dist_{ij}^2-dist_{i*}-dist_{j*}+dist_{ij*}) \]

然后求B的特征值和特征向量,并对特征值排序并将其转换为矩阵,特征值在对角线,其他位置补充0,特征向量按特征值顺序也进行排序然后进行归一化处理(与PCA不同)。如果降维至2维,那么只需要从左上角开始取2*2的特征值,取前2个特征向量,分别定义为\(B_e\)\(B_n\)那么最终降维结果为

\[Z=\sqrt{B_e}B_n^T \]

在这里插入图片描述

posted @ 2024-09-19 14:00  绯色鱼  阅读(93)  评论(0)    收藏  举报