这里我们首先探讨了PCA,然后是随机投影映射
PCA通过矩阵运算实现数据,
1、根据数据计算协方差矩阵 X*S
2、据数据的协方差矩阵提供的贡献率选择其包含成分 X*S`
3、根据矩阵运算转换原始数据
PCA降维是可行有效的,但对于超大型数据计算其协方差矩阵耗时较长,无法做到高效性
而随机投影则没有协方差计算的过程
1、首先,在高维空间里随机选几个单位向量(无需保证单位向量之间正交)依据(Johnson-Lindenstrauss Lemma, JL-lemma) 理论(这里理论保证了认为降维方法的精度上的下限)
其中Johnson-Lindenstrauss Lemma理论,可以概括为,通过不等式数据中前后任意两点之间的距离保持在一定界限内。
2、采用随机选择的投影矩阵,填充作为协方差矩阵
3、归一化每个新的轴
4、对数据进行降维
具体实现方式
from sklearn import random_projection
X = np.random.rand(100, 10000)
transformer = random_projection.SparseRandomProjection(n_components=500)
# 其中n_components与PCA类似,控制其成分含量,也可以设置为auto(默认),让其在投影完成后实现JL-lemma理论
X_new = transformer.fit_transform(X)