Bank Marketing预测一个客户购买理财产品的成功率

一、实验目的

  • 熟悉数据预处理的基本方法,包括缺失值填充、数据编码。
  • 熟悉 pandas、scikit 等数据分析库的使用。
  • 熟悉机器学习算法交叉验证方法。
  • 熟悉混淆矩阵、PR 曲线、ROC 曲线和 AUC 值。
  • 分析正则项参数对 Logistic Regression 性能的影响。
  • 分析最大树深度对决策树性能的影响。
  • 分析随机森林随着个体数的性能收敛情况,以及个体树深度对随机森林性能的影响。
  • 比较决策树、随机森林在 Bank Marketing 数据集上的差异,并分析产生这种从差异的原因。

二、数据预处理

2.1 数据描述

Bank Marketing 数据集用于预测一个客户购买理财产品的成功率。

数据输入的属性包括客户基本信息,当前营销活动信息,其它信息和社会经济背景信息。

  • Age 年龄(数字)

  • Job 工作类型(分类:“管理员”,“蓝领”,“企业家”,“女佣”,“管理”,“退休”,“自营职业”,“服务”,“学生” “技术人员”, “失业”, “未知”)

  • Marital 婚姻状况(分类:“离婚”,“已婚”,“单身”,“未知”;注:“离婚”是指离婚或丧偶)

  • Education 教育(类:“basic.4y”,“basic.6y”,“basic.9y”,“high.school”,“illiterate”,“professional.course”,“university.degree”,“unknown”)

  • Default 默认信用额度? (分类:“不”,“是”,“未知”)

  • Housing 有住房贷款吗? (分类:“不”,“是”,“未知”)

  • Loan 有个人贷款吗? (分类:“不”,“是”,“未知”)

  • Contact 联系沟通类型(分类:“手机”,“有线电话”)

  • Month 上一个联系月份(分类:“jan”,“feb”,“mar”,…,“nov”,“dec”)

  • Day_of_week 最后一个联系日(分类:“mon”,“tue”,“wed”,“thu”,“fri”)

  • Duration 上次联系持续时间,以秒为单位(数字)。

  • Campaign 此营销活动系列期间和此客户的联系次数(数字,包括最后一次联系)

  • Pdays 从上一个营销活动上次联系客户后经过的天数(数字;999表示之前未联系过客户)

  • Previous 此营销活动前联系客户的次数

  • Poutcome 上一次营销活动的结果(分类:‘失败’,‘不存在’,‘成功’)

  • emp.var.rate:就业变化率 - 季度指标(数字)

  • cons.price.idx:消费者价格指数 - 月度指标(数字)

  • cons.conf.idx:消费者信心指数 - 月度指标(数字)

  • euribor3m:euribor 3 个月费率 - 每日指标(数字)

  • nr.employed:员工人数 - 季度指标(数字)

数据输出包括:

客户是否会购买产品 (分类:是、否)

另外,数据中可能存在缺失值(用 unknown 表示)

2.2 数据预览

实验基于 pandas 可以读入数据,可以通过 tail 方法获得样本的一些数据:

图表 1 基于 pandas 进行数据概览

进一步分析数据中正负样本的比例,可以看到,正负样本的比例并不是很均匀,购买产品的客户占比不多。

图表 2 正负样本比例

2.3 缺失值处理

首先分析有哪些列存在 unknown 数据:

图表 3 可能存在缺失值的属性

可以看到,job、marital、education、default、housing、loan 这些属性都存在缺失值。我们首先通过 pandas 的 value_counts 分析出存在缺失值的属性的各个分类的数量分布情况。

图表 4 Job 属性各个分类分布情况

图表 5 marital 属性各个分类分布情况

图表 6 education 属性各个分类分布情况

图表 7 loan 属性各个分类分布情况

job、marital、education、loan 这些属性,占比最高的分类的比例远远高于其它属性,因此我们直接用占比最高的分类作为缺失值的填充值。

图表 8 housing 属性各个分类分布情况

Housing 属性 yes 和 no 的比例比较相近,因此采用随机选取的方法进行 yes 和 no 的选择。

图表 9 数据缺失值处理方法

图表 10 default 属性各个分类分布情况

另外注意到 default 属性中 yes 的实例只有 3 个。这个属性对机器学习算法没有任何意义,因此我们直接丢弃这个属性。

图表 11 丢弃 default 属性

2.4 数据编码

