APP下载

运用逻辑回归算法分析银行营销数据

2021-06-16郑淞元

电子制作 2021年2期
关键词:字段编码变量

郑淞元

(浙江省杭州学军中学,浙江杭州,310000)

0 引言

存款营销是银行吸收存款的主要经营模式,通过对银行历史营销数据进行建模,利用模型去判断一个潜在客户是否会有存款业务,从而帮助银行提高营销成功率和营销效率,更好的分配人力资源,节省成本。本文将使用spark框架中的逻辑回归实现,按照数据分析的步骤,分析银行营销数据,建立逻辑回归模型,预测客户是否会存款,并提出建议。

1 逻辑回归算法

■1.1 逻辑回归的原理

逻辑回归是一个有监督机器学习算法中的分类算法。通常是利用已知的特征变量来预测一个离散型目标变量的值(如0/1,是/否,真/假)。通过逻辑回归拟合得到结果变量值是一个概率值(0-100%),根据概率值的大小和根据业务场景确定的分类阈值,映射为最终预测目标变量的分类值,如:概率值大于等于50%,映射目标变量分类值为1;概率值小于50%,映射目标变量分类值为0。

■1.2 逻辑回归与线性回归

线性回归的基本思路是对多维空间中存在的样本点,用特征的线性组合去拟合多维空间中点的分布和轨迹,公式如下:z=θ0 +θ1x1 +θ2x2 +θ3x3......+θnxn=θTx;

2 特征工程

■2.1 特征工程概述

特征工程是对原始数据进行加工,提取满足算法和模型要求的特征变量。特征工程包括特征提取、特征转换、降维等操作。Spark提供了多种特征工程算法的实现。本验中,我们使用了StringIndex 和 OneHotEncoder 两种特征转换算法。

■2.2 StringIndex编码

StringIndex是指把一组字符型标签编码成一组数值型标签索引,索引的范围为0到标签数量。索引构建的顺序为标签的频率,优先编码频率较大的标签,即出现频率最高的标签为0号。如果输入的是数值型的,将转成字符型,再对其进行编码。

表1 StringIndex特征转换示例

在上述例子数据中,a出现了3次,c出现了2次,b出现了1次,按照category频率从高到低,从0开始编码,所以a的编码为0.0,c的编码为1.0,b的编码为2.0。

■2.3 OneHotEncoder编码

OneHot编码将已经转换为数值型的类别特征,映射为一个稀疏向量对象,对于某一个类别映射的向量中只有一位有效,即只有一位数字是1,其他数字位都是0。如下列例子,有两个特征属性:

婚姻状况:[“已婚”,“单身”,“离异”,“未知”]

有无房贷:[“有房贷”,“无房贷”]

机器学习算法不接收字符型的特征值,需要将字符型分类值的特征数字化,对于某一个样本,如[“已婚”,“无房贷”],最直接的方法可以采用序列化的方式:[0,1],但是这样的特征处理并不能直接放入机器学习算法中。对于类似婚姻状况是4维,有无房贷是2维等问题,可以采用One-Hot编码的方式对上述样本[“已婚”,“无房贷”]进行编码,“已婚”对应[1,0,0,0],“无房贷”对应[0,1],则完整的特征数字化的结果为:[1,0,0,0,0,1],这样做会使数据变得连续,但也会非常稀疏,所以在Spark中,用了稀疏向量来表示这个结果,并且逻辑回归算法的分类器是需要连续数值作为特征输入的。

3 Spark介绍

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,其核心特点是基于内存的,对于大型的、低延迟的大数据分析应用有很好的性能表现。Spark的计算模型借鉴吸收了Hadoop MapReduce优点,同时也着力去解决MapReduce的一系列问题。

Spark具有如下几个主要特点:

(1)运行速度快:构建RDD的DAG支持循环数据流结构,通过执行引擎进行内存中的并行计算处理。

(2)容易使用:提供了多种语言的交互方式,比如Scala、Java、Python和R语言等,可以方便得通过Spark Shell使用上述几种语言编程交互式使用Spark。

