分类树的一个常见用途是预测抵押贷款申请人是否会拖欠贷款。数据包含对 5,960 名抵押贷款申请人的观察结果(查看文末了解数据获取方式)。一个名为的变量 Bad
表示申请人在获得贷款批准后是还清贷款还是拖欠贷款。
此示例构建一个树模型,该模型用于对数据进行评分,并可用于对有关新申请人的数据进行评分。
数据变量
表 :数据表中的变量
变量 | 类型 | 等级 | 描述 |
Bad |
因变量 | 二进制 | 1 = 申请人拖欠贷款或严重拖欠贷款 |
0 = 申请人还清贷款 | |||
CLAge |
预测变量 | 区间 | 最长信用额度的月龄 |
CLNo |
预测变量 | 区间 | 信用额度数量 |
DebtInc |
预测变量 | 区间 | 债务收入比 |
Delinq |
预测变量 | 区间 | 拖欠信用额度的数量 |
Derog |
预测变量 | 区间 | 重大贬损报道数量 |
Job |
预测变量 | 标称 | 职业类别 |
Loan |
预测变量 | 区间 | 申请贷款金额 |
MortDue |
预测变量 | 区间 | 抵押贷款到期金额 |
nInq |
预测变量 | 区间 | 近期信用查询次数 |
Reason |
预测变量 | 二进制 | DebtCon = 债务合并 |
HomeImp = 家庭改善 |
|||
Value |
预测变量 | 区间 | 财产价值 |
YoJ |
预测变量 | 区间 | 目前工作年限 |
加载数据
树模型的因变量是 Bad
,一个有两个值的分类变量(0 代表贷款支付,1 代表违约)。其他变量是模型的预测变量。以下语句将数据加载到会话中并显示数据表的前 10 个观察值。
/* 将变量名称转换为混合大小写 */ data my.hm; length Bd oan Motue Value 8 Reason Job $7
显示 的前 10 个观测值。
输出数据的部分列表
创建分类决策树
以下语句创建分类树:
proc maxdepth=5; model Bad = Dei o JbIq as LAeL DtInLa Mrue ae J; prune costcomplexity;
这 MAXDEPTH= 选项指定要生长的树的最大深度为 5。
Bad
在等号左侧 指定 MODEL 语句表明它是因变量。
因为没有包含 GROW 语句,所以 PROC TREEPLIT 默认使用熵度量,它计算增长树的增益。这 PRUNE 语句要求进行成本复杂性修剪。
这 PARTITION 声明要求将观察结果 Hmeq
划分为不相交的子集以进行模型训练和验证。随机选择观测值作为验证子集,概率为 0.3;为训练子集选择剩余的观察值。
FILE= 选项 CODE 语句请求将 SAS DATA 步得分代码保存到名为 trc.sas
.
树形图
最终树的概览图
如绘图图例中的颜色所示,为终端节点中的观察分配了 Bad
=0 或 =1 的预测。叶节点中的第一个条形显示与训练分区中=0 或 =1Bad
的预测相匹配的因变量的比例, 叶节点中的第二个条形显示与验证分区中匹配的因变量的比例。线的粗细表示哪些节点具有更多的总观测值。
树形图在是树顶部的详细视图。
详细树形图
默认情况下,此视图提供有关树的前三个级别的详细拆分信息,包括根级别。每个节点上方的拆分规则显示拆分变量和拆分值;该规则确定来自父节点的哪些观察值包含在节点中。节点内表的第一行提供节点标识符。第二行提供训练观察的数量,后跟反斜杠,然后是验证观察的数量。如果在该点发生分类,第三行显示该节点中观察的预测因变量,以及训练观察与观察到的因变量的比例。这通过反斜杠与验证观察的比例分开。
显示最终树的拟合统计量
输出 :树性能
树分裂程序
显示修剪图
修剪图
此图显示修剪树时训练和验证数据的错误分类率。垂直线显示选定的最终树,它对验证数据具有最低的误分类率。
创建评分代码并对新数据进行预测评分
除了查看有关树模型的信息之外,您可能有兴趣应用该模型来预测因变量未知的其他数据表中的因变量。您可以运行 SAS DATA 步代码对新数据进行评分。以下是示例:
data scd; set smo.hq; %include 'tc.sas'; run;
显示 的部分列表 。
输出 :评分 数据的部分列表
数据表包含由分数代码创建的 13 个原始变量和 4 个新变量。变量 PA1
是这片叶子中训练观察的比例 BAD
=1;这个变量可以解释为违约概率。该变量 IAD
表示观测值的 BAD 预测值。
您可以使用前面的语句对新数据进行评分,方法是在 SET 语句中包含新数据表 。新数据表必须包含与用于构建树模型的数据相同的变量,但不能包含您现在要预测的未知因变量。