gpt4 book ai didi

python - 如何知道特征影响模型预测的因素

转载 作者:行者123 更新时间:2023-11-30 09:52:37 26 4
gpt4 key购买 nike

我已经在数据集上训练了我的模型,并使用决策树来训练我的模型,它有 3 个输出类 - Yes、Done 和 No,我通过以下方式了解了在做出决策时最具决定性的特征:检查分类器的特征重要性。我使用 python 和 sklearn 作为我的 ML 库。现在我已经找到了最具决定性的特征,我想知道该特征如何做出贡献,从某种意义上说,如果关系是正的,那么如果特征值增加,它会导致"is",如果它是负的,它会导致不等等,我也想知道同样的幅度。

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

如果有某种方式可以告诉我:

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

这样我就能够根据输入特征 x1 、x2 等分析输出

是否可以找出某个类的特定特征的值是否较高,或者该特征的值是否较低。

最佳答案

您可以使用部分依赖图 (PDP)。 scikit 有一个用于 GBM 的内置 PDP - http://scikit-learn.org/stable/modules/ensemble.html#partial-dependence它是在弗里德曼的贪婪函数逼近论文 http://statweb.stanford.edu/~jhf/ftp/trebst.pdf 中创建的第26-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

编辑以回答问题的新部分:为了补充您的问题,您正在寻找带有系数的线性模型。如果必须用线性系数解释模型,请构建线性模型。

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

关于python - 如何知道特征影响模型预测的因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com