在使用PCA降维时,有哪些坑?

  统计/机器学习 监督式学习 无监督学习 数据降维 开放问题
11

我有一个分类问题,列数很多,我试了下PCA降维,然后再训练分类器,可是结果反而差了不少。

不知道有没有人遇到过类似的情况,或者是我不小心踩进了PCA的坑?

大神们可以分享下PCA的坑吗?或者成功使用PCA的经验吗?


 

TheTheThe   2017-09-22 14:41



   5个回答 
11

除了各位说的,我再补充一些我所认为的坑


  • PCA依赖于线性假设。

            我们知道PCA本质上就是SVD,所以PCA不过是利用线性投影进行降维。但是数据的内在结构未必是简单的线性关系。


  • PCA是正交的。

            正如第一点所说,PCA是正交的投影,可是未必正交的就是最好的。想象一下,姚明和郭敬明(两个三维物体),我们用灯去照他们的影子,当灯光从两人正上方10米向下照的时候,两个人影子都是一坨圆;如果我们从侧面照他们,投影出来的两个影子,可能宽度差不多,长度却差不少,这样的影子(三维降到二维)就含有更多信息。


  • PCA让方差尽量大。

            PCA本质上就是抓住主体,放过细枝末节。但有时候细枝末节往往是很重要的。五个韩国姑娘,其中一个姑娘鼻子上有痣,于是你一眼就认出了。你对她们的照片做PCA,之后发现,大家的脸型五官都没变,但是那个痣却找不到了,那你还能认出那个姑娘吗?你的算法还能认出那个姑娘吗?


木子周   2017-10-11 09:50

PCA是个差强人意的照妖镜 - batmanX   2017-10-11 10:55
8

一定要记得先做标准化。参考这个


abuu   2017-09-24 13:14

4

PCA降为前需要把相关性高的那些列去掉,不然会影响到PCA的效果。


清风   2017-09-27 09:43

3

降维不能降太多,不然丢失了太多信息,反而不利于预测

雷猴   2017-09-23 09:48

2

我也说个我的。我之前是把training set的特征和test set的特征和一起做了PCA降维。

其实这是大错特错的,因为在PCA中用test set的特征,这属于信息泄露。

正确的方法是在training set上fit_transform,在test set上transform。



道画师   2017-09-26 01:58



相关问题

为什么PCA被称作非监督式学习?   2回答

PCA降维之前为什么要先标准化?   1回答

sklearn.decomposition.PCA方法中fit, fit_transform, transform应该怎么用   1回答

PCA降维中的特征值和特征向量   2回答

除了PCA,还有什么降维的方法?   6回答

利用PCA降维,降到几维比较合适?   1回答

PCA的目标函数   1回答

PCA和SVD是一回事吗?   1回答

如何简单理解正则化   1回答

维数大于样本数的问题   1回答

python里怎么实现t-SNE降维?   1回答

hashing trick或者feature hashing是什么   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!