Замена отсутствующих значений для предикторов кредитных карт показателей
заменяет отсутствующие значения предиктора sc = fillmissing(sc,PredictorNames,Statistics)PredictorNames со значениями, определенными Statistics и возвращает обновленный объект кредитной карты показателей (sc). Стандартные отсутствующие данные определяются следующим образом:
NaN для числовых массивов
<undefined> для категориальных массивов
Примечание
Если вы бежите fillmissing после создания предиктора существующие точки отсечения и края бункера сохраняются, и «Хорошо» и «Плохо» подсчитываются из <missing> складские места добавляются к соответствующему складскому месту.
использует аргументы из предыдущего синтаксиса и значение для sc = fillmissing(___,ConstantValue)ConstantValue для замены отсутствующих значений.
creditscorecard ОбъектВ этом примере показано, как использовать fillmissing для замены отсутствующих значений в CustAge и ResStatus предикторы с пользовательскими значениями. Для получения дополнительной информации об альтернативных подходах к «обработке» отсутствующих данных см. Моделирование кредитной карты показателей с отсутствующими значениями.
Загрузка данных кредитной карты показателей и использование dataMissing для данных обучения.
load CreditCardData.mat
disp(head(dataMissing)); CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate status
______ _______ ___________ ___________ _________ __________ _______ _______ _________ ________ ______
1 53 62 <undefined> Unknown 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 0
5 68 56 Home Owner Employed 53000 14 Yes 561.84 0.11 0
6 65 13 Home Owner Employed 48000 59 Yes 968.18 0.15 0
7 34 32 Home Owner Unknown 32000 26 Yes 717.82 0.02 1
8 50 57 Other Employed 51000 33 No 3041.2 0.13 0
Создать creditscorecard объект с 'BinMissingData' установить в значение true.
sc = creditscorecard(dataMissing,'BinMissingData',true);
sc = autobinning(sc);Использовать bininfo и plotbins для отображения CustAge и ResStatus предикторы с отсутствующими данными.
bininfo(sc,'CustAge')ans=10×6 table
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
{'[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
{'<missing>'} 19 11 1.7273 -0.15787 0.00063885
{'Totals' } 803 397 2.0227 NaN 0.087112
plotbins(sc,'CustAge');
bininfo(sc,'ResStatus')ans=5×6 table
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
{'<missing>' } 27 13 2.0769 0.026469 2.3248e-05
{'Totals' } 803 397 2.0227 NaN 0.0092627
plotbins(sc,'ResStatus');
Использовать fillmissing заменять NaN значения в CustAge со средним значением и для замены <missing> значения в ResStatus с 'Tenant'. Использовать predictorinfo для проверки заполненных значений.
sc = fillmissing(sc,{'CustAge'},'median');
sc = fillmissing(sc,{'ResStatus'},'constant','Tenant');
predictorinfo(sc,'CustAge')ans=1×4 table
PredictorType LatestBinning LatestFillMissingType LatestFillMissingValue
_____________ ________________________ _____________________ ______________________
CustAge {'Numeric'} {'Automatic / Monotone'} {'Median'} {[45]}
predictorinfo(sc,'ResStatus')ans=1×5 table
PredictorType Ordinal LatestBinning LatestFillMissingType LatestFillMissingValue
_______________ _______ ________________________ _____________________ ______________________
ResStatus {'Categorical'} false {'Automatic / Monotone'} {'Constant'} {'Tenant'}
Использовать bininfo и plotbins для отображения CustAge и ResStatus предикторы для проверки того, что отсутствующие данные были заменены значениями, определенными fillmissing.
bininfo(sc,'CustAge')ans=9×6 table
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)' } 191 100 1.91 -0.057315 0.0008042
{'[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
{'Totals' } 803 397 2.0227 NaN 0.086822
plotbins(sc,'CustAge');
bininfo(sc,'ResStatus')ans=4×6 table
Bin Good Bad Odds WOE InfoValue
______________ ____ ___ ______ _________ __________
{'Tenant' } 323 174 1.8563 -0.085821 0.0030935
{'Home Owner'} 352 171 2.0585 0.017549 0.00013382
{'Other' } 128 52 2.4615 0.19637 0.0055808
{'Totals' } 803 397 2.0227 NaN 0.0088081
plotbins(sc,'ResStatus');
Использовать fitmodel а затем выполнить formatpoints, displaypoints, и score.
sc = fitmodel(sc,'Display','off'); sc = formatpoints(sc,'WorstAndBest',[300 800]); t = displaypoints(sc)
t=31×3 table
Predictors Bin Points
______________ _________________ ______
{'CustAge' } {'[-Inf,33)' } 72.565
{'CustAge' } {'[33,37)' } 76.588
{'CustAge' } {'[37,40)' } 83.346
{'CustAge' } {'[40,46)' } 99.902
{'CustAge' } {'[46,48)' } 115.78
{'CustAge' } {'[48,51)' } 117.5
{'CustAge' } {'[51,58)' } 121.07
{'CustAge' } {'[58,Inf]' } 149.93
{'CustAge' } {'<missing>' } 99.902
{'EmpStatus' } {'Unknown' } 79.64
{'EmpStatus' } {'Employed' } 133.98
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)' } 21.926
{'CustIncome'} {'[29000,33000)'} 73.949
{'CustIncome'} {'[33000,35000)'} 97.117
{'CustIncome'} {'[35000,40000)'} 101.44
⋮
Если в наборе данных проверки отсутствуют значения и используется fillmissing при использовании обучающего набора данных отсутствующим значениям в наборе данных проверки присваиваются те же точки, что и соответствующим ячейкам, содержащим заполненные значения.
Как показано в таблице, '<missing>' ячейка для CustAge предиктору присваиваются те же точки, что и '[40,46)' bin, поскольку отсутствующие данные заполнены медианным значением 45.
Точки, назначенные '<missing>' ячейка для EmpStatus предиктор: NaN потому что fillmissing не используется для этого предиктора. Назначенные точки определяются по умолчанию 'NoScore' для 'Missing' аргумент пары имя-значение в formatpoints.
Создание набора данных проверки теста (tdata) и добавьте отсутствующие значения.
tdata = data(1:10,:);
tdata.CustAge(1) = NaN;
tdata.ResStatus(2) = '<undefined>';
[scr,pts] = score(sc,tdata)scr = 10×1
566.7335
611.2547
584.5130
628.7876
609.7148
671.1048
403.6413
551.9461
575.9874
524.4789
pts=10×5 table
CustAge EmpStatus CustIncome TmWBank AMBalance
_______ _________ __________ _______ _________
99.902 79.64 153.88 145.38 87.933
149.93 133.98 153.88 85.531 87.933
115.78 133.98 101.44 145.38 87.933
117.5 133.98 153.88 83.991 139.44
149.93 133.98 153.88 83.991 87.933
149.93 133.98 153.88 145.38 87.933
76.588 79.64 73.949 85.531 87.933
117.5 133.98 153.88 85.531 61.06
117.5 79.64 153.88 85.531 139.44
117.5 79.64 153.88 85.531 87.933
В этом примере показаны различные возможности обработки отсутствующих данных в данных проверки.
При оценке данных из набора данных проверки имеется несколько опций. Если ничего не делать, точки, назначенные отсутствующим данным, будут NaN, которая происходит от значения по умолчанию 'NoScore' для 'Missing' аргумент пары имя-значение в formatpoints.
Если вы хотите оценить отсутствующие значения всех предикторов с одной согласованной метрикой, вы можете использовать опции 'ZeroWOE', 'MinPoints', или 'MaxPoints' для 'Missing' аргумент пары имя-значение в formatpoints.
load CreditCardData.mat sc = creditscorecard(data); predictorinfo(sc,'CustAge')
ans=1×4 table
PredictorType LatestBinning LatestFillMissingType LatestFillMissingValue
_____________ _________________ _____________________ ______________________
CustAge {'Numeric'} {'Original Data'} {'Original'} {0x0 double}
predictorinfo(sc,'ResStatus')ans=1×5 table
PredictorType Ordinal LatestBinning LatestFillMissingType LatestFillMissingValue
_______________ _______ _________________ _____________________ ______________________
ResStatus {'Categorical'} false {'Original Data'} {'Original'} {0x0 double}
sc = autobinning(sc); sc = fitmodel(sc,'display','off'); displaypoints(sc)
ans=37×3 table
Predictors Bin Points
______________ ________________ _________
{'CustAge' } {'[-Inf,33)' } -0.15894
{'CustAge' } {'[33,37)' } -0.14036
{'CustAge' } {'[37,40)' } -0.060323
{'CustAge' } {'[40,46)' } 0.046408
{'CustAge' } {'[46,48)' } 0.21445
{'CustAge' } {'[48,58)' } 0.23039
{'CustAge' } {'[58,Inf]' } 0.479
{'CustAge' } {'<missing>' } NaN
{'ResStatus' } {'Tenant' } -0.031252
{'ResStatus' } {'Home Owner' } 0.12696
{'ResStatus' } {'Other' } 0.37641
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } -0.076317
{'EmpStatus' } {'Employed' } 0.31449
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} -0.45716
⋮
sc = formatpoints(sc,'Missing','minpoints','WorstAndBestScores',[300 850]); displaypoints(sc)
ans=37×3 table
Predictors Bin Points
______________ ________________ ______
{'CustAge' } {'[-Inf,33)' } 46.396
{'CustAge' } {'[33,37)' } 48.727
{'CustAge' } {'[37,40)' } 58.772
{'CustAge' } {'[40,46)' } 72.167
{'CustAge' } {'[46,48)' } 93.256
{'CustAge' } {'[48,58)' } 95.256
{'CustAge' } {'[58,Inf]' } 126.46
{'CustAge' } {'<missing>' } 46.396
{'ResStatus' } {'Tenant' } 62.421
{'ResStatus' } {'Home Owner' } 82.276
{'ResStatus' } {'Other' } 113.58
{'ResStatus' } {'<missing>' } 62.421
{'EmpStatus' } {'Unknown' } 56.765
{'EmpStatus' } {'Employed' } 105.81
{'EmpStatus' } {'<missing>' } 56.765
{'CustIncome'} {'[-Inf,29000)'} 8.9706
⋮
Значение -32.5389 для <missing> bin of 'CustAge' происходит от 'minPoints' аргумент для formatpoints.
[scr,pts] = score(sc,dataMissing(1:5,:))
scr = 5×1
602.0394
648.1988
560.5569
613.5595
646.8109
pts=5×7 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
_______ _________ _________ __________ _______ _______ _________
95.256 62.421 56.765 121.18 116.05 86.224 64.15
126.46 82.276 105.81 121.18 62.107 86.224 64.15
93.256 62.421 105.81 76.585 116.05 42.287 64.15
46.396 82.276 105.81 121.18 60.719 86.224 110.96
126.46 82.276 105.81 121.18 60.719 86.224 64.15
В качестве альтернативы, вы можете оценить отсутствующие данные для каждого отдельного предиктора с помощью другой статистики на основе этой информации предиктора. Для этого используйте fillmissing для creditscorecard объект.
load CreditCardData.mat sc = creditscorecard(data); sc = fillmissing(sc,'CustAge','constant',35); predictorinfo(sc,'CustAge')
ans=1×4 table
PredictorType LatestBinning LatestFillMissingType LatestFillMissingValue
_____________ _________________ _____________________ ______________________
CustAge {'Numeric'} {'Original Data'} {'Constant'} {[35]}
sc = fillmissing(sc,'ResStatus','Mode'); predictorinfo(sc,'ResStatus')
ans=1×5 table
PredictorType Ordinal LatestBinning LatestFillMissingType LatestFillMissingValue
_______________ _______ _________________ _____________________ ______________________
ResStatus {'Categorical'} false {'Original Data'} {'Mode'} {'Home Owner'}
sc = autobinning(sc); sc = fitmodel(sc,'display','off'); sc = formatpoints(sc,'Missing','minpoints','WorstAndBestScores',[300 850]); displaypoints(sc)
ans=37×3 table
Predictors Bin Points
______________ ________________ ______
{'CustAge' } {'[-Inf,33)' } 46.396
{'CustAge' } {'[33,37)' } 48.727
{'CustAge' } {'[37,40)' } 58.772
{'CustAge' } {'[40,46)' } 72.167
{'CustAge' } {'[46,48)' } 93.256
{'CustAge' } {'[48,58)' } 95.256
{'CustAge' } {'[58,Inf]' } 126.46
{'CustAge' } {'<missing>' } 48.727
{'ResStatus' } {'Tenant' } 62.421
{'ResStatus' } {'Home Owner' } 82.276
{'ResStatus' } {'Other' } 113.58
{'ResStatus' } {'<missing>' } 82.276
{'EmpStatus' } {'Unknown' } 56.765
{'EmpStatus' } {'Employed' } 105.81
{'EmpStatus' } {'<missing>' } 56.765
{'CustIncome'} {'[-Inf,29000)'} 8.9706
⋮
Значение <missing> для 'CustAge' происходит от значения заполнения 35 несмотря на то, что данные обучения не имеют отсутствующих значений.
disp(dataMissing(1:5,:));
CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate status
______ _______ ___________ ___________ _________ __________ _______ _______ _________ ________ ______
1 53 62 <undefined> Unknown 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 0
5 68 56 Home Owner Employed 53000 14 Yes 561.84 0.11 0
[scr,pts] = score(sc,dataMissing(1:5,:))
scr = 5×1
621.8943
648.1988
560.5569
615.8904
646.8109
pts=5×7 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
_______ _________ _________ __________ _______ _______ _________
95.256 82.276 56.765 121.18 116.05 86.224 64.15
126.46 82.276 105.81 121.18 62.107 86.224 64.15
93.256 62.421 105.81 76.585 116.05 42.287 64.15
48.727 82.276 105.81 121.18 60.719 86.224 110.96
126.46 82.276 105.81 121.18 60.719 86.224 64.15
sc - Модель кредитной карты показателейcreditscorecard объектМодель кредитной карты показателей, указанная как creditscorecard объект.
PredictorNames - Наименование creditscorecard предиктор, отсутствующие данные которого заполненыНаименование creditscorecard предиктор для заполнения отсутствующих данных для, заданного как вектор скалярных символов, скалярная строка, массив ячеек векторов символов или строковый массив.
Типы данных: char | string | cell
Statistics - Статистика для заполнения недостающих данных для предикторов'mean', 'median', 'mode', 'original', или 'constant' | строка со значением "mean", "median", "mode", "original", или "constant"Статистика для заполнения отсутствующих данных для предикторов, заданная как символьный вектор или строка с одним из следующих значений.
'mean' - Заменить отсутствующие данные средним или средним значением. Параметр допустим только для числовых данных. 'mean' вычисляет средневзвешенное предиктора, ссылаясь на столбец предиктора и Weights из столбца creditscorecard объект. Дополнительные сведения см. в разделе Средневзвешенное значение.
'median' - Замените отсутствующие данные медианным значением. Допустимо для числовых и порядковых данных. 'median' вычисляет взвешенную медиану предиктора, ссылаясь на столбец предиктора и Weights из столбца creditscorecard объект. Дополнительные сведения см. в разделе Взвешенная медиана.
'mode' - Замените отсутствующие данные режимом. Допустимо для числовых и номинальных и порядковых категориальных данных. 'mode' вычисляет взвешенный mode предиктора путем обращения к столбцу предиктора и Weights из столбца creditscorecard объект. Дополнительные сведения см. в разделе Взвешенный режим.
'original' - Верните отсутствующие данные для числовых и категориальных предикторов в исходное значение: NaN если числовой, <undefined> или <missing> если категоричны.
'constant' - Установите для отсутствующих данных для числовых и категориальных предикторов постоянное значение, указанное в необязательном аргументе для ConstantValue.
Типы данных: char | string
ConstantValue - Значение для заполнения отсутствующих записей в предикторах, указанных в PredictorNames[ ]
(по умолчанию) | числовой | символьный вектор | строка | массив ячеек символьных векторов | строковый массив(Необязательно) Значение для заполнения отсутствующих записей в предикторах, указанных в PredictorNames, задается как числовое значение, символьный вектор, строка или массив ячеек символьных векторов.
Примечание
Вы можете использовать ConstantValue только при установке Statistics аргумент для 'constant'.
Типы данных: char | double | string | cell
sc Обновлено creditscorecardcreditscorecard объектОбновлено creditscorecard , возвращенный как объект.
Взвешенное среднее аналогично обычному среднему, за исключением того, что вместо каждой точки данных, вносящей одинаковый вклад в конечное среднее, некоторые точки данных вносят больше, чем другие.
Взвешенное среднее для непустого конечного множества данных (x) с соответствующими неотрицательными весами (w) равно
Взвешенная медиана представляет собой 50% взвешенный процентиль, где процент в общем весе подсчитывается вместо общего числа.
Для n отдельных упорядоченных элементов (x) положительные веса (w), так что , взвешенная медиана является элементом xk:
В случае, когда соответствующие веса обоих элементов граничат с серединой набора весов, не инкапсулируя его, каждый элемент определяет раздел, равный 1/2. Эти элементы называются нижней взвешенной медианой и верхней взвешенной медианой. Взвешенная медиана выбирается исходя из того, какой элемент сохраняет наиболее равные секции. Эта медиана всегда является взвешенной медианой с наименьшим весом. В случае, когда верхний и нижний взвешенные медианы равны, принимается нижний взвешенный медиан.
Взвешенный режим набора взвешенных значений данных - это значение, которое появляется чаще всего.
Режим образца - это элемент, который чаще всего встречается в коллекции. Например, режим образца [1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17] равен 6.
[1] «Базельский комитет по банковскому надзору: исследования по проверке внутренних рейтинговых систем». Рабочий документ № 14, февраль 2005 года.
[2] Рефаат, М. Карты оценки кредитных рисков: разработка и внедрение с использованием SAS. lulu.com, 2011.
[3] Лоэффлер, Г. и Пош, П. Н. Моделирование кредитных рисков с использованием Excel и VBA. Уайли Финанс, 2007.
bindata | bininfo | creditscorecard | displaypoints | fitmodel | formatpoints | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | setmodel | table | validatemodel
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.