数值数据不需要进行编码,因此这里不阐述。

二分类变量包括 housing 和 loan,直接编码为 0 和 1 即可。

图表 12 二分类变量编码方法

有序类别变量包括 education, month, day_of_week,这种数据可以根据分类的先后顺序进行编码:

图表 13 有序类别变量编码

无序分类数据包括 job, contact, poutcome, marital。无法直接和有序类别变量那样进行分类,需要转化为多维数据。这里采用 pandas 的 get_dummies 帮助无序变量进行编码:

图表 14 为无序分类生成哑数据

经过编码后,可以分析各个属性和分类之间的相关系数:

图表 15 各个属性和 y 分类的相关系数

三、算法评估方法

3.1 交叉验证

我们基于 scikit 的 ShuffleSplit 进行交叉验证方法的定义。我们定义五次五折交叉验证:

图表 16 定义交叉验证

3.2 混淆矩阵

一个正确值无法反应模型的真正的性能,我们引入混淆矩阵,可以分析出购买客户和未购买客户各自的分类性能:

图表 17 混淆矩阵的绘制

3.3 PR 曲线、ROC 曲线和 AUC

我们基于 PR 曲线、ROC 曲线和 AUC 来进一步分析算法的性能。

图表 18 PR 曲线、ROC 曲线和 AUC

四、Logistic Regression

4.1 正则化系数的调整

我们分析正则化系数对 Logistic Regression 的性能影响,可以看到,正则化系数对算法性能的影响基本不大。

图表 19 正则化系数和模型准确率关系

4.2 准确率随训练样本数的变化

图表 20 LR 准确率随训练样本数的变化

4.3 混淆矩阵

可以看到虽然模型整体准确率较高,但是类别的不均匀使得未订购客户的分类性能较好,而判断订购客户的分类性能表现较差。

图表 21 LR 混淆矩阵

4.4 PR 曲线、ROC 曲线和 AUC 值

图表 22 LR 的 PR 曲线

图表 23 LR 的 ROC 曲线与 AUC

五、决策树实验

5.1 最高树深度对性能的影响

当树的高度小于 5 的时候,树的高度的提高可以减少泛化误差和经验误差。但是当树的高度大于 5 的时候,虽然树高度的提高可以减少经验误差,但是泛化误差缺开始提高,说明决策树树高度过高容易造成过拟合。

图表 24 最高树深度对决策树性能的影响

5.2 训练样本数对性能的影响

随着训练样本增加,树的泛化误差减低,经验误差有所提高。

图表 25 训练样本数对决策树性能的影响

5.3 混淆矩阵

和 LR 一样,决策树分类中未订购客户分类的性能依旧表现不好。说明数据集不均匀对训练的影响是巨大的。

图表 26 混淆矩阵

5.4 PR 曲线、ROC 曲线和 AUC 值

决策树的 AUC 和 LR 基本一致。

图表 27 决策树 PR 曲线

图表 28 决策树 ROC 曲线和 AUC 值

5.5 决策树可视化

从决策树可视化中可以看到,对决策影响最高的属性集中于 duration、社会经济属性等。

图表 29 决策树可视化

六、随机森林实验

6.1 学习个体与随机森林性能的收敛

个体数达到 30 的时候模型性能基本实现了收敛。

图表 30 学习个体与随机森林性能的收敛

6.2 最大树高和模型性能关系

和决策树不同,随机森林中树高度的提高并没有造成过拟合问题,相反,树的高度越高,模型性能越好。

图表 31 最大树高和模型性能关系

6.3 样本数对随机森林性能的影响

图表 32 样本数对随机森林性能的影响

6.4 混淆矩阵

在混淆矩阵表现了,随机森林中更多的实例被分为了不会购买产品的客户。虽然随机森林和决策树的模型准确率基本一致,但是随机森林模型会使得银行流失更多的客户。

图表 33 随机森林混淆矩阵

6.5 PR 曲线、ROC 曲线和 AUC

图表 34 随机森林 PR 曲线

图表 35 随机森林 ROC 和 AUC 值

