如何获得逻辑回归特征对特定预测的相对重要性?
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)之后构建模型获得标准化回归系数来评估预测变量的相对重要性