用于数据减少的主成分分析 (PCA) 与额外树分类器

Posted

技术标签:

【中文标题】用于数据减少的主成分分析 (PCA) 与额外树分类器【英文标题】:Principal Component Analysis (PCA) vs. Extra Tree Classifier for Data Reduction 【发布时间】:2020-06-05 07:58:24 【问题描述】:

我有一个包含 13 列的数据集,我想使用 PCA 进行数据缩减以删除不需要的列。我的问题是 PCA 并没有真正显示列名,而是 PC1 PC2 等。我发现额外的树分类器做同样的事情,但确实表明了每列的变化。我只是想确定他们是否有相同的目标,或者他们的结果是否不同。还有人会建议更好的数据缩减方法吗?

我的最后一个问题是我有一个额外树分类器的代码,想确认它是否正确?

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

from sklearn.ensemble import IsolationForest

from sklearn.ensemble import ExtraTreesClassifier 



df = pd.read_csv('D:\\Project\\database\\5-FINAL2\\Final After Simple Filtering.csv')

extra_tree_forest = ExtraTreesClassifier(n_estimators = 500, 
                                        criterion ='entropy', max_features = 'auto') 

extra_tree_forest.fit(df)

feature_importance = extra_tree_forest.feature_importances_ 

feature_importance_normalized = np.std([tree.feature_importances_ for tree in 
                                        extra_tree_forest.estimators_], 
                                        axis = 0) 

plt.bar(df.columns, feature_importance_normalized) 
plt.xlabel('Feature Labels') 
plt.ylabel('Feature Importances') 
plt.title('Comparison of different Feature Importances') 
plt.show()

谢谢。

【问题讨论】:

【参考方案1】:

这两种方法非常不同。

PCA 不会向您显示特征名称,因为使用 PCA 进行降维实际上与特征的相对重要性没有任何关系。 PCA 获取原始数据并将其转换为每个新的“特征”(主成分)独立于其他空间的空间,您可以根据相应的特征值判断每个主成分对于忠实表示数据的重要性。删除最不重要的主成分会降低主成分空间中的维数,但不会降低原始特征空间中的维数——因此您还需要对所有未来数据进行 PCA,然后对(缩短的)主成分向量执行所有分类。

一个额外的树分类器可以根据您的数据训练整个分类器,因此它比仅仅降维更强大。但是,它似乎更接近您正在寻找的内容,因为特征重要性确实直接告诉您在进行分类时每个特征的相关性。

请注意,在 PCA 中,具有最高特征值的主成分对准确重建数据的贡献最大。这与对准确分类数据的贡献最大不同。额外的树分类器正好相反:它告诉您在分类数据时哪些特征最重要,而不是在重构数据时。

基本上,如果您认为自己现在拥有一个具有代表性的数据集,并且愿意只存储与对已有数据进行分类相关的变量,那么使用额外的树进行降维是一个不错的选择。如果您只是想用更少的空间忠实地表示数据而不过度关注对分类的影响,PCA 是更好的选择。使用 PCA 进行降维通常也有助于从原始数据中删除不相关的特征,但这不是它的优化目标。

【讨论】:

所以在我的情况下,使用额外的树分类器将是我需要做的更好的选择(重建/删除与其他相比不重要的列)? @AliYoussef 这真的取决于你对当前数据集的代表性有多大信心。如果您使用额外的树分类器并且仅根据它们对基于当前数据集的分类的重要性来存储列,那么您最好希望您永远不会对您删除的列感兴趣。 所以我决定使用额外的树分类器,并发现与其他列相比,我的列中很少有低于 2% 的特征重要性。我有一个简单的问题,我在这里问过:(stats.stackexchange.com/questions/451732/…)如果可能的话,你知道答案,你介意检查一下吗?也非常感谢您的解释。

以上是关于用于数据减少的主成分分析 (PCA) 与额外树分类器的主要内容,如果未能解决你的问题,请参考以下文章

主成分分析(PCA)

R语言高维数据的主成分pca t-SNE算法降维与可视化分析案例报告

PCA分析(主成分分析)--结果解读

主成分分析(PCA)简介

机器学习Sklearn库主成分分析PCA降维的运用实战

独热编码可以pca吗