众所周知PCA是有效的降维方法,当你的特征非常多维度非常大的时候,为了使机器学习的算法在计算或是训练的时候有更高的效率,通常会进行降维处理。
将一个具有m个数据n维的数据降为k维的数据,方法如下:
算出一个sigma矩阵,x(i)为n*1的矩阵,因此x(i)转置为1*n,因此sigma的形状为n*n。
svd为奇异值分解函数,得到一个U矩阵,也为n*n矩阵。
取U矩阵的前k列,与x相乘,得到降维后的数据。
那么如何选择k值呢?看下图:
要使差异性小于等于0.01,当然有时候也使用0.05或是0.1等等。
比较蠢的方法自然是把k从1一直往上加,一直来计算相似度。但是有更好的办法,之前算奇异值的时候得到了一个S矩阵,计算方式如下图:
得到: