本次数据集选自UCI机器学习库中的银行营销数据集(Bank Marketing Data Set),数据集只选取了部分数据共计5000条,原始数据集地址:http://archive.ics.uci.edu/ml/datasets/Bank+Marketing。
这些数据与葡萄牙银行机构的营销活动相关,营销的活动以电话为主,银行的客服人员需要来联系客户至少一次来确认客户是否认购该银行的定期存款业务。通过数据集,建立模型来判断客户是否认购银行的定期存款业务,可以帮助客服人员提高效率,为客户是否会认购提供参考,并且可以帮助银行制定更好的营销策略,提高营销产品的订购率。
数据说明
数据集共计5000条数据,字段共有21个,其中目标字段为y,数据类型字段无缺失值,部分字符类型字段有缺失值,缺失值用unknown表示。
NOMBER | 字段名称 | 数据类型 | 字段描述 |
---|---|---|---|
1 | age | int | 客户年龄 |
2 | job | string | 客户职业(分类:“行政管理”、“蓝领”、“企业家”、“女佣”、“管理”、 “退休”、“个体户”、“服务”、“学生”、“技术员”、“失业”、“未知”) |
3 | martial | string | 婚姻状况(分类:“离婚”、“已婚”、“单身”、“未知”;注:“离婚”指离婚或丧偶) |
4 | education | string | 教育状况(分类:“4年基础教育”、“6年基础教育”、“9年基础教育”、“高中”、“文盲”、“专业课程教育”、“大学”、“未知”) |
5 | default | string | 违约状况(分类:“否”、“是”、“未知”) |
6 | housing | string | 是否住有房贷款(分类:“否”、“是”、“未知”) |
7 | loan | string | 是否有个人贷款(“否”、“是”、“未知”) |
8 | contact | string | 交流方式(分类:“移动电话”、“固定电话”) |
9 | month | string | 最后一个联系月份(分类:"jan", "feb", "mar", ..., "nov", "dec") |
10 | day_of_week | string | 最后联系的星期数(分类:"mon","tue","wed","thu","fri") |
11 | duration | int | 距离上次联系的时间间隔(s) |
12 | campaign | int | 活动期间与该客户的联系的次数 |
13 | pdays | int | 距离上次联系的时间间隔(天)(999:表示从未联系) |
14 | previous | int | 活动之前与该客户的联系次数 |
15 | poutcome | string | 前一次的营销结果(分类:“失败”,“不存在”,“成功”) |
16 | emp_var_rate | double | 就业变化率-季度指标 |
17 | cons_price_idx | double | 消费者价格指数-月度指标 |
18 | cons_conf_idx | double | 消费者信心指数-月度指数 |
19 | euribor3m | double | 欧元银行同业拆借利率 |
20 | nr_employed | double | 职工人数-季度指标 |
21 | y | string | 预测客户是否会订购定期存款业务 |
部分数据截图,如下:
实验流程
整体实验流程图,如下:
数据预处理
原始数据的数据类型都为String类型,我们接入一个 元数据编辑 节点,将字段age、duration、campaign、pdays、previous更改为int型变量,将字段emp_var_rate、cons_price_idx、cons_conf_idx、euribor3m、nr_employed更改为double型变量。更改方式如下图所示。
数据中有很多String类型的字段,需要将其转换成数值型才可以提供给算法模型使用,所以我们使用 特征转换 节点可以实现这一操作。首先在元数据编辑节点后接入一个 特征选择 节点,选取需要转换的字段名称(字段y、job、marital、education、default、housing、loan、contact、month、day_of_week、poutcome)。然后依次接入 特征转换 、抽取、变换 节点,整个转换便完成了。转换后的字段后缀名称为index,如下图所示:
数据探索分析
在变换节点后接入一个 相关性分析 节点,查看我们的目标变量yindex与其它特征的相关性。在后续的模型训练中保留相关系数大于等于0.25或者小于等于-0.25的字段作为特征(即duration、pdays、previous、emp_var_rate、euribor3m、nr_employed、contactindex、monthindex、poutcomeindex)。查看分析结果如下图所示:
模型训练
在变换节点的后面接入 特征选择 节点,特征列选择数据探索阶段分析出的字段,标签列选择yindex。然后接入 拆分 节点将数据按7:3的比例拆分成两份,一份用于训练,一份用于预测。标签列yindex只有两个类别,是一个二分类任务。选取一个二分类算法节点,这里选择 支持向量机 算法节点,最后我们再接入一个 训练 节点,训练模型。支持向量机的参数配置如下图所示。
预测模型与评估
将 预测 节点接入,并在预测节点后接入一个 评估 节点。运行成功后我们查看评估的分析结果如下图所示,可以看到准确率在84%左右。
总结
通过本次实验可以学习到搭建一个完整的二分类算法模型流程以及在特征处理过程中字符类型数据的处理和简单的数据探索分析。同时在本次实验中我们可以看到接触时间越长的客户反而不太会订购定期存款业务。