按个别特征分类的预测

问题描述

我们已将多个机器学习模型(例如light GBM,随机森林,弹性网,XGBoost )用于预测。要求是根据输入特征分解预测值(每个预测)。Sample data

有连续的和分类的输入变量。类别变量在数据中的数量更多。

例如要求:说我有一个预测y = 1000$,并且有三个输入特征x1x2x3。有没有一种方法可以表示预测值(1000 $),其中x1贡献了400 $,x2贡献了300 $,x3贡献了300 $。

尝试的方法功能重要性从随机森林到每个输入变量的属性百分比贡献。这没有给出有意义的结果。

LIME和Shapley :LIME提供的本地截距值在所考虑的场景中没有意义。 Shapley提供了从期望值到各个特征的偏差的量化,这也没有帮助。

解决方法

您正在寻找功能与目标之间的线性关系。最好的解决方案当然是拟合线性模型!

您说您尝试过弹性网,它实际上是规则化的线性回归。如果模型性能令人满意,则可以使用线性回归的系数来计算贡献。实际上,该模型将是:

eq0

因此x1eq1(或者仅仅是b1,取决于您“贡献”的意思)贡献给y。请注意,在“贡献”的概念中,您应该尝试理解拦截值b0

如果“基本”线性模型的性能不够好,则可以进行一些特征工程(以变量平方或其他变换为例),请查看the generalized linear model or the generalized additive model,但这确实是特定于你有问题。

现在,如果拟合线性模型不起作用,则意味着您无法在目标特征和从属特征之间找到全局线性关系。您需要近似一个局部线性关系,但它可能并不总是有效或无法提供预期的结果。具有线性解释模型的LIME似乎是一个不错的选择,也许您可​​以进一步研究为什么它对您不起作用。