最近在做文本聚类和用kd-tree关联文档,头疼于所谓的文本处理的高维诅咒,决定写一个降维算法。
从降维算法最常见的入手,which is PCA,又叫主成分分析。PCA是利用了协方差的概念,将多维度的矩阵之间维度建立一个关系,然后拉伸原有的多维度,组合成新的低维度空间,投影原有的多维矩阵到低维空间中,尽量的保证原有的各个样本间关系损失小。
步骤:
- 将数据建立一个M*N矩阵,每行代表一个样本,每列代表一个维度,我们的目标是降低这个维度;
- 每列取均值,可以得到一个1*N的矩阵,每个值是这个维度的平均值;
- 将原有的M*N矩阵的每一行(样本)都减去这个平均值矩阵(1*N矩阵),得到平均值矩阵M*N,意义是将原有空间中的矩阵分布样本的中心拉到空间原点;
- 对这个M*N的矩阵做协方差运算,得到N*N的矩阵,这个矩阵表示了N个维度间的相关性;