Scala实现风险评估

Posted Nathon的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala实现风险评估相关的知识,希望对你有一定的参考价值。

现在出去贷款啥的,尤其是高额贷款,银行等机构都会对申请者先做一个风险评估,目的是为了搞清楚申请者是否为"安全的",对他们的风险会有多大。这个时候就需要构建一个模型或者分类器来预测申请者的信息。作为人这一个体来讲,有相关的特征(工作,收入,背景等),通过Spark MLib构建风险评估模型,采用逻辑回归算法将用户分为不同的风险等级,比如,结果可以定义为:高风险,低风险。

这里可以通过采集一些样本数据,构建模型进行预测。一般来讲,具体的流程包含以下几个方面:

1.学习阶段,这个阶段主要是对模型的训练,生成我们需要的预测模型:

首先,选定样本数据,将该数据集划分为训练样本与测试样本两部分(比如我采用3:2的比例分配),训练样本与测试样本不能有重叠部分,否则会严重干扰性能评估。

其次,提取样本数据特征,在训练样本上执行选定的算法,生成分类器。

然后,在测试数据上执行分类器,生成测试报告。

最后,根据测试报告,将分类结果类别与真实类别相比较,计算相应的评估标准,评估分类器性能。如果性能不佳,则需要进行性能优化,调整相关参数,重新执行形成新的分类器。

2.分类阶段:

这个阶段就是搜集新样本,并对新样本进行特征提取。使用在学习阶段生成的分类器,对样本数据进行分类,这也是对前面学习阶段生成的模型进行检测。最后,得到我们需要判断新样本的所属类别。

我的基础环境是IntelliJ IDEA+CentOS6.5+Scala2.10.4+Hadoop2.6.0+Spark1.6.0.

在idea中建立相应的Object:

将代码打成jar包上传到集群中去,可以看到当前的模型准确率为71%左右,比重前5的特征为:5,13,12,11和6号,因此,该模型下是提取这几项特征作为预测申请者的风险性。最后看看样本数据:

5号代表的是教育,

11号代表的是性别,

12号代表的资产收益

13号代表的资产支出。







以上是关于Scala实现风险评估的主要内容,如果未能解决你的问题,请参考以下文章

评估Scala

Scala 流及其内存使用情况

Scala 机器学习库

Scala如何使用akka actor有效地处理超时操作

根据 Hive 中的前几行计算风险评分

在 IntelliJ 中评估返回值的表达式