Формат точек карты показателей и масштабирование
изменяет точки карты показателей и масштабирование с помощью необязательных аргументов пары "имя-значение". Для примера используйте дополнительные аргументы пары "имя-значение", чтобы изменить масштабирование счетов или округление точек. 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'
предикторы, отсутствуют данные (NaN
s и <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) привязываются с помощью существующих карт бининга и преобразуются в соответствующее значение
веса доказательств WOE
j (<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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.