• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 【R应用】Logistic模型的客户流失预警分析

      【R应用】Logistic模型的客户流失预警分析

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2016年1月6日
      测试开头

      在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价、身高、GDP、学生成绩等,发现这些被预测的变量都属于连续型变量。然而有些情况下,被预测变量可能是二元变量,即成功或失败、流失或不流失、涨或跌等,对于这类问题,线性回归将束手无策。这个时候就需要另一种回归方法进行预测,即Logistic回归。


      一、Logistic模型简介

      Logistic回归模型公式如下:

      【R应用】Logistic模型的客户流失预警分析


      xn的情况下,兴趣变量y=1时的概率。显然,该模型是一个非线性模型,具有S型分布,可见下图:

      #绘制Logistic曲线

      x <- seq(from = -10, to = 10, by = 0.01)

      y = exp(x)/(1+exp(x))

      library(ggplot2)

      p <- ggplot(data = NULL, mapping = aes(x = x,y = y))

      p + geom_line(colour = 'blue')

      + annotate('text', x = 1, y = 0.3, label ='y==e^x / 1-e^x', parse = TRUE)

      + ggtitle('Logistic曲线')

      【R应用】Logistic模型的客户流失预警分析


      由于是非线性模型,从而就少了像线性模型那样的约束,如自变量与因变量具有线性关系、随机误差满足方差齐性等。

      以上的模型公式其实是可以变换成线性形式的,只需要一个简单的logit变换即可,即:

      【R应用】Logistic模型的客户流失预警分析


      二、模型用途

      Logistic模型主要有三大用途:

      1)寻找危险因素,找到某些影响因变量的"坏因素",一般可以通过优势比发现危险因素;

      2)用于预测,可以预测某种情况发生的概率或可能性大小;

      3)用于判别,判断某个新样本所属的类别。

      三、模型应用

      下文使用Logistic模型对电信行业的客户流失数据进行建模,数据来源为R中C50包自带数据集churnTrain和churnTest。

      #使用C50包中自带的电信行业客户流失数据

      library(C50)

      data(churn)

      train <- churnTrain

      test <- churnTest

      str(train)

      【R应用】Logistic模型的客户流失预警分析
      数据集中包含了19个变量,其中变量洲(state)、国际长途计划(international_plan)、信箱语音计划(voice_mail_plan)和是否流失(churn)为因子变量,其余变量均为数值变量,而且这里的区域编码变量(area_code)没有任何实际意义,故考虑排除该变量。<span style="font-size:12.0pt;font-family:"">

      #剔除无意义的区域编码变量

      train <- churnTrain[,-3]

      test <- churnTest[,-3]

      #由于模型中,更关心的是流失这个结果(churn=yes),所以对该因子进行排序

      train$churn <- factor(train$churn,levels = c('no','yes'), order = TRUE)

      test$churn <- factor(test$churn, ,levels = c('no','yes'), order = TRUE)

      #构建Logistic模型

      model <- glm(formula = churn ~ ., data =train, family = 'binomial')

      summary(model)

      【R应用】Logistic模型的客户流失预警分析


      发现有很多变量并不显著,故考虑剔除这些不显著的变量,这里使用逐步回归法进行变量的选择(需要注意的是,Logistic为非线性模型,回归系数是通过极大似然估计方法计算所得)。

      #step函数实现逐步回归法

      model2 <- step(object = model, trace = 0)

      summary(model2)

      【R应用】Logistic模型的客户流失预警分析


      从结果中发现,所有变量的P值均小于0.05,通过显著性检验,保留了相对重要的变量。模型各变量通过显著性检验的同时还需确保整个模型是显著的,只有这样才能保证模型是正确的、有意义的,下面对模型进行卡方检验。

      #模型的显著性检验

      anova(object = model2, test = 'Chisq')

      【R应用】Logistic模型的客户流失预警分析


      从上图中可知,随着变量从第一个到最后一个逐个加入模型,模型最终通过显著性检验,说明由上述这些变量组成的模型是有意义的,并且是正确的。

      虽然模型的偏回归系数和模型均通过显著性检验,但不代表模型能够非常准确的拟合实际值,这就需要对模型进行拟合优度检验,即通过比较模型的预测值与实际值之间的差异情况来进行检验。

      Logistic回归模型的拟合优度检验一般使用偏差卡方检验、皮尔逊卡方检验和HL统计量检验三种方法,其中前两种检验适合模型中只有离散的自变量,而后一种适合模型中包含连续的自变量。拟合优度检验的原假设为“模型的预测值与实际值不存在差异”。

      #模型的拟合优度检验

      library(sjmisc)

      HL_test <- hoslem_gof(x = model)

      HL_test

      【R应用】Logistic模型的客户流失预警分析

      从模型的拟合优度检验结果可知,该模型无法拒绝拟合优度检验的原假设,即可以认为实际值与模型的预测值之间比较接近,不存在显著差异。

      以上各项指标均表示模型对电信行业客户流失数据拟合的比较理想,接下来就用该模型对测试集进行预测,预测一个未知的客户是否可能流失,从而起到流失预警的作用。

      #模型对样本外数据(测试集)的预测精度


      prob <- predict(object = model2, newdata= test, type = 'response')

      pred <- ifelse="" prob="">= 0.5, 'yes','no')

      pred <- factor(pred, levels =c('no','yes'), order = TRUE)

      f <- table(test$churn, pred)

      f

      【R应用】Logistic模型的客户流失预警分析

      从上图中我们发现:

      1).模型对非流失客户(no)的预测还是非常准确的(1408/(1408+35)=97.6%);

      2).模型对流失客户(yes)的预测非常不理想(42/(182+42)=18.8%)

      3).模型的整体预测准确率为87.0%((1408+42)/(1408+35+182+42)),还算说得过去。

      模型对非流失客户预测精准,而对流失客户预测非常差,我认为的可能原因是模型对非平衡数据非常敏感。即构建模型的训练集中流失客户为483例,而非流失客户为2850例,两者相差非常大。

      上文对模型偏回归系数、模型整体和模型拟合优度进行了显著性检验,结果均表明模型比较理想,同时也对模型的预测精度进行验证,也说明了模型的整体预测能力比较理想。接下来我们通过另一种可视化的方法衡量模型的优劣,即ROC曲线,该曲线的横坐标和纵坐标各表示1-反例的覆盖率和正例的覆盖率。

      #绘制ROC曲线

      library(pROC)

      roc_curve <- roc(test$churn,prob)

      names(roc_curve)

      x <- 1-roc_curve$specificities

      y <- roc_curve$sensitivities

      library(ggplot2)

      p <- ggplot(data = NULL, mapping = aes(x= x, y = y))

      p + geom_line(colour = 'red') +geom_abline(intercept = 0, slope = 1)

      + annotate('text', x = 0.4, y = 0.5, label =paste('AUC=',round(roc_curve$auc,2)))

      + labs(x = '1-specificities',y = 'sensitivities', title = 'ROC Curve')

      【R应用】Logistic模型的客户流失预警分析

      这里的AUC为ROC曲线和y=x直线之间的面积。在实际应用中,多个模型的比较可以通过面积大小来选择更佳的模型,选择标准是AUC越大越好。对于一个模型而言,一般AUC大于0.8就能够说明模型是比较合理的了。

      参考资料:

      统计建模与R语言

      Logistic回归模型—方法与应用

      http://www.douban.com/note/284051363/?type=like


      刘顺祥,数据分析师,热爱数据分析与挖掘工作,擅长使用R语言,目前正自学Python语言。


      数据人网(http://shujuren.org),数据人学习、交流和分享的家园,专注于从数据中学习,努力发觉数据之洞见,积极利用数据之价值。为“让人懂数据、用数据”之使命坚持做点事情。大家可以来投稿,做分享和传播,可以给反馈。您有什么想法,请反馈给我们,谢谢。数据人网,我们共建和共享。

      公众号推荐

      数据科学自媒体,从数据里面学习。

      长按二维码图片,选择识别二维码图片,添加即可。

      【R应用】Logistic模型的客户流失预警分析



      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      【RApplication】K Means Clustering in R
      2016年1月6日

      下一篇文章

      【数据分析】基于R语言的主成分和因子分析
      2016年1月8日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?