(3)通用性:强大而完整的工具套件和技术栈--SQL查询、streaming流式计算、机器学习和图算法等相关组件。

(4)运行模式多样:可单独得构建集群来使用,可运行在Hadoop之上,可以在Amazon EC2等云环境中进行部署,数据源也可以很多样化,可以访问HDFS、Cassandra、HBase、Hive等多种数据源。

4 实验设计

■4.1 实验环境及数据

本实验基于windows系统平台。使用的编程语言主要是Scala,开发工具为Scala IDE。本次实验数据来自:https://github.com/ChitturiPadma/datasets/blob/master/bank_marketing_data.csv。

■4.2 营销数据结构分析

在数据bank_marketing_data.csv中,包含4万多条记录和21个字段,本次实验中,我们使用其中10个字段作为因变量,1个字段作为目标变量,具体列明含义如表2所示。

表2 数据字段描述

■4.3 特征工程

经过对数据的概要分析可知,营销数据中除了数值型的字段 (age、duration、previous、empvarrate),还有一些包含分类值的字符型字段(job,marital、default、housing、poutcome、loan)。本步骤就要利用特征工程,对分类字段进行特征转换,使用spark提供的StringIndex和OneHotEncoder算法。

图1 特征工程加工后的分类变量

最后需要对在对目标变量y进行StringIndex数据转换后,就可以基于编码后的向量字段应用逻辑回归算法进行预测了。

■4.4 建立逻辑回归模型进行预测

基于Spark平台进行逻辑回归分析的基本步骤如下:

(1)实例化一个向量组装器对象,将向量类型字段和数值型字段形成一个新的字段:features,其中包含了所有的特征值 val;

(2)对目标变量进行StringIndexer特征转换,输出新列;

(3)将特征按顺序进行合并,形成一个数组 val;

(4)将原始数据selected_Data进行8-2分,80%用于训练数据training。20%用于测试数据test,评估训练模型的精确度 ;

(5)实例化逻辑回归算法;

(6)将算法数组和逻辑回归算法合并,传入pipeline对象的stages中,然后作用于训练数据,训练模型;

(7)将上一步的训练模型作用于测试数据,返回测试结果;

(8)显示测试结果集中的真实值、预测值、原始值、百分比字段;

(9)创建二分类算法评估器,对测试结果进行评估val。

val splits = selected_Data.randomSplit(Array(0.8,0.2))val lr = new LogisticRegression()var model = new Pipeline().setStages(transformers:+ lr).fit(training)

图2 代码1(逻辑回归模型进行预测)

运行代码,可以得出结果如图3所示。

图3 预测结果图像

图3运行后输出的测试结果前10条数据,其中probability 列值范围是[0,1],对应的发生概率,如果某个分类值出现的概率大于0.5,那么预测值prediction就是对应的那个分类值。对20%测试集的预测精确度为:0.9192031636279924,即:精确度为 90% 以上,说明我们模型是有效的,预测的准确度比较高。需要注意的是,每次运行的精确度不会完全一样,有稍微差别。

5 总结

本文章介绍了运用逻辑回归机器学习算法的基本步骤,以银行营销数据为基础演示了的分析预测方法,该方法包括以下步骤:

(1)获取银行营销数据;(2)分析营销数据的结构;(3)概要分析数据字段的内容;(4)对数据使用特征工程;(5)建立逻辑回归模型并进行预测。

除上述步骤外,根据数据情况和具体场景,有时还需要对数据进行清洗。

猜你喜欢

字段编码变量
HEVC对偶编码单元划分优化算法
住院病案首页ICD编码质量在DRG付费中的应用
带钩或不带钩选择方框批量自动换
无正题名文献著录方法评述
无正题名文献著录方法评述
分离变量法:常见的通性通法
论纪录片影像中的组合编码运用
不可忽视变量的离散与连续
不断修缮 建立完善的企业编码管理体系
轻松把握变量之间的关系