逻辑回归系数没有意义
Posted
技术标签:
【中文标题】逻辑回归系数没有意义【英文标题】:Logistic regression coefficients not making sense 【发布时间】:2019-09-18 00:47:43 【问题描述】:我正在尝试为电信流失建立逻辑回归模型。
一些背景知识:为了预测客户流失率,我们的数据集包含 Account_Age、Current_Bill_Amount、Avg_Days_Delinquent(未付账单后的天数)、投诉、Avg_Calls 等变量数据。
我的问题与投诉变量有关。如图所示,投诉变量已转换为 5 个虚拟变量,因为有 6 个投诉类别。创建了 5 个虚拟列,将“定价”投诉排除在外。
现在,如“通话质量”的投诉图片所示,“计费问题”具有很高的绝对和百分比流失率,而其他投诉类型对流失率的贡献并不大。
图片可能不会显示在您的末尾,因此相同的链接是:https://imgur.com/88zHamt https://imgur.com/8WR19C0
关于投诉对客户流失的影响,我有 2 个问题。
问题一:
该算法不认为“通话质量”是一个重要变量,它的 P 值为 0.527。鉴于 81% 的客户(参考图片)投诉“通话质量”而流失,该算法给出了矛盾的结果。无法理解为什么会发生这种情况,通话质量肯定会影响客户流失。请分享您对此的看法。
问题2:
模型显着变量的系数 (P
如果您需要更多信息或有任何澄清,请告诉我。
import statsmodels.api as sm
logReg=sm.Logit(Y_train,X_train)
logistic_regression=logReg.fit()
logistic_regression.summary()
问题 1 和 2 的答案是预期结果。
【问题讨论】:
为什么系数不能为负数? @erip 由于投诉虚拟变量对流失系数有积极影响,因此我认为应该是正数。 【参考方案1】:问题一:
p 值是系数不为空的概率,而不是特征的重要性,即使它经常被解释为它。 您在这里真正可以得出的结论是,无法(很有把握地)判断系数不为空。检查您的值的 95% 置信区间,它会很宽泛并且包含系数的正值。
作为一个例子,一个可能的解释是这个变量与其他一些变量一起携带冗余信息,这可以解释为什么算法不能说明它的有用性。 尝试向前或向后选择以迭代选择相关变量,这可能会改变您的最终选择。
问题 2:
系数为负绝对没有问题。
确实,您使用逻辑回归建模的是:
P(流失) = 1/(1+exp(sum(beta_i*x_i)) (see on wikipedia as an example)
beta_i 作为变量 x_i 的系数
您可以看到,负系数会降低流失概率。
在这里,您使用报告投诉的用户集(我看不到“无投诉”类别),根据您链接的图片,流失概率为 48.5%。
所以“默认”流失概率是 48.5%, 然而,虚拟变量“移动”的流失概率仅为 13.7%。 因此,添加用户抱怨“移动”类别的信息会降低流失概率。因此是负系数,并且对于“计费问题”和“支票帐户”来说是相同的。
现在,如果您添加整个用户集,任何类型的投诉都可能会增加流失概率,您将获得正系数。
【讨论】:
@A Co 感谢您的出色回答。至于问题1,我有疑问。您建议尝试向前/向后选择,所以我使用了递归特征消除(根据下面的链接,它类似于向后选择)并将我的 logit 回归模型限制为 10 个***特征。模型准确率、AUC、F1score 都有所提高,但在前 10 个特征中,有 2 个具有较高的 p 值。你建议高p值很好。那么我可以在我的模型中包含这两个功能吗? datascience.stackexchange.com/questions/937/… @VikrantArora,我并不是说 p 值高就可以——如果不清楚,很抱歉——但得出变量不重要的结论是不正确的。通常,保留具有高 p 值的变量更有可能在您的算法中带来噪音,因此不建议保留它们。但是,如果您认为变量应该很重要,您应该调查为什么您的变量具有高 p 值。试着看看它与其他变量的相关性,如果是的话,它可能是一个解释。 @VikrantArora 关于递归特征消除,您使用的算法中有一个参数是 n_features_to_select (see the doc here)。默认情况下,它将保留一半的功能。所以你最终得到的变量集不一定是正确的,你应该改变 n_features_to_select 并分析模型的性能以选择正确的特征子集。 @A Co 谢谢 P 值对我来说很清楚,正如递归消除中所建议的,我将改变功能计数并选择最大化性能的计数感谢您的宝贵支持。干杯。以上是关于逻辑回归系数没有意义的主要内容,如果未能解决你的问题,请参考以下文章