【问题标题】:How to know the factor by which a feature affects a model's prediction如何知道特征影响模型预测的因素
【发布时间】:2017-06-25 18:54:20
【问题描述】:

我已经在数据集上训练了我的模型,我使用决策树来训练我的模型,它有 3 个输出类 - Yes、Done 和 No,我通过检查分类器的特征重要性。我使用 python 和 sklearn 作为我的 ML 库。既然我已经找到了最具决定性的特征,我想知道该特征是如何做出贡献的,从某种意义上说,如果关系是正的,如果特征值增加,它会导致是,如果它是负的,它会导致不,依此类推,我也想知道它的大小。

我想知道是否有解决方案,也想知道一个独立于所选算法的解决方案,请尝试提供不是特定于决策树的解决方案,而是针对所有算法的通用解决方案.

如果有什么方法可以告诉我:

对于特征 x1,关系是 0.8*x1^2 对于特征 x2,关系是 -0.4*x2

这样我就可以根据输入特征 x1 、x2 等分析输出了

是否有可能找出某个类的特定特征的高值,还是该特征的低值。

【问题讨论】:

标签: python machine-learning scikit-learn decision-tree


【解决方案1】:

您可以使用部分依赖图 (PDP)。 scikit 为他们的 GBM 提供了一个内置的 PDP - http://scikit-learn.org/stable/modules/ensemble.html#partial-dependence,它是在弗里德曼的贪婪函数逼近论文 http://statweb.stanford.edu/~jhf/ftp/trebst.pdf pp26-28 中创建的。

如果您使用 scikit-learn GBM,请使用他们的 PDP 功能。如果您使用了另一个估算器,您可以创建自己的 PDP,这只是几行代码。如您所问,PDP 和此方法与算法无关。它只是不会扩展。

逻辑

  1. 获取您的训练数据
  2. 对于您正在检查的特征,获取所有唯一值或一些分位数以减少时间
  3. 取唯一值
  4. 对于您正在检查的特征,在所有观察中,替换为 (3) 中的值
  5. 预测所有训练观察结果
  6. 获取所有预测的平均值
  7. 绘制点(唯一值,均值)
  8. 重复 3-7 以获取下一个唯一值,直到没有更多值为止

您现在有一个单向 PDP。当特征增加时(X 轴),预测平均会发生什么(y 轴)。变化的幅度有多大。

进一步分析,您可以将平滑曲线或样条拟合到 PDP,这可能有助于理解这种关系。正如@Maxim 所说,没有完美的规则,所以你在这里寻找趋势,试图理解一种关系。我们倾向于针对最重要的功能和/或您感兴趣的功能运行此功能。

上面的 scikit-learn 参考有更多的例子。

对于决策树,您可以使用 Friedman 描述并由 scikit-learn 实现的算法快捷方式。您需要遍历树,以便代码与包和算法相关联,因此它不能回答您的问题,我也不会描述它。但它在我引用的 scikit-learn 页面和论文中。

def pdp_data(clf, X, col_index):
    X_copy = np.copy(X)

    results = {}

    results['x_values'] = np.sort(np.unique(X_copy[:, col_index]))
    results['y_values'] = []

    for value in results['x_values']:
        X_copy[:, col_index] = value
        y_predict = clf.predict_log_proba(X_copy)[:, 1]
        results['y_values'].append(np.mean(y_predict))

    return results

已编辑以回答问题的新部分: 除了你的问题,你正在寻找一个带有系数的线性模型。如果必须用线性系数解释模型,请建立线性模型。

有时您需要如何解释模型会指导您构建什么类型的模型。

【讨论】:

  • 我一般需要帮助,这对所有/大多数算法都有效
  • 我更新了我的答案以解决您问题的最新补充。
  • 但是如果线性模型不适合数据怎么办?
  • 如果您必须有系数,那么您需要使线性模型(或非线性模型参见 R nlme 包)更好地为您的数据工作。尝试数据转换、交互、效果等。在您编辑的问题中,添加 x1^2。所以添加那个转换。机器学习不是要调用的 API。古老的格言是机器学习项目中 70% 的时间都花在了数据上——获取、清理、转换、理解等。
【解决方案2】:

一般来说 - 没有。决策树的工作方式与此不同。例如,它可能有一个规则,如果特征 X > 100 OR X

【讨论】:

    猜你喜欢
    • 2019-06-22
    • 2021-10-15
    • 2018-09-27
    • 2020-10-18
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多