В этом примере показано, как обработать отсутствующие значения, когда вы работаете с creditscorecard
объекты. Во-первых, пример показывает, как использовать creditscorecard
функциональность, чтобы создать явный интервал для недостающих данных с соответствующими точками. Затем этот пример описывает четыре различных способа "обработать" недостающие данные, чтобы получить протокол результатов окончательного кредита без явных интервалов для отсутствующих значений.
Когда вы создаете creditscorecard
объект, данные могут содержать отсутствующие значения. При использовании creditscorecard
создать creditscorecard
объект, можно установить аргумент пары "имя-значение" для 'BinMissingData'
установите на true
. В этом случае, недостающие данные для числовых предикторов (NaN
значения) и для категориальных предикторов (<undefined>
значения), сгруппировано в отдельном интервале, пометил <missing>
это появляется в конце интервалов. Предикторы без отсутствующих значений в обучающих данных не имеют никакого <missing>
интервал. Если вы не задаете 'BinMissingData'
аргумент или если вы устанавливаете 'BinMissingData'
к false
, creditscorecard
функционируйте отбрасывания недостающие наблюдения когда вычислительные частоты Хороших и Плохих, и ни один bininfo
ни plotbins
функции сообщают о таких наблюдениях.
<missing>
интервал остается на месте в течение процесса моделирования протокола результатов. Итоговый протокол результатов явным образом указывает на точки, которые будут присвоены отсутствующим значениям для предикторов, которые имеют <missing>
интервал. Эти точки определяются из значения веса доказательства (WOE) <missing>
интервал и коэффициент предиктора в логистической модели. Для предикторов без явного <missing>
интервал, можно присвоить точки отсутствующим значениям с помощью аргумента пары "имя-значение" 'Missing'
в formatpoints
, как описано в этом примере, или при помощи одного из четырех различных способов "обработать" недостающие данные.
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>
). Процесс раскладывания оценивает значения WOE -0.15787
and 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
подбирать модель логистической регрессии использование значений WOE. fitmodel
внутренне преобразовывает все переменные предикторы в значения WOE, с помощью интервалов, найденных во время автоматического процесса раскладывания. По умолчанию, fitmodel
затем подбирает модель логистической регрессии использование пошагового метода. Для предикторов, которые имеют недостающие данные, существует явный <missing>
интервал с соответствующим значением WOE, вычисленным из данных. Когда вы используете fitmodel
, соответствующее значение WOE для <missing>
интервал применяется, когда функция выполняет преобразование WOE.
[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
, соответственно). Эти точки вычисляются из значения WOE для <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
объект
creditscorecard
поддержка объектов fillmissing
функция. Когда вы вызываете функцию на предикторе или группе предикторов, fillmissing
функционируйте заполняет недостающие данные заданной пользователями статистической величиной. fillmissing
поддерживает значения заливки 'mean'
медиана
режим
, и 'constant'
, а также опция, чтобы переключиться назад на исходные данные.
Преимущество использования fillmissing
это creditscorecard
объект отслеживает значение заливки и также применяет его к данным о валидации. Ограничение этого подхода - то, что только базовые статистические данные используются, чтобы заполнить недостающие данные.
Для получения дополнительной информации о Подходе 1, смотрите fillmissing
.
Приблизьтесь 2: Заполните недостающие данные с помощью MATLAB® fillmissing
функция
MATLAB® поддерживает fillmissing
функция, которую можно использовать прежде, чем создать creditscorecard
возразите, чтобы обработать отсутствующие значения в числовых и категориальных данных. Преимущество этого метода состоит в том, что можно использовать все опции, доступные в fillmissing
заполнять недостающие данные, а также другую функциональность MATLAB, такую как standardizeMissing
и функции обработки выбросов. Однако оборотная сторона - то, что вы ответственны за те же преобразования к данным о валидации прежде, чем выиграть как fillmissing
функция находится вне creditscorecard
объект.
Для получения дополнительной информации о Подходе 2, смотрите Обработку пропустить Данные в Рабочем процессе Протокола результатов Кредита Используя MATLAB® fillmissing.
Приблизьтесь 3: Припишите недостающие данные с помощью алгоритма k - ближайших соседей (KNN)
Этот подход KNN полагает, что несколько предикторов, как сравнено Приближаются 1 и Подход 2. Как Подход 2, подход KNN сделан вне creditscoreacrd
рабочий процесс, и следовательно, необходимо выполнить обвинение и для данных об обучении и для валидации.
Для получения дополнительной информации о Подходе 3, смотрите, Приписывают Недостающие Данные в Рабочем процессе Протокола результатов Кредита Используя Алгоритм k - ближайших соседей.
Приблизьтесь 4: Припишите недостающие данные с помощью случайного лесного алгоритма
Этот случайный лесной подход подобен, чтобы Приблизиться 3 и использует несколько предикторов, чтобы приписать отсутствующие значения. Поскольку подход находится вне creditscorecard
рабочий процесс, необходимо выполнить обвинение и для данных об обучении и для валидации.
Для получения дополнительной информации о Подходе 4, смотрите, Приписывают Недостающие Данные в Рабочем процессе Протокола результатов Кредита Используя Случайный Лесной Алгоритм.
creditscorecard
| bininfo
| plotbins
| fillmissing