Форматирование точек карты показателей и масштабирование
изменяет точки карты показателей и масштабирование с использованием необязательных аргументов пары имя-значение. Например, используйте необязательные аргументы пары имя-значение для изменения масштабирования баллов или округления точек. sc = formatpoints(sc,Name,Value)
В этом примере показано, как использовать formatpoints для масштабирования путем предоставления точек, уровней шансов и PDO (точек для удвоения шансов). С помощью formatpoints Чтобы масштабировать, можно поставить очки и баллы в желаемый диапазон, который является более значимым для практических целей. Технически, это включает в себя линейное преобразование из не масштабированных в масштабированные точки посредством formatpoints функция.
Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое binning to bin для всех предикторов.
sc = autobinning(sc);
Подгонка модели линейной регрессии с использованием параметров по умолчанию.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=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
⋮
MinScore = -1.3100
MaxScore = 3.0726
Масштабировать, предоставляя точки, уровни шансов и PDO (точки, чтобы удвоить шансы). Предположим, что вы хотите, чтобы оценка 500 очков иметь шансы 2 (в два раза больше вероятность быть хорошим, чем быть плохим) и что шансы удвоить каждые 50 очков (так что 550 очков будет иметь шансы 4).
sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)PointsInfo=37×3 table
Predictors Bin Points
______________ ________________ ______
{'CustAge' } {'[-Inf,33)' } 52.821
{'CustAge' } {'[33,37)' } 54.161
{'CustAge' } {'[37,40)' } 59.934
{'CustAge' } {'[40,46)' } 67.633
{'CustAge' } {'[46,48)' } 79.755
{'CustAge' } {'[48,58)' } 80.905
{'CustAge' } {'[58,Inf]' } 98.838
{'CustAge' } {'<missing>' } NaN
{'ResStatus' } {'Tenant' } 62.031
{'ResStatus' } {'Home Owner' } 73.444
{'ResStatus' } {'Other' } 91.438
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } 58.781
{'EmpStatus' } {'Employed' } 86.971
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} 31.309
⋮
MinScore = 355.5051
MaxScore = 671.6403
В этом примере показано, как использовать formatpoints для масштабирования путем предоставления Worst и Best значения баллов. С помощью formatpoints Чтобы масштабировать, можно поставить очки и баллы в желаемый диапазон, который является более значимым для практических целей. Технически, это предполагает линейное преобразование из нескрупулезных в масштабированные точки.
Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое binning to bin для всех предикторов.
sc = autobinning(sc);
Подгонка модели линейной регрессии с использованием параметров по умолчанию.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=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
⋮
MinScore = -1.3100
MaxScore = 3.0726
Масштабирование путем предоставления 'Worst' и 'Best' значения баллов. Приведенный ниже диапазон является общим диапазоном баллов. Снова просмотрите информацию о баллах, чтобы убедиться, что они теперь масштабированы, а также отобразите масштабированные минимальные и максимальные баллы.
sc = formatpoints(sc,'WorstAndBestScores',[300 850]);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)PointsInfo=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>' } NaN
{'ResStatus' } {'Tenant' } 62.421
{'ResStatus' } {'Home Owner' } 82.276
{'ResStatus' } {'Other' } 113.58
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } 56.765
{'EmpStatus' } {'Employed' } 105.81
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} 8.9706
⋮
MinScore = 300
MaxScore = 850.0000
Как и ожидалось, значения MinScore и MaxScore соответствуют желаемым худшим и лучшим баллам.
В этом примере показано, как использовать formatpoints для масштабирования путем предоставления Shift и Slope значения. С помощью formatpoints Чтобы масштабировать, можно поставить очки и баллы в желаемый диапазон, который является более значимым для практических целей. Технически, это включает в себя линейное преобразование из не масштабированных в масштабированные точки посредством formatpoints функция.
Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое binning to bin для всех предикторов.
sc = autobinning(sc);
Подгонка модели линейной регрессии с использованием параметров по умолчанию.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=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
⋮
MinScore = -1.3100
MaxScore = 3.0726
Масштабирование путем предоставления 'Shift' и 'Slope' значения. В этом примере имеется произвольный выбор сдвига и наклона. Снова просмотрите информацию о баллах, чтобы убедиться, что они теперь масштабированы, а также отобразите масштабированные минимальные и максимальные баллы.
sc = formatpoints(sc,'ShiftAndSlope',[300 6]);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)PointsInfo=37×3 table
Predictors Bin Points
______________ ________________ ______
{'CustAge' } {'[-Inf,33)' } 41.904
{'CustAge' } {'[33,37)' } 42.015
{'CustAge' } {'[37,40)' } 42.495
{'CustAge' } {'[40,46)' } 43.136
{'CustAge' } {'[46,48)' } 44.144
{'CustAge' } {'[48,58)' } 44.239
{'CustAge' } {'[58,Inf]' } 45.731
{'CustAge' } {'<missing>' } NaN
{'ResStatus' } {'Tenant' } 42.67
{'ResStatus' } {'Home Owner' } 43.619
{'ResStatus' } {'Other' } 45.116
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } 42.399
{'EmpStatus' } {'Employed' } 44.744
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} 40.114
⋮
MinScore = 292.1401
MaxScore = 318.4355
В этом примере показано, как использовать formatpoints чтобы отделить базовые точки от остальных точек, назначенных каждой переменной предиктора. formatpoints аргумент пары имя-значение 'BasePoints' служит этой цели.
Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое binning to bin для всех предикторов.
sc = autobinning(sc);
Подгонка модели линейной регрессии с использованием параметров по умолчанию.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=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
⋮
MinScore = -1.3100
MaxScore = 3.0726
Путем задания аргумента пары «имя-значение» BasePoints true, таблица информации о точках сообщает о базовых точках отдельно в первой строке. Этот параметр не влияет на минимальную и максимально возможную оценки.
sc = formatpoints(sc,'BasePoints',true);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)PointsInfo=38×3 table
Predictors Bin Points
______________ ______________ _________
{'BasePoints'} {'BasePoints'} 0.70239
{'CustAge' } {'[-Inf,33)' } -0.25928
{'CustAge' } {'[33,37)' } -0.24071
{'CustAge' } {'[37,40)' } -0.16066
{'CustAge' } {'[40,46)' } -0.053933
{'CustAge' } {'[46,48)' } 0.11411
{'CustAge' } {'[48,58)' } 0.13005
{'CustAge' } {'[58,Inf]' } 0.37866
{'CustAge' } {'<missing>' } NaN
{'ResStatus' } {'Tenant' } -0.13159
{'ResStatus' } {'Home Owner'} 0.026616
{'ResStatus' } {'Other' } 0.27607
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } -0.17666
{'EmpStatus' } {'Employed' } 0.21415
{'EmpStatus' } {'<missing>' } NaN
⋮
MinScore = -1.3100
MaxScore = 3.0726
В этом примере показано, как использовать formatpoints в точки скругления. Округление обычно применяется после масштабирования, в противном случае, если точки для конкретного предиктора находятся в небольшом диапазоне, округление может привести к тому, что округленные точки для различных ячеек будут одинаковыми. Кроме того, округление всех точек может несколько изменить минимальную и максимальную общую точки.
Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое binning to bin для всех предикторов.
sc = autobinning(sc);
Подгонка модели линейной регрессии с использованием параметров по умолчанию.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=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
⋮
MinScore = -1.3100
MaxScore = 3.0726
Масштабирование точек и отображение информации о точках. По умолчанию округление не применяется.
sc = formatpoints(sc,'WorstAndBestScores',[300 850]);
PointsInfo = displaypoints(sc)PointsInfo=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>' } NaN
{'ResStatus' } {'Tenant' } 62.421
{'ResStatus' } {'Home Owner' } 82.276
{'ResStatus' } {'Other' } 113.58
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } 56.765
{'EmpStatus' } {'Employed' } 105.81
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} 8.9706
⋮
Использовать аргумент пары имя-значение Round для применения округления ко всем точкам и повторного отображения информации о точках.
sc = formatpoints(sc,'Round','AllPoints'); PointsInfo = displaypoints(sc)
PointsInfo=37×3 table
Predictors Bin Points
______________ ________________ ______
{'CustAge' } {'[-Inf,33)' } 46
{'CustAge' } {'[33,37)' } 49
{'CustAge' } {'[37,40)' } 59
{'CustAge' } {'[40,46)' } 72
{'CustAge' } {'[46,48)' } 93
{'CustAge' } {'[48,58)' } 95
{'CustAge' } {'[58,Inf]' } 126
{'CustAge' } {'<missing>' } NaN
{'ResStatus' } {'Tenant' } 62
{'ResStatus' } {'Home Owner' } 82
{'ResStatus' } {'Other' } 114
{'ResStatus' } {'<missing>' } NaN
{'EmpStatus' } {'Unknown' } 57
{'EmpStatus' } {'Employed' } 106
{'EmpStatus' } {'<missing>' } NaN
{'CustIncome'} {'[-Inf,29000)'} 9
⋮
В этом примере показано, что точки округления карты показателей могут изменять исходный ранг риска карты показателей кредитования. Можно управлять округлением с помощью formatpoints с необязательным аргументом пара имя-значение для 'Rounding'.
Кредитные баллы ранжируют клиентов по риску. Если более высокие баллы даются лучшим, менее рискованным клиентам, то более высокие баллы должны соответствовать более низким вероятностям по умолчанию. При использовании аргумента пары имя-значение для 'Rounding', в зависимости от значения для 'Rounding', поведение округления:
Когда 'Rounding' имеет значение 'None' (опция по умолчанию), округление не применяется к баллам или баллам, и ранжирование риска полностью согласуется с калиброванной моделью.
Когда 'Rounding' имеет значение 'FinalScore'округление применяется только к итоговым баллам. В этом случае: а) Клиенты с различными оценками (разным риском) могут иметь одинаковый округленный балл. b) Клиенты с одинаковым округленным баллом могут иметь разные вероятности по умолчанию. c) Клиент с более высокими округленными баллами всегда будет иметь более низкую вероятность по умолчанию, чем клиенты с более низкими баллами.
Когда 'Rounding' имеет значение 'AllPoints'округление применяется ко всем точкам в карте показателей (все ячейки, все предикторы). В этом случае: а) Клиенты с различными оценками (различными рисками) могут иметь одинаковый округленный балл, или их ранжирование может быть даже отменено (клиент с более низким исходным баллом может иметь более высокий округленный балл). b) Клиенты с одинаковым округленным баллом могут иметь разные вероятности по умолчанию. c) Клиент с более высокими округленными баллами может в некоторых случаях иметь более высокую вероятность по умолчанию, чем клиенты с более низкими баллами.
Создать creditscorecard
Чтобы продемонстрировать поведение округления, сначала создайте creditscorecard объект.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID','ResponseVar','status'); sc = autobinning(sc); sc = modifybins(sc,'CustIncome','CutPoints',20000:5000:60000); sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1487.9719, Chi2Stat = 35.469392, PValue = 2.5909009e-09
2. Adding TmWBank, Deviance = 1465.7998, Chi2Stat = 22.172089, PValue = 2.4927133e-06
3. Adding AMBalance, Deviance = 1455.206, Chi2Stat = 10.593833, PValue = 0.0011346548
4. Adding EmpStatus, Deviance = 1446.3918, Chi2Stat = 8.8142314, PValue = 0.0029889009
5. Adding CustAge, Deviance = 1440.6825, Chi2Stat = 5.709236, PValue = 0.016875883
6. Adding ResStatus, Deviance = 1436.1363, Chi2Stat = 4.5462043, PValue = 0.032991806
7. Adding OtherCC, Deviance = 1431.9546, Chi2Stat = 4.1817827, PValue = 0.040860699
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70247 0.064046 10.968 5.4345e-28
CustAge 0.60579 0.24405 2.4822 0.013058
ResStatus 1.4463 0.65427 2.2105 0.02707
EmpStatus 0.90501 0.29262 3.0928 0.0019828
CustIncome 0.70869 0.20535 3.4512 0.00055815
TmWBank 1.0839 0.23244 4.6631 3.1145e-06
OtherCC 1.0906 0.52936 2.0602 0.039377
AMBalance 1.0148 0.32273 3.1445 0.0016636
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 91.5, p-value = 6.12e-17
Применить 'Rounding' Варианты
Применить каждый из трех 'Rounding' параметры для creditscorecard объект.
sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]); % No Rounding points1 = displaypoints(sc); [S1,P1] = score(sc); defProb1 = probdefault(sc); sc = formatpoints(sc,'Round','AllPoints'); % 'AllPoints' Rounding points2 = displaypoints(sc); [S2,P2] = score(sc); defProb2 = probdefault(sc); sc = formatpoints(sc,'Round','FinalScore'); % 'FinalScore' Rounding points3 = displaypoints(sc); [S3,P3] = score(sc); defProb3 = probdefault(sc);
Сравните 'Rounding' Варианты
Визуализация вероятностей по умолчанию в сравнении с показателями.
figure hold on scatter(S1, defProb1, 'g*') scatter(S2, defProb2, 'ro') scatter(S3, defProb3, 'b+') legend('No Rounding','AllPoints','FinalScore') axis([388 394 0.695 0.705]) xlabel('Credit score') ylabel('Default probability') title('Default probabilities and Credit scores') grid

