首页 > 解决方案 > 根据单个特征分解预测

问题描述

我们应用了多种机器学习模型,如轻GBM、随机森林、弹性网络、XGBoost等进行预测。要求是根据输入特征分解预测值(每个预测)。样本数据

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

例如对于要求:假设我有一个预测y = 1000$并且有三个输入特征x1x2并且x3。有没有办法将预测值(1000 美元)表示为 400 美元x1、300 美元x2和 300 美元x3

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

LIME 和 Shapley:LIME 提供了一个在所考虑的场景中没有意义的局部截距值。Shapley 提供了对单个特征与预期值的偏差的量化,这也没有帮助。

标签: pythondata-sciencepredictionmodelingfeature-selection

解决方案


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

您说您尝试了elastic net,这实际上是一个正则化线性回归。如果模型性能令人满意,您可以使用线性回归的系数来计算贡献。实际上,该模型将是:

eq0

所以x1eq1(或只是b1,取决于你所说的“贡献”的意思)贡献给是的. 请注意,在“贡献”的概念中,您应该尝试理解截距值b0

如果“基本”线性模型的性能不够好,您可以进行一些特征工程(以变量平方或其他变换为例),查看广义线性模型或广义加法模型,但这将非常具体给你的问题。

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


推荐阅读