当数据量变的特别大,数据特征的维度变得很大时,若不对数据进行一定的预处理,将会使问题求解的速度变得很慢,甚至是无法求解。这里介绍两种数据预处理(降维)的方法:pca和svd
数据降维主要有这几种方法:
1、主成分分析(PCA):PCA实际上是进行坐标的转换,转换后的坐标的第一维选择数据方差最大的方向,第二维选择与第一维正交且数据方差最大的方向,依次重复上述的构造方法,得到第三维,第四维…而数据的大部分信息都隐含在较前面的维度中,所以仅选择前面N个维度就能较好的表达数据。
2、因子分析(FA):FA假设数据中含有某些隐变量,而数据就是这些引变量和噪声的线性组合,隐变量数目比特征值的数目少,通过分析这些隐变量,数据可以用这些隐变量的线性组合得到。
3、主成分分析(ICA):ICA假设数据是有多个互相独立的数据源产生的,如果数据源少于数据数目,则可以实现降维。
一、PCA
1、原理见上述:
2、pca涉及特征值和特征向量:A*V = lamda* V,相关内容可以参考线性代数的知识。
3、本质就是分析出数据最重要的特征,然后用这些特征(前N个最重要的)去表达重构数据。
4、算法实现
def loadDataSet(fileName, delim='\t'):
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [map(float,line) for line in stringArr]
return mat