当前位置:   article > 正文

ML之LightGBM:通过数据预处理(分布图热图/特征分箱/标签编码)利用LightGBM实现银行客户是否购买产品二分类预测(交叉训练/AUC曲线可视化/Shap模型可解释)之详细攻略_基于lightgbm的银行产品认购预测研究

基于lightgbm的银行产品认购预测研究

ML之LightGBM:通过数据预处理(分布图热图/特征分箱/标签编码)利用LightGBM实现银行客户是否购买产品二分类预测(交叉训练/AUC曲线可视化/Shap模型可解释)之详细攻略

目录

预测用户是否进行购买产品

赛题简介

字段说明

预测用户是否进行购买产品案例设计思路

1、定义数据集

# 1.1、输出desc、目标变量类别占比

# 1.2、划分【数字型】、【类别型】字段

# 1.3、删除入模不必要的特征

# 1.4、分离特征与标签

# 2、特征工程/数据预处理

# 2.1、分布可视化:校验是否同分布,训练集与测试集数据分布

# 2.1.1、【数字型】分布对比可视化

# 2.1.2、【类别型】分布对比可视化

# 2.2、相关性热图可视化

# 2.3、对特征进行分箱处理

 # 2.4、【类别型】特征执行标签编码

# 3、模型训练与推理

# 3.1、划分训练及测试集

# 3.2、建立LightGBM模型

# 3.3、模型交叉验证

# 3.4、模型评估

# 4、模型可解释性

# T1、利用shap解释模型


相关文章
ML之LightGBM:通过数据预处理(分布图热图/特征分箱/标签编码)利用LightGBM实现银行客户是否购买产品二分类预测(交叉训练/AUC曲线可视化/Shap模型可解释)之详细攻略
ML之LightGBM:通过数据预处理(分布图热图/特征分箱/标签编码)利用LightGBM实现银行客户是否购买产品二分类预测(交叉训练/AUC曲线可视化/Shap模型可解释)实现代码

预测用户是否进行购买产品

赛题简介

官网:银行客户认购产品预测_学习赛_天池大赛-阿里云天池

         赛题以银行产品认购预测为背景,想让你来预测下客户是否会购买银行的产品。在和客户沟通的过程中,我们记录了和客户联系的次数,上一次联系的时长,上一次联系的时间间隔,同时在银行系统中我们保存了客户的基本信息,包括:年龄、职业、婚姻、之前是否有违约、是否有房贷等信息,此外我们还统计了当前市场的情况:就业、消费信息、银行同业拆解率等。
       用户购买预测是数字化营销领域中的重要应用场景,通过这道赛题,鼓励学习者利用营销活动信息,为企业提供销售策略,也为消费者提供更适合的商品推荐。

字段说明

字段

说明

age

年龄

job

职业:admin, unknown, unemployed, management…

marital

婚姻:married, divorced, single

default

信用卡是否有违约: yes or no

housing

是否有房贷: yes or no

contact

联系方式:unknown, telephone, cellular

month

上一次联系的月份:jan, feb, mar, …

day_of_week

上一次联系的星期几:mon, tue, wed, thu, fri

duration

上一次联系的时长(秒)

campaign

活动期间联系客户的次数

pdays

上一次与客户联系后的间隔天数

previous

在本次营销活动前,与客户联系的次数

poutcome

之前营销活动的结果:unknown, other, failure, success

emp_var_rate

就业变动率(季度指标)

cons_price_index

消费者价格指数(月度指标)

cons_conf_index

消费者信心指数(月度指标)

lending_rate3m

银行同业拆借率 3个月利率(每日指标)

nr_employed

雇员人数(季度指标)

subscribe

客户是否进行购买:yes 或 no

预测用户是否进行购买产品案例设计思路

1、定义数据集

idagejobmaritaleducationdefaulthousingloancontactmonthday_of_weekdurationcampaignpdayspreviouspoutcomeemp_var_ratecons_price_indexcons_conf_indexlending_rate3mnr_employedsubscribe
151admin.divorcedprofessional.coursenoyesyescellularaugmon462111122failure1.490.81-35.530.695219.74no
250servicesmarriedhigh.schoolunknownyesnocellularmaymon471514122nonexistent-1.896.33-40.584.054974.79yes
348blue-collardivorcedbasic.9ynononocellularaprwed171010271failure-1.896.33-44.741.55022.61no
426entrepreneursinglehigh.schoolyesyesyescellularaugfri359269980nonexistent1.497.08-35.555.115222.87yes
545admin.singleuniversity.degreenononocellularnovtue317812404success-3.489.82-33.831.174884.7no

# 1.1、输出desc、目标变量类别占比

