我应该信任哪个功能选择?

数据挖掘 机器学习 Python 特征选择 威卡
2021-09-16 19:37:24

我使用 Python 和 Weka 在我的数据集(91 个预测变量)上运行特征选择。我可以看到不同算法的巨大差异(特征排名)。而且这些结果与随机森林或梯度提升拟合得出的结果仍有很大不同。那么我该如何处理这个差距或者我应该信任哪种算法呢?是否有任何绩效评估方法或经验法则?

在此处输入图像描述

# Univariate Selection
import pandas
import numpy
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

# feature extraction
test = SelectKBest(score_func=chi2, k=4)
fit = test.fit(X, y)
# summarize scores
numpy.set_printoptions(precision=3)
print(fit.scores_)


# Feature Extraction with RFE
from sklearn.feature_selection import RFE

# feature extraction
model = LogisticRegression()
rfe = RFE(model, 15)
fit = rfe.fit(X, y)
print("Num Features: %d" % fit.n_features_)
print("Selected Features: %s" % fit.support_)
print("Feature Ranking: %s" % fit.ranking_)



# VarianceThreshold
from sklearn.feature_selection import VarianceThreshold
sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
sel.fit_transform(X)

idxs = sel.get_support(indices=True)
np.array(X)[:, idxs]
2个回答

相信 ML 技术为您完成工作通常不是最佳实践。数据科学家知道他或她应用的方法的工作原理是什么,然后在同一环境中尝试多种方法,看看哪些方法最适用于手头的领域。某些措施的效果如何可以作为数据结构的线索。

马上要了解 Weka 提供了 3 种特征选择方法:过滤器、包装器和 PCA。过滤器应用标准(主要基于它如何划分集合的度量)用于特征适合度(它们划分搜索空间的程度的变化),包装器使用学习算法进行评估,而 PCA 并没有那么多选择特征它重新组合特征以最大化维度的差异。

话虽这么说:我建议您开始查看 InformationGainEval 一种使用信息增益来选择属性的方法。它非常流行且易于理解。你可以在这里找到一个很好的解释: https ://stackoverflow.com/questions/33982943/how-the-selection-happens-in-infogainattributeeval-in-weka-feature-selection 。比通过其他方式工作(可以从 GUI 访问文档)。

我会看看Sebastian Raschka 关于不同类型特征选择方法的讨论。. 简而言之,似乎有三类(各有优缺点):

  1. 过滤器
  2. 包装纸
  3. 嵌入式方法

Sebastian 继续讨论特定的特征选择技术(即 PCA),并通过 3 个简单的步骤描述了该过程- 可能值得研究

注意:我通常会将其设为“评论”,但由于我在此论坛中的声誉低下而无法这样做