如何获得逻辑回归特征对特定预测的相对重要性?

Posted

技术标签:

【中文标题】如何获得逻辑回归特征对特定预测的相对重要性?【英文标题】:How can I get the relative importance of features of a logistic regression for a particular prediction? 【发布时间】:2016-04-04 10:15:24 【问题描述】:

我正在使用逻辑回归(在 scikit 中)来解决二元分类问题,并且对能够解释每个单独的预测感兴趣。更准确地说,我感兴趣的是预测正类的概率,并衡量每个特征对该预测的重要性。

使用系数 (Betas) 作为重要性的衡量标准通常不是一个好主意as answered here,但我还没有找到一个好的替代方案。

到目前为止,我发现最好的是以下 3 个选项:

    蒙特卡洛选项:修复所有其他特征,重新运行预测,用训练集中的随机样本替换我们想要评估的特征。这样做很多次。这将为正类建立基线概率。然后与原始运行的正类概率进行比较。差异是特征重要性的度量。 “留一法”分类器:要评估一个特征的重要性,首先创建一个使用所有特征的模型,然后再创建一个使用除被测特征之外的所有特征的模型。使用这两个模型预测新的观察结果。两者之间的区别在于该功能的重要性。 调整后的 beta:基于this answer,通过“其系数的大小乘以数据中相应参数的标准差”来排列特征的重要性。

所有选项(使用 beta、Monte Carlo 和“留一法”)对我来说似乎都是糟糕的解决方案。

    Monte Carlo 依赖于训练集的分布,我找不到任何文献支持它。 “遗漏一个”很容易被两个相关特征所欺骗(当一个不存在时,另一个会介入以进行补偿,并且两者都将被赋予 0 重要性)。 调整后的 beta 听起来很合理,但我找不到任何支持它的文献。

实际问题:在决策时刻,使用线性分类器解释每个特征的重要性的最佳方法是什么?

快速说明 #1:对于随机森林,这很简单,我们可以简单地使用 prediction + bias 分解,正如 this blog post 中所解释的那样。这里的问题是如何用逻辑回归等线性分类器做类似的事情。

快速说明 #2:*** 上有许多相关问题(12345)。我一直无法找到这个特定问题的答案。

【问题讨论】:

你不能对训练数据本身使用任何特征选择技术吗? 我可以,但这不是重点。假设我建立了一个模型(它有许多功能,当时选择了)。现在我做一个预测。在那个预测的那一刻,我想知道每个单独特征的重要性,the way I would in a Random Forest with Tree Importances。请注意,也许每个预测总是相同的,我还没有弄清楚。 【参考方案1】:

如果你想知道特征对特定决策的重要性,为什么不逐步模拟decision_function(由scikit-learn提供,所以你可以测试你是否得到相同的值)?线性分类器的决策函数很简单:

intercept_ + coef_[0]*feature[0] + coef_[1]*feature[1] + ...

特性的重要性i 就是coef_[i]*feature[i]。当然,这类似于查看系数的大小,但由于它与实际特征相乘,而且这也是幕后发生的事情,所以它可能是您最好的选择。

【讨论】:

【参考方案2】:

我建议使用eli5,它已经实现了类似的东西。

对于你的问题: 实际问题:在决策时刻,使用线性分类器解释每个特征的重要性的最佳方法是什么?

我会说答案来自 eli5 的函数 show_weights()

此外,这可以使用许多其他分类器来实现。

有关更多信息,您可以在相关问题中查看此question。

【讨论】:

以上是关于如何获得逻辑回归特征对特定预测的相对重要性?的主要内容,如果未能解决你的问题,请参考以下文章

R语言评估回归模型预测因素(变量特征)的相对重要性(Relative importance)将回归模型的预测变量标准化(scale)之后构建模型获得标准化回归系数来评估预测变量的相对重要性

如何获得逻辑回归中的权重向量?

pyspark,逻辑回归,如何获得各个特征的系数

Python对中国电信消费者特征预测:随机森林朴素贝叶斯神经网络最近邻分类逻辑回归支持向量回归(SVR)

7.逻辑回归实践

使用逻辑回归进行特征选择