Формат точек карты показателей и масштабирование
изменяет точки карты показателей и масштабирование с помощью необязательных аргументов пары "имя-значение". Для примера используйте дополнительные аргументы пары "имя-значение", чтобы изменить масштабирование счетов или округление точек. 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');
Выполните автоматическое раскладывание в интервал для всех предикторов.
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');
Выполните автоматическое раскладывание в интервал для всех предикторов.
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');
Выполните автоматическое раскладывание в интервал для всех предикторов.
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 чтобы отделить базовые точки от остальных точек, назначенных каждой переменной. The formatpoints аргумент пары "имя-значение" 'BasePoints' служит этой цели.
Создайте creditscorecard объект с использованием CreditCardData.mat файл для загрузки data (использование набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard чтобы указать, что 'CustID' содержит идентификационную информацию и не должен включаться в качестве переменной предиктора.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID');
Выполните автоматическое раскладывание в интервал для всех предикторов.
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');
Выполните автоматическое раскладывание в интервал для всех предикторов.
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'округление применяется только к итоговым счетам. В этом случае: а) Клиенты с различными счетами (различными рисками) могут иметь одинаковый округленный счет. б) Клиенты с тем же округлым счетом могут иметь различные вероятности по умолчанию. c) Клиент с более высокими округлыми счетами всегда будет иметь более низкую вероятность по умолчанию, чем клиенты с более низкими счетами.
Когда 'Rounding' установлено в 'AllPoints'округление применяется ко всем точкам в карте показателей (все интервалы, все предикторы). В этом случае: а) Клиенты с различными счетами (различными рисками) могут иметь одинаковый округлый счет, или их рейтинг может даже быть отменен (клиент с более низким исходным счетом может иметь более высокий округлый счет). б) Клиенты с тем же округлым счетом могут иметь различные вероятности по умолчанию. 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, то round (s1) < = round (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');
Выполните автоматическое раскладывание в интервал для всех предикторов.
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 с точками, соответствующими нулевому весу доказательств (ГОРЕ).
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> интервал и коэффициенты логистической модели. В целях оценки эти точки присваиваются отсутствующим значениям и значениям вне области допустимого значения.
Предикторы без отсутствующих данных в наборе обучающих данных не имеют <missing> интервал, поэтому никакое ГОРЕ не может быть оценено из обучающих данных. По умолчанию точки для отсутствующих и вне области допустимого заданы равными NaNи это приводит к счету NaN при запуске score. Для предикторов, которые не имеют явных <missing> интервал, используйте аргумент имя-значение '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 для ввода отсутствующих числовых или категорийных данных в отдельное интервал. Применить автоматическое раскладывание.
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>) в обучающих данных и процессе раскладывания оценивает значение ГОРЕ -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> интервал с соответствующим значением WOE, вычисленным из данных. При использовании fitmodel, соответствующее значение ГОРЕ для <missing> Интервал применяется при выполнении преобразования ГОРЕ.
[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
Масштабируйте точки карты показателей методом «баллы, шансы и баллы к удвоению шансов (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, соответственно). Эти точки вычисляются из значения ГОРЕ для <missing> интервал и коэффициенты логистической модели.
Для предикторов, которые не имеют отсутствующих данных в наборе обучающих данных, нет явных <missing> Интервал. По умолчанию для точек задано значение NaN для недостающих данных и они приводят к счету NaN при запуске score. Для предикторов, которые не имеют явных <missing> интервал, используйте аргумент имя-значение 'Missing' в formatpoints чтобы указать, как отсутствующие данные должны обрабатываться в целях оценки.
Для целей рисунка берите несколько строк из исходных данных в качестве тестовых данных и вводите некоторые недостающие данные. Также введите некоторые недопустимые или значения вне области допустимого значения. Для числовых данных значения ниже минимума (или выше максимума) считаются недопустимыми, например, отрицательное значение для возраста (recall '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>. The <missing> интервал содержит только отсутствующие значения для предиктора и не содержит недопустимых или вне области допустимого значения для предиктора.
Типы данных: char
'Round' - Индикатор округления точек или счетов'None'
(по умолчанию) | символьный вектор со значениями 'AllPoints', 'FinalScore'Индикатор округления точек или счетов, заданный как разделенная разделенными запятой парами, состоящая из 'Round' и вектор символов со значениями 'AllPoints', 'FinalScore' или 'None', где:
None - Округление не применяется.
AllPoints - Применить округление к точкам каждого предиктора перед суммированием общего счета.
FinalScore - Округлить только окончательный счет (округление применяется после сложения всех точек).
Для получения дополнительной информации и примера использования 'Round' аргумент пары "имя-значение", см. Округление и вероятности по умолчанию.
Типы данных: char
'ShiftAndSlope' - Индикатор параметров масштабирования сдвига и уклона[0,1]
(по умолчанию) | числовой массив с двумя элементами [Shift,Slope]Индикатор параметров масштабирования сдвига и наклона для карты показателей кредита, заданный как разделенная разделенными запятой парами, состоящая из 'ShiftAndSlope' и числовой массив с двумя элементами [Shift, Slope]. Slope не может быть нулем. The ShiftAndSlope используются значения масштаба модели оценки.
Примечание
ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores методы масштабирования, и вы можете использовать только один из этих аргументов пары "имя-значение" одновременно. Другие три аргументов пары "имя-значение" (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к неограниченным счетам, установите ShiftAndSlope на [0,1].
Типы данных: double
'PointsOddsAndPDO' - Индикатор для целевых точек для заданных шансов и двойного уровня шансов[Points,Odds,PDO]Индикатор для целевых точек (Points) для заданного уровня шансов (Odds) и желаемого числа точек удвоить шансы (PDO), заданная как разделенная разделенными запятой парами, состоящая из 'PointsOddsAndPDO' и числовой массив с тремя элементами [Points,Odds,PDO]. Odds должно быть положительным числом. The 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-й переменной в модели, а j WOE (i) - значение веса доказательства (WOE) для i-й индивидуумы, соответствующее переменной j-й модели. Shift и Slope являются масштабирующими константами, дополнительно обсуждаемыми ниже. Масштабной константой можно управлять с помощью formatpoints.
Если данные для отдельных i находятся в i -й строке заданного набора данных, для вычисления балла данные (i, j) привязываются с помощью существующих карт бининга и преобразуются в соответствующее значение веса доказательств WOEj (<reservedrangesplaceholder0>). Используя коэффициенты модели, немасштабированный счет вычисляется как
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] Anderson, R. The Credit Scoring Toolkit. Oxford University Press, 2007.
[2] Refaat, M. Кредитные карты оценки риска: Разработка и реализация с использованием SAS. lulu.com, 2011.
autobinning | bindata | bininfo | creditscorecard | displaypoints | fitmodel | modifybins | modifypredictor | plotbins | predictorinfo | probdefault | score | setmodel | validatemodel
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.