Modeler 支持向量机模型评估银行客户信用 本文要介绍的预测分析模型是“支持向量机模型”,我们将为大家简要介绍
支持向量机模型的理论,然后结合 IBM SPSS Modeler 产品详细讲述如何利用支
持向量机模型来解决客户的具体商业问题—银行如何评估客户信用
银行典型案例 商业银行个人信用评估就是根据个人信息和借贷记录等历史数据,判断个
人信用,它是保证信贷安全的重要一环。但是商业银行用于信用评估的数据往
往具有特性不稳定,历史样本容量较小,指标较多,呈明显的非正态分布。这
些特点导致很难利用一般的统计技术进行有效的评估。支持向量机模型 ( 简称
SVM) 能够很好的处理此类数据,进行有效的信用评估。本文介绍了 SVM 的基
本概念以及 Modeler 中使用 SVM 进行信用评估的基本步骤和方法,并对结果
进行分析和应用
支持向量机模型简介
支持向量机 (Support Vector Machine, 简称 SVM) 是一项功能强大的分
类和回归技术,可最大化模型的预测准确度。与其他常用模型不同,SVM 一
个优势就是能很好的处理小样本,高维数,非正态的数据。
SVM 的工作原理是将原始数据通过变换映射到高维特征空间,这样即使
数据不是线性可分,也可以对该数据点进行分类。之后,使用变换后的新数据
的进行预测分类。例如,图 1 中的数据点落到了两个不同的类别中,可以用一
条曲线分隔这两个类别。对数据使用某种数学函数变换后,可以用超平面定义
这两个类别之间的边界。
图 1. 数据变换后线性可分示意图
用于变换的数学函数称为核函数。IBM SPSS Modeler 中的 SVM 支持下
列核函数类型:
线性
多项式
径向基函数 (RBF)
Sigmoid
如果数据的线性分隔比较简单,则建议使用线性核函数。在其他情况下,
应当使用其他核函数。在所有情况下,最好尝试使用不同的核函数,才能从中
找出最佳模型,因为每一个函数均使用不同的算法和参数。
回页首
使用 IBM SPSS Modeler 支持向量机模型评估客户信
用
IBM SPSS Modeler 中的 SVM 提供了可视化的操作方法,具有界面友
好,操作方便的特点。此节,介绍如何使用 IBM SPSS Modeler SVM 评估客
户信用。操作步骤分为:
创建基本流(Modeler Stream),建立模型; 测试模型,分析结果;
用不同的核函数建模,比较并选择合适的模型;
运用选定的模型来评估客户信用。
我们使用 UCI Machine Learning Repository 上公开的商业银行客户信用
记录作为数据集进行演示。该数据集由 1000 条个人信用记录组成,每条记录
均包含一组个人信息值,其中包括对客户信用的评估结果。1000 条记录保存
在 CreditData.csv 文件中,从 1000 条记录中抽出一部分用于演示用选定的
模型评估客户信用,将这部分数据保存到 CreditData4Estimate.csv 文件中。
创建基本流(Modeler Stream),建立模型 图 2. 基本流建模图
基本流如图 2 所示,创建步骤如下
1) 添加源数据—选择合适的数据
创建新流,命名为 SVM.str。从“源”选项卡中添加一个“可变文件”节点到
SVM.str,从“输出”选项卡中添加一个“表”节点到流,并将“表”节点连接到“可变
文件”节点。打开“可变文件”节点,导入客户信用数据 CreditData.csv。运行
“表”节点,显示源文件中数据,如图 3 所示。数据有 22 个字段,1000 条记
录。ID 字段为客户标志符。每个客户的信息包含在从 StatusChkAccount
到 Foreigner的字段中。Class字段表示信用评级,取值为良 ( 值 =1) 或者差
( 值 =2)。
图 3. 源数据图 2)
设置类型—选择用作预测的变量和目标变量
从“字段选项”选项卡中添加一个“类型”节点到 SVM.str, 并将它连接到“可变
文件”节点之后,打开“类型”节点,并单击 [ 读取值 ] 按钮。获得数据集描述,
如图 4 所示。
图 4. 源数据类型描述图 本模型,希望预测
Class的值 ( 此字段只有 2 个值,即良 (=1) 还是差
(=2))。在“类型”设置界面中,单击 Class字段的“测量”列,将其改为“标志”,
将 Class的角色设置为 “目标”;ID字段作为个人标识符,不会对建模和预测产
生影响,不会用作预测变量或模型的目标,将其角色设置为“无”; 其他字段作
为特征字段用作预测变量,因此将其角色设置为 “输入”。
3) 添加分区—选择建模的数据和测试模型的数据
为了建立模型 ( 即训练模型 ),同时测试模型,需要把数据集
CreditData.csv 分为两部分,一部分用于建立模型,另一部分用于测试新建模
型。分区节点通过在源数据表中添加一个字段,根据字段的不同取值,将数据
分区。“分区”节点最多可以将数据分为三部分,分别用于训练、测试和验证。
从“字段选项”选项卡中添加“分区”节点到流,将其连接到“类型”节点,打开
“分区”节点,使用默认设置。默认分为“训练”和“测试”两个分区,大小分别
50%。选择“设置随机种子数”表示分区是随机分区的。
图 5. 分区节点图 添加
“表”节点并连接到“分区”节点之后。运行“表”节点,如图 6 所示,“分
区”字段被加入到表中。
图 6. 添加分区字段的数据图
4) 添加“建模”节点—建模
从“建模”选项卡中添加“SVM”节点,并连接到“分区”节点之后。双击“SVM”
节点,设置属性。
“字段”选项卡默认选中“使用类型节点设置”。
在“模型”选项卡中,如图 7 左所示,选中“自定义”选项,在相邻的文本字
段中键入 class-rbf 作为“模型名称”;默认选中“使用分区数据”和“为每个分割构
建模型”,流中没有添加“分割”节点,这个选项没有实际作用,关于其功能这里
不介绍,有兴趣的读者可以参考帮助文档。
在专家选项卡中,如图 7 右所示,将“模式”设为“专家”以获得可靠性,“内
核类型”(即核函数)默认设为 RBF,其他选项使用默认值,这些选项是建模
参数,这里不介绍,有兴趣的读者可以参考帮助文档。在“简单”模式下所有选
项均为不可设置。
图 7. 模型设置图
在“分析”选项卡上,选中“计算变量重要性”复选框,其他两个选项“计算原
始的趋向得分”和“计算调整倾向得分”默认不选中,关于这两个选项功能,这里
不介绍,有兴趣的读者可以参考帮助文档。
“注解”选项卡不作额外设置。
单击运行。运行成功表示建模完成,创建模型块被添加到流中。至此,流
基本建立完毕,如上面图 2 所示。
测试模型,分析结果
双击建模生成的模型块 class-rbf。如图 8 所示,在“模型”选项卡上,预测
变量重要性图显示了不同变量对预测的影响程度,从上到下预测变量的重要程
度依次降低,其中 StatusChkAccount和 SavingAccounts的对预测的影响度最大。“设置”选项卡指定在查看结果时显示的附加字段。“汇总”选项卡显示了分析
( 包含记录数,分析准确性 )、字段、构建设置、训练汇总等信息。这两个选
项卡的详细功能,本文不介绍,请参考帮助文档。 图 8. 模型图
模型块 class-rbf 之后添加“表”节点,运行表节点,使用创建的 class-rbf
模型对源数据中数据进行测试,获得图 9 所示结果。
图 9. 训练评估结果图 图 9 的结果中,class-rbf 模型创建了两个新字段。向右滚动表输出可看
到这两个字段:
表 1.带表头、所有列左对齐的样式
新字段名 描述
$S-Class 由模型预测的 Class 值。
$SP-Class 此预测值的倾向得分(即此预测值正确的可能性,其值介于 0.0 到 1.0 之间)。表示预测值的准确程度,值越高,越说明预测值准确性越高
查看上表,看到大多数记录的倾向得分($SP-Class 列)都相当高,即预
测的准确度相当高。但是也存在一些明显的例外情况 , 例如图 9 位于第 98
和 99 行的记录,其倾向得分为 0.539 和 0.535。比较这两行的 Class 和
$S-Class,可以看到此模型对这两行记录做出了不正确的预测。因此,在实际
使用模型预测时,选择相信倾向得分大于预设值的预测结果。
为了统计表中的预测信息,添加“分析”节点并连接到 class-rbf 模型块,运
行“分析”节点,获得预测汇总结果 , 如图 10 左所示。根据汇总结果,class-
rbf 模型对于“1_ 训练”分区,预测正确率是 99.59%;对于“2_ 测试”分区,预
测正确率是 71.93%。
如果选择相信倾向得分大于 0.95 的预测结果,那么预测正确率更高。添
加“选择”节点,将其连接至 class-rbf 模型块之后,再将“分析”节点连接至“选择”节点之后 ( 在警告对话框上选择替换 ),在“选择”节点中设置只包含 $SP-
Class>=0.95 的记录。再运行“分析”节点,得到图 10 右所示结果。可以看到
class-rbf 模型对于“2_ 测试”部分的预测正确率达到 81.39% 图 10. 模型测试结果图
使用不同的核函数,选择最合适模型
为了比较不同的核函数创建的模型,添加第二个“SVM”建模节点并连接到
“分区”节点之后,打开新“SVM”节点,在“模型”选项卡上选择“自定义”并将
class-poly 作为模型名称;在“专家”选项卡上,将模式设置为专家;将内核类
型设置为多项式并单击运行,class-poly 模型块被成功创建。将 class-poly 模
型块连接到 class-rbf 模型块之后(在警告对话框上选择替换),将 class-
poly 模型连接到“分析”节点 ( 在警告对话框上选择替换 ), 在 class-poly 模型
块之后添“表”节点。最终建立的流如图 11 所示。我们还可以看到 class-rbf 模
型块和 class-poly 模型块被添加到屏幕右上角的“模型”选项板。
图 11. 多核函数建模图