缺少值的信用记分卡建模
这个例子展示了在处理时如何处理缺失值creditscorecard
对象。首先,该示例展示了如何使用creditscorecard
功能,以创建一个显式的bin的缺失数据与相应的点。然后,这个例子描述四种不同的“处理”缺失数据的方法以获得一个最终的信用记分卡,没有显式的箱子为缺失的值。
开发一个信用记分卡与显式的箱子的缺失值
当你创建creditscorecard
对象时,数据可以包含缺失的值。当使用creditscorecard
要创建creditscorecard
对象的名称-值对参数“BinMissingData”
设置为真正的
.在这种情况下,数值预测器的缺失数据(南
值)和类别预测符(<定义>
Values)被放入一个单独的有标签的bin中< >失踪
出现在箱子的最后。在训练数据中没有缺失值的预测器没有< >失踪
箱子如果没有指定“BinMissingData”
参数或“BinMissingData”
来假
,creditscorecard
函数在计算Good和Bad的频率时丢弃丢失的观测值,并且没有bininfo
也不plotbins
函数报告这样的观察结果。
的< >失踪
Bin在记分卡建模过程中始终保持不变。最后的记分卡显式地指示分配给缺失值的分数< >失踪
箱子这些点是由证据的权重(WOE)价值决定的< >失踪
Bin和logistic模型中的预测因子系数。对于没有显式的预测器< >失踪
Bin中,可以使用名称-值对参数将点分配给缺失的值“失踪”
在formatpoints
,如本例中所述,或通过使用四种不同的“处理”缺失数据的方法.
的dataMissing
表中的CreditCardData.mat
文件有两个缺少值的预测器-CustAge
而且ResStatus
,。
负载CreditCardData.mat头(dataMissing, 5)
CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate status ______ _______ ___________ ___________ _________ __________ _______ _______ _________ ________ ______ 1 53 62Unknown 50000 55 Yes 1055.9 0.22 0 2 61 22 Home Owner Employed 52000 25 Yes 1161.6 0.24 0 3 47 30 Tenant Employed 37000 61 No 877.23 0.29 0 4 NaN 75 Home Owner Employed 53000 20 Yes 157.37 0.08 05 68 56 Home Owner Employed 53000 14 Yes 561.84 0.11 0
创建一个creditscorecard
对象使用CreditCardData.mat
文件来加载dataMissing
表中缺少值。设置“BinMissingData”
参数真正的
.应用自动装箱。
sc =信用记分卡(数据丢失,“IDVar”,“CustID”,“BinMissingData”,真正的);Sc = autobinning(Sc);
包含缺失数据的预测器的bin信息和bin图都显示a< >失踪
宾在最后。
Bi = bininfo(sc,“CustAge”);disp (bi)
Bin Good Bad Odds WOE InfoValue _____________ _____________ ________ __________ {'[-Inf,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 {'[44,51)'} 59 25 2.36 0.15424 0.0016199 {'[44,51)'} 99 41 2.4146 0.17713 0.0035449 {'[51,58)'} 157 62 2.5323 0.22469 0.0088407 {''} 19 11 1.7273 -0.15787 0.00063885{'合计'}803 3972.0227 NaN 0.087112
plotbins (sc,“CustAge”)
Bi = bininfo(sc,“ResStatus”);disp (bi)
Bin Good Bad Odds WOE InfoValue ______________ _____________ _________ __________ {'Tenant'} 296 161 1.8385 -0.095463 0.0035249 {'Home Owner'} 352 171 2.0585 0.017549 0.00013382 {'Other'} 128 52 2.4615 0.19637 0.0055808 {''} 27 13 2.0769 0.026469 2.3248e-05 {'Totals'} 803 397 2.0227 NaN 0.0092627
plotbins (sc,“ResStatus”)
训练数据“CustAge”
而且“ResStatus”
预测器缺少数据(南
年代和<定义>
).分箱过程估计的WOE值-0.15787
而且0.026469
,分别为这些预测器中缺失的数据。
培训数据EmpStatus
而且CustIncome
没有显式的bin for< >失踪
值,因为这些预测器不缺值。
Bi = bininfo(sc,“EmpStatus”);disp (bi)
本好不好悲哀InfoValue几率 ____________ ____ ___ ______ ________ _________ {' 未知的}396 239 1.6569 -0.19947 0.021715{“雇佣”}407 158 2.5759 0.2418 0.026323{“总数”}803 397 0.048038 2.0227南
Bi = bininfo(sc,“CustIncome”);disp (bi)
Bin Good Bad Odds WOE InfoValue _________________ ______________ _________ __________ {'[-Inf,29000)'} 53 58 0.91379 -0.79457 0.06364 {'[29000,33000)'} 74 49 1.5102 -0.29217 0.0091366 {'[33000,35000)'} 68 36 1.8889 -0.06843 0.00041042 {'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359 {'[40000,42000)'} 68 34 2 -0.011271 1.0819e-05 {'[42000,47000)'} 164 66 2.4848 0.20579 0.0078175 {'[47000,Inf]'} 183 56 3.2679 0.47972 0.041657 NaN 0.12285
使用fitmodel
用WOE值拟合逻辑回归模型。fitmodel
内部转换所有预测变量为WOE值,使用在自动装箱过程中发现的箱子。默认情况下,fitmodel
然后采用逐步法拟合logistic回归模型。对于缺少数据的预测器,有一个显式的< >失踪
bin,并从数据中计算出相应的WOE值。当你使用fitmodel
,对应的WOE值为< >失踪
bin在函数执行WOE转换时应用。
[sc,mdl] = fitmodel(sc,“显示”,“关闭”);
方法,通过得分比赔率加倍(PDO)方法缩放记分卡分数“PointsOddsAndPDO”
的观点formatpoints
.假设你想要500分的概率是2(好概率是坏概率的两倍),并且概率每50分翻一番(所以550分的概率是4)。
显示计分卡,显示拟合模型中保留的预测因子的缩放点。
Sc = formatpoints(Sc,“PointsOddsAndPDO”,[500 2 50]);积分信息= displaypoints(sc)
PointsInfo =38×3表预测本点 _____________ ______________ ______ {' CustAge’}{[无穷,33)的54.062}{‘CustAge}{[33岁,37)的56.282}{‘CustAge}{[37、40)的60.012}{‘CustAge}{[40岁,46)的69.636}{‘CustAge}{[46岁,48)的77.912}{‘CustAge}{[48, 51)的78.86}{‘CustAge}{[51岁,58)的80.83}{‘CustAge}{[58岁的Inf]的}96.76{‘CustAge}{‘失踪> <}64.984{‘ResStatus}{“租户”}62.138{‘ResStatus}{‘业主’}73.248{‘ResStatus}{‘其他’}90.828{‘ResStatus}{“失踪> <”}74.125{'EmpStatus'} {'Unknown'} 58.807 {'EmpStatus'} {'Employed'} 86.937 {'EmpStatus'} {''} NaN `
注意这些点< >失踪
的箱子CustAge
而且ResStatus
显式显示(如64.9836
而且74.1250
分别)。的WOE值计算这些点< >失踪
Bin和logistic模型系数。
默认情况下,训练集中没有缺失数据的预测器的点被设置为南
它们导致了南
当你奔跑分数
.这可以通过更新名称-值对参数来更改“失踪”
在formatpoints
指示如何处理缺失数据以进行评分。
记分卡已经准备好对新数据集进行评分。您还可以使用记分卡来计算违约概率或执行模型验证。详细信息请参见分数
,probdefault
,validatemodel
.为了进一步研究缺失数据的处理,从原始数据中取几行作为测试数据,并引入一些缺失数据。
tdata = dataMissing(11:14, mll . predictornames);只保留模型中保留的预测因子设置一些缺失的值tdata.CustAge(1) = NaN;tdata.ResStatus (2) =' <定义> ';tdata.EmpStatus (3) =' <定义> ';tdata.CustIncome(4) = NaN;disp (tdata)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ ___________ ___________ __________ _______ _______ _________ NaN Tenant Unknown 34000 44 Yes 119.8 48Unknown 44000 14 Yes 403.62 65 Home Owner 48000 6 No 111.88 44 Other Unknown NaN 35 No 436.41
对新数据进行评分,并查看缺失数据的分数是如何不同地分配的CustAge
而且ResStatus
和EmpStatus
而且CustIncome
.CustAge
而且ResStatus
有一个明确的< >失踪
Bin用于丢失数据。然而,对于EmpStatus
而且CustIncome
,分数
函数将点设置为南
.
[Scores,Points] = score(sc,tdata);disp(分数)
481.2231 520.8353 NaN NaN
disp(分)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 64.984 62.138 58.807 67.893 61.858 75.622 89.922 78.86 74.125 58.807 82.439 61.061 75.622 89.922 96.76 73.248 NaN 96.969 51.132 50.914 89.922 69.636 90.828 58.807 NaN 61.858 50.914 89.922
使用名称-值对参数“失踪”
在formatpoints
选择如何将点分配给没有显式参数的预测器的缺失值< >失踪
箱子对于本例,使用“MinPoints”
选项。“失踪”
论点。为EmpStatus
而且CustIncome
时,记分卡上的最低分数为58.8072
而且29.3753
,分别。方法之一也可以处理缺失值四种不同的“处理”缺失数据的方法.
Sc = formatpoints(Sc,“失踪”,“MinPoints”);[Scores,Points] = score(sc,tdata);disp(分数)
481.2231 520.8353 517.7532 451.3405
disp(分)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 64.984 62.138 58.807 67.893 61.858 75.622 89.922 78.86 74.125 58.807 82.439 61.061 75.622 89.922 96.76 73.248 58.807 96.969 51.132 50.914 89.922 69.636 90.828 58.807 29.375 61.858 50.914 89.922
处理缺失数据的四种方法和开发新的信用记分卡
处理缺失数据有四种不同的方法。
方法1:使用fillmissing
的功能creditscorecard
对象
的creditscorecard
对象支持fillmissing
函数。在一个或一组预测器上调用函数时,fillmissing
函数用用户指定的统计数据填充缺失的数据。fillmissing
支持填充值“的意思是”
,“中值”
,“模式”
,“不变”
,以及切换回原始数据的选项。
使用的好处fillmissing
那是creditscorecard
对象跟踪填充值,并将其应用于验证数据。这种方法的局限性是只使用基本的统计数据来填充缺失的数据。
欲知更多有关方法1,请参阅fillmissing
.
方法2:使用MATLAB填充缺失数据®fillmissing
函数
MATLAB®支持fillmissing
属性之前可以使用的函数creditscorecard
对象来处理数字和类别数据中的缺失值。这种方法的优点是,您可以使用中所有可用的选项fillmissing
来填充缺失的数据,以及其他MATLAB功能,例如standardizeMissing
以及处理异常值的特性。但是,缺点是在评分之前,您需要对验证数据进行相同的转换fillmissing
函数在creditscorecard
对象。
欲知更多有关方法2,请参阅使用MATLAB®fillmissing处理信用记分卡工作流中的缺失数据.
方法3:使用k-nearest neighbors (KNN)算法来计算缺失数据
与方法1和方法2相比,这种KNN方法考虑了多个预测因子。就像方法2, KNN方法是在creditscoreacrd
因此,您需要对训练数据和验证数据进行归责。
欲知更多有关方法3,请参阅使用k-最近邻算法在信用记分卡工作流中输入缺失数据.
方法4:使用随机森林算法来计算缺失数据
这种随机森林方法类似于方法3并使用多个预测器来估算缺失的值。因为方法是在creditscorecard
在工作流中,您需要对训练数据和验证数据进行归责。
欲知更多有关方法4,请参阅利用随机森林算法在信用记分卡工作流程中输入缺失数据.
另请参阅
creditscorecard
|bininfo
|plotbins
|fillmissing