python-3.x - 逻辑回归系数没有意义

标签 python-3.x machine-learning scikit-learn logistic-regression categorical-data

我正在尝试建立电信流失的逻辑回归模型。

一些背景:为了预测客户流失,我们的数据集包含 Account_Age、Current_Bill_Amount、Avg_Days_Delinquent(账单未付天数)、投诉、Avg_Calls 等变量的数据。

我的问题与投诉变量有关。如图所示,投诉变量有 6 个投诉类别,因此已转换为 5 个虚拟变量。创建了 5 个虚拟列,将“定价”投诉排除在外。

现在,如“通话质量”上的图片投诉所示,“计费问题”的绝对流失率和百分比都很高,而其他投诉类型对流失的影响不大。

图像可能不会在您的终端显示,因此相同的链接是:https://imgur.com/88zHamt https://imgur.com/8WR19C0

关于投诉对客户流失的影响,我有两个问题。

问题 1:

该算法不将“通话质量”视为重要变量,其 P 值为 0.527。鉴于 81% 因“通话质量”投诉而流失的客户(参见图片),该算法给出了矛盾的结果。无法理解为什么会发生这种情况,通话质量肯定会影响客户流失率。请分享您对此的想法。

问题2:

模型重要变量 (P<0.05)“账单问题”、“支票帐户”和“移动”的系数分别为 -1.0033、-2.5675 和 -2.1132。常识是,当有投诉时,客户流失率就会增加,因此系数应该为正。那么为什么对于这3个虚拟变量算法要计算负系数呢?

如果您需要更多信息或有任何说明,请告诉我。

import statsmodels.api as sm
logReg=sm.Logit(Y_train,X_train)
logistic_regression=logReg.fit() 
logistic_regression.summary()

问题 1 和 2 的答案是预期结果。

最佳答案

问题 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%。 因此,添加用户提示类别“移动”的信息可以降低流失概率。因此系数为负,对于“计费问题”和“检查帐户”也是如此。

现在,如果您添加整组用户,则任何类型的投诉都可能会增加流失概率,并且您将获得正系数。

关于python-3.x - 逻辑回归系数没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902599/

相关文章:

python - 在哪里可以找到 Python 中可能的异常列表?

tensorflow - Keras 损失为负,准确度下降,但预测良好?

python-3.x - 如何在文本分类的拆分数据测试和训练中修复 'typeerror: only integer scalar arrays can be converted to a scalar index'

python - 访问 `sklearn` 管道中的转换器功能

python - 在加载 Keras 保存模型时,是否有人得到 "AttributeError: ' str' 对象没有属性 'decode'"

python - 使用 sklearn 进行网格搜索的显式(预定义)验证集

python - 为什么整数列表的深拷贝在内存中返回相同的整数?

python - matplotlib:将颜色分配给半径

python - 从类型中提取数据

r - R 中 xgboost 回归的置信区间