Bank Marketing预测一个客户购买理财产品的成功率相关推荐

  1. 机器学习实战:Bank Marketing银行对客户订阅理财产品的预测

    文章目录 概要 一.分析训练集整体情况 二.特征工程 1.创造特征 2.筛选特征 三.数据处理 四.模型预测 概要 该数据与一家葡萄牙银行机构的直接营销活动(电话)有关.分类目标是预测客户是否会订阅定 ...

  2. [Kesci] 预测分析 · 客户购买预测(AUC评估要使用predict_proba)

    文章目录 1. Baseline 2. AUC评估要使用predict_proba 2.1 导入工具包 2.2 特征提取 2.3 训练+模型选择 2.4 网格/随机搜索 参数+提交 2.5 测试结果 ...

  3. 09- 京东客户购买意向预测 (机器学习集成算法) (项目九) *

    项目难点 根据用户在网站的操作(浏览, 加购, 删除, 购买, 收藏, 点击), 预测用户是否购买产品 . 主要使用 Xgboost 建模 pd.get_dummies 相当于onehot编码,常用与 ...

  4. 10_行销(Marketing)里客户流失

    行销(Marketing)里客户流失 Load the packages Load the data Data Analysis & Preparation Train & Test ...

  5. python 逻辑回归,预测银行客户是否购买定期存款

    问题: 逻辑回归其实是一个二分类问题,预测银行客户是否购买定期存款我们会提出以下一些问题: (1)影响银行客户购买定期存款的因素有哪些 (2)对于类别变量我们应该怎样处理, (3)我们应该怎样进行特征 ...

  6. 宇枫资本购买理财产品需要什么技巧

    跟着社会的行进与展开,人们的生活水准也是越来越好.关于理财的认知也不再那么约束,理财不再仅仅只是有钱人才会接触的东西了.但是关于都买理财产品的技巧咱们真的知道吗?今天小编就在这儿跟咱们好好的讲讲关于出 ...

  7. 记住影响客户购买的3个决策关键

    记住影响客户购买的3个决策关键,让你清晰知道客户想什么,要什么: 1.缺乏感,什么是缺乏感?缺乏感指引起客户焦虑.烦恼的冲突点,因为有了这样的问题及痛点客户才可能产生需求.所以我一直强调,销售员一定要 ...

  8. 利用随机森林算法实现Bank风险预测

    利用随机森林算法实现Bank风险预测 源码分享及数据集分享:https://github.com/luo948521848/BigDatas 在机器学习中,随机森林是一个包含多个决策树的分类器, 并且 ...

  9. python-selenium爬取摩点客户购买信息(前端分析+爬虫代码)

    前言 最近公司需要摩点的用户购买数据,比如总金额最多的有礼包 但是发现网站并没有提供下载渠道(运营和我说的,如果有不是我的锅┓(;´_`)┏) 发现一个页面只有十个数据,也没有跳转,那光爬网页肯定是不 ...

最新文章

  1. 数据库编程——JDBC 配置
  2. springCloud - 第8篇 - 配置文件管理中心 - 集群模式(负载匀衡)使用
  3. Python代码详解:入门时间序列分类
  4. Web 2.0 编程思想:16条法则(转)
  5. 取得人生成功的40条定律
  6. 2021考研——复习规划(数学篇)
  7. bios error 装系统acpi_win10系统升级后开机提示acpi bios error的解决方法
  8. oracle查看数据库文件大小
  9. 分享100个精美模板PPT模板,总有一款适合你
  10. 来看看一位阿里P9的年薪和资产
  11. 《C程序设计》读后感
  12. html5 css3制作柱形图,一步一步教你实现纯CSS的柱形图
  13. 计算机无法正常更新,无法完成更新正在撤销更改请不要关闭你的计算机的解决方法...
  14. pytorch快速上手-使用自动标注软件Openlabeling和yolov5快速完成目标检测
  15. Matlab的plot函数、fplot函数
  16. C语言变量常量和标识符
  17. 随笔——研一,研究不出啥是啥
  18. 岭南学院python课程作业3
  19. Photoshop完全自学入门与经典实例全视频教程
  20. 硬件编解码(一)硬件编解码介绍

热门文章

  1. HTAP 能够取代 OLAP 吗?
  2. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生就业管理系统5t101
  3. PPT批量替换字体、行间距操作
  4. Ironic-Python-Agent
  5. 多邻国(Duolingo)内推,来了!
  6. 手游逆向专题<英雄联盟手游>: Unity内还原亚索渲染效果
  7. 关于mina内部有向个线程在执行---mina源代码分析
  8. Kaggle---Toxic Comment Classification Challenge
  9. matlab和saber哪个好用,实例分析 saber与simulink谁更适合仿真
  10. 云栖大会上宣布即将开源的手淘Atlas什么来头?