主要内容

处理缺失数据在信用计分卡工作流中使用MATLAB®fillmissing

这个例子显示了一个工作流收集缺失的数据,手动把训练数据,开发一个新的creditscorecard和治疗新数据之前使用MATLAB®得分fillmissing

这种方法的优点是,您可以使用所有可用的选项fillmissing来填补缺失的数据,以及其他如MATLAB功能standardizeMissing和功能治疗离群值。在这种方法中,请注意,您必须确保训练数据的处理和治疗任何新的数据集需要得分必须相同。

或者,在您创建一个creditscorecard对象,您可以使用fillmissing函数creditscorecard对象来填补缺失值。附加信息的替代方法来“治疗”缺失的数据,看看信用计分卡建模用缺失值

dataMissing表中CreditCardData.mat文件有两个与失踪的价值观——预测CustAgeResStatus

负载CreditCardData.mat头(dataMissing)
ans =8×11表CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate ____ ____地位………………_____ _____ _____ ________ ________ 53 62 <定义>未知50000 55是的1055.9 - 0.22 0 2 61 22业主雇佣52000 25是的1161.6 - 0.24 0 3 47 30租户使用37000 61没有877.23 - 0.29 0 4南75业主雇佣了53000 20是的157.37 - 0.08 0 5 68 56家老板雇用了53000名14是的561.84 - 0.11 0 6 65 13业主雇用了48000名59岁是的968.18 - 0.15 0 7 34 32房主未知32000 26是的717.82 0.02 1 8 50 57其他雇佣了51000 33没有3041.2 - 0.13 0

首先,分析使用未经处理的训练数据丢失的数据信息。

创建一个creditscorecard对象使用CreditCardData.mat文件加载dataMissing含有缺失值。设置“BinMissingData”理由creditscorecard真正的明确报告信息缺失值。然后应用自动装箱autobinning

sc = creditscorecard (dataMissing,“IDVar”,“CustID”,“BinMissingData”,真正的);sc = autobinning (sc);

本的预测信息和本情节缺失的数据显示<失踪>本在最后。两个预测因子缺失的值在这个数据集CustAgeResStatus

bi = bininfo (sc,“CustAge”);disp (bi)
本好与坏的几率,悲哀InfoValue _________________出生______月______ __________{[无穷,33)}69年52 1.3269 -0.42156 0.018993{[33岁,37)}63年45 1.4 -0.36795 0.012839{[37、40)}72年47 1.5319 -0.2779 0.0079824{'[40岁,46)}172 89 1.9326 -0.04556 0.0004549{'[46岁,48)}59 25 2.36 0.15424 0.0016199{[48,51)}99年41 2.4146 0.17713 0.0035449{'[51岁,58)}157 62 2.5323 0.22469 0.0088407{的[58岁的Inf]} 93年25 3.72 0.60931 0.032198{' <失踪>}19 11 1.7273 -0.15787 0.00063885{“总数”}803 397 0.087112 2.0227南
plotbins (sc,“CustAge”)

图包含一个坐标轴对象。坐标轴对象与标题CustAge包含3对象类型的酒吧,线。这些对象是好的,坏的。

