什么会导致PCA恶化分类器的结果?


27

我有一个要进行交叉验证的分类器,还有一百个要进行正向选择以查找特征的最佳组合的特征。我还将这与PCA进行的相同实验进行了比较,在该实验中,我采用了潜在特征,应用了SVD,将原始信号转换到新的坐标空间,并在前向选择过程中使用了前特征。ķ

我的直觉是PCA会改善结果,因为信号比原始功能更具“信息性”。我对PCA的幼稚理解是否会使我陷入麻烦?有人能提出PCA在某些情况下可以改善结果,而在另一些情况下却会恶化结果的一些常见原因吗?


可以这样概括您的问题吗?:“还有什么更好的-根据原始变量或从中提取的一些主要成分来构建分类器?”
ttnphns

1
我会说更多:“在某些情况下,使用原始变量而不是从中提取一些主要成分会更好吗?”
Dolan Antenucci 2013年

1
分类技术很多。例如,如果进行判别分析,建议您阅读这篇文章(包括我自己的评论)。
ttnphns

1
“分类器结果”是什么意思?如果按比例正确分类,则这是不连续的不正确评分规则,即通过伪造模型优化的准确性得分。首先,我建议使用正确的准确性评分规则。
弗兰克·哈雷尔

1
派对晚了一点,但是:我要仔细检查的第一件事是,前向选择的验证结果实际上是在独立的情况下获得的。否则,您可能会遭受巨大的乐观偏见。
cbeleites支持Monica

Answers:


29

考虑一个简单的案例,该案例摘自一篇出色而被低估的文章“关于在回归中使用主成分的说明”

假设您只有两个(按比例缩放和去均值)特征,分别将它们表示为和,它们的正相关性等于0.5,并与对齐,并指定您要分类的第三个响应变量假设的分类完全由的符号决定。X1个X2XÿÿX1个-X2

上执行PCA的结果,在新(通过方差订购)设有,由于。因此,如果将维数减小为1,即第一个主成分,则将丢掉分类的确切解决方案!X[X1个+X2X1个-X2]Var(x1+x2)=1+1+2ρ>Var(x1x2)=22ρ

发生问题是因为PCA与无关。不幸的是,一个PCA中不能包含,因为这会导致数据泄漏。ÿÿ


数据泄漏是指使用有问题的目标预测变量构造矩阵情况,因此,样本外的任何预测都是不可能的。X

例如:在金融时间序列中,尝试预测美国东部时间上午11:00结束的欧洲收盘价,使用美国东部时间下午4:00的美国收盘价收盘价,是自美国收盘价以来的数据泄漏几小时后发生的,已将欧洲收盘价纳入进来。


2
什么是“数据泄漏”?
2013年

@韦恩太昂贵了哈哈
Cam.Davidson.Pilon

(-1)引起混乱:(1)PCA是不受监督的,因此在进行转换的过程中绝不会包含Y。相应的监督技术是PLS,它同时使用X和Y。(2)使用监督方法本身并不会导致数据泄漏(例如:使用统计相关数据进行测试)。相反:如果您不遵守以下规则,即在所有计算中都使用多个情况(例如居中,缩放,PCA / PLS投影)的第一步,则PCA会与PLS一样发生。仅在训练数据上完成(即需要...
cbeleites支持Monica

...为每个代理模型重新计算。这些计算的结果然后可以被施加到测试数据,即减去从训练数据中得到的中心,通过PCA在训练情况下,等获得的旋转而旋转
cbeleites支持莫妮卡

对于示例:时间序列特别困难,因为构成独立案例的时间在很大程度上取决于应用程序。例如参见stats.stackexchange.com/questions/76376/...
cbeleites支持莫妮卡

23

有一个简单的几何解释。在R中尝试以下示例,并回想一下第一个主成分使方差最大化。

library(ggplot2)

n <- 400
z <- matrix(rnorm(n * 2), nrow = n, ncol = 2)
y <- sample(c(-1,1), size = n, replace = TRUE)

# PCA helps
df.good <- data.frame(
    y = as.factor(y), 
    x = z + tcrossprod(y, c(10, 0))
)
qplot(x.1, x.2, data = df.good, color = y) + coord_equal()

# PCA hurts
df.bad <- data.frame(
    y = as.factor(y), 
    x = z %*% diag(c(10, 1), 2, 2) + tcrossprod(y, c(0, 8))
)
qplot(x.1, x.2, data = df.bad, color = y) + coord_equal()

PCA帮助 PCA帮助

最大方差的方向是水平的,并且类别在水平方向上是分离的。

PCA伤害 PCA痛

最大方差的方向是水平的,但是这些类在垂直方向上是分开的


...在示例2中,受监督的模拟子PLS实际上会有所帮助。
cbeleites支持Monica


3

我看到这个问题已经有了一个可以接受的答案,但我想与他人分享这篇文章,该文章讨论在分类之前使用PCA进行特征转换

带回家的消息(在@vqv的答案中很漂亮地显示了)是:

主成分分析(PCA)基于提取数据显示最大可变性的轴。尽管PCA在新的基础上“散布”了数据,并且可以在无监督学习中提供很大帮助,但不能保证新轴与(受监督)分类问题中的歧视性特征一致。

对于感兴趣的人,如果您看一下第4节。实验结果,他们将分类精度与1)原始特征,2)PCA转换的特征以及3)两者的组合进行了比较,这对我来说是新的。

我的结论是:

基于PCA的特征转换可将信息从大量特征汇总为有限数量的组件,即原始特征的线性组合。但是,主要成分通常很难解释(不直观),并且正如本文中的经验结果表明,它们通常不会提高分类性能。

PS:我注意到列出的论文的局限性之一是作者将分类器的绩效评估仅限制为“准确性”,这可能是非常有偏差的绩效指标。


3

x1,x2X3ÿX3=ÿ

ÿX3

X1个X2X3ÿ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.