全文链接: http://tecdat.cn/?p=28579
作者:Nuo Liu
数据变得越来越重要,其外围利用“预测”也成为互联网行业以及产业改革的重要力量。近年来网络 P2P借贷倒退局势迅猛,一方面普通用户能够更加灵便、便快捷地取得中小额度的贷款,另一方面因为相当多数量用户呈现守约问题而给 P2P信贷平台以及借贷单方带来诸多纠纷,因而依据用户历史款状况精确预测潜在是否还会产生守约就十分有必要。
解决方案
工作/指标
对于用户贷款是否守约的预测,后果解释。
数据源筹备
删除属性
删除数据集中与建设决策树无关的属性IDX、Listinginfo,此类属性作为用户标记/日期标记作用,与借款人信贷守约显著无关。
删除数据集中distinct为1的属性webloginfo\_10、Education\_info7、webloginfo_49,此类属性仅存在同一个数值,对分类后果无影响。
webloginfo_10属性形容,其余属性相似
缺失值解决
缺失值状况如下表,按缺失值比例由大到小排列
对于属性webloginfo\_3、webloginfo\_1,因为缺失值比例过大,间接删除两属性。操作步骤为预处理界面勾选两属性,点击Remove。
对于属性Userinfo\_21、Userinfo\_22、Userinfo\_23、Education\_info8、webloginfo\_23-48、Userinfo\_4,因为缺失值比例较小,有余1%。webloginfo\_2、webloginfo\_4、webloginfo\_5、webloginfo\_6缺失值比例为5%。因而间接删除缺失值对应instance,以删除Userinfo_21中的缺失值为例,操作步骤如下:
删除后,残余19200条实例如下,数据集损失的实例数有余5%,认为对后续决策树建设没有影响。
对于其余缺失值属性,若为Numeric属性,用平均值代替缺失值,若为Nominal属性,用它的众数来代替缺失值。抉择 weka中“ReplaceMissingValues"过滤器进行实现
解决后查看不存在缺失值,至此缺失值解决实现。
Numeric 属性离散化解决
应用“NumerictoNominal”过滤器实现Numeric属性的离散化,为不便解决应用MultiFilter对所有Numeric属性进行操作。
解决后如图,所有Numeric属性均已变为Nominal属性。
特色转换
特色了解
该数据集数据来源于中国一家驰名的P2P公司的借款记录。数据集中包含借款人的ID、日期、借款人特色(地点、婚姻状态等信息)、网络行为、学历以及第三方数据等全面信息。
Weblog Info_:Info网络行为字段形容应用网络次数多少,:应用第三方数据工夫N字段形容第三方数据工夫长短。察看发现ThirdParty_ Info\_PeriodN\_属性数据不同维度上的特色的尺度不统一,须要进行标准化解决
特色晋升
依照第一次办法,对数据集进行缺失值删补,步骤省略。
将ThirdParty字段属性标准化,在预处理界面选用unsupervised. attribute. Standardize,标准化给定数据集中所有数值属性的值到一个0均值和单位方差的正态分布。
特征选择
原数据集蕴含属性较多,为不便后续操作先对数据集进行特征选择解决。
删除数据集中与建设决策树无关的属性IDX、Listinginfo,此类属性作为用户标记/日期标记作用,与借款人信贷守约显著无关。删除数据集中distinct为1的属性webloginfo\_10、Education\_info7、webloginfo_49,此类属性仅存在同一个数值,对分类后果无影响。
在预处理界面抉择AttributeSelection过滤器,抉择CfsSubsetEval评估器,抉择BestFirst 搜寻办法。最终失去除target之外的74个属性。
特色降维
因为ThirdParty_ Info\_PeriodN\_为应用第三方数据工夫N字段,形容不同阶段应用工夫长短,WeblogInfo字段为应用网络次数。依据意义判断,同时蕴含同类别不同阶段数据不太正当,因而使用主成分分析方法将ThirdParty_ Info\_PeriodN\_属性合并成为一个综合指标,抉择排名第一的属性命名为ThirdParty属性,替换原数据集中所有ThirdParty_ Info\_PeriodN\_*变量。同理对WeblogInfo字段应用主成分分析方法进行合并与替换。
以WeblogInfo降维为例,设置提取5个维度作为主成分,排序后失去第一条属性的个体评估最高达到0.9388,保留第一条属性,导出引入数据集,命名为WeblogInfo。ThirdParty字段同理。
特色结构
通过抉择后蕴含的属性中,User2、4、6、7、18、19均为地点属性,且蕴含300余条distinct,对决策树造成烦扰。而其中User6、7;User18、19别离为同一地点的省份与城市名称,存在信息冗余,因而首先对这几类地点属性进行解决。
- 再抽样与离散化
- 对类属性target进行离散化,过程省略
- 第一次解决时并没有对target之外的Numeric属性进行离散化解决,导致决策树同一个属性在多个节点呈现。因而为升高树深度,对其余Numeric属性进行离散化解决。首先察看user16、Education1、Education5、Movement属性为布尔变量。Socialwork7属性只蕴含-1,0,1三个值,将以上属性间接转换为Nominal属性。
其次对其余数值型属性进行离散化。在预处理界面抉择Discretize,依据第一次作业后果判断,设置bins为3,分类区间取小数点后两位。
- 再抽样。target属性中发现Lable为1(即存在守约危险)的频数较小。为避免进行分类建模时学习不到小类特色,使用SMOTE包减少小类数量,加大小类比例,以便后续机器学习。设置参数percentage为800%,实例数量扩充为原来的8倍。为避免抽样范畴过小造成数据与原数据比例失衡,设置nearestNeighbors为100.
运行后如图所示,实例数量减少到33320条。
至此预处理结束,对训练集与测试集进行同样解决,为防止测试集与训练集不匹配问题,用记事本关上测试集.arff文件批改表头至与训练集统一。
建模和模型优化
随机森林
Weka操作
关上预处理后的训练集,在classifier模块中抉择CVParameterSelection,并抉择RandomForest决策分类树算法,寻找最佳参数。
在通过解决后的测试集上进行测试,在more options中抉择cost sensitive,并将左下至右上对角线上数值均设为1。
运行后果如下:
模型正确率为85.3684%,召回率为0.854,假阳性数量较大。以借款金额每人1000,中介免费率为0.3计算ROI,后果为450000。
将cost sensitive扭转为只有左下数值为1,进行再次运行,得出后果雷同。
为了获得最优ROI,应用最小化代价函数CostsensitiveClassifier,并将参数minimize expected cost设置为True,cost sensitive设置为只有左下角为1。
结果显示为:
能够看出假阳性数值显著缩小,然而模型正确率和召回率重大降落,且因为真阳性也缩小,ROI升高为172800。
因而随机森林算法中,ROI最大为450000。
反对向量机SVM算法
算法原理
反对向量机(support vector machines, SVM)是一种二分类模型,它的根本模型是定义在特色空间上的距离最大的线性分类器,根本想法是求解可能正确划分训练数据集并且几何距离最大的拆散超平面。它是针对线性可分状况进行剖析,对于线性不可分的状况,通过应用非线性映射算法将低维输出空间线性不可分的样本转化为高维特色空间使其线性可分,从而使得高维特色空间采纳线性算法对样本的非线性特色进行线性剖析成为可能。
Weka操作
在package manager中下载LibSVM包,并在classifier模块中抉择最优参数抉择CVParameterSelection,应用SVM分类算法。
同时调整cost sensitive为左下至右上数值均为1,得出后果为:
模型正确率为79.7725%,召回率为0.798,混同矩阵中假阳性依然很多,ROI数值为623100。批改cost sensitive为只有左下数值为1时,后果雷同。
应用最小化代价函数CostsensitiveClassifier,并将参数minimize expected cost设置为True,cost sensitive设置为左下至右上数值均为1时,后果如下:
相比最优参数抉择构建的模型,正确率略降落为79.281%,召回率为0.793,ROI数值为616800,同样小于最优参数构建模型。
因而SVM分类算法最大ROI为623100。
将test和train两个数据集中的target变量从数字型转化为名义型
CART
原理:
C4.5中模型是用较为简单的熵来度量,应用了绝对较为简单的多叉树,只能解决分类不能解决回归。对这些问题,CART(Classification And Regression Tree)做了改良,能够解决分类,也能够解决回归。
1. CART分类树算法的最优特征选择办法
ID3中应用了信息增益抉择特色,增益大优先选择。C4.5中,采纳信息增益比抉择特色,缩小因特征值多导致信息增益大的问题。CART分类树算法应用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,不纯度越低,特色越好。这和信息增益(比)相同。
假如K个类别,第k个类别的概率为pk,概率分布的基尼系数表达式:
如果是二分类问题,第一个样本输入概率为p,概率分布的基尼系数表达式为:
对于样本D,个数为|D|,假如K个类别,第k个类别的数量为|Ck|,则样本D的基尼系数表达式:
对于样本D,个数为|D|,依据特色A的某个值a,把D分成|D1|和|D2|,则在特色A的条件下,样本D的基尼系数表达式为:
比拟基尼系数和熵模型的表达式,二次运算比对数简略很多。尤其是二分类问题,更加简略。
和熵模型的度量形式比,基尼系数对应的误差有多大呢?对于二类分类,基尼系数和熵之半的曲线如下:
基尼系数和熵之半的曲线十分靠近,因而,基尼系数能够做为熵模型的一个近似代替。
CART分类树算法每次仅对某个特色的值进行二分,而不是多分,这样CART分类树算法建设起来的是二叉树,而不是多叉树。
CART分类树算法具体流程
CART分类树建设算法流程,之所以加上建设,是因为CART分类树算法有剪枝算法流程。
算法输出训练集D,基尼系数的阈值,样本个数阈值。
输入的是决策树T。
算法从根节点开始,用训练集递归建设CART分类树。
(1)对于以后节点的数据集为D,如果样本个数小于阈值或没有特色,则返回决策子树,以后节点进行递归。
(2)计算样本集D的基尼系数,如果基尼系数小于阈值,则返回决策树子树,以后节点进行递归。
(3)计算以后节点现有的各个特色的各个特征值对数据集D的基尼系数,对于离散值和间断值的解决办法和基尼系数的计算见第二节。缺失值的解决办法和C4.5算法里形容的雷同。
(4)在计算出来的各个特色的各个特征值对数据集D的基尼系数中,抉择基尼系数最小的特色A和对应的特征值a。依据这个最优特色和最优特征值,把数据集划分成两局部D1和D2,同时建设以后节点的左右节点,做节点的数据集D为D1,右节点的数据集D为D2。
(5)对左右的子节点递归的调用1-4步,生成决策树。
对生成的决策树做预测的时候,如果测试集里的样本A落到了某个叶子节点,而节点里有多个训练样本。则对于A的类别预测采纳的是这个叶子节点里概率最大的类别。
CART算法毛病:
(1) 无论ID3,C4.5,CART都是抉择一个最优的特色做分类决策,但大多数,分类决策不是由某一个特色决定,而是一组特色。这样失去的决策树更加精确,这种决策树叫多变量决策树(multi-variate decision tree)。在抉择最优特色的时,多变量决策树不是抉择某一个最优特色,而是抉择一个最优的特色线性组合做决策。代表算法OC1。
(2) 样本一点点改变,树结构激烈扭转。这个通过集成学习外面的随机森林之类的办法解决。
Weka操作
运行后果如下:
模型正确率为84.3148%,识别率=召回率=0.843,F-Measure=0.835。
以借款金额每人1000,中介免费率为0.3计算ROI,后果为294100。
将useprune改为False,即不剪枝,运行后果如下:
模型正确率为83.2124%,识别率=召回率=0.832,F-Measure=0.826。
以借款金额每人1000,中介免费率为0.3计算ROI,后果为327900。
比照剪枝后果,发现各项指标剪枝优于不剪枝,而不剪枝的ROI大于剪枝的模型。
调整矩阵:
输入后果中,混同矩阵雷同。
为了获得最优ROI,应用最小化代价函数CostsensitiveClassifier,并将参数minimize expected cost设置为True,cost sensitive设置为只有左下角为1。simpleCART抉择不剪枝。
输入后果如下:
模型正确率和召回率重大降落,ROI升高为209100。
因而simpleCART算法中,ROI最大为327900。
Naivebayes 奢侈贝叶斯
奢侈贝叶斯算法
奢侈贝叶斯算法(Naive Bayesian algorithm) 是利用最为宽泛的分类算法之一。
奢侈贝叶斯办法是在贝叶斯算法的根底上进行了相应的简化,即假设给定目标值时属性之间互相条件独立。也就是说没有哪个属性变量对于决策后果来说占有着较大的比重,也没有哪个属性变量对于决策后果占有着较小的比重。尽管这个简化形式在肯定水平上升高了贝叶斯分类算法的分类成果,然而在理论的利用场景中,极大地简化了贝叶斯办法的复杂性。
优缺点:
长处
奢侈贝叶斯算法假如了数据集属性之间是互相独立的,因而算法的逻辑性非常简略,并且算法较为稳固,当数据出现不同的特点时,奢侈贝叶斯的分类性能不会有太大的差别。换句话说就是奢侈贝叶斯算法的健壮性比拟好,对于不同类型的数据集不会呈现出太大的差异性。当数据集属性之间的关系绝对比拟独立时,奢侈贝叶斯分类算法会有较好的成果。
毛病
属性独立性的条件同时也是奢侈贝叶斯分类器的不足之处。数据集属性的独立性在很多状况下是很难满足的,因为数据集的属性之间往往都存在着互相关联,如果在分类过程中呈现这种问题,会导致分类的成果大大降低。
Weka操作过程
关上预处理后的训练集,在classifier模块中抉择CVParameterSelection,并抉择simpleCART决策分类树算法,寻找最佳参数。
模型的正确率仅52.6863%,识别率=召回率=0.527,F-Measure=0.467,模型各项指标很差,而且模型不稳固。
以借款金额每人1000,中介免费率为0.3计算ROI,后果为317400。
输入后果如下:
模型正确率和召回率重大降落,ROI升高为0。
因而naivebayes算法中,ROI最大为317400。
而观测各项指标后果,以及bayes适用范围能够判断,该数据集不适宜应用bayes算法。
ID3
weka操作
雷同步骤,target名义变量设置,cost sensitive 设置,将假阳性谬误的代价敏感度进步,抉择ID3算法,后果如下,Recall 为75.2%,ROI 为1550000。
J48算法
J48流程
(1)应用通过预处理的数据集,应用 CVParameterSelection 中的classifier中的Tree-J48并调整和寻找最佳参数,在test option中抉择 Supplied test set 并上传预处理实现的测试集:
在通过解决后的测试集上进行测试,在more options中抉择cost sensitive,并将左下至右上对角线上数值均设为1。
模型正确率为78.2026%,召回率为0.782。此时以借款金额每人1000,中介免费率为0.3计算ROI,后果为-621800。
为了获得最优ROI,应用最小化代价函数CostsensitiveClassifier,并将参数minimize expected cost设置为True,cost sensitive设置为只有左下角为1。
模型正确率和召回率稍微降落, ROI升高为-628800.
因而J48算法中,当应用目前的参数时ROI最大为-621800。
Simple logistic
Simple logistic 流程
应用通过预处理的数据集,应用 CVParameterSelection 中的classifier中的Functions-SimpleLogistic并调整参数,在test option中抉择 Supplied test set 并上传预处理实现的测试集:
正确率为61.1917%,召回率为0.612。此时以借款金额每人1000,中介免费率为0.3计算ROI,后果为-1223700。
为了获得最优ROI,应用最小化代价函数CostsensitiveClassifier,并将参数minimize expected cost设置为True,cost sensitive设置为只有左下角为1。
模型正确率和召回率并无稳定。因而Simple Logistic算法中,当应用目前的参数时ROI最大为-1223700。
我的项目后果
具体后果曾经在各个模型后展现,随机森林和反对向量机算法预测利用成果良好。
评估成果不能只看销量,要综合思考,须要参考业务对接,预测精度,模型可解释性,预测后果仅作为参考一个权重值,还须要专家意见,依照肯定的权重来计算。
对于作者
在此对Nuo Liu对本文所作的奉献示意诚挚感激,她毕业于复旦大学,特长深度学习、聚类、分类、回归、社交网络、关联剖析。