电信公司churn数据客户流失k近邻(knn)模型预测分析

简介: 电信公司churn数据客户流失k近邻(knn)模型预测分析

Data background

A telephone company is interested in determining which customer characteristics are useful for predicting churn, customers who will leave their service.

The data set  is Churn . The fields are as follows:

 

State

 discrete.

account length

 continuous.

area code

 continuous.

phone number

 discrete.

international plan

 discrete.

voice mail plan

 discrete.

number vmail messages

 continuous.

total day minutes

 continuous.

total day calls

 continuous.

total day charge

 continuous.

total eve minutes

 continuous.

total eve calls

 continuous.

total eve charge

 continuous.

total night minutes

 continuous.

total night calls

 continuous.

total night charge

 continuous.

total intl minutes

 continuous.

total intl calls

 continuous.

total intl charge

 continuous.

number customer service calls

 continuous.

churn

 Discrete

Data Preparation and Exploration

 

1. 查看数据概览
2. 
3. ##      state      account.length    area.code        phone.number
4. ##  WV     : 158   Min.   :  1.0   Min.   :408.0    327-1058:   1
5. ##  MN     : 125   1st Qu.: 73.0   1st Qu.:408.0    327-1319:   1
6. ##  AL     : 124   Median :100.0   Median :415.0    327-2040:   1
7. ##  ID     : 119   Mean   :100.3   Mean   :436.9    327-2475:   1
8. ##  VA     : 118   3rd Qu.:127.0   3rd Qu.:415.0    327-3053:   1
9. ##  OH     : 116   Max.   :243.0   Max.   :510.0    327-3587:   1
10. ##  (Other):4240                                   (Other)  :4994
11. ##  international.plan voice.mail.plan number.vmail.messages
12. ##   no :4527           no :3677       Min.   : 0.000
13. ##   yes: 473           yes:1323       1st Qu.: 0.000
14. ##                                     Median : 0.000
15. ##                                     Mean   : 7.755
16. ##                                     3rd Qu.:17.000
17. ##                                     Max.   :52.000
18. ##
19. ##  total.day.minutes total.day.calls total.day.charge total.eve.minutes
20. ##  Min.   :  0.0     Min.   :  0     Min.   : 0.00    Min.   :  0.0
21. ##  1st Qu.:143.7     1st Qu.: 87     1st Qu.:24.43    1st Qu.:166.4
22. ##  Median :180.1     Median :100     Median :30.62    Median :201.0
23. ##  Mean   :180.3     Mean   :100     Mean   :30.65    Mean   :200.6
24. ##  3rd Qu.:216.2     3rd Qu.:113     3rd Qu.:36.75    3rd Qu.:234.1
25. ##  Max.   :351.5     Max.   :165     Max.   :59.76    Max.   :363.7
26. ##
27. ##  total.eve.calls total.eve.charge total.night.minutes total.night.calls
28. ##  Min.   :  0.0   Min.   : 0.00    Min.   :  0.0       Min.   :  0.00
29. ##  1st Qu.: 87.0   1st Qu.:14.14    1st Qu.:166.9       1st Qu.: 87.00
30. ##  Median :100.0   Median :17.09    Median :200.4       Median :100.00
31. ##  Mean   :100.2   Mean   :17.05    Mean   :200.4       Mean   : 99.92
32. ##  3rd Qu.:114.0   3rd Qu.:19.90    3rd Qu.:234.7       3rd Qu.:113.00
33. ##  Max.   :170.0   Max.   :30.91    Max.   :395.0       Max.   :175.00
34. ##
35. ##  total.night.charge total.intl.minutes total.intl.calls total.intl.charge
36. ##  Min.   : 0.000     Min.   : 0.00      Min.   : 0.000   Min.   :0.000
37. ##  1st Qu.: 7.510     1st Qu.: 8.50      1st Qu.: 3.000   1st Qu.:2.300
38. ##  Median : 9.020     Median :10.30      Median : 4.000   Median :2.780
39. ##  Mean   : 9.018     Mean   :10.26      Mean   : 4.435   Mean   :2.771
40. ##  3rd Qu.:10.560     3rd Qu.:12.00      3rd Qu.: 6.000   3rd Qu.:3.240
41. ##  Max.   :17.770     Max.   :20.00      Max.   :20.000   Max.   :5.400
42. ##
43. ##  number.customer.service.calls     churn
44. ##  Min.   :0.00                   False.:4293
45. ##  1st Qu.:1.00                   True. : 707
46. ##  Median :1.00
47. ##  Mean   :1.57
48. ##  3rd Qu.:2.00
49. ##  Max.   :9.00
50. ##
51.

从数据概览中我们可以发现没有缺失数据,同时可以发现电话号 地区代码是没有价值的变量,可以删去

 

