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
\]


浙公网安备 33010602011771号