我正在使用逻辑回归(在 scikit 中)来解决二元分类问题,并且对能够解释每个单独的预测感兴趣。更准确地说,我感兴趣的是预测正类的概率,并衡量每个特征对该预测的重要性。
使用系数(Betas)作为重要性的衡量标准通常是一个坏主意,正如这里回答的那样,但我还没有找到一个好的选择。
到目前为止,我发现最好的是以下 3 个选项:
- 蒙特卡洛选项:修复所有其他特征,重新运行预测,用训练集中的随机样本替换我们想要评估的特征。这样做很多次。这将为正类建立一个基线概率。然后与原始运行的正类概率进行比较。差异是特征重要性的度量。
- “Leave-one-out”分类器:为了评估一个特征的重要性,首先创建一个使用所有特征的模型,然后创建另一个使用除被测试的特征之外的所有特征的模型。使用这两个模型预测新的观察结果。两者之间的区别在于该功能的重要性。
- 调整后的贝塔:根据这个答案,通过“其系数的大小乘以数据中相应参数的标准差”来排列特征的重要性。
所有选项(使用测试版、蒙特卡洛和“留一法”)对我来说似乎都是糟糕的解决方案。
- 蒙特卡洛依赖于训练集的分布,我找不到任何文献来支持它。
- “遗漏一个”很容易被两个相关特征所欺骗(当一个不存在时,另一个会介入以进行补偿,并且两者都将被赋予 0 重要性)。
- 调整后的 beta 听起来很合理,但我找不到任何文献支持它。
实际问题:在决策时刻,用线性分类器解释每个特征的重要性的最佳方法是什么?
快速说明 #1:对于随机森林,这很简单,我们可以简单地使用prediction + bias
分解,正如这篇博文中所解释的那样。这里的问题是如何用逻辑回归等线性分类器做类似的事情。