Examine the variables graphically

 

 

从上面的结果中,我们可以看到churn为no的样本数目要远远大于churn为yes的样本,因此所有样本中churn占多数。

 

从上面的结果中,我们可以看到除了emailcode和areacode之外,其他数值变量近似符合正态分布。

1. ##  account.length    area.code     number.vmail.messages total.day.minutes
2. ##  Min.   :  1.0   Min.   :408.0   Min.   : 0.000        Min.   :  0.0
3. ##  1st Qu.: 73.0   1st Qu.:408.0   1st Qu.: 0.000        1st Qu.:143.7
4. ##  Median :100.0   Median :415.0   Median : 0.000        Median :180.1
5. ##  Mean   :100.3   Mean   :436.9   Mean   : 7.755        Mean   :180.3
6. ##  3rd Qu.:127.0   3rd Qu.:415.0   3rd Qu.:17.000        3rd Qu.:216.2
7. ##  Max.   :243.0   Max.   :510.0   Max.   :52.000        Max.   :351.5
8. ##  total.day.calls total.day.charge total.eve.minutes total.eve.calls
9. ##  Min.   :  0     Min.   : 0.00    Min.   :  0.0     Min.   :  0.0
10. ##  1st Qu.: 87     1st Qu.:24.43    1st Qu.:166.4     1st Qu.: 87.0
11. ##  Median :100     Median :30.62    Median :201.0     Median :100.0
12. ##  Mean   :100     Mean   :30.65    Mean   :200.6     Mean   :100.2
13. ##  3rd Qu.:113     3rd Qu.:36.75    3rd Qu.:234.1     3rd Qu.:114.0
14. ##  Max.   :165     Max.   :59.76    Max.   :363.7     Max.   :170.0
15. ##  total.eve.charge total.night.minutes total.night.calls total.night.charge
16. ##  Min.   : 0.00    Min.   :  0.0       Min.   :  0.00    Min.   : 0.000
17. ##  1st Qu.:14.14    1st Qu.:166.9       1st Qu.: 87.00    1st Qu.: 7.510
18. ##  Median :17.09    Median :200.4       Median :100.00    Median : 9.020
19. ##  Mean   :17.05    Mean   :200.4       Mean   : 99.92    Mean   : 9.018
20. ##  3rd Qu.:19.90    3rd Qu.:234.7       3rd Qu.:113.00    3rd Qu.:10.560
21. ##  Max.   :30.91    Max.   :395.0       Max.   :175.00    Max.   :17.770
22. ##  total.intl.minutes total.intl.calls total.intl.charge
23. ##  Min.   : 0.00      Min.   : 0.000   Min.   :0.000
24. ##  1st Qu.: 8.50      1st Qu.: 3.000   1st Qu.:2.300
25. ##  Median :10.30      Median : 4.000   Median :2.780
26. ##  Mean   :10.26      Mean   : 4.435   Mean   :2.771
27. ##  3rd Qu.:12.00      3rd Qu.: 6.000   3rd Qu.:3.240
28. ##  Max.   :20.00      Max.   :20.000   Max.   :5.400
29. ##  number.customer.service.calls
30. ##  Min.   :0.00
31. ##  1st Qu.:1.00
32. ##  Median :1.00
33. ##  Mean   :1.57
34. ##  3rd Qu.:2.00
35. ##  Max.   :9.00

Relationships between variables

从结果中我们可以看到两者之间存在显著的正相关线性关系。

 

Using the statistics node, report

