处理缺失数据在信用计分卡工作流中使用MATLAB®fillmissing
这个例子显示了一个工作流收集缺失的数据,手动把训练数据,开发一个新的creditscorecard
和治疗新数据之前使用MATLAB®得分fillmissing
。
这种方法的优点是,您可以使用所有可用的选项fillmissing
来填补缺失的数据,以及其他如MATLAB功能standardizeMissing
和功能治疗离群值。在这种方法中,请注意,您必须确保训练数据的处理和治疗任何新的数据集需要得分必须相同。
或者,在您创建一个creditscorecard
对象,您可以使用fillmissing
函数creditscorecard
对象来填补缺失值。附加信息的替代方法来“治疗”缺失的数据,看看信用计分卡建模用缺失值。
的dataMissing
表中CreditCardData.mat
文件有两个与失踪的价值观——预测CustAge
和ResStatus
。
负载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);
本的预测信息和本情节缺失的数据显示<失踪>
本在最后。两个预测因子缺失的值在这个数据集CustAge
和ResStatus
。
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”)
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”)
失踪的本可以离开,尽管一个常用的替代方法是把缺失的值。注意,处理缺失值必须慎之又慎,因为它改变了数据,可以引入偏见。
处理缺失值,您可以应用不同的标准。这个例子是一个简单的方法来取代缺失的观测数据中最常见和典型值分布,的价值模式
的数据。对于这个示例,模式
恰好有一个类似的悲哀与原始值<失踪>
垃圾箱。相似的值是有利的,因为类似的灾难值意味着相似点计分卡。
为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”
选择“失踪”
论点。这个选项指定的最小数量的分计分卡丢失的数据。在这个例子中,可能点的最小数量CustIncome
是29.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