解释 sklearn 中的逻辑回归特征系数值

Posted

技术标签:

【中文标题】解释 sklearn 中的逻辑回归特征系数值【英文标题】:Interpreting logistic regression feature coefficient values in sklearn 【发布时间】:2018-12-03 00:13:12 【问题描述】:

我已经为我的数据拟合了一个逻辑回归模型。想象一下,我有四个特征:1)参与者接受了哪些条件,2)参与者是否对所测试的现象有任何先验知识/背景(实验后问卷中的二元反应),3)花费在实验任务上的时间,以及4) 参与者年龄。我正在尝试预测参与者最终选择选项 A 还是选项 B。我的逻辑回归输出以下特征系数和 clf.coef_

[[-0.68120795 -0.19073737 -2.50511774  0.14956844]]

如果选项 A 是我的正类,这个输出是否意味着特征 3 是二元分类最重要的特征,并且与选择选项 A 的参与者有负相关(注意:我没有对我的数据进行归一化/重新缩放) ?我想确保我对系数的理解以及我可以从中提取的信息是正确的,因此我不会在分析中做出任何概括或错误假设。

感谢您的帮助!

【问题讨论】:

您的理解似乎是正确的。可以肯定的是,您可以将样本提交给分类器并获得结果,然后将样本中的每个值乘以相应的系数。检查他们是否提供相同的结果。 不,不正确。由于值未归一化,如果特征 1 的典型值比特征 3 高一个数量级,则特征 1 对分类的贡献更大,因此会更重要。即使使用归一化直接解释系数也有点粗略。更好的方法是使用统计测试 嗨@Marat 很高兴知道。我完全理解缩放/标准化注释,并且我对我的数据执行了最小-最大缩放,使其处于 0-1 的比例。但是,您介意更多地扩展您评论的统计测试部分吗?你指的是什么测试?此外,如果不是特征重要性/效果大小,现有的 .coef_ 命令会传达什么? 我不是统计学家,所以需要一些时间才能做出合理的回应;明天我会尽力回答。另外,我搞砸了上面对规范化的解释,将在答案中修复它。 【参考方案1】:

你正走在正确的轨道上。如果一切都非常相似,则更大的 pos/neg 系数意味着更大的影响,所有事情都相同。

但是,如果您的数据未标准化,那么 Marat 是正确的,因为系数的大小没有任何意义(没有上下文)。例如,您可以通过将测量单位更改为更大或更小来获得不同的系数。

我看不出您是否在此处包含了非零截距,但请记住,逻辑回归系数实际上是优势比,您需要将它们转换为概率以获得更直接可解释的结果。

查看此页面以获得很好的解释: https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-how-do-i-interpret-odds-ratios-in-logistic-regression/

【讨论】:

嗨,那么如何使用sklearn 将这些优势比转换为概率?【参考方案2】:

逻辑回归以对数赔率返回信息。所以你必须先用np.exp将对数赔率转换成赔率,然后再取odds/(1 + odds)

要转换为概率,请使用列表推导并执行以下操作:

[np.exp(x)/(1 + np.exp(x)) for x in clf.coef_[0]]

此页面在 R 中解释了我引用的转换对数赔率: https://sebastiansauer.github.io/convert_logit2prob/

【讨论】:

以上是关于解释 sklearn 中的逻辑回归特征系数值的主要内容,如果未能解决你的问题,请参考以下文章

python使用sklearn中的make_regression函数生成回归分析需要的仿真数据使用pandas查看生成数据的特征数据目标数据(target)以及数据每个特征的实际系数值

sklearn 逻辑回归中的特征

sklearn 逻辑回归中的特征选择

详解逻辑回归与评分卡-逻辑回归中的特征工程菜菜的sklearn课堂笔记

如何将系数值从逻辑回归中提取到 R 中的数据框中? [复制]

Python SKLearn 逻辑回归中的虚拟变量