1. ##                               account.length    area.code
2. ## account.length                  1.0000000000 -0.018054187
3. ## area.code                      -0.0180541874  1.000000000
4. ## number.vmail.messages          -0.0145746663 -0.003398983
5. ## total.day.minutes              -0.0010174908 -0.019118245
6. ## total.day.calls                 0.0282402279 -0.019313854
7. ## total.day.charge               -0.0010191980 -0.019119256
8. ## total.eve.minutes              -0.0095913331  0.007097877
9. ## total.eve.calls                 0.0091425790 -0.012299947
10. ## total.eve.charge               -0.0095873958  0.007114130
11. ## total.night.minutes             0.0006679112  0.002083626
12. ## total.night.calls              -0.0078254785  0.014656846
13. ## total.night.charge              0.0006558937  0.002070264
14. ## total.intl.minutes              0.0012908394 -0.004153729
15. ## total.intl.calls                0.0142772733 -0.013623309
16. ## total.intl.charge               0.0012918112 -0.004219099
17. ## number.customer.service.calls  -0.0014447918  0.020920513
18. ##                               number.vmail.messages total.day.minutes
19. ## account.length                        -0.0145746663      -0.001017491
20. ## area.code                             -0.0033989831      -0.019118245
21. ## number.vmail.messages                  1.0000000000       0.005381376
22. ## total.day.minutes                      0.0053813760       1.000000000
23. ## total.day.calls                        0.0008831280       0.001935149
24. ## total.day.charge                       0.0053767959       0.999999951
25. ## total.eve.minutes                      0.0194901208      -0.010750427
26. ## total.eve.calls                       -0.0039543728       0.008128130
27. ## total.eve.charge                       0.0194959757      -0.010760022
28. ## total.night.minutes                    0.0055413838       0.011798660
29. ## total.night.calls                      0.0026762202       0.004236100
30. ## total.night.charge                     0.0055349281       0.011782533
31. ## total.intl.minutes                     0.0024627018      -0.019485746
32. ## total.intl.calls                       0.0001243302      -0.001303123
33. ## total.intl.charge                      0.0025051773      -0.019414797
34. ## number.customer.service.calls         -0.0070856427       0.002732576
35. ##                               total.day.calls total.day.charge
36. ## account.length                   0.0282402279     -0.001019198
37. ## area.code                       -0.0193138545     -0.019119256
38. ## number.vmail.messages            0.0008831280      0.005376796
39. ## total.day.minutes                0.0019351487      0.999999951
40. ## total.day.calls                  1.0000000000      0.001935884
41. ## total.day.charge                 0.0019358844      1.000000000
42. ## total.eve.minutes               -0.0006994115     -0.010747297
43. ## total.eve.calls                  0.0037541787      0.008129319
44. ## total.eve.charge                -0.0006952217     -0.010756893
45. ## total.night.minutes              0.0028044650      0.011801434
46. ## total.night.calls               -0.0083083467      0.004234934
47. ## total.night.charge               0.0028018169      0.011785301
48. ## total.intl.minutes               0.0130972198     -0.019489700
49. ## total.intl.calls                 0.0108928533     -0.001306635
50. ## total.intl.charge                0.0131613976     -0.019418755
51. ## number.customer.service.calls   -0.0107394951      0.002726370
52. ##                               total.eve.minutes total.eve.calls
53. ## account.length                    -0.0095913331     0.009142579
54. ## area.code                          0.0070978766    -0.012299947
55. ## number.vmail.messages              0.0194901208    -0.003954373
56. ## total.day.minutes                 -0.0107504274     0.008128130
57. ## total.day.calls                   -0.0006994115     0.003754179
58. ## total.day.charge                  -0.0107472968     0.008129319
59. ## total.eve.minutes                  1.0000000000     0.002763019
60. ## total.eve.calls                    0.0027630194     1.000000000
61. ## total.eve.charge                   0.9999997749     0.002778097
62. ## total.night.minutes               -0.0166391160     0.001781411
63. ## total.night.calls                  0.0134202163    -0.013682341
64. ## total.night.charge                -0.0166420421     0.001799380
65. ## total.intl.minutes                 0.0001365487    -0.007458458
66. ## total.intl.calls                   0.0083881559     0.005574500
67. ## total.intl.charge                  0.0001593155    -0.007507151
68. ## number.customer.service.calls     -0.0138234228     0.006234831
69. ##                               total.eve.charge total.night.minutes
70. ## account.length                   -0.0095873958        0.0006679112
71. ## area.code                         0.0071141298        0.0020836263
72. ## number.vmail.messages             0.0194959757        0.0055413838
73. ## total.day.minutes                -0.0107600217        0.0117986600
74. ## total.day.calls                  -0.0006952217        0.0028044650
75. ## total.day.charge                 -0.0107568931        0.0118014339
76. ## total.eve.minutes                 0.9999997749       -0.0166391160
77. ## total.eve.calls                   0.0027780971        0.0017814106
78. ## total.eve.charge                  1.0000000000       -0.0166489191
79. ## total.night.minutes              -0.0166489191        1.0000000000
80. ## total.night.calls                 0.0134220174        0.0269718182
81. ## total.night.charge               -0.0166518367        0.9999992072
82. ## total.intl.minutes                0.0001320238       -0.0067209669
83. ## total.intl.calls                  0.0083930603       -0.0172140162
84. ## total.intl.charge                 0.0001547783       -0.0066545873
85. ## number.customer.service.calls    -0.0138363623       -0.0085325365


如果把高相关性的变量保存下来,可能会造成多重共线性问题,因此需要把高相关关系的变量删去。

Data Manipulation

从结果中可以看到,total.day.calls和total.day.charge之间存在一定的相关关系。
特别是voicemial为no的变量之间存在负相关关系。

 

Discretize (make categorical) a relevant numeric variable  

 

 

 

对变量进行离散化

 

construct a distribution of the variable with a churn overlay

construct a histogram of the variable with a churn overlay

 

 

Find a pair of numeric variables which are interesting with respect to churn.