Проверка баллов и итоговых баллов для каждого 'Rounding' , в формате таблицы.
ind = [208 363 694 886]; ProbDefault = defProb1(ind)
ProbDefault = 4×1
0.6997
0.6989
0.6982
0.6972
% ScoreNoRounding = S1(ind)
PointsNoRounding = P1(ind,:);
PointsNoRounding.Total = S1(ind)PointsNoRounding=4×8 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance Total
_______ _________ _________ __________ _______ _______ _________ ______
52.9 61.555 58.503 24.647 51.551 50.416 89.4 388.97
67.65 61.555 58.503 24.647 51.551 75.723 49.64 389.27
54.234 61.555 58.503 24.647 51.551 75.723 63.271 389.48
52.9 92.441 58.503 24.647 61.277 50.416 49.64 389.82
% ScoreAllPoints = S2(ind)
PointsAllPoints = P2(ind,:);
PointsAllPoints.Total = S2(ind)PointsAllPoints=4×8 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance Total
_______ _________ _________ __________ _______ _______ _________ _____
53 62 59 25 52 50 89 390
68 62 59 25 52 76 50 392
54 62 59 25 52 76 63 391
53 92 59 25 61 50 50 390
% ScoreFinalScore = S3(ind)
PointsFinalScore = P3(ind,:);
PointsFinalScore.Total = S3(ind)PointsFinalScore=4×8 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance Total
_______ _________ _________ __________ _______ _______ _________ _____
52.9 61.555 58.503 24.647 51.551 50.416 89.4 389
67.65 61.555 58.503 24.647 51.551 75.723 49.64 389
54.234 61.555 58.503 24.647 51.551 75.723 63.271 389
52.9 92.441 58.503 24.647 61.277 50.416 49.64 390
Оригинал creditscorecard модель без округления была откалибрована по данным с логистической регрессией. Ранжирование и вероятности имеют статистическую основу.
Однако округление эффективно изменяет creditscorecard модель. Когда округляется только окончательный балл, это приводит к некоторым «связям» в округленных баллах, но сохраняется, по крайней мере, ранжирование риска по баллам (потому что если s1 < = s2, то раунд (s1) < = раунд (s2)).
Однако, когда вы округляете все очки, счет может набрать дополнительные очки случайно. Например, во второй строке таблицы (строка 363 исходных данных) точки для всех предикторов округляются почти на 0.5. Исходный балл - 389.27. Округление итогового балла делает его 389. Однако округление всех точек делает это 392, это на три очка выше, чем округление итоговой оценки.
В этом примере показано, как использовать formatpoints для оценки отсутствующих или выходящих за пределы диапазона данных. При оценке данных некоторые наблюдения могут отсутствовать (NaN, или undefined) или вне диапазона. Необходимо решить, назначены ли этим случаям точки. Использовать аргумент пары имя-значение Missing для этого.
Создать creditscorecard с использованием CreditCardData.mat для загрузки данных (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое binning to bin для всех предикторов.
sc = autobinning(sc);
Указать, что минимальное допустимое значение для 'CustAge' равно нулю. Это делает любые отрицательные значения для возраста недопустимыми или выходящими за пределы диапазона.
sc = modifybins(sc,'CustAge','MinValue',0);
Подгонка модели линейной регрессии с использованием параметров по умолчанию.
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70239 0.064001 10.975 5.0538e-28
CustAge 0.60833 0.24932 2.44 0.014687
ResStatus 1.377 0.65272 2.1097 0.034888
EmpStatus 0.88565 0.293 3.0227 0.0025055
CustIncome 0.70164 0.21844 3.2121 0.0013179
TmWBank 1.1074 0.23271 4.7589 1.9464e-06
OtherCC 1.0883 0.52912 2.0569 0.039696
AMBalance 1.045 0.32214 3.2439 0.0011792
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16
Предположим, что в данных, которые требуется оценить, отсутствуют или находятся вне диапазона наблюдений. Обратите внимание, что по умолчанию точки и оценка, назначенные отсутствующему значению, равны NaN.
% Set up a data set with missing and out of range data for illustration purposes newdata = data(1:5,:); newdata.CustAge(1) = NaN; % missing newdata.CustAge(2) = -100; % invalid newdata.ResStatus(3) = '<undefined>'; % missing newdata.ResStatus(4) = 'House'; % invalid disp(newdata)
CustID CustAge TmAtAddress ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance UtilRate status
______ _______ ___________ ___________ _________ __________ _______ _______ _________ ________ ______
1 NaN 62 Tenant Unknown 50000 55 Yes 1055.9 0.22 0
2 -100 22 Home Owner Employed 52000 25 Yes 1161.6 0.24 0
3 47 30 <undefined> Employed 37000 61 No 877.23 0.29 0
4 50 75 House Employed 53000 20 Yes 157.37 0.08 0
5 68 56 Home Owner Employed 53000 14 Yes 561.84 0.11 0
[Scores,Points] = score(sc,newdata); disp(Scores)
NaN
NaN
NaN
NaN
1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
_______ _________ _________ __________ _________ ________ _________
NaN -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472
NaN 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472
0.21445 NaN 0.31449 0.081611 0.39607 -0.19168 -0.017472
0.23039 NaN 0.31449 0.43693 -0.044811 0.15842 0.35551
0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
Использовать аргумент пары имя-значение Missing заменять NaN с точками, соответствующими нулевому весу доказательств (WOE).
sc = formatpoints(sc,'Missing','ZeroWOE'); [Scores,Points] = score(sc,newdata); disp(Scores)
0.9667
1.0859
0.8978
1.5513
1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
_______ _________ _________ __________ _________ ________ _________
0.10034 -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472
0.10034 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472
0.21445 0.10034 0.31449 0.081611 0.39607 -0.19168 -0.017472
0.23039 0.10034 0.31449 0.43693 -0.044811 0.15842 0.35551
0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
Либо используйте аргумент пара имя-значение Missing для замены отсутствующего значения на минимальные точки для предикторов с отсутствующими значениями.
sc = formatpoints(sc,'Missing','MinPoints'); [Scores,Points] = score(sc,newdata); disp(Scores)
0.7074
0.8266
0.7662
1.4197
1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
________ _________ _________ __________ _________ ________ _________
-0.15894 -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472
-0.15894 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472
0.21445 -0.031252 0.31449 0.081611 0.39607 -0.19168 -0.017472
0.23039 -0.031252 0.31449 0.43693 -0.044811 0.15842 0.35551
0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
В качестве третьей альтернативы используйте аргумент пара имя-значение Missing чтобы заменить отсутствующее значение максимальными точками для предикторов с отсутствующими значениями.
sc = formatpoints(sc,'Missing','MaxPoints'); [Scores,Points] = score(sc,newdata); disp(Scores)
1.3454
1.4646
1.1739
1.8273
1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance
_______ _________ _________ __________ _________ ________ _________
0.479 -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472
0.479 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472
0.21445 0.37641 0.31449 0.081611 0.39607 -0.19168 -0.017472
0.23039 0.37641 0.31449 0.43693 -0.044811 0.15842 0.35551
0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
Убедитесь, что минимальные и максимальные точки, назначенные отсутствующим данным, соответствуют минимальным и максимальным точкам для соответствующих предикторов. Точки для 'CustAge' представлены в первых семи строках информационной таблицы точек. Для 'ResStatus' точки находятся в строках с 8 по 10.
PointsInfo = displaypoints(sc); PointsInfo(1:7,:)
ans=7×3 table
Predictors Bin Points
___________ ____________ _________
{'CustAge'} {'[0,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
min(PointsInfo.Points(1:7))
ans = -0.1589
max(PointsInfo.Points(1:7))
ans = 0.4790
PointsInfo(8:10,:)
ans=3×3 table
Predictors Bin Points
_____________ ______________ _________
{'CustAge' } {'<missing>' } 0.479
{'ResStatus'} {'Tenant' } -0.031252
{'ResStatus'} {'Home Owner'} 0.12696
min(PointsInfo.Points(8:10))
ans = -0.0313
max(PointsInfo.Points(8:10))
ans = 0.4790
BinMissingData' ВыборВ этом примере описывается назначение точек для отсутствующих данных при 'BinMissingData' параметр имеет значение true.
Предикторы, у которых отсутствуют данные в обучающем наборе, имеют явное место для <missing> с соответствующими баллами в итоговой карте показателей. Эти точки вычисляются на основе значения веса доказательств (WOE) для <missing> bin и коэффициенты логистической модели. В целях оценки эти баллы присваиваются отсутствующим значениям и значениям вне диапазона.
Предикторы без отсутствующих данных в обучающем наборе не имеют <missing> bin, поэтому невозможно оценить WOE по данным обучения. По умолчанию точки для отсутствующих и выходящих за пределы диапазона значений имеют значение NaN, и это приводит к оценке NaN при выполнении score. Для предикторов, не имеющих явных <missing> bin, используйте аргумент имя-значение 'Missing' в formatpoints чтобы указать, как недостающие данные должны рассматриваться в целях оценки.
Создать creditscorecard с использованием CreditCardData.mat для загрузки файла dataMissing с отсутствующими значениями.
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
fprintf('Number of rows: %d\n',height(dataMissing))Number of rows: 1200
fprintf('Number of missing values CustAge: %d\n',sum(ismissing(dataMissing.CustAge)))Number of missing values CustAge: 30
fprintf('Number of missing values ResStatus: %d\n',sum(ismissing(dataMissing.ResStatus)))Number of missing values ResStatus: 40
Использовать creditscorecard с аргументом имя-значение 'BinMissingData' установить в значение true в ячейку отсутствующих числовых или категориальных данных в отдельной ячейке. Применение автоматического binning.
sc = creditscorecard(dataMissing,'IDVar','CustID','BinMissingData',true); sc = autobinning(sc); disp(sc)
creditscorecard with properties:
GoodLabel: 0
ResponseVar: 'status'
WeightsVar: ''
VarNames: {1x11 cell}
NumericPredictors: {1x6 cell}
CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'}
BinMissingData: 1
IDVar: 'CustID'
PredictorVars: {1x9 cell}
Data: [1200x11 table]
Установить минимальное значение, равное нулю для CustAge и CustIncome. При этом любая отрицательная возрастная или доходная информация становится недействительной или «вне диапазона». В целях оценки значения вне диапазона присваиваются тем же баллам, что и отсутствующие значения.
sc = modifybins(sc,'CustAge','MinValue',0); sc = modifybins(sc,'CustIncome','MinValue',0);
Просмотр и печать информации о ячейках для числовых данных для 'CustAge' который включает отсутствующие данные в отдельной ячейке с маркировкой <missing>.
[bi,cp] = bininfo(sc,'CustAge');
disp(bi) Bin Good Bad Odds WOE InfoValue
_____________ ____ ___ ______ ________ __________
{'[0,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')
Просмотр и печать информации о ячейках для категориальных данных для 'ResStatus' который включает отсутствующие данные в отдельной ячейке с маркировкой <missing>.
[bi,cg] = 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' предикторы, отсутствуют данные (NaNs и <undefined>) в учебных данных, и процесс связывания оценивает значение WOE, равное -0.15787 и 0.026469 соответственно для отсутствующих данных в этих предикторах, как показано выше.
Для EmpStatus и CustIncome отсутствует явная ячейка для отсутствующих значений, поскольку данные обучения не содержат отсутствующих значений для этих предикторов.
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
_________________ ____ ___ _______ _________ __________
{'[0,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> bin, с соответствующим значением WOE, вычисленным на основе данных. При использовании fitmodel, соответствующее значение WOE для <missing> применяется при выполнении преобразования WOE.
[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1442.8477, Chi2Stat = 4.4974731, PValue = 0.033944979
6. Adding ResStatus, Deviance = 1438.9783, Chi2Stat = 3.86941, PValue = 0.049173805
7. Adding OtherCC, Deviance = 1434.9751, Chi2Stat = 4.0031966, PValue = 0.045414057
Generalized linear regression model:
status ~ [Linear formula with 8 terms in 7 predictors]
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
________ ________ ______ __________
(Intercept) 0.70229 0.063959 10.98 4.7498e-28
CustAge 0.57421 0.25708 2.2335 0.025513
ResStatus 1.3629 0.66952 2.0356 0.04179
EmpStatus 0.88373 0.2929 3.0172 0.002551
CustIncome 0.73535 0.2159 3.406 0.00065929
TmWBank 1.1065 0.23267 4.7556 1.9783e-06
OtherCC 1.0648 0.52826 2.0156 0.043841
AMBalance 1.0446 0.32197 3.2443 0.0011775
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 88.5, p-value = 2.55e-16
Масштабируйте точки карты показателей по методу «points, bodds and points to удвоить шансы (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' } {'[0,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> bin и коэффициенты логистической модели.
Для предикторов, не имеющих отсутствующих данных в обучающем наборе, нет явных <missing> бункер. По умолчанию для точек установлено значение NaN для отсутствующих данных и они приводят к оценке NaN при выполнении score. Для предикторов, не имеющих явных <missing> bin, используйте аргумент имя-значение 'Missing' в formatpoints чтобы указать, как недостающие данные должны рассматриваться в целях оценки.
Для иллюстрации возьмите несколько строк из исходных данных в качестве тестовых данных и введите некоторые отсутствующие данные. Также введите некоторые недопустимые значения или значения вне диапазона. Для числовых данных допустимые значения ниже минимального (или выше максимального) считаются недопустимыми, например, отрицательное значение для возраста (отзыв 'MinValue' был ранее установлен в значение 0 для CustAge и CustIncome). Для категориальных данных недопустимыми значениями являются категории, явно не включенные в карту показателей, например, статус резидентности, ранее не сопоставленный с категориями карт показателей, например «Дом», или бессмысленная строка, например «abc123».
tdata = dataMissing(11:18,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; % Set some invalid values tdata.CustAge(5) = -100; tdata.ResStatus(6) = 'House'; tdata.EmpStatus(7) = 'Freelancer'; tdata.CustIncome(8) = -1; 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
-100 Other Employed 46000 16 Yes 162.21
33 House Employed 36000 36 Yes 845.02
39 Tenant Freelancer 34000 40 Yes 756.26
24 Home Owner Employed -1 19 Yes 449.61
Оцените новые данные и посмотрите, как точки назначаются для отсутствующих CustAge и ResStatus, потому что у нас есть явная ячейка с точками для <missing>. Однако для EmpStatus и CustIncome score функция устанавливает точки на NaN.
[Scores,Points] = score(sc,tdata); disp(Scores)
481.2231
520.8353
NaN
NaN
551.7922
487.9588
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
64.984 90.828 86.937 82.439 61.061 75.622 89.922
56.282 74.125 86.937 70.107 61.858 75.622 63.028
60.012 62.138 NaN 67.893 61.858 75.622 63.028
54.062 73.248 86.937 NaN 61.061 75.622 89.922
Использовать аргумент имя-значение 'Missing' в formatpoints выбор способа назначения точек отсутствующим значениям для предикторов, не имеющих явного <missing> бункер. В этом примере используйте 'MinPoints' для опции 'Missing' аргумент. Минимальные баллы для EmpStatus в карте показателей, показанной выше, 58.8072, и для CustIncome минимальные баллы: 29.3753.
sc = formatpoints(sc,'Missing','MinPoints'); [Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 517.7532 451.3405 551.7922 487.9588 449.3577 470.2267
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
64.984 90.828 86.937 82.439 61.061 75.622 89.922
56.282 74.125 86.937 70.107 61.858 75.622 63.028
60.012 62.138 58.807 67.893 61.858 75.622 63.028
54.062 73.248 86.937 29.375 61.061 75.622 89.922
sc - Модель кредитной карты показателейcreditscorecard объектМодель кредитной карты показателей, указанная как creditscorecard объект. Использовать creditscorecard для создания creditscorecard объект.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
sc = formatpoints(sc,'BasePoints',true,'Round','AllPoints','WorstAndBestScores',[100, 700])Примечание
ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.
'BasePoints' - Индикатор разделения базовых точекfalse
(по умолчанию) | логический скалярИндикатор для разделения базовых точек, указанный как разделенная запятыми пара, состоящая из 'BasePoints' и логический скаляр. Если true, система показателей явно разделяет базовые точки. Если false, базовые точки распределены по всем переменным в creditscorecard объект.
Типы данных: char
'Missing' - Индикатор для точек, назначенных отсутствующей или выходящей за пределы диапазона информации при оценкеNoScore
(по умолчанию) | символьный вектор со значениями NoScore, ZeroWOE, MinPoints, и MaxPointsИндикатор для точек, назначенных отсутствующей или выходящей за пределы диапазона информации при оценке, указанный как пара, разделенная запятыми, состоящая из 'Missing' и вектор символов со значением для NoScore, ZeroWOE, MinPoints, или MaxPoints, где:
NoScore - отсутствующие и выходящие за пределы диапазона данные не получают присвоенных точек, а для точек установлено значение NaN. Кроме того, общий балл устанавливается равным NaN.
ZeroWOE - отсутствующим или выходящим за пределы диапазона данным присваивается нулевое значение веса доказательства (WOE).
MinPoints - Отсутствующие или находящиеся вне диапазона данные получают минимально возможные точки для этого предиктора. Это штрафует счет, если более высокие баллы лучше.
MaxPoints - Отсутствующие или находящиеся вне диапазона данные получают максимально возможные точки для этого предиктора. Это штрафует счет, если более низкие баллы лучше.
Примечание
При использовании creditscorecard аргумент «имя-значение» 'BinMissingData' со значением true, отсутствующие данные для числовых и категориальных предикторов привязаны в отдельном ячейке с меткой <missing>. <missing> bin содержит только отсутствующие значения для предиктора и не содержит недопустимые значения или значения вне диапазона для предиктора.
Типы данных: char
'Round' - Индикатор округления очков или баллов'None'
(по умолчанию) | символьный вектор со значениями'AllPoints', 'FinalScore'Индикатор округления точек или баллов, определяемый как разделенная запятыми пара, состоящая из 'Round' и вектор символов со значениями 'AllPoints', 'FinalScore' или 'None', где:
None - Округление не применяется.
AllPoints - Примените округление к баллам каждого предсказателя, прежде чем сложить общую оценку.
FinalScore - Округлять только итоговую оценку (округление применяется после сложения всех очков).
Для получения дополнительной информации и примера использования 'Round' аргумент пары имя-значение см. в разделах Округление и Вероятности по умолчанию.
Типы данных: char
'ShiftAndSlope' - Индикатор параметров сдвига и масштабирования уклона[0,1]
(по умолчанию) | числовой массив с двумя элементами [Shift,Slope]Индикатор для параметров сдвига и масштабирования уклона для кредитной карты показателей, определяемый как пара, разделенная запятыми, состоящая из 'ShiftAndSlope' и числовой массив с двумя элементами [Shift, Slope]. Slope не может быть нулевым. ShiftAndSlope используются значения для масштабирования скоринговой модели.
Примечание
ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope кому[0,1].
Типы данных: double
'PointsOddsAndPDO' - Индикатор для целевых точек для данных шансов и уровня двойных шансов[Points,Odds,PDO]Индикатор для целевых точек (Points) для данного уровня шансов (Odds) и желаемое количество баллов для удвоения шансов (PDO), указанная как пара, разделенная запятыми, состоящая из 'PointsOddsAndPDO' и числовой массив с тремя элементами [Points,Odds,PDO]. Odds должно быть положительным числом. PointsOddsAndPDO используются для поиска параметров масштабирования для модели оценки.
Примечание
Точки удвоить шансы (PDO) может быть положительным или отрицательным, в зависимости от того, означают ли более высокие баллы более низкий риск, или наоборот.
ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope кому[0,1].
Типы данных: double
'WorstAndBestScores' - Показатель для худших (наибольший риск) и лучших (наименьший риск) баллов в карте показателей[WorstScore,BestScore]Индикатор для худших (самый высокий риск) и лучших (самый низкий риск) баллов в карте показателей, указанный как пара, разделенная запятыми, состоящая из 'WorstAndBestScores' и числовой массив с двумя элементами [WorstScore,BestScore]. WorstScore и BestScore должны быть различными значениями. Они WorstAndBestScores используются для поиска параметров масштабирования для модели оценки.
Примечание
WorstScore означает самый рискованный балл, и его значение может быть ниже или выше, чем «лучший» балл. Другими словами, «минимальный» балл может быть «худшим» баллом или «лучшим» баллом в зависимости от желаемой шкалы баллов.
ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope кому[0,1].
Типы данных: double
sc - Модель кредитной карты показателейcreditscorecard объектМодель кредитной карты показателей возвращена как обновленная creditscorecard объект. Для получения дополнительной информации об использовании creditscorecard объект, см. creditscorecard.
Оценка индивидуума i дается по формуле
Score(i) = Shift + Slope*(b0 + b1*WOE1(i) + b2*WOE2(i)+ ... +bp*WOEp(i))
где bj - коэффициент j-й переменной в модели, а WOEj (i) - значение веса доказательства (WOE) для i-го индивидуума, соответствующего j-й переменной модели .Shift и Slope Далее рассматриваются константы масштабирования. Константой масштабирования можно управлять с помощью formatpoints.
Если данные для отдельного i находятся в i-й строке данного набора данных, для вычисления оценки данные (i, j) связываются с использованием существующих карт связывания и преобразуются в соответствующее значение веса доказательства.WOEj (i). Используя коэффициенты модели, немасштабированный балл вычисляется как
s = b0 + b1*WOE1(i) + ... +bp*WOEp(i).
Для простоты предположим в приведенном выше описании, что j-я переменная в модели является j-м столбцом на входе данных, хотя, в общем, порядок переменных в данном наборе данных не должен соответствовать порядку переменных в модели, и набор данных может иметь дополнительные переменные, которые не используются в модели.
Опциями форматирования можно управлять с помощью formatpoints. Когда базовые точки сообщаются отдельно (см. formatpoints параметр BasePoints), базовые точки задаются
Base Points = Shift + Slope*b0,
Points_ji = Slope*(bj*WOEj(i))).
По умолчанию базовые точки не сообщаются отдельно, в этом случае
Points_ji = (Shift + Slope*b0)/p + Slope*(bj*WOEj(i)),
По умолчанию к точкам не применяется округление score функция (Round является None). Если Round имеет значение AllPoints использование formatpoints, то точки для отдельного i для переменной j задаются
points if rounding is 'AllPoints': round( Points_ji )
Round имеет значение FinalScore использование formatpoints, то баллы на предсказателя не округляются, и округляется только итоговая оценкаscore if rounding is 'FinalScore': round(Score(i)).
Относительно параметров масштабирования, Shift параметр и Slope параметр может быть установлен непосредственно с помощью ShiftAndSlope параметр formatpoints. Кроме того, можно использовать formatpoints параметр для WorstAndBestScores. В этом случае параметры Shift и Slope обнаруживаются внутри системы путем решения
Shift + Slope*smin = WorstScore, Shift + Slope*smax = BestScore,
WorstScore и BestScore являются первым и вторым элементами в formatpoints параметр для WorstAndBestScores и smin и smax являются минимальными и максимально возможными немасштабированными показателями:smin = b0 + min(b1*WOE1) + ... +min(bp*WOEp), smax = b0 + max(b1*WOE1) + ... +max(bp*WOEp).
Третьей альтернативой баллам по шкале является PointsOddsAndPDO параметр в formatpoints. В этом случае предположим, что немасштабированный балл s дает логарифмические коэффициенты для строки, и Shift и Slope параметры определяются путем решения следующей системы:
Points = Shift + Slope*log(Odds) Points + PDO = Shift + Slope*log(2*Odds)
Points, Odds, и PDO («указывает удвоить шансы») являются первым, вторым и третьим элементами в PointsOddsAndPDO параметр.Всякий раз, когда данный набор данных имеет отсутствующие или выходящие за пределы диапазона данные (i, j), точки для предсказателя j, для отдельного i, устанавливаются вNaN по умолчанию, что приводит к отсутствию оценки для этой строки (a NaN оценка). Использование Missing параметр для formatpoints, вы можете изменить это поведение и установить соответствующее значение веса доказательства (WOE) равным нулю, или установить точки на минимальные точки или максимальные точки для этого предиктора.
[1] Андерсон, R. The Credit Скоринг Toolkit. Издательство Оксфордского университета, 2007 год.
[2] Рефаат, М. Карты оценки кредитных рисков: разработка и внедрение с использованием SAS. lulu.com, 2011.
autobinning | bindata | bininfo | creditscorecard | displaypoints | fitmodel | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | setmodel | validatemodel
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.