bi = bininfo (sc,“ResStatus”);disp (bi)
本好与坏的几率,悲哀出生______ _____ __________ InfoValue * * *{“租户”}296 161 1.8385 -0.095463 0.0035249{‘业主’}352 171 2.0585 0.017549 0.00013382{‘其他’}128年52 2.4615 0.19637 0.0055808{' <失踪>}27 13 2.0769 0.026469 2.3248 e-05{“总数”}803 397 0.0092627 2.0227南
plotbins (sc,“ResStatus”)

图包含一个坐标轴对象。坐标轴对象与标题ResStatus包含3对象类型的酒吧,线。这些对象是好的,坏的。

失踪的本可以离开,尽管一个常用的替代方法是把缺失的值。注意,处理缺失值必须慎之又慎,因为它改变了数据,可以引入偏见。

处理缺失值,您可以应用不同的标准。这个例子是一个简单的方法来取代缺失的观测数据中最常见和典型值分布,的价值模式的数据。对于这个示例,模式恰好有一个类似的悲哀与原始值<失踪>垃圾箱。相似的值是有利的,因为类似的灾难值意味着相似点计分卡。

CustAge,本4本观察和最多的模式原始数据的价值43

modeCustAge =模式(dataMissing.CustAge);disp (modeCustAge)
43

悲哀的价值<失踪>本类似于悲哀本的价值4。因此,取代缺失的值CustAge的值模式是合理的。

治疗的数据,创建一个数据和填补缺失值的副本。

dataTreated = dataMissing;dataTreated。CustAge= fillmissing(dataTreated.CustAge,“不变”,modeCustAge);

ResStatus的价值,“业主”的价值吗模式的数据,和悲哀的价值<失踪>本是最接近的“业主”垃圾箱。

modeResStatus =模式(dataMissing.ResStatus);disp (modeResStatus)
房主

使用MATLAB®fillmissing取代缺失的数据“业主”

dataTreated。ResStatus= fillmissing(dataTreated.ResStatus,“不变”字符串(modeResStatus));

现在的治疗数据集没有缺失值。

disp(任何(任何(ismissing (dataTreated))))
0

使用数据集,治疗应用的典型creditscorecard工作流。首先,创建一个creditscorecard对象与处理数据,然后应用自动装箱。

scTreated = creditscorecard (dataTreated,“IDVar”,“CustID”);scTreated = autobinning (scTreated);

本信息的未经处理的数据进行比较CustAge本信息的数据处理CustAge

bi = bininfo (sc,“CustAge”);disp (bi)
本好与坏的几率,悲哀InfoValue _________________出生______月______ __________{[无穷,33)}69年52 1.3269 -0.42156 0.018993{[33岁,37)}63年45 1.4 -0.36795 0.012839{[37、40)}72年47 1.5319 -0.2779 0.0079824{'[40岁,46)}172 89 1.9326 -0.04556 0.0004549{'[46岁,48)}59 25 2.36 0.15424 0.0016199{[48,51)}99年41 2.4146 0.17713 0.0035449{'[51岁,58)}157 62 2.5323 0.22469 0.0088407{的[58岁的Inf]} 93年25 3.72 0.60931 0.032198{' <失踪>}19 11 1.7273 -0.15787 0.00063885{“总数”}803 397 0.087112 2.0227南
biTreated = bininfo (scTreated,“CustAge”);disp (biTreated)
本好与坏的几率,悲哀InfoValue _________________出生______月______ _____{[无穷,33)}69年52 1.3269 -0.42156 0.018993{[33岁,37)}63年45 1.4 -0.36795 0.012839{[37、40)}72年47 1.5319 -0.2779 0.0079824{'[40、45)}156 86 1.814 -0.10891 0.0024345{[45,48)}94年39 2.4103 0.17531 0.0033002{[48,58)的}256 103 2.4854 0.20603 0.01223{的[58岁的Inf]} 93年25 3.72 0.60931 0.032198{“总数”}803 397 0.089977 2.0227南

最初的几箱都是一样的,但缺失值的处理影响装箱结果,从本缺失的数据放置的位置。你可以进一步探索装箱结果使用autobinning用不同的算法或您可以手动修改箱使用modifybins

ResStatus处理数据,结果类似于最初的结果,除了较高的计数“业主”本由于治疗。与多类别分类变量(或水平),自动算法可以找到类别组和结果可以显示更多的差异之前和之后的治疗。

bi = bininfo (sc,“ResStatus”);disp (bi)
本好与坏的几率,悲哀出生______ _____ __________ InfoValue * * *{“租户”}296 161 1.8385 -0.095463 0.0035249{‘业主’}352 171 2.0585 0.017549 0.00013382{‘其他’}128年52 2.4615 0.19637 0.0055808{' <失踪>}27 13 2.0769 0.026469 2.3248 e-05{“总数”}803 397 0.0092627 2.0227南
biTreated = bininfo (scTreated,“ResStatus”);disp (biTreated)
本好与坏的几率,悲哀出生______ _____ __________ InfoValue * * *{“租户”}296 161 1.8385 -0.095463 0.0035249{‘业主’}379 184 2.0598 0.018182 0.00015462{‘其他’}128年52 2.4615 0.19637 0.0055808{“总数”}803 397 0.0092603 2.0227南

合适的物流模式,规模点,并显示最后的记分卡。

[scTreated, mdl] = fitmodel (scTreated,“显示”,“关闭”);scTreated = formatpoints (scTreated,“PointsOddsAndPDO”,(500 2));ScPoints = displaypoints (scTreated);disp (ScPoints)
_____________________ ______预测本点* * * {‘CustAge}{[无穷,33)的53.507}{‘CustAge}{[33岁,37)的55.798}{‘CustAge}{[37、40)的59.646}{‘CustAge}{[40、45)的66.868}{‘CustAge}{[45, 48)的79.013}{‘CustAge}{[48, 58)的80.326}{‘CustAge}{的[58岁的Inf]} 97.559 {‘CustAge}{' <失踪>}南{‘ResStatus}{“租户”}62.161 {‘ResStatus}{‘业主’}73.305 {‘ResStatus}{‘其他’}90.777 {‘ResStatus}{' <失踪>}南{‘EmpStatus}{‘未知’}58.846 {‘EmpStatus}{“雇佣”}86.887 {‘EmpStatus}{' <失踪>}南{‘CustIncome}{[无穷,29000)的29.906}{‘CustIncome}{[29000、33000)的56.219}{‘CustIncome}{[33000、35000)的67.938}{‘CustIncome}{[35000、40000)的70.123}{‘CustIncome}{[40000、42000)的70.931}{‘CustIncome}{[42000、47000)的82.3}{‘CustIncome}{”(47000年,正)}96.647 {‘CustIncome}{' <失踪>}南{‘TmWBank}{[无穷,12)的51.05}{‘TmWBank}{[12、23)的61.018}{‘TmWBank}{[23日45)的61.818}{‘TmWBank}{[71)的92.921}{‘TmWBank}{”(71年,正)}133.14 {‘TmWBank}{' <失踪>}南{‘OtherCC}{‘不’}50.806 {‘OtherCC}{'是的'}75.642 {‘OtherCC}{' <失踪>}南{‘AMBalance}{[无穷,558.88)的89.788}{‘AMBalance}{[558.88, 1254.28)的63.088}{‘AMBalance}{[1254.28, 1597.44)的59.711}{‘AMBalance}{'[1597.44,正]}49.157 {‘AMBalance}{' <失踪>}NaN

新的计分卡不知道数据处理,因此它分配年代<失踪>垃圾箱。如果你需要取得一个新的数据集,它包含缺失的数据,默认情况下,分数函数设置点。进一步探索缺失数据的处理,用几行从原始数据作为测试数据,并介绍一些缺失的数据。

tdata = dataTreated(十一14,mdl.PredictorNames);%只保留预测模型中保留%设置一些缺失值tdata.CustAge(1) =南;tdata.ResStatus (2) =“<定义>”;tdata.EmpStatus (3) =“<定义>”;tdata.CustIncome(4) =南;disp (tdata)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance ___________……_____ ____ ____ ____南租户未知34000 44是的119.8 48 <定义>未知44000 14是的403.62 65房主<定义> 48000年6没有其它未知南35 111.88 44 436.41

新的数据,看看分设置,从而导致分数。

(分数,分)=分数(scTreated tdata);disp(分数)
南南南南
disp(分)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance ____ ____替_____ _____南62.161 58.846 67.938 61.818 75.642 89.788 80.326南58.846 82.3 61.018 75.642 96.647 51.05 50.806 89.788 66.868 89.788 97.559 73.305南南61.818 50.806 89.788 90.777 58.846

指定指向缺失的数据,一种可能性是使用名称-值对的论点“失踪”formatpoints选择如何分配点缺失值。

使用“MinPoints”选择“失踪”论点。这个选项指定的最小数量的分计分卡丢失的数据。在这个例子中,可能点的最小数量CustIncome29.906,所以表中最后一行29.906点失踪CustIncome价值。

scTreated = formatpoints (scTreated,“失踪”,“MinPoints”);(分数,分)=分数(scTreated tdata);disp(分数)
469.7003 510.0812 518.0013 448.8099
disp(分)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance ____ ____替_____ _____ 53.507 62.161 58.846 67.938 61.818 75.642 89.788 80.326 62.161 58.846 82.3 61.018 75.642 89.788 97.559 73.305 58.846 96.647 51.05 50.806 89.788 66.868 90.777 58.846 29.906 61.818 50.806 89.788

然而,对于预测治疗训练数据,如CustAge,的影响“失踪”论点是与训练数据的处理不一致。例如,对于CustAge,第一个观察得到53.507点缺失值,但如果新数据“,”和缺失值CustAge被替换为模式训练数据(年龄的43),这个观察下降(40,45)本和接收66.868点。

因此,在进球之前,数据集必须以同样的方式对待训练数据处理。的使用“失踪”参数仍然是重要的分配点对未经治疗的预测因素和预测得到治疗点的方式与模型开发的方式是一致的。

tdataTreated = tdata;tdataTreated。CustAge= fillmissing(tdataTreated.CustAge,“不变”,modeCustAge);tdataTreated。ResStatus= fillmissing(tdataTreated.ResStatus,“不变”字符串(modeResStatus));disp (tdataTreated)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance ____ ____ __________……_____ _____ 43租户未知34000 44是的119.8 48房主未知44000 14 65 - 403.62房主<定义> 48000年6没有其它未知南35 111.88 44 436.41
(分数,分)=分数(scTreated tdataTreated);disp(分数)
483.0606 521.2249 518.0013 448.8099
disp(分)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance ____ ____替_____ _____ 66.868 62.161 58.846 67.938 61.818 75.642 89.788 80.326 73.305 58.846 82.3 61.018 75.642 89.788 97.559 73.305 58.846 96.647 51.05 50.806 89.788 66.868 90.777 58.846 29.906 61.818 50.806 89.788