PCA会降低分类器的精度吗?

  统计/机器学习 监督式学习 数据预处理 数据降维    浏览次数: 324
1

我要建立一个二元分类器,因为数据维数比较大,我考虑了先做PCA来降维,然后再做一个分类器。

我试了好几个算法,比如决策树,随机森林,gbm,发现总是直接原始数据训练出来的模型精度很高,用PCA降维后的数据训练的模型精度较低。

请问理论上讲PCA会降低分类器的精度吗?


 

thatdeep   2018-04-27 09:57



   3个回答 
6

pca后testing精度变好和变坏都见过。和很多因素有关,比如pca前要normalization,能量阈值(99%)的选择,数据本身的复杂度(是否能用线性模型表示),模型的拟合复杂函数的能力(线性或深度神经网络),还有模型的训练程度(overfitting或者underfitting)。pca原本是针对简单数据和线性模型,如果数据和模型都很复杂,pca效果很难保证。

我理解是两种情况下pca有好处:1.损失的信息里噪音占多数,有人说相当于加了正则项;2.模型太弱(比如线性),本来就提取不出被扔掉的信息,反而会学到一部分噪音。

非线性降维可以了解下kernel pca,t-SNE,autoencoder。

------------------------------------------------

举例说明下PCA在线性回归里的作用。

$y=Xw$里$w=X^{-1}y=(X^TX)^{-1}Xy$。 当$X$的condition number很大时(ill-conditioned),$(X)^{-1}$会有很大误差,比如放大$X$里的round-off error。而condition number是$X$的最大singular value/最小singular value。

PCA的作用是:

$PCA(X)=SVD(X)=USV^T$,而X的singular value$S$等于$X^TX$的eigen value的平方根。

$X^{-1}=VS^{-1}U^T$。$s_i$指第i个singular value。假如$s_i=10^{-30}$ 则 $1/s_i=10^{30}$ 。也就说$s_i$很小的维度,误差会放大很多。

PCA降维就是扔掉$S$中很小的一些维度,变向减小了剩余的$X_1$的condition number, 让$X_1^{-1}$ 的误差更小。

正则项作用:

如果不用PCA扔掉这些$s_i$小的维度,还可以用正则项(比如 Tikhonov regularization),相当于在$s_i=s_i+c$, $c$是一常数,这样也能降低$X$的condition number。比如加正则项前condition number=100/0.001=100000,加正则项后condition number=(100+1)/(0.001+1)=100.899,变小了1000倍。



Zealing   2018-04-28 17:55

讲得很好! - 曾经是科比   2018-05-06 11:22
3

很多时候,我们在分类或者回归任务前先PCA降维,不一定是为了精度。可能是为了

  1. 为了可视化(降到2或者3维)
  2. 为了减小数据量、增加训练速度
  3. 为了去掉冗余的特征

在PCA之后,数据的维度降低,必然会造成信息丢失,减少的维度越多,丢失信息越多;同时,数据中的噪声也可能被降低。所以精度可能提高、也可能降低。

最直接的方法是做cross validation,选出最佳的PCA后数据的维度。


okayguy   2018-04-29 03:24

1

我觉得会的,因为降维毕竟会损失很多信息。


dirkdirk   2018-04-28 08:51



  相关主题

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

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

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

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

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

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

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

PCA的目标函数   1回答

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

分类变量,进行One hot编码,维度升高,如何处理?   3回答

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

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



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

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

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

我们谢绝答非所问。

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

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