关于数据挖掘:数据分享WEKA信贷违约预测报告用决策树随机森林支持向量机SVM朴素贝叶斯逻辑回归附代码数据

29次阅读

共计 8850 个字符,预计需要花费 23 分钟才能阅读完成。

残缺报告链接:http://tecdat.cn/?p=28579

作者:Nuo Liu

最近咱们被客户要求撰写对于 WEKA 的钻研报告,包含一些图形和统计输入。

数据变得越来越重要,其外围利用“预测”也成为互联网行业以及产业改革的重要力量。近年来网络 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 对本文所作的奉献示意诚挚感激,她特长深度学习、聚类、分类、回归、社交网络、关联剖析。


数据获取

在公众号后盾回复“信贷数 ”,可收费获取残缺数据。

 

点击文末 “浏览原文”

获取全文残缺文档、数据资料。

本文选自《数据分享 |WEKA 用决策树、随机森林、反对向量机 SVM、奢侈贝叶斯、逻辑回归信贷守约预测报告》。

本文中的 数据和残缺报告 WORD 文档 分享到 会员群,扫描上面二维码即可加群!

点击题目查阅往期内容

数据分享 |Python 信贷风控模型:Adaboost,XGBoost,SGD, SVC, 随机森林, KNN 预测信贷守约领取
Python 进行多输入(多因变量)回归:集成学习梯度晋升决策树 GRADIENT BOOSTING,GBR 回归训练和预测可视化
Python 对商店数据进行 lstm 和 xgboost 销售量工夫序列建模预测剖析
PYTHON 集成机器学习:用 ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜寻超参数优化
R 语言集成模型:晋升树 boosting、随机森林、束缚最小二乘法加权均匀模型交融剖析工夫序列数据
Python 对商店数据进行 lstm 和 xgboost 销售量工夫序列建模预测剖析
R 语言用主成分 PCA、逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化
R 语言基于树的办法:决策树,随机森林,Bagging,加强树
R 语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
spss modeler 用决策树神经网络预测 ST 的股票
R 语言中应用线性模型、回归决策树主动组合特色因子程度
R 语言中自编基尼系数的 CART 回归决策树的实现
R 语言用 rle,svm 和 rpart 决策树进行工夫序列预测
python 在 Scikit-learn 中用决策树和随机森林预测 NBA 获胜者
python 中应用 scikit-learn 和 pandas 决策树进行 iris 鸢尾花数据分类建模和穿插验证
R 语言里的非线性模型:多项式回归、部分样条、平滑样条、狭义相加模型 GAM 剖析
R 语言用规范最小二乘 OLS,狭义相加模型 GAM,样条函数进行逻辑回归 LOGISTIC 分类
R 语言 ISLR 工资数据进行多项式回归和样条回归剖析
R 语言中的多项式回归、部分回归、核平滑和平滑样条回归模型
R 语言用泊松 Poisson 回归、GAM 样条曲线模型预测骑自行车者的数量
R 语言分位数回归、GAM 样条曲线、指数平滑和 SARIMA 对电力负荷工夫序列预测 R 语言样条曲线、决策树、Adaboost、梯度晋升 (GBM) 算法进行回归、分类和动静可视化
如何用 R 语言在机器学习中建设集成模型?
R 语言 ARMA-EGARCH 模型、集成预测算法对 SPX 理论稳定率进行预测在 python 深度学习 Keras 中计算神经网络集成模型 R 语言 ARIMA 集成模型预测工夫序列剖析 R 语言基于 Bagging 分类的逻辑回归 (Logistic Regression)、决策树、森林剖析心脏病患者
R 语言基于树的办法:决策树,随机森林,Bagging,加强树
R 语言基于 Bootstrap 的线性回归预测置信区间预计办法
R 语言应用 bootstrap 和增量法计算狭义线性模型(GLM)预测置信区间
R 语言样条曲线、决策树、Adaboost、梯度晋升(GBM) 算法进行回归、分类和动静可视化
Python 对商店数据进行 lstm 和 xgboost 销售量工夫序列建模预测剖析
R 语言随机森林 RandomForest、逻辑回归 Logisitc 预测心脏病数据和可视化剖析
R 语言用主成分 PCA、逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化
Matlab 建设 SVM,KNN 和奢侈贝叶斯模型分类绘制 ROC 曲线
matlab 应用分位数随机森林(QRF)回归树检测异样值

正文完
 0