<< Click to Display Table of Contents >> R模型复制链接 |
1.背景介绍
目前,银行提供了各种各样的理财产品,银行会通过电话营销的方式将产品推荐给客户。为了提高营销的成功率,一些银行会借助数据分析技术来分析哪些客户购买理财产品的可能性更大。
2.数据说明
本案例的数据集是某银行机构电话营销活动的记录。机构通常与同一个客户会进多次电话沟通,客户明确购买或不购买该产品的情况会被记录到这个数据集中,希望通过对这个数据集的分析,发现客户是否会购买新产品的规律。原数据集有大约4万5千条记录,在这里使用随机抽样3000条记录的小数据集来进行分析。
字段名称 |
字段描述 |
数据类型 |
---|---|---|
age |
用户的年龄 |
数值型 |
job |
工作类型 |
文本型 |
marital |
是否已婚 |
文本型 |
education |
教育程度 |
文本型 |
default |
默认情况下是否有信用 |
布尔型 |
balance |
年平均余额,以欧元计 |
数值型 |
housing |
是否有购买房产 |
布尔型 |
loan |
是否有贷款 |
布尔型 |
contact |
联系人通信类型(类别:“unknown”、“telephone”、“cellular”) |
文本型 |
day |
上个月的最后一个联络日 |
数值型 |
month |
上个月 |
文本型 |
duration |
最后一个接触持续时间,单位为秒 |
数值型 |
campaign |
此活动期间执行的联系人数量 |
数值型 |
pdays |
上次联系客户后间隔的天数 |
数值型 |
previous |
与上次通话时间间隔 |
数值型 |
poutcome |
先前营销活动的结果 |
文本型 |
y |
是否购买了定期存款产品 |
布尔型 |
3.方案介绍
在实际项目使用中,“R模型”节点的作用就是编写自定义数据处理和模型,该节点接受一个数据集,输出一个模型。“R数据”节点通常用于编写模型部署脚本对实际数据进行预测输出和输出的处理。本方案展示了使用R脚本自定义建模的完整工作流,仿照本案例的工作流可以尝试构建自己的脚本逻辑。
标签字段y是布尔类型,所以这个是一个二分类任务。实现分类任务的方法有很多,比如决策树、SVM、神经网络等;本案例使用R的开源工具包nnet搭建神经网络模型。nnet是R语言中用于解决机器学习问题的核心工具包,其包含了前馈神经网络和多项对数线性模型等等。
4.方案分析
1)模型工作流搭建
如果通过编写R脚本实现模型,我们需要使用“R模型”、“R数据”节点,它们位于资源树的“脚本”目录,如图所示位置。将数据集“银行训练数据”和“银行测试数据”分别作为训练集和测试集使用,节点连接关系如图所示,其中“R模型”节点只能编写和运行自定义模型脚本,输出的是训练好的模型,“R数据”编写模型预测脚本,可以接收一个模型,并在测试数据集应用模型输出预测结果数据集。
2)“R模型”节点的脚本编写
我们省略特征工程部分,模型为单隐藏层全连接神经网络,隐藏层节点数为10个,迭代200次训练结束。训练完成的模型赋值给内置变量MODEL,模型将通过此变量传递给下一个脚本节点。
3)“R数据”节点的自定义脚本
模型预测结果及其他字段数据通常是添加到一个list对象中统一返回给“元数据”和“数据探索”页面,或者在“R数据”节点后面连接一个“数据集视图”节点查看结果数据。
5.结果说明
在“R数据”脚本中我们制定了返回值“list(pred=pred)”,字段“pred”为客户是否预订定期存款的预测值(yes:客户会预订,no:不会预定)。预测结果集中不仅会包含神经网络模型预测输出字段及数据,默认还会包含输入到“R数据”的数据集的数据,结果集如图所示。该数据集可以写入到内置数据集或者外部数据库中用于可视化分析。