В этом примере показано, как обработать отсутствующие значения, когда вы работаете с creditscorecard
объекты. Во-первых, пример показывает, как использовать creditscorecard
функциональность создания явного интервала для отсутствующих данных с соответствующими точками. Затем в этом примере описываются четыре различных способа «обработки» недостающих данных для получения окончательной карты результатов кредита без явных интервалов для отсутствующих значений.
Когда вы создаете creditscorecard
объект, данные могут содержать отсутствующие значения. При использовании creditscorecard
для создания creditscorecard
объект, можно задать аргумент пары "имя-значение" для 'BinMissingData'
установлено на true
. В этом случае отсутствующие данные для числовых предикторов (NaN
значения) и для категориальных предикторов (<undefined>
значения) привязывается в отдельном интервале, помеченном <missing>
который появляется в конце интервалов. Предикторы без отсутствующих значений в обучающих данных не имеют <missing>
Интервал. Если вы не задаете 'BinMissingData'
аргумент или если вы задаете 'BinMissingData'
на false
, а creditscorecard
функция отбрасывает отсутствующие наблюдения при вычислении частот Хорошего и Плохого, и ни bininfo
ни plotbins
функции сообщают о таких наблюдениях.
The <missing>
интервал остается на месте в течение процесса моделирования карты показателей. Итоговая таблица показателей явно указывает точки, которые будут назначены отсутствующим значениям для предикторов, которые имеют <missing>
Интервал. Эти точки определяются из значения веса доказательств (ГОРЕ) <missing>
интервал и коэффициент предиктора в логистической модели. Для предикторов без явного <missing>
интервал назначить точки отсутствующим значениям с помощью аргумента пары "имя-значение" 'Missing'
в formatpoints
, как описано в этом примере, или при помощи одного из четырех различных способов «обработки» недостающих данных.
The dataMissing
таблица в CreditCardData.mat
файл имеет два предиктора с отсутствующими значениями - CustAge
и ResStatus
, .
load CreditCardData.mat
head(dataMissing,5)
ans=5×11 table
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
Создайте creditscorecard
объект с использованием CreditCardData.mat
файл для загрузки dataMissing
таблица с отсутствующими значениями. Установите 'BinMissingData'
аргумент в true
. Применить автоматическое раскладывание.
sc = creditscorecard(dataMissing,'IDVar','CustID','BinMissingData',true); sc = autobinning(sc);
Информация о интервале и интервале графики для предикторов, которые имеют отсутствующие данные, показывают <missing>
Интервал в конце.
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 {'[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')
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 {'<missing>' } 27 13 2.0769 0.026469 2.3248e-05 {'Totals' } 803 397 2.0227 NaN 0.0092627
plotbins(sc,'ResStatus')
Обучающие данные для 'CustAge'
и 'ResStatus'
предикторы имеют отсутствующие данные (NaN
s и <undefined>
). Процесс раскладывания оценивает значения ГОРЕ -0.15787
и 0.026469
, соответственно, для недостающих данных в этих предикторах.
Обучающие данные для EmpStatus
и CustIncome
не имеет явного интервала для <missing>
значения, потому что нет отсутствующих значений для этих предикторов.
bi = bininfo(sc,'EmpStatus');
disp(bi)
Bin Good Bad Odds WOE InfoValue ____________ ____ ___ ______ ________ _________ {'Unknown' } 396 239 1.6569 -0.19947 0.021715 {'Employed'} 407 158 2.5759 0.2418 0.026323 {'Totals' } 803 397 2.0227 NaN 0.048038
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 {'Totals' } 803 397 2.0227 NaN 0.12285
Использование fitmodel
для соответствия логистической регрессионной модели с использованием значений ГОРЕ. fitmodel
внутренне преобразует все переменные предиктора в значения WOE, используя интервалы, найденные в процессе автоматического раскладывания. По умолчанию fitmodel
затем подходит для логистической регрессионной модели с помощью пошагового метода. Для предикторов, которые имеют отсутствующие данные, существует явное <missing>
интервал с соответствующим значением WOE, вычисленным из данных. Когда вы используете fitmodel
, соответствующее значение ГОРЕ для <missing>
интервал применяется, когда функция выполняет преобразование ГОРЕ.
[sc,mdl] = fitmodel(sc,'display','off');
Масштабируйте точки карты показателей методом «баллы - двойные шансы» (PDO) с помощью 'PointsOddsAndPDO'
аргумент formatpoints
. Предположим, что вы хотите, чтобы счет 500 точек имел шансы 2 (вдвое больше вероятности быть хорошим, чем быть плохим) и что шансы удваиваются каждые 50 точки (так что 550 точки будут иметь шансы 4).
Отобразите карту показателей, показывающую масштабированные точки для предикторов, сохраненных в модели аппроксимации.
sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
PointsInfo = displaypoints(sc)
PointsInfo=38×3 table
Predictors Bin Points
_____________ ______________ ______
{'CustAge' } {'[-Inf,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' } {'<missing>' } 64.984
{'ResStatus'} {'Tenant' } 62.138
{'ResStatus'} {'Home Owner'} 73.248
{'ResStatus'} {'Other' } 90.828
{'ResStatus'} {'<missing>' } 74.125
{'EmpStatus'} {'Unknown' } 58.807
{'EmpStatus'} {'Employed' } 86.937
{'EmpStatus'} {'<missing>' } NaN
⋮
Заметьте, что точки для <missing>
интервалы для CustAge
и ResStatus
показаны явно (как 64.9836
и 74.1250
, соответственно). Эти точки вычисляются из значения ГОРЕ для <missing>
интервал и коэффициенты логистической модели.
Точки для предикторов, которые не имеют отсутствующих данных в набор обучающих данных, по умолчанию заданы как NaN
и они приводят к счету NaN
когда вы бегаете score
. Это может быть изменено путем обновления аргумента пары "имя-значение" 'Missing'
в formatpoints
чтобы указать, как обработать отсутствующие данные в целях оценки.
Карта показателей готова для подсчета новых наборов данных. Можно также использовать карту показателей для вычисления вероятностей по умолчанию или выполнить валидацию модели. Для получения дополнительной информации смотрите score
, probdefault
, и validatemodel
. Чтобы дополнительно изучить обработку недостающих данных, берите несколько строк из исходных данных в качестве тестовых данных и вводите некоторые недостающие данные.
tdata = dataMissing(11:14,mdl.PredictorNames); % Keep only the predictors retained in the model % Set some missing values tdata.CustAge(1) = NaN; tdata.ResStatus(2) = '<undefined>'; tdata.EmpStatus(3) = '<undefined>'; tdata.CustIncome(4) = NaN; disp(tdata)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ ___________ ___________ __________ _______ _______ _________ NaN Tenant Unknown 34000 44 Yes 119.8 48 <undefined> Unknown 44000 14 Yes 403.62 65 Home Owner <undefined> 48000 6 No 111.88 44 Other Unknown NaN 35 No 436.41
Оцените новые данные и посмотрите, как точки за отсутствующие данные по-разному присваиваются CustAge
и ResStatus
и для EmpStatus
и CustIncome
. CustAge
и ResStatus
иметь явное <missing>
интервал для отсутствующих данных. Однако для EmpStatus
и CustIncome
, а score
функция устанавливает точки равными NaN
.
[Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 NaN NaN
disp(Points)
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
Используйте аргумент пары "имя-значение" 'Missing'
в formatpoints
чтобы выбрать, как назначить точки отсутствующим значениям для предикторов, которые не имеют явного <missing>
Интервал. В данном примере используйте 'MinPoints'
опция для 'Missing'
аргумент. Для EmpStatus
и CustIncome
минимальное количество точек в карте показателей 58.8072
и 29.3753
, соответственно. Можно также обработать отсутствующие значения, используя один из четырех различных способов «обработать» отсутствующие данные.
sc = formatpoints(sc,'Missing','MinPoints'); [Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 517.7532 451.3405
disp(Points)
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
объект
The creditscorecard
объект поддерживает fillmissing
функция. Когда вы вызываете функцию на предикторе или группе предикторов, fillmissing
функция заполняет отсутствующие данные пользовательской статистикой. fillmissing
поддерживает значения заливки 'mean'
, 'median'
, 'mode'
, и 'constant'
, а также опция переключения назад на исходные данные.
Преимущество использования fillmissing
это то, что creditscorecard
объект отслеживает значение заливки, а также применяет его к данным валидации. Этот подход ограничен тем, что для заполнения недостающих данных используются только базовые статистические данные.
Для получения дополнительной информации о подходе 1 смотрите fillmissing
.
Подход 2: Заполните отсутствующие данные с помощью fillmissing
MATLAB ®функция
MATLAB ® поддерживает fillmissing
функция, которую можно использовать перед созданием creditscorecard
объект для обработки отсутствующих значений в числовых и категориальных данных. Преимущество этого метода в том, что вы можете использовать все опции, доступные в fillmissing
для заполнения недостающих данных, а также других функциональных возможностей MATLAB, таких как standardizeMissing
и функции для лечения выбросов. Однако обратная сторона заключается в том, что вы ответственны за те же преобразования в данные валидации перед подсчетом баллов, что и fillmissing
функция находится вне creditscorecard
объект.
Для получения дополнительной информации о Подходе 2 смотрите Обработать отсутствующие данные в рабочем процессе Карты показателей кредита с использованием заполнения MATLAB ®.
Подход 3: Ввод отсутствующих данных с помощью алгоритма k-ближайших соседей (KNN)
Этот подход KNN рассматривает несколько предикторов по сравнению с Подходом 1 и Подходом 2. Как и Подход 2, подход KNN осуществляется за пределами creditscoreacrd
рабочий процесс, и, следовательно, вам нужно выполнить вменение как для данных обучения, так и для данных валидации.
Для получения дополнительной информации о Подходе 3, см. «Ввод отсутствующих данных в рабочий процесс Карты показателей кредита» С помощью алгоритма k-ближайших соседей.
Подход 4: Впишите отсутствующие данные с помощью случайного алгоритма леса
Этот случайный лесной подход аналогичен Подходу 3 и использует несколько предикторов для ввода отсутствующих значений. Потому что подход находится вне creditscorecard
рабочий процесс, вам нужно выполнить условное исчисление как для данных обучения, так и для данных валидации.
Для получения дополнительной информации о Подходе 4 смотрите Импуте отсутствующих данных в рабочем процессе Карты показателей кредита с использованием алгоритма случайного леса.
bininfo
| creditscorecard
| fillmissing
| plotbins