从结果中可以看到,total.day.calls和total.day.charge之间存在一定的相关关系。

Model Building

特别是churn为no的变量之间存在相关关系。

 

1. ##                                 Estimate Std. Error t value Pr(>|t|)
2. ## (Intercept)                    0.3082150  0.0735760   4.189 2.85e-05 ***
3. ## stateAL                        0.0151188  0.0462343   0.327 0.743680
4. ## stateAR                        0.0894792  0.0490897   1.823 0.068399 .
5. ## stateAZ                        0.0329566  0.0494195   0.667 0.504883
6. ## stateCA                        0.1951511  0.0567439   3.439 0.000588 ***
7. ## international.plan yes         0.3059341  0.0151677  20.170  < 2e-16 ***
8. ## voice.mail.plan yes           -0.1375056  0.0337533  -4.074 4.70e-05 ***
9. ## number.vmail.messages          0.0017068  0.0010988   1.553 0.120402
10. ## total.day.minutes              0.3796323  0.2629027   1.444 0.148802
11. ## total.day.calls                0.0002191  0.0002235   0.981 0.326781
12. ## total.day.charge              -2.2207671  1.5464583  -1.436 0.151056
13. ## total.eve.minutes              0.0288233  0.1307496   0.220 0.825533
14. ## total.eve.calls               -0.0001585  0.0002238  -0.708 0.478915
15. ## total.eve.charge              -0.3316041  1.5382391  -0.216 0.829329
16. ## total.night.minutes            0.0083224  0.0695916   0.120 0.904814
17. ## total.night.calls             -0.0001824  0.0002225  -0.820 0.412290
18. ## total.night.charge            -0.1760782  1.5464674  -0.114 0.909355
19. ## total.intl.minutes            -0.0104679  0.4192270  -0.025 0.980080
20. ## total.intl.calls              -0.0063448  0.0018062  -3.513 0.000447 ***
21. ## total.intl.charge              0.0676460  1.5528267   0.044 0.965254
22. ## number.customer.service.calls  0.0566474  0.0033945  16.688  < 2e-16 ***
23. ## total.day.minutes1medium       0.0502681  0.0160228   3.137 0.001715 **
24. ## total.day.minutes1short        0.2404020  0.0322293   7.459 1.02e-13 ***

 

从结果中看,我们可以发现 state  total.intl.calls   、number.customer.service.calls 、 total.day.minutes1medium 、    total.day.minutes1short    的变量有重要的影响。

Use K-Nearest-Neighbors (K-NN) algorithm to develop a model for predicting Churn

1. ##         Direction.2005
2. ## knn.pred   1   2
3. ##        1 760  97
4. ##        2 100  43
5. 
6. 
7. [1] 0.803


混淆矩阵(英语:confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。
1. ##         Direction.2005
2. ## knn.pred   1   2
3. ##        1 827 104
4. ##        2  33  36
5. 
6. 
7. 
8. [1] 0.863

 

从测试集的结果,我们可以看到准确度达到86%。

 

Findings  

 

我们可以发现 ,total.day.calls和total.day.charge之间存在一定的相关关系。特别是churn为no的变量之间存在相关关系。同时我们可以发现 state  total.intl.calls   、number.customer.service.calls 、 total.day.minutes1medium、    total.day.minutes1short    的变量有重要的影响。同时我们可以发现,total.day.calls和total.day.charge之间存在一定的相关关系。最后从knn模型结果中,我们可以发现从训练集的结果中,我们可以看到准确度有80%,从测试集的结果,我们可以看到准确度达到86%。说明模型有很好的预测效果。

相关文章
|
2月前
|
机器学习/深度学习 算法 前端开发
别再用均值填充了!MICE算法教你正确处理缺失数据
MICE是一种基于迭代链式方程的缺失值插补方法,通过构建后验分布并生成多个完整数据集,有效量化不确定性。相比简单填补,MICE利用变量间复杂关系,提升插补准确性,适用于多变量关联、缺失率高的场景。本文结合PMM与线性回归,详解其机制并对比效果,验证其在统计推断中的优势。
892 11
别再用均值填充了!MICE算法教你正确处理缺失数据
|
3月前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
235 1
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
338 0
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
209 2
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
120 0
|
3月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
233 3
|
3月前
|
存储 监控 算法
企业电脑监控系统中基于 Go 语言的跳表结构设备数据索引算法研究
本文介绍基于Go语言的跳表算法在企业电脑监控系统中的应用,通过多层索引结构将数据查询、插入、删除操作优化至O(log n),显著提升海量设备数据管理效率,解决传统链表查询延迟问题,实现高效设备状态定位与异常筛选。
122 3
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
3月前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
3月前
|
存储 边缘计算 算法
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)

热门文章

最新文章