我有一个要进行交叉验证的分类器,还有一百个要进行正向选择以查找特征的最佳组合的特征。我还将这与PCA进行的相同实验进行了比较,在该实验中,我采用了潜在特征,应用了SVD,将原始信号转换到新的坐标空间,并在前向选择过程中使用了前特征。
我的直觉是PCA会改善结果,因为信号比原始功能更具“信息性”。我对PCA的幼稚理解是否会使我陷入麻烦?有人能提出PCA在某些情况下可以改善结果,而在另一些情况下却会恶化结果的一些常见原因吗?
我有一个要进行交叉验证的分类器,还有一百个要进行正向选择以查找特征的最佳组合的特征。我还将这与PCA进行的相同实验进行了比较,在该实验中,我采用了潜在特征,应用了SVD,将原始信号转换到新的坐标空间,并在前向选择过程中使用了前特征。
我的直觉是PCA会改善结果,因为信号比原始功能更具“信息性”。我对PCA的幼稚理解是否会使我陷入麻烦?有人能提出PCA在某些情况下可以改善结果,而在另一些情况下却会恶化结果的一些常见原因吗?
Answers:
考虑一个简单的案例,该案例摘自一篇出色而被低估的文章“关于在回归中使用主成分的说明”。
假设您只有两个(按比例缩放和去均值)特征,分别将它们表示为和,它们的正相关性等于0.5,并与对齐,并指定您要分类的第三个响应变量假设的分类完全由的符号决定。
上执行PCA的结果,在新(通过方差订购)设有,由于。因此,如果将维数减小为1,即第一个主成分,则将丢掉分类的确切解决方案!
发生问题是因为PCA与无关。不幸的是,一个PCA中不能包含,因为这会导致数据泄漏。
数据泄漏是指使用有问题的目标预测变量构造矩阵情况,因此,样本外的任何预测都是不可能的。
例如:在金融时间序列中,尝试预测美国东部时间上午11:00结束的欧洲收盘价,使用美国东部时间下午4:00的美国收盘价收盘价,是自美国收盘价以来的数据泄漏几小时后发生的,已将欧洲收盘价纳入进来。
有一个简单的几何解释。在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在图像上作为矢量:
非线性算法(NLDR)将图像缩小为2个维度(旋转和缩放):
更多信息:http : //en.wikipedia.org/wiki/Nonlinear_Dimensionity_reduction
我看到这个问题已经有了一个可以接受的答案,但我想与他人分享这篇文章,该文章讨论在分类之前使用PCA进行特征转换。
带回家的消息(在@vqv的答案中很漂亮地显示了)是:
主成分分析(PCA)基于提取数据显示最大可变性的轴。尽管PCA在新的基础上“散布”了数据,并且可以在无监督学习中提供很大帮助,但不能保证新轴与(受监督)分类问题中的歧视性特征一致。
对于感兴趣的人,如果您看一下第4节。实验结果,他们将分类精度与1)原始特征,2)PCA转换的特征以及3)两者的组合进行了比较,这对我来说是新的。
我的结论是:
基于PCA的特征转换可将信息从大量特征汇总为有限数量的组件,即原始特征的线性组合。但是,主要成分通常很难解释(不直观),并且正如本文中的经验结果表明,它们通常不会提高分类性能。
PS:我注意到列出的论文的局限性之一是作者将分类器的绩效评估仅限制为“准确性”,这可能是非常有偏差的绩效指标。