今天看到这个问题觉得很有意思, 所以查了下资料, 顺便总结下, 给自己一个直观的印象.
这个问题最正确,也是最没用的答案就是: 看情况!
一些算法中, 减少feature的数量可以一定程度控制过拟合(overfitting)问题, 例如logsitic regression. 所以, 我们可能想当然的认为用PCA是一个好方法.
我的直观理解是, PCA降维抛弃了一部分信息,并且它抛弃信息时根本不会看label. 假设保留了99%的信息, 那么我们怎么知道这些丢掉的1%信息是冗余还是有用的呢?
这也是为什么通常使用正则(regularization)会更加好(因为你在把它加到了目标方程里面了).
Andrew Ng也曾在讲PCA时候提到过, PCA的使用场景:
1. Compression(压缩): 减少数据因为存储而造成的内存和硬盘的占用./加速训练过程.
2. Visualization(可视化)
PCA非建议的使用场景:
1. 防止Overfitting.
2. 不管3721把PCA当作先尝试或者固定得的一个步骤: 只用训练速度太慢时候才考虑使用PCA.
[1]: https://www.youtube.com/watch?v=xI9-I-gcwaw
[2]: https://www.quora.com/Can-we-use-PCA-algorithm-to-avoid-Over-fitting-issues-If-yes-when-do-you-choose-between-Regularization-and-PCA
网友评论