Точки протокола результатов формата и масштабирование
изменяет точки протокола результатов и масштабирующий использование дополнительных аргументов пары "имя-значение". Например, используйте дополнительные аргументы пары "имя-значение", чтобы изменить масштабирование баллов или округление точек. sc
= formatpoints(sc,Name,Value
)
В этом примере показано, как использовать formatpoints
масштабироваться путем обеспечения точек, уровней разногласий и PDO (указывает, чтобы удвоить разногласия). При помощи formatpoints
чтобы масштабироваться, можно поместить точки и баллы в желаемой области значений, которая более значима практически. Технически, это включает линейное преобразование от немасштабированного до масштабированных точек formatpoints
функция.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011). Используйте 'IDVar'
аргумент в creditscorecard
указать на тот 'CustID'
содержит информацию о ID и не должен быть включен как переменный предиктор.
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'
содержит информацию о ID и не должен быть включен как переменный предиктор.
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.0000
MaxScore = 850
Как ожидалось, значения MinScore
и MaxScore
соответствуйте желаемым худшим и лучшим баллам.
В этом примере показано, как использовать formatpoints
масштабироваться путем обеспечения Shift
и Slope
значения. При помощи formatpoints
чтобы масштабироваться, можно поместить точки и баллы в желаемой области значений, которая более значима практически. Технически, это включает линейное преобразование от немасштабированного до масштабированных точек formatpoints
функция.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011). Используйте 'IDVar'
аргумент в creditscorecard
указать на тот 'CustID'
содержит информацию о ID и не должен быть включен как переменный предиктор.
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
разделить базисные точки от остальной части точек, присвоенных каждому переменному предиктору. formatpoints
аргумент пары "имя-значение" 'BasePoints'
служит этой цели.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить data
(использование набора данных от Refaat 2011). Используйте 'IDVar'
аргумент в creditscorecard
указать на тот 'CustID'
содержит информацию о ID и не должен быть включен как переменный предиктор.
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
к истине таблица информации о точках сообщает о базисных точках отдельно в первой строке. Минимальные и максимальные возможные баллы не затронуты этой опцией.
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'
содержит информацию о ID и не должен быть включен как переменный предиктор.
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'
(опция по умолчанию), никакое округление не применяется к точкам или баллам, и рейтинг риска абсолютно сопоставим с калиброванной моделью.
When 'Rounding'
установлен в 'FinalScore'
, округление только применяется к итоговым счетам. В этом случае: a) У клиентов с различными баллами (различный риск) может быть тот же округленный счет. b) У клиентов с тем же округленным счетом могут быть различные вероятности по умолчанию. c) У клиента с выше округленными баллами всегда будет более низкая вероятность по умолчанию, чем клиенты с более низкими баллами.
Когда 'Rounding'
установлен в 'AllPoints'
, округление применяется ко всем точкам в протоколе результатов (все интервалы, все предикторы). В этом случае: a) У клиентов с различными баллами (различный риск) может быть тот же округленный счет, или их рейтинг может даже быть инвертирован (у клиента с более низким исходным счетом может быть более высокий округленный счет). b) У клиентов с тем же округленным счетом могут быть различные вероятности по умолчанию. c) У клиента с выше округленными баллами могут в некоторых случаях быть более высокие вероятности по умолчанию, чем клиенты с более низкими баллами.
Создайте creditscorecard
Чтобы продемонстрировать округляющееся поведение, сначала создайте creditscorecard
объект.
load CreditCardData sc = creditscorecard(data,'IDVar','CustID','ResponseVar','status'); sc = autobinning(sc); sc = modifybins(sc,'CustIncome','CutPoints',20000:5000:60000); sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1487.9719, Chi2Stat = 35.469392, PValue = 2.5909009e-09 2. Adding TmWBank, Deviance = 1465.7998, Chi2Stat = 22.172089, PValue = 2.4927133e-06 3. Adding AMBalance, Deviance = 1455.206, Chi2Stat = 10.593833, PValue = 0.0011346548 4. Adding EmpStatus, Deviance = 1446.3918, Chi2Stat = 8.8142314, PValue = 0.0029889009 5. Adding CustAge, Deviance = 1440.6825, Chi2Stat = 5.709236, PValue = 0.016875883 6. Adding ResStatus, Deviance = 1436.1363, Chi2Stat = 4.5462043, PValue = 0.032991806 7. Adding OtherCC, Deviance = 1431.9546, Chi2Stat = 4.1817827, PValue = 0.040860699 Generalized linear regression model: status ~ [Linear formula with 8 terms in 7 predictors] Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ (Intercept) 0.70247 0.064046 10.968 5.4345e-28 CustAge 0.60579 0.24405 2.4822 0.013058 ResStatus 1.4463 0.65427 2.2105 0.02707 EmpStatus 0.90501 0.29262 3.0928 0.0019828 CustIncome 0.70869 0.20535 3.4512 0.00055815 TmWBank 1.0839 0.23244 4.6631 3.1145e-06 OtherCC 1.0906 0.52936 2.0602 0.039377 AMBalance 1.0148 0.32273 3.1445 0.0016636 1200 observations, 1192 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 91.5, p-value = 6.12e-17
Примените 'Rounding'
Опции
Примените каждый три 'Rounding'
опции к creditscorecard
объект.
sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]); % No Rounding points1 = displaypoints(sc); [S1,P1] = score(sc); defProb1 = probdefault(sc); sc = formatpoints(sc,'Round','AllPoints'); % 'AllPoints' Rounding points2 = displaypoints(sc); [S2,P2] = score(sc); defProb2 = probdefault(sc); sc = formatpoints(sc,'Round','FinalScore'); % 'FinalScore' Rounding points3 = displaypoints(sc); [S3,P3] = score(sc); defProb3 = probdefault(sc);
Сравните 'Rounding'
Опции
Визуализируйте вероятности по умолчанию по сравнению с баллами.
figure hold on scatter(S1, defProb1, 'g*') scatter(S2, defProb2, 'ro') scatter(S3, defProb3, 'b+') legend('No Rounding','AllPoints','FinalScore') axis([388 394 0.695 0.705]) xlabel('Credit score') ylabel('Default probability') title('Default probabilities and Credit scores') grid
Смотрите точки и общую музыку к каждому 'Rounding'
опция, в формате таблицы.
ind = [208 363 694 886]; ProbDefault = defProb1(ind)
ProbDefault = 4×1
0.6997
0.6989
0.6982
0.6972
% ScoreNoRounding = S1(ind)
PointsNoRounding = P1(ind,:);
PointsNoRounding.Total = S1(ind)
PointsNoRounding=4×8 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance Total
_______ _________ _________ __________ _______ _______ _________ ______
52.9 61.555 58.503 24.647 51.551 50.416 89.4 388.97
67.65 61.555 58.503 24.647 51.551 75.723 49.64 389.27
54.234 61.555 58.503 24.647 51.551 75.723 63.271 389.48
52.9 92.441 58.503 24.647 61.277 50.416 49.64 389.82
% ScoreAllPoints = S2(ind)
PointsAllPoints = P2(ind,:);
PointsAllPoints.Total = S2(ind)
PointsAllPoints=4×8 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance Total
_______ _________ _________ __________ _______ _______ _________ _____
53 62 59 25 52 50 89 390
68 62 59 25 52 76 50 392
54 62 59 25 52 76 63 391
53 92 59 25 61 50 50 390
% ScoreFinalScore = S3(ind)
PointsFinalScore = P3(ind,:);
PointsFinalScore.Total = S3(ind)
PointsFinalScore=4×8 table
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance Total
_______ _________ _________ __________ _______ _______ _________ _____
52.9 61.555 58.503 24.647 51.551 50.416 89.4 389
67.65 61.555 58.503 24.647 51.551 75.723 49.64 389
54.234 61.555 58.503 24.647 51.551 75.723 63.271 389
52.9 92.441 58.503 24.647 61.277 50.416 49.64 390
Исходный creditscorecard
модель, без округления, была калибрована к данным с логистической регрессией. Рейтинг и вероятности имеют статистическую основу.
Округление, однако, эффективно изменяет creditscorecard
модель. Когда только итоговый счет округлен, это приводит к некоторым "связям" в округленных баллах, но по крайней мере риск, занимающий место через баллы, сохраняется (потому что если s1 <= s2, то раунд (s1) <= раунд (s2)).
Однако, когда вы вокруг всех точек, счет может получить дополнительные очки случайно. Например, во второй строке в таблице (строка 363 исходных данных), точки для всех предикторов окружены почти 0.5
. Исходным счетом является 389.27
. Округление итогового счета делает его 389
. Однако округление всех точек делает его 392
, это - три точки выше, чем округление итогового счета.
В этом примере показано, как использовать formatpoints
выиграть то, чтобы избегать или данные из области значений. Когда данные выиграны, некоторые наблюдения могут или отсутствовать (NaN
, или undefined
) или из области значений. Необходимо будет решить, присвоены ли точки этим случаям. Используйте аргумент пары "имя-значение" Missing
сделать так.
Создайте creditscorecard
объект с помощью CreditCardData.mat
файл, чтобы загрузить данные (использующий набор данных от Refaat 2011). Используйте 'IDVar'
аргумент в creditscorecard
указать на тот 'CustID'
содержит информацию о ID и не должен быть включен как переменный предиктор.
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
с точками, соответствующими нулевому Весу доказательства (WOE).
sc = formatpoints(sc,'Missing','ZeroWOE'); [Scores,Points] = score(sc,newdata); disp(Scores)
0.9667 1.0859 0.8978 1.5513 1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _________ ________ _________ 0.10034 -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472 0.10034 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472 0.21445 0.10034 0.31449 0.081611 0.39607 -0.19168 -0.017472 0.23039 0.10034 0.31449 0.43693 -0.044811 0.15842 0.35551 0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
В качестве альтернативы используйте аргумент пары "имя-значение" Missing
заменять отсутствующее значение на минимум указывает для предикторов, которые имеют отсутствующие значения.
sc = formatpoints(sc,'Missing','MinPoints'); [Scores,Points] = score(sc,newdata); disp(Scores)
0.7074 0.8266 0.7662 1.4197 1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance ________ _________ _________ __________ _________ ________ _________ -0.15894 -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472 -0.15894 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472 0.21445 -0.031252 0.31449 0.081611 0.39607 -0.19168 -0.017472 0.23039 -0.031252 0.31449 0.43693 -0.044811 0.15842 0.35551 0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
Как третья альтернатива, используйте аргумент пары "имя-значение" Missing
заменять отсутствующее значение на максимум указывает для предикторов, которые имеют отсутствующие значения.
sc = formatpoints(sc,'Missing','MaxPoints'); [Scores,Points] = score(sc,newdata); disp(Scores)
1.3454 1.4646 1.1739 1.8273 1.4535
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _________ ________ _________ 0.479 -0.031252 -0.076317 0.43693 0.39607 0.15842 -0.017472 0.479 0.12696 0.31449 0.43693 -0.033752 0.15842 -0.017472 0.21445 0.37641 0.31449 0.081611 0.39607 -0.19168 -0.017472 0.23039 0.37641 0.31449 0.43693 -0.044811 0.15842 0.35551 0.479 0.12696 0.31449 0.43693 -0.044811 0.15842 -0.017472
Проверьте, что минимальные и максимальные точки, присвоенные недостающим данным, соответствуют минимальным и максимальным точкам для соответствующих предикторов. Точки для 'CustAge'
сообщаются в первых семи строках таблицы информации о точках. Для 'ResStatus'
точки находятся в строках 8 - 10.
PointsInfo = displaypoints(sc); PointsInfo(1:7,:)
ans=7×3 table
Predictors Bin Points
___________ ____________ _________
{'CustAge'} {'[0,33)' } -0.15894
{'CustAge'} {'[33,37)' } -0.14036
{'CustAge'} {'[37,40)' } -0.060323
{'CustAge'} {'[40,46)' } 0.046408
{'CustAge'} {'[46,48)' } 0.21445
{'CustAge'} {'[48,58)' } 0.23039
{'CustAge'} {'[58,Inf]'} 0.479
min(PointsInfo.Points(1:7))
ans = -0.1589
max(PointsInfo.Points(1:7))
ans = 0.4790
PointsInfo(8:10,:)
ans=3×3 table
Predictors Bin Points
_____________ ______________ _________
{'CustAge' } {'<missing>' } 0.479
{'ResStatus'} {'Tenant' } -0.031252
{'ResStatus'} {'Home Owner'} 0.12696
min(PointsInfo.Points(8:10))
ans = -0.0313
max(PointsInfo.Points(8:10))
ans = 0.4790
BinMissingData'
ОпцияЭтот пример описывает присвоение точек для недостающих данных когда 'BinMissingData'
опция установлена в true
.
Предикторы, которые имеют недостающие данные в наборе обучающих данных, имеют явный интервал для <missing>
с соответствующими точками в итоговом протоколе результатов. Эти точки вычисляются из значения Веса доказательства (WOE) для <missing>
интервал и логистические коэффициенты модели. Для выигрыша целей эти точки присвоены отсутствующим значениям и значениям из области значений.
Предикторы без недостающих данных в наборе обучающих данных не имеют никакого <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>
) в обучающих данных и процессе раскладывания оценивает значение WOE -0.15787
и 0.026469
соответственно для недостающих данных в этих предикторах, как показано выше.
Для EmpStatus
и CustIncome
нет никакого явного интервала для отсутствующих значений, потому что обучающие данные не имеют никаких отсутствующих значений для этих предикторов.
bi = bininfo(sc,'EmpStatus');
disp(bi)
Bin Good Bad Odds WOE InfoValue ____________ ____ ___ ______ ________ _________ {'Unknown' } 396 239 1.6569 -0.19947 0.021715 {'Employed'} 407 158 2.5759 0.2418 0.026323 {'Totals' } 803 397 2.0227 NaN 0.048038
bi = bininfo(sc,'CustIncome');
disp(bi)
Bin Good Bad Odds WOE InfoValue _________________ ____ ___ _______ _________ __________ {'[0,29000)' } 53 58 0.91379 -0.79457 0.06364 {'[29000,33000)'} 74 49 1.5102 -0.29217 0.0091366 {'[33000,35000)'} 68 36 1.8889 -0.06843 0.00041042 {'[35000,40000)'} 193 98 1.9694 -0.026696 0.00017359 {'[40000,42000)'} 68 34 2 -0.011271 1.0819e-05 {'[42000,47000)'} 164 66 2.4848 0.20579 0.0078175 {'[47000,Inf]' } 183 56 3.2679 0.47972 0.041657 {'Totals' } 803 397 2.0227 NaN 0.12285
Используйте fitmodel
подбирать модель логистической регрессии использование данных о Весе доказательства (WOE). fitmodel
внутренне преобразовывает все переменные предикторы в значения WOE, с помощью интервалов, найденных с автоматическим процессом раскладывания. fitmodel
затем подбирает модель логистической регрессии использование пошагового метода (по умолчанию). Для предикторов, которые имеют недостающие данные, существует явный <missing>
интервал, с соответствующим значением WOE, вычисленным из данных. При использовании fitmodel
, соответствующее значение WOE для <missing>
интервал применяется при выполнении преобразования WOE.
[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08 2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06 3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601 4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257 5. Adding CustAge, Deviance = 1442.8477, Chi2Stat = 4.4974731, PValue = 0.033944979 6. Adding ResStatus, Deviance = 1438.9783, Chi2Stat = 3.86941, PValue = 0.049173805 7. Adding OtherCC, Deviance = 1434.9751, Chi2Stat = 4.0031966, PValue = 0.045414057 Generalized linear regression model: status ~ [Linear formula with 8 terms in 7 predictors] Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ (Intercept) 0.70229 0.063959 10.98 4.7498e-28 CustAge 0.57421 0.25708 2.2335 0.025513 ResStatus 1.3629 0.66952 2.0356 0.04179 EmpStatus 0.88373 0.2929 3.0172 0.002551 CustIncome 0.73535 0.2159 3.406 0.00065929 TmWBank 1.1065 0.23267 4.7556 1.9783e-06 OtherCC 1.0648 0.52826 2.0156 0.043841 AMBalance 1.0446 0.32197 3.2443 0.0011775 1200 observations, 1192 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 88.5, p-value = 2.55e-16
Масштабируйте точки протокола результатов "точками, разногласиями, и указывает, чтобы удвоить разногласия (PDO)" метод с помощью 'PointsOddsAndPDO'
аргумент formatpoints
. Предположим, что вы хотите, чтобы счет 500 точек имел разногласия 2 (вдвое более вероятный быть хорошими, чем быть плохими) и что разногласия удваивают каждые 50 точек (так, чтобы 550 точек имели бы разногласия 4).
Отобразите протокол результатов, показывающий масштабированные точки для предикторов, сохраненных в подходящей модели.
sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
PointsInfo = displaypoints(sc)
PointsInfo=38×3 table
Predictors Bin Points
_____________ ______________ ______
{'CustAge' } {'[0,33)' } 54.062
{'CustAge' } {'[33,37)' } 56.282
{'CustAge' } {'[37,40)' } 60.012
{'CustAge' } {'[40,46)' } 69.636
{'CustAge' } {'[46,48)' } 77.912
{'CustAge' } {'[48,51)' } 78.86
{'CustAge' } {'[51,58)' } 80.83
{'CustAge' } {'[58,Inf]' } 96.76
{'CustAge' } {'<missing>' } 64.984
{'ResStatus'} {'Tenant' } 62.138
{'ResStatus'} {'Home Owner'} 73.248
{'ResStatus'} {'Other' } 90.828
{'ResStatus'} {'<missing>' } 74.125
{'EmpStatus'} {'Unknown' } 58.807
{'EmpStatus'} {'Employed' } 86.937
{'EmpStatus'} {'<missing>' } NaN
⋮
Заметьте что точки для <missing>
интервал для CustAge
и ResStatus
явным образом показаны (как 64.9836
и 74.1250
, соответственно). Эти точки вычисляются из значения WOE для <missing>
интервал и логистические коэффициенты модели.
Для предикторов, которые не имеют никаких недостающих данных в наборе обучающих данных, нет никакого явного <missing>
интервал. По умолчанию точки установлены в NaN
для недостающих данных и они приводят к счету NaN
при выполнении score
. Для предикторов, которые не имеют никакого явного <missing>
интервал, используйте аргумент 'Missing'
значения имени в
formatpoints
указать, как недостающие данные нужно лечить от выигрыша целей.
В целях рисунка возьмите несколько строк из исходных данных как тестовые данные и введите некоторые недостающие данные. Также введите некоторых недопустимые, или значения из области значений. Для числовых данных значения ниже минимума (или выше максимума) позволенный рассматриваются недопустимыми, такие как отрицательная величина для возраста (вспомните 'MinValue'
был ранее установлен в 0
для CustAge
и CustIncome
). Для категориальных данных недопустимые значения являются категориями, не явным образом включенными в протокол результатов, например, жилое состояние, не ранее сопоставленное с категориями протокола результатов, такими как "Дом" или бессмысленная строка, такими как "abc123".
tdata = dataMissing(11:18,mdl.PredictorNames); % Keep only the predictors retained in the model % Set some missing values tdata.CustAge(1) = NaN; tdata.ResStatus(2) = '<undefined>'; tdata.EmpStatus(3) = '<undefined>'; tdata.CustIncome(4) = NaN; % Set some invalid values tdata.CustAge(5) = -100; tdata.ResStatus(6) = 'House'; tdata.EmpStatus(7) = 'Freelancer'; tdata.CustIncome(8) = -1; disp(tdata)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ ___________ ___________ __________ _______ _______ _________ NaN Tenant Unknown 34000 44 Yes 119.8 48 <undefined> Unknown 44000 14 Yes 403.62 65 Home Owner <undefined> 48000 6 No 111.88 44 Other Unknown NaN 35 No 436.41 -100 Other Employed 46000 16 Yes 162.21 33 House Employed 36000 36 Yes 845.02 39 Tenant Freelancer 34000 40 Yes 756.26 24 Home Owner Employed -1 19 Yes 449.61
Выиграйте новые данные и смотрите, как точки присвоены для пропавших без вести CustAge
и ResStatus
, потому что у нас есть явный интервал с точками для <missing>
. Однако для EmpStatus
и CustIncome
score
функционируйте устанавливает точки на NaN
.
[Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 NaN NaN 551.7922 487.9588 NaN NaN
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 64.984 62.138 58.807 67.893 61.858 75.622 89.922 78.86 74.125 58.807 82.439 61.061 75.622 89.922 96.76 73.248 NaN 96.969 51.132 50.914 89.922 69.636 90.828 58.807 NaN 61.858 50.914 89.922 64.984 90.828 86.937 82.439 61.061 75.622 89.922 56.282 74.125 86.937 70.107 61.858 75.622 63.028 60.012 62.138 NaN 67.893 61.858 75.622 63.028 54.062 73.248 86.937 NaN 61.061 75.622 89.922
Используйте аргумент 'Missing'
значения имени в
formatpoints
выбрать, как присвоить точки отсутствующим значениям для предикторов, которые не имеют явного <missing>
интервал. В этом примере используйте 'MinPoints'
опция для 'Missing'
аргумент. Минимум указывает для EmpStatus
в протоколе результатов, отображенном выше, 58.8072
, и для CustIncome
минимальными точками является 29.3753
.
sc = formatpoints(sc,'Missing','MinPoints'); [Scores,Points] = score(sc,tdata); disp(Scores)
481.2231 520.8353 517.7532 451.3405 551.7922 487.9588 449.3577 470.2267
disp(Points)
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 64.984 62.138 58.807 67.893 61.858 75.622 89.922 78.86 74.125 58.807 82.439 61.061 75.622 89.922 96.76 73.248 58.807 96.969 51.132 50.914 89.922 69.636 90.828 58.807 29.375 61.858 50.914 89.922 64.984 90.828 86.937 82.439 61.061 75.622 89.922 56.282 74.125 86.937 70.107 61.858 75.622 63.028 60.012 62.138 58.807 67.893 61.858 75.622 63.028 54.062 73.248 86.937 29.375 61.061 75.622 89.922
sc
— Модель протокола результатов кредитаcreditscorecard
объектМодель протокола результатов кредита в виде creditscorecard
объект. Используйте creditscorecard
создать creditscorecard
объект.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
sc = formatpoints(sc,'BasePoints',true,'Round','AllPoints','WorstAndBestScores',[100, 700])
ShiftAndSlope
, PointsOddsAndPDO
, и WorstAndBestScores
масштабируют методы, и можно использовать только один из этих аргументов пары "имя-значение" одновременно. Другие три аргумента пары "имя-значение" (BasePoints
пропавшие без вести
, и Round
) не масштабируют методы и может использоваться вместе или с любым из трех методов масштабирования.
'BasePoints'
— Индикатор для разделения базисных точекfalse
(значение по умолчанию) | логический скалярИндикатор для разделения базисных точек в виде разделенной запятой пары, состоящей из 'BasePoints'
и логический скаляр. Если true
, протокол результатов явным образом разделяет базисные точки. Если false
, базисные точки распространены через все переменные в creditscorecard
объект.
Типы данных: char
'Missing'
— Индикатор для точек, присвоенных тому, чтобы избегать или информации из области значений при выигрышеNoScore
(значение по умолчанию) | вектор символов со значениями NoScore
, ZeroWOE
, MinPoints
, и MaxPoints
Индикатор для точек, присвоенных тому, чтобы избегать или информации из области значений при выигрыше в виде разделенной запятой пары, состоящей из 'Missing'
и вектор символов со значением для NoScore
, ZeroWOE
, MinPoints
, или MaxPoints
, где:
NoScore
— Пропавшие без вести и данные из области значений не зарабатывают очки присвоенные, и точки установлены в NaN
. Кроме того, общий счет установлен в NaN
.
ZeroWOE
— Пропавшие без вести или данные из области значений присвоены нулевое значение Веса доказательства (WOE).
MinPoints
— Пропавшие без вести или данные из области значений понимают минимальные возможные мысли для того предиктора. Это штрафует счет, если более высокие баллы лучше.
MaxPoints
— Пропавшие без вести или данные из области значений понимают максимальные возможные мысли для того предиктора. Это штрафует счет, если более низкие баллы лучше.
При использовании creditscorecard
аргумент 'BinMissingData'
значения имени со значением
true
, недостающие данные для числовых и категориальных предикторов сгруппированы в отдельном интервале, пометил <missing>
. <missing>
интервал только содержит отсутствующие значения для предиктора и не содержит недопустимые или значения из области значений для предиктора.
Типы данных: char
'Round'
— Индикатор, ли к круглым точкам или баллам'None'
(значение по умолчанию) | вектор символов с values'AllPoints'
, 'FinalScore'
Индикатор, ли к круглым точкам или баллам в виде разделенной запятой пары, состоящей из 'Round'
и вектор символов со значениями 'AllPoints'
, 'FinalScore'
или 'None'
, где:
None
— Никакое округление не применяется.
AllPoints
— Примените округление к точкам каждого предиктора перед сложением общего счета.
FinalScore
— Вокруг итогового счета только (округление применяется после того, как все точки сложены).
Для получения дополнительной информации и пример использования 'Round'
аргумент пары "имя-значение", смотрите Округление и Вероятности По умолчанию.
Типы данных: char
'ShiftAndSlope'
— Индикатор для сдвига и наклонных масштабных коэффициентов
(значение по умолчанию) | числовой массив с двумя элементами [Shift,Slope]
Индикатор для сдвига и наклонные масштабные коэффициенты для протокола результатов кредита в виде разделенной запятой пары, состоящей из 'ShiftAndSlope'
и числовой массив с двумя элементами [Shift, Slope]
. Slope
не может быть нуль. ShiftAndSlope
значения используются, масштабируют модель выигрыша.
ShiftAndSlope
, PointsOddsAndPDO
, и WorstAndBestScores
масштабируют методы, и можно использовать только один из этих аргументов пары "имя-значение" одновременно. Другие три аргумента пары "имя-значение" (BasePoints
пропавшие без вести
, и Round
) не масштабируют методы и может использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope
to[0,1]
.
Типы данных: double
'PointsOddsAndPDO'
— Индикатор для целевых точек для данных разногласий и двойного уровня разногласий[Points,Odds,PDO]
Индикатор для целевых точек (Points
) для данного уровня разногласий (Odds
) и желаемое число точек, чтобы удвоить разногласия (PDO
) в виде разделенной запятой пары, состоящей из 'PointsOddsAndPDO'
и числовой массив с тремя элементами [Points,Odds,PDO]
. Odds
должно быть положительное число. PointsOddsAndPDO
значения используются, чтобы найти масштабные коэффициенты для модели выигрыша.
Точки, чтобы удвоить разногласия (PDO
) может быть положительным или отрицательным, в зависимости от того, означают ли более высокие баллы более низкий риск, или наоборот.
ShiftAndSlope
, PointsOddsAndPDO
, и WorstAndBestScores
масштабируют методы, и можно использовать только один из этих аргументов пары "имя-значение" одновременно. Другие три аргумента пары "имя-значение" (BasePoints
пропавшие без вести
, и Round
) не масштабируют методы и может использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope
to[0,1]
.
Типы данных: double
'WorstAndBestScores'
— Индикатор для худшего (самый высокий риск) и лучше всего (самый низкий риск) баллы в протоколе результатов[WorstScore,BestScore]
Индикатор для худшего (самый высокий риск) и лучше всего (самый низкий риск) баллы в протоколе результатов в виде разделенной запятой пары, состоящей из 'WorstAndBestScores'
и числовой массив с двумя элементами [WorstScore,BestScore]
. WorstScore
и BestScore
должны быть различные значения. Они WorstAndBestScores
значения используются, чтобы найти масштабные коэффициенты для модели выигрыша.
WorstScore
означает самый опасный счет, и его значение могло быть ниже или выше, чем 'лучший' счет. Другими словами, 'минимальный' счет может быть 'худшим' счетом или 'лучшим' счетом, в зависимости от желаемой шкалы выигрыша.
ShiftAndSlope
, PointsOddsAndPDO
, и WorstAndBestScores
масштабируют методы, и можно использовать только один из этих аргументов пары "имя-значение" одновременно. Другие три аргумента пары "имя-значение" (BasePoints
пропавшие без вести
, и Round
) не масштабируют методы и может использоваться вместе или с любым из трех методов масштабирования.
Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope
to[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 th переменная в модели, и WOEj (i) является значением Веса доказательства (WOE) для the ith индивидуума, соответствующего j th переменная модели. Shift
и Slope
масштабируют константы, далее обсужденные ниже. Постоянным масштабированием можно управлять с formatpoints
.
Если данные для отдельного i находятся в i-th строка данного набора данных, чтобы вычислить счет, данные (i, j) являются сгруппированными использующими существующими картами раскладывания, и преобразованный в соответствующий Вес значения Доказательства WOE
j (i). Используя коэффициенты модели, немасштабированный счет вычисляется как
s = b0 + b1*WOE1(i) + ... +bp*WOEp(i).
Для простоты примите в описании выше этого, j-th переменная в модели является j-th столбец во вводе данных, несмотря на то, что в целом порядок переменных в данном наборе данных не должен совпадать с порядком переменных в модели, и набор данных мог иметь дополнительные переменные, которые не используются в модели.
Параметрами форматирования можно управлять с помощью 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
по умолчанию, который приводит к недостающему счету к той строке (NaN
выиграйте). Используя Missing
параметр для formatpoints
, можно изменить это поведение и установить соответствующее значение Веса доказательства (WOE), чтобы обнулить, или установить точки на минимальные точки или максимальные точки для того предиктора.
[1] Андерсон, R. Инструментарий рейтинга кредитоспособности. Издательство Оксфордского университета, 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.