首页 > 其他分享 >【Kaggle】Telco Customer Churn 电信用户流失预测案例 ----数据预处理

【Kaggle】Telco Customer Churn 电信用户流失预测案例 ----数据预处理

时间:2023-03-01 17:47:05浏览次数:44  
标签:Customer ... No Telco 建模 ---- 特征 Yes 数据

任务目标:

  对于电信运营商来说,用户流失有很多偶然因素,不过通过对用户属性和行为的数字化描述,我们或许也能够在这些数据中,挖掘导致用户流失的“蛛丝马迹”,并且更重要的一点,如果能够实时接入这些数据,或许还能够进一步借助模型来对未来用户流失的风险进行预测,从而及时制定挽留策略,来防止用户真实流失情况发生。

机器学习建模目标:

在此背景下,实际的算法建模目标有两个,其一是对流失用户进行预测,其二则是找出影响用户流失的重要因子,来辅助运营人员来进行营销策略调整或制定用户挽留措施。

综合上述两个目标我们不难发现,我们要求模型不仅要拥有一定的预测能力,并且能够输出相应的特征重要性排名,并且最好能够具备一定的可解释性,也就是能够较为明显的阐述特征变化是如何影响标签取值变化的。据此要求,我们首先可以考虑逻辑回归模型。逻辑回归的线性方程能够提供非常好的结果可解释性,同时我们也可以通过逻辑回归中的正则化项也可以用于评估特征重要性。

  • Stage 1.业务背景解读与数据探索
      在拿到数据(接受任务)的第一时间,需要对数据(也就是对应业务)的基本背景进行解读。由于任何数据都诞生于某业务场景下,同时也是根据某些规则来进行的采集或者计算得出,因此如果可以,我们应当尽量去了解数据诞生的基本环境和对应的业务逻辑,尽可能准确的解读每个字段的含义,而只有在无法获取真实业务背景时,才会考虑退而求其次通过数据情况去倒推业务情况。
      当然,在进行了数据业务背景解读后,接下来就需要对拿到的数据进行基本的数据探索。一般来说,数据探索包括数据分布检验、数据正确性校验、数据质量检验、训练集/测试集规律一致性检验等。当然,这里可能涉及到的操作较多,也并非所有的操作都必须在一次建模过程中全部完成。但作为教学案例,我们将在后续的内容中详细介绍每个环节的相关操作及目的。
  • Stage 2.数据预处理与特征工程
      在了解了建模业务背景和基本数据情况后,接下来我们就需要进行实际建模前的“数据准备”工作了,也就是数据预处理(数据清洗)与特征工程。其中,数据清洗主要聚焦于数据集数据质量提升,包括缺失值、异常值、重复值处理,以及数据字段类型调整等;而特征工程部分则更倾向于调整特征基本结构,来使数据集本身规律更容易被模型识别,如特征衍生、特殊类型字段处理(包括时序字段、文本字段等)等。
      当然,很多时候我们并不刻意区分数据清洗与特征工程之间的区别,很多时候数据清洗的工作也可以看成是特征工程的一部分。同时,也有很多时候我们也不会一定要求在不同阶段执行不同操作,例如如果在数据探索时发现缺失值比例较小,则可以直接对其进行均值/众数填补,而不用等到特征工程阶段统一处理,再例如很多特征工程的方法需要结合实际建模效果来判别,所以有的时候特征衍生也会和建模过程交替进行。
  • Stage 3.算法建模与模型调优
      在经过一系列准备工作后,就将进入到最终建模环节了,建模过程既包括算法训练也包括参数调优。当然,很多时候建模工作不会一蹴而就,需要反复尝试各种模型、各种调参方法、以及模型融合方法。此外,很多时候我们也需要根据最终模型输出结果来进行数据预处理和特征工程相关方法调整。

数据解读与预处理:

  获取数据:

    在数据集主页,下载csv,放到主目录下:

  customerID gender SeniorCitizen Partner Dependents tenure PhoneService MultipleLines InternetService OnlineSecurity ... DeviceProtection TechSupport StreamingTV StreamingMovies Contract PaperlessBilling PaymentMethod MonthlyCharges TotalCharges Churn
0 7590-VHVEG Female 0 Yes No 1 No No phone service DSL No ... No No No No Month-to-month Yes Electronic check 29.85 29.85 No
1 5575-GNVDE Male 0 No No 34 Yes No DSL Yes ... Yes No No No One year No Mailed check 56.95 1889.5 No
2 3668-QPYBK Male 0 No No 2 Yes No DSL Yes ... No No No No Month-to-month Yes Mailed check 53.85 108.15 Yes
3 7795-CFOCW Male 0 No No 45 No No phone service DSL Yes ... Yes Yes No No One year No Bank transfer (automatic) 42.30 1840.75 No
4 9237-HQITU Female 0 No No 2 Yes No Fiber optic No ... No No No No Month-to-month Yes Electronic check 70.70 151.65 Yes

 

5 rows × 21 columns

1.由于数据集没有提供数据字典,但是可以通过字段名字知道其意义。

 

标签:Customer,...,No,Telco,建模,----,特征,Yes,数据
From: https://www.cnblogs.com/hello-blog/p/17169083.html

相关文章

  • vim清空内容
    在vim的普通模式下键入“ggdG”即可删除其中全部内容。说明:gg:光标跳转到该文件的行首;dG:删除光标行及其以下行的全部内容。(注:d为删除,G为光标跳转到末尾行)cp-r/TEST/tes......
  • 我怎样才能选择除最后一个孩子之外的元素的所有孩子?
    我如何使用CSS3选择器选择除最后一个孩子以外的所有孩子?例如,只获取最后一个孩子将是div:nth-last-child(1).解答http://www.stackoverflow.ink/posts/wo-zen......
  • 流程控制-循环结构
    1、LOOP循环语句用来重复执行某些语句。LOOP内的语句一直重复执行直到循环被退出(使用LEAVE子句),跳出循环过程。 基础语法[loop_label:]LOOP循环执行的语......
  • G公司对接伍尔特wurth EDI项目案例
    项目背景对伍尔特wurth而言,与其供应商开展成功的数字化项目通常是以自动连接开始的。通过这种方式,标准化的信息可以在彼此之间进行简单而自动的交换。这个流程被称为电......
  • 简单理解重载运算符&位运算
    重载运算符作用重载运算符的作用大致可以理解为自定义一个运算法则,比如当我们在使用结构体的时候,我们有时候会用到优先队列,但是优先队列并不能对于结构体使用,所以这个时......
  • 如何检查数组是否为空或存在?
    第一次加载页面时,我需要检查是否有图像image_array并加载最后一张图像。否则,我禁用预览按钮,提醒用户按下新图像按钮并创建一个空数组来放置图像;问题是一直image_arra......
  • git介绍及基本使用
    一、版本控制器完成协同开发项目,帮助程序员整合代码帮助开发者合并开发的代码,使用git实现版本的控制如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突......
  • 简单的冒泡排序
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>voidbouble_sort(intarr[],intsz){//确定冒泡排序的趟数inti=0;f......
  • 在Github的fork项目中切换分支来提交PR
    在Github的fork项目中切换分支来提交PR查看远程所有分支gitbranch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记,加上-a参数可以查看所有分支列表,包括本......
  • 设置静态资源映射
    静态页面要么修改默认访问静态资源路径,要么将他们放在templates或static包下如何设置静态资源映射?@ConfigurationpublicclassWebMvcConfigextendsWebMvcConfigurat......