countmeanstdmin25%50%75%max
id2250011250.56495.33486415625.7511250.516875.2522500
age2250040.4075111112.0860775816323847101
duration225001146.3037331432.432125014335318735149
campaign225003.36487.223836793011357
pdays22500773.9919556326.93433440557.7596410051048
previous225001.3164444441.91873334500026
emp_var_rate225000.0785288891.573831196-3.4-1.81.11.41.4
cons_price_index2250093.548785332.80578627387.6491.1993.5495.9299.46
cons_conf_index22500-39.877180445.805441863-53.28-44.16-40.6-35.7975-25.55
lending_rate3m225003.3024902221.6117772220.61.433.924.835.27
nr_employed225005137.211285170.67061114715.425008.515133.9555267.67755489.5
  1. no 19548
  2. yes 2952
  3. Name: subscribe, dtype: int64

# 1.2、划分【数字型】、【类别型】字段

  1. Nu_features 11 ['id', 'age', 'duration', 'campaign', 'pdays', 'previous', 'emp_var_rate', 'cons_price_index', 'cons_conf_index', 'lending_rate3m', 'nr_employed']
  2. Ca_features 11 ['job', 'marital', 'education', 'default', 'housing', 'loan', 'contact', 'month', 'day_of_week', 'poutcome', 'subscribe']
  3. job : 12 {'unemployed', 'unknown', 'self-employed', 'student', 'retired', 'technician', 'housemaid', 'services', 'entrepreneur', 'management', 'blue-collar', 'admin.'}
  4. marital : 4 {'single', 'divorced', 'unknown', 'married'}
  5. education : 8 {'unknown', 'illiterate', 'professional.course', 'basic.4y', 'basic.6y', 'high.school', 'basic.9y', 'university.degree'}
  6. default : 3 {'unknown', 'no', 'yes'}
  7. housing : 3 {'unknown', 'yes', 'no'}
  8. loan : 3 {'unknown', 'yes', 'no'}
  9. contact : 2 {'telephone', 'cellular'}
  10. month : 10 {'jun', 'jul', 'dec', 'oct', 'sep', 'may', 'nov', 'apr', 'aug', 'mar'}
  11. day_of_week : 5 {'fri', 'thu', 'wed', 'mon', 'tue'}
  12. poutcome : 3 {'success', 'failure', 'nonexistent'}
  13. subscribe : 2 {'yes', 'no'}

# 1.3、删除入模不必要的特征

# 1.4、分离特征与标签

# 2、特征工程/数据预处理

# 2.1、分布可视化:校验是否同分布,训练集与测试集数据分布

# 2.1.1、【数字型】分布对比可视化

# 2.1.2、【类别型】分布对比可视化

# 2.2、相关性热图可视化

# 2.3、对特征进行分箱处理

mean 验证集auc:0.8925944143873619
mean 验证集auc:0.8823787365621856
结果分析,经过分箱后,AUC明细下降,故不建议分箱处理当前字段!

 # 2.4、【类别型】特征执行标签编码

  1. Data columns (total 20 columns):
  2. # Column Non-Null Count Dtype
  3. --- ------ -------------- -----
  4. 0 age 30000 non-null int64
  5. 1 job 30000 non-null int32
  6. 2 marital 30000 non-null int32
  7. 3 education 30000 non-null int32
  8. 4 default 30000 non-null int32
  9. 5 housing 30000 non-null int32
  10. 6 loan 30000 non-null int32
  11. 7 contact 30000 non-null int32
  12. 8 month 30000 non-null int32
  13. 9 day_of_week 30000 non-null int32
  14. 10 duration 30000 non-null int64
  15. 11 campaign 30000 non-null int64
  16. 12 pdays 30000 non-null int64
  17. 13 previous 30000 non-null int64
  18. 14 poutcome 30000 non-null int32
  19. 15 emp_var_rate 30000 non-null float64
  20. 16 cons_price_index 30000 non-null float64
  21. 17 cons_conf_index 30000 non-null float64
  22. 18 lending_rate3m 30000 non-null float64
  23. 19 nr_employed 30000 non-null float64
  24. dtypes: float64(5), int32(10), int64(5)
  25. memory usage: 3.7 MB
  26. None
  27. train_test_split_Index22500

# 3、模型训练与推理

# 3.1、划分训练及测试集

# 3.2、建立LightGBM模型

# 3.3、模型交叉验证

  1. 验证集AUC:0.8883930791281923
  2. 验证集AUC:0.8894560893079624
  3. 验证集AUC:0.8978416119041924
  4. 验证集AUC:0.8998423076923078
  5. 验证集AUC:0.8874389839041544
  6. mean 验证集auc:0.8925944143873619

# 3.4、模型评估

  1. subscribe subscribe_cat
  2. 0 0.051004 no
  3. 1 0.106801 no
  4. 2 0.009075 no
  5. 3 0.031288 no
  6. 4 0.047608 no
  7. ... ... ...
  8. 7495 0.219465 no
  9. 7496 0.055063 no
  10. 7497 0.113493 no
  11. 7498 0.006213 no
  12. 7499 0.055546 no

# 4、模型可解释性

# T1、利用shap解释模型

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号