http://www.cnblogs.com/xing901022/p/9392518.html
降维的作用:数据压缩与可视化
降维的第一个作用就是进行数据的压缩,解决磁盘和计算的问题。比如把二维数据降维到一维:
或者数据从三维降维到2维。
降维的另一个作用就是进行可视化,比如我们的数据有很多维度,如果想要在图形上展示各个数据,分析其关系是很难的。那么就可以把数据降维到二维:
降维的问题规划
考虑到数据的可分性,应该寻找一条直线(或者一个平面),使得数据投影到这个平面的距离最短,数据分布最好(各个点比较分散),比如下面的图中,红色的线就要比粉色的好很多,因为粉色的线上所有的点几乎都要重叠到一起了。 PCA总结来说,其实就是寻找k个方向向量,使得所有的点投影到这个k个向量组成的平面。如果是2维,就是寻找一条直线的方向,方向的正负并不影响最后的结果 需要注意的是,PCA与线性回归是不同的:第一个不同的点是线性回归里面为了方便计算,误差取的是y值的差;而PCA里面计算的投影的距离,因此计算的是点到直线的距离。另一个不同的点就是线性回归里面需要区分x和y,而PCA里面所有的x都是等价的。
PCA的计算方法
计算PCA首先要做的就是数据预处理,需要先对所有的数据进行均值化,即求出均值做差。其中sj是max-min
在PCA里面数据降维其实可以换一种思考的角度,如果数据从2维降到1维,其实就是寻找一个函数使得(x1,x2)变成z1。如果是n维,就是寻找一个方法,使得结果变成k维。 其实这个过程就可以通过SVD来做,针对SVD可以在搜索其他的资料。在协同过滤里面也是有它的使用场景的。
如何选择k值
PS:这两节看的很蒙——因为字母放反了
参考:IT虾米网
PCA用于降维,k是降维后的特征维度,如何选择k值呢?一般来说k值如果等于n,那么方差不变,就说保留了100%的方差变化;如果为0,那么方差相当于全部都忽略了。因此可以通过下面的计算公式,选择误差范围在0.01以内的k值,这样可以说保留了99%的主成分。
应用的建议
关于使用
PCA也属于一种算法,它只能在训练集上训练运行;在测试集或者交叉验证集上只能使用训练的结果直接用来做映射。
关于k的选择
在使用PCA进行数据的压缩时,一般都要保证方差的保留百分比在99%。而在可视化的时候由于画图的需要,K值可以选择2或者3。
关于过拟合
PCA可以用来降低维度加快训练速度,但是不能用来避免过拟合。因为PCA在考虑数据降维的时候,并没有考虑y的因素,只是通过分析x,通过方差的百分比来保留信息,此时有可能丢弃的是与y相关的信息。如果想解决过拟合的问题,还是推荐使用正则化。
关于滥用
不用滥用PCA,很多人(我就这么干过!)设计逻辑回归的时候,都是直接按照下面的流程来做:1 获得数据样本;2 执行PCA降维;3训练LR;4测试。推荐的方式还是不使用PCA训练看看效果,再用PCA试一下做一下对比。