确定每个特征对 XGBoost 分类的贡献

数据挖掘 机器学习 Python 特征选择 xgboost
2022-03-08 05:27:39

所以总结一下我所做的事情:

我的数据集有 5 个类和 10 个参数。我使用 sklearn 的 XGBclassifer 来调查是否可以使用这 10 个参数来预测每个数据点的类别。在训练和拟合 XGBclassifier 之后,我检查了 feature_importances_,发现 2/10 参数在分类中起关键作用。

所以我的问题是:

我能否确切了解这两个参数对每个特定类别的分类有何贡献?例如,我能否找到参数 1 和参数 2 的截止值,这将导致对第 1 类的预测?

我正在考虑使用这两个参数和 k 值 = 5 执行无监督聚类。之后,我可以只关注近似截止值。但是,我担心这 5 个集群不会与 5 个组紧密对应。

非常感谢先进

2个回答

如果你有那么参数,其中两个很重要。您可以绘制树并查看每个参数的阈值。

from xgboost import XGBClassifier
from xgboost import plot_tree
import matplotlib.pyplot as plt

# fit the model 
model = XGBClassifier().fit(X, y)
# plot single tree
plot_tree(model)
plt.show()

上面的代码只是绘制了第一棵树。例如,您可以使用以下代码行按顺序绘制第 4 棵提升树

plot_tree(model, num_trees=3)

请注意,在每棵树中,您可能对集成方法中的每个参数都有不同的阈值。

我想shap values也许能帮到你。看看这个链接您可以检查本地和全局的可解释性。