****降维作用* * *
数据高维易处理,使用方便
相关特征尤其是重要特征可以更清晰地显示在数据中; 如果只有二维或三维,更容易可视化展示;
消除数据噪声
降低算法开销
****降维的简明说明* * *
为了便于说明淘宝交易数据等高维数据降维的作用,这里假设有下单数、支付数、商品类别、售价四个维度,数据量上百万条。 关于下单数和支付数,我们认为两者是线性相关的。 也就是说,如果知道以下单数,就可以得到支付数。 这里很明显这两个属性维有冗余,如果去掉下单数,保留支付数,就可以保证原始数据,这就是降维。 当然,并非所有数据都有明显与线性相关的属性维。 降低维度后,最终目标是各属性维度之间的线性无关。
*****PCA降维步骤原理******
首先,使用协方差来衡量相关属性是否存在。 在博客的相关分析中有介绍,在此不做说明。 协方差测量二维属性之间的相关。 对于n维属性,需要协方差矩阵,其对角线是每个维的方差。
步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵
4)求出协方差矩阵的特征值及对应的特征向量r
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
http://www.Sina.com/http://www.Sina.com /
*****关于维数k的选择*****
使用表达式error=表示压缩后的误差,m的所有特征的个数。 然后确定阈值x,例如0.01,error x选择k以使这个m可以接受。 否则,我就试试别的。
* * * * * sk learn库在python中的pca实现* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
froms klearn.decompositionimportpcaimportnumpyasnpfromsklearn.preprocessingimportstandardscalerx=NP.array (6,33 ) 22 ] (# feature normalization (feature scaling ) X_scaler=StandardScaler () x=x_scaler.) ) ) )