代码之家  ›  专栏  ›  技术社区  ›  Jarad

确定为什么特征在决策树模型中很重要

  •  10
  • Jarad  · 技术社区  · 7 年前

    通常情况下,利益相关者不想要一个善于预测的黑匣子模型;他们希望通过对功能的深入了解,更好地了解自己的业务,从而向他人解释。

    当我们检查xgboost或sklearn梯度提升模型的特征重要性时,我们可以确定特征重要性。。。但我们不明白为什么这些功能很重要,是吗?

    有没有办法不仅解释哪些功能是重要的,而且解释它们为什么重要?

    我被告知使用 shap 但是,即使运行一些样板示例也会出现错误,因此我正在寻找替代方法(或者甚至只是一种程序性的方法来检查树并收集见解,我可以从其他方面带走 plot_importance() 绘图)。

    在下面的示例中,我们如何解释为什么使用该功能 f19 是最重要的(同时也认识到决策树是随机的,没有随机_状态或种子)。

    from xgboost import XGBClassifier, plot_importance
    from sklearn.datasets import make_classification
    import matplotlib.pyplot as plt
    X,y = make_classification(random_state=68)
    xgb = XGBClassifier()
    xgb.fit(X, y)
    plot_importance(xgb)
    plt.show()
    

    feature_importance

    更新: 编程 程序证明,上述模型选择的特征对预测能力有积极或消极的贡献。我想看 密码 (不是理论)你将如何检查实际模型并确定每个特征的积极或消极贡献。目前,我坚持认为这是不可能的,所以请有人证明我错了。我宁愿错!

    更新2: Partial dependence plots 也许是答案。

    部分依赖图(PDP)是由Friedman(2001)引入的 解释复杂机器学习算法的目的。 解释线性回归模型没有 解释支持向量机、随机森林或梯度 升压机模型,这是被部分依赖的情节可以来 投入使用。对于一些统计解释,你可以参考这里和更多 进展有些算法有寻找变量的方法 重要性,但它们不表示变量是否 绝对地 消极的 影响模型。

    3 回复  |  直到 7 年前
        1
  •  1
  •   jonnybazookatone    7 年前

    太长,读不下去了 http://scikit-learn.org/stable/auto_examples/ensemble/plot_partial_dependence.html


    我想澄清一些措辞,以确保我们意见一致。

    1. 预测能力 :什么功能 明显地 为预测做出贡献
    2. 特征依赖 :功能是积极的还是消极的

    1、预测能力

    您的功能重要性向您展示了哪些功能保留了最多的信息,哪些功能是最重要的 重要的 特征。权力可能意味着什么导致了最大的变化-你必须插入虚拟值来检查,以查看其整体影响,就像你必须处理线性回归系数一样。

    2、相关性/依赖性

    正如@Tiago1984所指出的,它在很大程度上取决于底层算法。XGBoost/GBM正在另外建立一个存根委员会(决策树数量较少,通常只有一个分裂)。

    在回归问题中,树通常使用与MSE相关的标准。我不会详细介绍,但您可以在这里阅读更多内容: https://medium.com/towards-data-science/boosting-algorithm-gbm-97737c63daa3

    你会看到,在每一步中,它都会为弱学习者的“方向”计算一个向量,因此原则上你知道它的影响方向(但请记住,它可能会在一棵树中、在加法模型的多个步骤中多次出现)。

    但是,直奔主题;除了 f19 并预测一系列 19层 并查看它与响应值的关系。

    看看 部分依存图 http://scikit-learn.org/stable/auto_examples/ensemble/plot_partial_dependence.html

    还有一章是关于它的 统计学习要素 ,第10.13.2章。

        2
  •  1
  •   Tiago1984    7 年前

    特征的“重要性”取决于用于构建树的算法。例如,在C4.5树中,经常使用最大熵准则。这意味着特征集允许使用更少的决策步骤进行分类。

        3
  •  1
  •   lejlot    7 年前

    当我们检查xgboost或sklearn梯度提升模型的特征重要性时,我们可以确定特征重要性。。。但我们不明白为什么这些功能很重要,是吗?

    是的,我们有。特征重要性不是什么神奇的对象,它是一个定义良好的数学标准——其精确定义取决于特定的模型(和/或一些额外的选择),但它始终是一个告诉“为什么”的对象。“为什么”通常是最基本的可能,归结起来是“因为它有最强的预测能力”。例如,随机森林特征重要性是衡量当随机选择的训练数据点被推过树时,该特征在决策路径上使用的可能性。所以它给出了一个恰当的数学意义上的“为什么”。