exponenta event banner

formatpoints

Форматирование точек карты показателей и масштабирование

Описание

пример

sc = formatpoints(sc,Name,Value) изменяет точки карты показателей и масштабирование с использованием необязательных аргументов пары имя-значение. Например, используйте необязательные аргументы пары имя-значение для изменения масштабирования баллов или округления точек.

Примеры

свернуть все

В этом примере показано, как использовать formatpoints для масштабирования путем предоставления точек, уровней шансов и PDO (точек для удвоения шансов). С помощью formatpoints Чтобы масштабировать, можно поставить очки и баллы в желаемый диапазон, который является более значимым для практических целей. Технически, это включает в себя линейное преобразование из не масштабированных в масштабированные точки посредством formatpoints функция.

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое binning to bin для всех предикторов.

sc = autobinning(sc);

Подгонка модели линейной регрессии с использованием параметров по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin            Points  
    ______________    ________________    _________

    {'CustAge'   }    {'[-Inf,33)'   }     -0.15894
    {'CustAge'   }    {'[33,37)'     }     -0.14036
    {'CustAge'   }    {'[37,40)'     }    -0.060323
    {'CustAge'   }    {'[40,46)'     }     0.046408
    {'CustAge'   }    {'[46,48)'     }      0.21445
    {'CustAge'   }    {'[48,58)'     }      0.23039
    {'CustAge'   }    {'[58,Inf]'    }        0.479
    {'CustAge'   }    {'<missing>'   }          NaN
    {'ResStatus' }    {'Tenant'      }    -0.031252
    {'ResStatus' }    {'Home Owner'  }      0.12696
    {'ResStatus' }    {'Other'       }      0.37641
    {'ResStatus' }    {'<missing>'   }          NaN
    {'EmpStatus' }    {'Unknown'     }    -0.076317
    {'EmpStatus' }    {'Employed'    }      0.31449
    {'EmpStatus' }    {'<missing>'   }          NaN
    {'CustIncome'}    {'[-Inf,29000)'}     -0.45716
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Масштабировать, предоставляя точки, уровни шансов и PDO (точки, чтобы удвоить шансы). Предположим, что вы хотите, чтобы оценка 500 очков иметь шансы 2 (в два раза больше вероятность быть хорошим, чем быть плохим) и что шансы удвоить каждые 50 очков (так что 550 очков будет иметь шансы 4).

sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin           Points
    ______________    ________________    ______

    {'CustAge'   }    {'[-Inf,33)'   }    52.821
    {'CustAge'   }    {'[33,37)'     }    54.161
    {'CustAge'   }    {'[37,40)'     }    59.934
    {'CustAge'   }    {'[40,46)'     }    67.633
    {'CustAge'   }    {'[46,48)'     }    79.755
    {'CustAge'   }    {'[48,58)'     }    80.905
    {'CustAge'   }    {'[58,Inf]'    }    98.838
    {'CustAge'   }    {'<missing>'   }       NaN
    {'ResStatus' }    {'Tenant'      }    62.031
    {'ResStatus' }    {'Home Owner'  }    73.444
    {'ResStatus' }    {'Other'       }    91.438
    {'ResStatus' }    {'<missing>'   }       NaN
    {'EmpStatus' }    {'Unknown'     }    58.781
    {'EmpStatus' }    {'Employed'    }    86.971
    {'EmpStatus' }    {'<missing>'   }       NaN
    {'CustIncome'}    {'[-Inf,29000)'}    31.309
      ⋮

MinScore = 355.5051
MaxScore = 671.6403

В этом примере показано, как использовать formatpoints для масштабирования путем предоставления Worst и Best значения баллов. С помощью formatpoints Чтобы масштабировать, можно поставить очки и баллы в желаемый диапазон, который является более значимым для практических целей. Технически, это предполагает линейное преобразование из нескрупулезных в масштабированные точки.

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое binning to bin для всех предикторов.

sc = autobinning(sc);

Подгонка модели линейной регрессии с использованием параметров по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin            Points  
    ______________    ________________    _________

    {'CustAge'   }    {'[-Inf,33)'   }     -0.15894
    {'CustAge'   }    {'[33,37)'     }     -0.14036
    {'CustAge'   }    {'[37,40)'     }    -0.060323
    {'CustAge'   }    {'[40,46)'     }     0.046408
    {'CustAge'   }    {'[46,48)'     }      0.21445
    {'CustAge'   }    {'[48,58)'     }      0.23039
    {'CustAge'   }    {'[58,Inf]'    }        0.479
    {'CustAge'   }    {'<missing>'   }          NaN
    {'ResStatus' }    {'Tenant'      }    -0.031252
    {'ResStatus' }    {'Home Owner'  }      0.12696
    {'ResStatus' }    {'Other'       }      0.37641
    {'ResStatus' }    {'<missing>'   }          NaN
    {'EmpStatus' }    {'Unknown'     }    -0.076317
    {'EmpStatus' }    {'Employed'    }      0.31449
    {'EmpStatus' }    {'<missing>'   }          NaN
    {'CustIncome'}    {'[-Inf,29000)'}     -0.45716
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Масштабирование путем предоставления 'Worst' и 'Best' значения баллов. Приведенный ниже диапазон является общим диапазоном баллов. Снова просмотрите информацию о баллах, чтобы убедиться, что они теперь масштабированы, а также отобразите масштабированные минимальные и максимальные баллы.

sc = formatpoints(sc,'WorstAndBestScores',[300 850]);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin           Points
    ______________    ________________    ______

    {'CustAge'   }    {'[-Inf,33)'   }    46.396
    {'CustAge'   }    {'[33,37)'     }    48.727
    {'CustAge'   }    {'[37,40)'     }    58.772
    {'CustAge'   }    {'[40,46)'     }    72.167
    {'CustAge'   }    {'[46,48)'     }    93.256
    {'CustAge'   }    {'[48,58)'     }    95.256
    {'CustAge'   }    {'[58,Inf]'    }    126.46
    {'CustAge'   }    {'<missing>'   }       NaN
    {'ResStatus' }    {'Tenant'      }    62.421
    {'ResStatus' }    {'Home Owner'  }    82.276
    {'ResStatus' }    {'Other'       }    113.58
    {'ResStatus' }    {'<missing>'   }       NaN
    {'EmpStatus' }    {'Unknown'     }    56.765
    {'EmpStatus' }    {'Employed'    }    105.81
    {'EmpStatus' }    {'<missing>'   }       NaN
    {'CustIncome'}    {'[-Inf,29000)'}    8.9706
      ⋮

MinScore = 300
MaxScore = 850.0000

Как и ожидалось, значения MinScore и MaxScore соответствуют желаемым худшим и лучшим баллам.

В этом примере показано, как использовать formatpoints для масштабирования путем предоставления Shift и Slope значения. С помощью formatpoints Чтобы масштабировать, можно поставить очки и баллы в желаемый диапазон, который является более значимым для практических целей. Технически, это включает в себя линейное преобразование из не масштабированных в масштабированные точки посредством formatpoints функция.

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое binning to bin для всех предикторов.

sc = autobinning(sc);

Подгонка модели линейной регрессии с использованием параметров по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin            Points  
    ______________    ________________    _________

    {'CustAge'   }    {'[-Inf,33)'   }     -0.15894
    {'CustAge'   }    {'[33,37)'     }     -0.14036
    {'CustAge'   }    {'[37,40)'     }    -0.060323
    {'CustAge'   }    {'[40,46)'     }     0.046408
    {'CustAge'   }    {'[46,48)'     }      0.21445
    {'CustAge'   }    {'[48,58)'     }      0.23039
    {'CustAge'   }    {'[58,Inf]'    }        0.479
    {'CustAge'   }    {'<missing>'   }          NaN
    {'ResStatus' }    {'Tenant'      }    -0.031252
    {'ResStatus' }    {'Home Owner'  }      0.12696
    {'ResStatus' }    {'Other'       }      0.37641
    {'ResStatus' }    {'<missing>'   }          NaN
    {'EmpStatus' }    {'Unknown'     }    -0.076317
    {'EmpStatus' }    {'Employed'    }      0.31449
    {'EmpStatus' }    {'<missing>'   }          NaN
    {'CustIncome'}    {'[-Inf,29000)'}     -0.45716
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Масштабирование путем предоставления 'Shift' и 'Slope' значения. В этом примере имеется произвольный выбор сдвига и наклона. Снова просмотрите информацию о баллах, чтобы убедиться, что они теперь масштабированы, а также отобразите масштабированные минимальные и максимальные баллы.

sc = formatpoints(sc,'ShiftAndSlope',[300 6]);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin           Points
    ______________    ________________    ______

    {'CustAge'   }    {'[-Inf,33)'   }    41.904
    {'CustAge'   }    {'[33,37)'     }    42.015
    {'CustAge'   }    {'[37,40)'     }    42.495
    {'CustAge'   }    {'[40,46)'     }    43.136
    {'CustAge'   }    {'[46,48)'     }    44.144
    {'CustAge'   }    {'[48,58)'     }    44.239
    {'CustAge'   }    {'[58,Inf]'    }    45.731
    {'CustAge'   }    {'<missing>'   }       NaN
    {'ResStatus' }    {'Tenant'      }     42.67
    {'ResStatus' }    {'Home Owner'  }    43.619
    {'ResStatus' }    {'Other'       }    45.116
    {'ResStatus' }    {'<missing>'   }       NaN
    {'EmpStatus' }    {'Unknown'     }    42.399
    {'EmpStatus' }    {'Employed'    }    44.744
    {'EmpStatus' }    {'<missing>'   }       NaN
    {'CustIncome'}    {'[-Inf,29000)'}    40.114
      ⋮

MinScore = 292.1401
MaxScore = 318.4355

В этом примере показано, как использовать formatpoints чтобы отделить базовые точки от остальных точек, назначенных каждой переменной предиктора. formatpoints аргумент пары имя-значение 'BasePoints' служит этой цели.

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое binning to bin для всех предикторов.

sc = autobinning(sc);

Подгонка модели линейной регрессии с использованием параметров по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin            Points  
    ______________    ________________    _________

    {'CustAge'   }    {'[-Inf,33)'   }     -0.15894
    {'CustAge'   }    {'[33,37)'     }     -0.14036
    {'CustAge'   }    {'[37,40)'     }    -0.060323
    {'CustAge'   }    {'[40,46)'     }     0.046408
    {'CustAge'   }    {'[46,48)'     }      0.21445
    {'CustAge'   }    {'[48,58)'     }      0.23039
    {'CustAge'   }    {'[58,Inf]'    }        0.479
    {'CustAge'   }    {'<missing>'   }          NaN
    {'ResStatus' }    {'Tenant'      }    -0.031252
    {'ResStatus' }    {'Home Owner'  }      0.12696
    {'ResStatus' }    {'Other'       }      0.37641
    {'ResStatus' }    {'<missing>'   }          NaN
    {'EmpStatus' }    {'Unknown'     }    -0.076317
    {'EmpStatus' }    {'Employed'    }      0.31449
    {'EmpStatus' }    {'<missing>'   }          NaN
    {'CustIncome'}    {'[-Inf,29000)'}     -0.45716
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Путем задания аргумента пары «имя-значение» BasePoints true, таблица информации о точках сообщает о базовых точках отдельно в первой строке. Этот параметр не влияет на минимальную и максимально возможную оценки.

sc = formatpoints(sc,'BasePoints',true);
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=38×3 table
      Predictors           Bin           Points  
    ______________    ______________    _________

    {'BasePoints'}    {'BasePoints'}      0.70239
    {'CustAge'   }    {'[-Inf,33)' }     -0.25928
    {'CustAge'   }    {'[33,37)'   }     -0.24071
    {'CustAge'   }    {'[37,40)'   }     -0.16066
    {'CustAge'   }    {'[40,46)'   }    -0.053933
    {'CustAge'   }    {'[46,48)'   }      0.11411
    {'CustAge'   }    {'[48,58)'   }      0.13005
    {'CustAge'   }    {'[58,Inf]'  }      0.37866
    {'CustAge'   }    {'<missing>' }          NaN
    {'ResStatus' }    {'Tenant'    }     -0.13159
    {'ResStatus' }    {'Home Owner'}     0.026616
    {'ResStatus' }    {'Other'     }      0.27607
    {'ResStatus' }    {'<missing>' }          NaN
    {'EmpStatus' }    {'Unknown'   }     -0.17666
    {'EmpStatus' }    {'Employed'  }      0.21415
    {'EmpStatus' }    {'<missing>' }          NaN
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

В этом примере показано, как использовать formatpoints в точки скругления. Округление обычно применяется после масштабирования, в противном случае, если точки для конкретного предиктора находятся в небольшом диапазоне, округление может привести к тому, что округленные точки для различных ячеек будут одинаковыми. Кроме того, округление всех точек может несколько изменить минимальную и максимальную общую точки.

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое binning to bin для всех предикторов.

sc = autobinning(sc);

Подгонка модели линейной регрессии с использованием параметров по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Отображение немасштабированных точек для предикторов, сохраненных в модели фитинга, и отображение минимально и максимально возможных немасштабированных баллов.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin            Points  
    ______________    ________________    _________

    {'CustAge'   }    {'[-Inf,33)'   }     -0.15894
    {'CustAge'   }    {'[33,37)'     }     -0.14036
    {'CustAge'   }    {'[37,40)'     }    -0.060323
    {'CustAge'   }    {'[40,46)'     }     0.046408
    {'CustAge'   }    {'[46,48)'     }      0.21445
    {'CustAge'   }    {'[48,58)'     }      0.23039
    {'CustAge'   }    {'[58,Inf]'    }        0.479
    {'CustAge'   }    {'<missing>'   }          NaN
    {'ResStatus' }    {'Tenant'      }    -0.031252
    {'ResStatus' }    {'Home Owner'  }      0.12696
    {'ResStatus' }    {'Other'       }      0.37641
    {'ResStatus' }    {'<missing>'   }          NaN
    {'EmpStatus' }    {'Unknown'     }    -0.076317
    {'EmpStatus' }    {'Employed'    }      0.31449
    {'EmpStatus' }    {'<missing>'   }          NaN
    {'CustIncome'}    {'[-Inf,29000)'}     -0.45716
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Масштабирование точек и отображение информации о точках. По умолчанию округление не применяется.

sc = formatpoints(sc,'WorstAndBestScores',[300 850]);
PointsInfo = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin           Points
    ______________    ________________    ______

    {'CustAge'   }    {'[-Inf,33)'   }    46.396
    {'CustAge'   }    {'[33,37)'     }    48.727
    {'CustAge'   }    {'[37,40)'     }    58.772
    {'CustAge'   }    {'[40,46)'     }    72.167
    {'CustAge'   }    {'[46,48)'     }    93.256
    {'CustAge'   }    {'[48,58)'     }    95.256
    {'CustAge'   }    {'[58,Inf]'    }    126.46
    {'CustAge'   }    {'<missing>'   }       NaN
    {'ResStatus' }    {'Tenant'      }    62.421
    {'ResStatus' }    {'Home Owner'  }    82.276
    {'ResStatus' }    {'Other'       }    113.58
    {'ResStatus' }    {'<missing>'   }       NaN
    {'EmpStatus' }    {'Unknown'     }    56.765
    {'EmpStatus' }    {'Employed'    }    105.81
    {'EmpStatus' }    {'<missing>'   }       NaN
    {'CustIncome'}    {'[-Inf,29000)'}    8.9706
      ⋮

Использовать аргумент пары имя-значение Round для применения округления ко всем точкам и повторного отображения информации о точках.

sc = formatpoints(sc,'Round','AllPoints');
PointsInfo = displaypoints(sc)
PointsInfo=37×3 table
      Predictors            Bin           Points
    ______________    ________________    ______

    {'CustAge'   }    {'[-Inf,33)'   }      46  
    {'CustAge'   }    {'[33,37)'     }      49  
    {'CustAge'   }    {'[37,40)'     }      59  
    {'CustAge'   }    {'[40,46)'     }      72  
    {'CustAge'   }    {'[46,48)'     }      93  
    {'CustAge'   }    {'[48,58)'     }      95  
    {'CustAge'   }    {'[58,Inf]'    }     126  
    {'CustAge'   }    {'<missing>'   }     NaN  
    {'ResStatus' }    {'Tenant'      }      62  
    {'ResStatus' }    {'Home Owner'  }      82  
    {'ResStatus' }    {'Other'       }     114  
    {'ResStatus' }    {'<missing>'   }     NaN  
    {'EmpStatus' }    {'Unknown'     }      57  
    {'EmpStatus' }    {'Employed'    }     106  
    {'EmpStatus' }    {'<missing>'   }     NaN  
    {'CustIncome'}    {'[-Inf,29000)'}       9  
      ⋮

В этом примере показано, что точки округления карты показателей могут изменять исходный ранг риска карты показателей кредитования. Можно управлять округлением с помощью formatpoints с необязательным аргументом пара имя-значение для 'Rounding'.

Кредитные баллы ранжируют клиентов по риску. Если более высокие баллы даются лучшим, менее рискованным клиентам, то более высокие баллы должны соответствовать более низким вероятностям по умолчанию. При использовании аргумента пары имя-значение для 'Rounding', в зависимости от значения для 'Rounding', поведение округления:

  • Когда 'Rounding' имеет значение 'None' (опция по умолчанию), округление не применяется к баллам или баллам, и ранжирование риска полностью согласуется с калиброванной моделью.

  • Когда 'Rounding' имеет значение 'FinalScore'округление применяется только к итоговым баллам. В этом случае: а) Клиенты с различными оценками (разным риском) могут иметь одинаковый округленный балл. b) Клиенты с одинаковым округленным баллом могут иметь разные вероятности по умолчанию. c) Клиент с более высокими округленными баллами всегда будет иметь более низкую вероятность по умолчанию, чем клиенты с более низкими баллами.

  • Когда 'Rounding' имеет значение 'AllPoints'округление применяется ко всем точкам в карте показателей (все ячейки, все предикторы). В этом случае: а) Клиенты с различными оценками (различными рисками) могут иметь одинаковый округленный балл, или их ранжирование может быть даже отменено (клиент с более низким исходным баллом может иметь более высокий округленный балл). b) Клиенты с одинаковым округленным баллом могут иметь разные вероятности по умолчанию. c) Клиент с более высокими округленными баллами может в некоторых случаях иметь более высокую вероятность по умолчанию, чем клиенты с более низкими баллами.

Создать creditscorecard

Чтобы продемонстрировать поведение округления, сначала создайте creditscorecard объект.

load CreditCardData
sc = creditscorecard(data,'IDVar','CustID','ResponseVar','status');
sc = autobinning(sc);
sc = modifybins(sc,'CustIncome','CutPoints',20000:5000:60000);
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1487.9719, Chi2Stat = 35.469392, PValue = 2.5909009e-09
2. Adding TmWBank, Deviance = 1465.7998, Chi2Stat = 22.172089, PValue = 2.4927133e-06
3. Adding AMBalance, Deviance = 1455.206, Chi2Stat = 10.593833, PValue = 0.0011346548
4. Adding EmpStatus, Deviance = 1446.3918, Chi2Stat = 8.8142314, PValue = 0.0029889009
5. Adding CustAge, Deviance = 1440.6825, Chi2Stat = 5.709236, PValue = 0.016875883
6. Adding ResStatus, Deviance = 1436.1363, Chi2Stat = 4.5462043, PValue = 0.032991806
7. Adding OtherCC, Deviance = 1431.9546, Chi2Stat = 4.1817827, PValue = 0.040860699

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70247     0.064046    10.968    5.4345e-28
    CustAge        0.60579      0.24405    2.4822      0.013058
    ResStatus       1.4463      0.65427    2.2105       0.02707
    EmpStatus      0.90501      0.29262    3.0928     0.0019828
    CustIncome     0.70869      0.20535    3.4512    0.00055815
    TmWBank         1.0839      0.23244    4.6631    3.1145e-06
    OtherCC         1.0906      0.52936    2.0602      0.039377
    AMBalance       1.0148      0.32273    3.1445     0.0016636


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 91.5, p-value = 6.12e-17

Применить 'Rounding' Варианты

Применить каждый из трех 'Rounding' параметры для creditscorecard объект.

sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]); % No Rounding
points1  = displaypoints(sc);
[S1,P1]  = score(sc);
defProb1 = probdefault(sc);

sc = formatpoints(sc,'Round','AllPoints'); % 'AllPoints' Rounding
points2  = displaypoints(sc);
[S2,P2]  = score(sc);
defProb2 = probdefault(sc);

sc = formatpoints(sc,'Round','FinalScore'); % 'FinalScore' Rounding
points3  = displaypoints(sc);
[S3,P3]  = score(sc);
defProb3 = probdefault(sc);

Сравните 'Rounding' Варианты

Визуализация вероятностей по умолчанию в сравнении с показателями.

figure
hold on
scatter(S1, defProb1, 'g*')
scatter(S2, defProb2, 'ro')
scatter(S3, defProb3, 'b+')
legend('No Rounding','AllPoints','FinalScore')
axis([388 394 0.695 0.705])
xlabel('Credit score')
ylabel('Default probability')
title('Default probabilities and Credit scores')
grid

Figure contains an axes. The axes with title Default probabilities and Credit scores contains 3 objects of type scatter. These objects represent No Rounding, AllPoints, FinalScore.

Проверка баллов и итоговых баллов для каждого 'Rounding' , в формате таблицы.

ind = [208 363 694 886];
ProbDefault = defProb1(ind)
ProbDefault = 4×1

    0.6997
    0.6989
    0.6982
    0.6972

% ScoreNoRounding = S1(ind)
PointsNoRounding = P1(ind,:);
PointsNoRounding.Total = S1(ind)
PointsNoRounding=4×8 table
    CustAge    ResStatus    EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    Total 
    _______    _________    _________    __________    _______    _______    _________    ______

      52.9      61.555       58.503        24.647      51.551     50.416        89.4      388.97
     67.65      61.555       58.503        24.647      51.551     75.723       49.64      389.27
    54.234      61.555       58.503        24.647      51.551     75.723      63.271      389.48
      52.9      92.441       58.503        24.647      61.277     50.416       49.64      389.82

% ScoreAllPoints = S2(ind)
PointsAllPoints = P2(ind,:);
PointsAllPoints.Total = S2(ind)
PointsAllPoints=4×8 table
    CustAge    ResStatus    EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    Total
    _______    _________    _________    __________    _______    _______    _________    _____

      53          62           59            25          52         50          89         390 
      68          62           59            25          52         76          50         392 
      54          62           59            25          52         76          63         391 
      53          92           59            25          61         50          50         390 

% ScoreFinalScore = S3(ind)
PointsFinalScore = P3(ind,:);
PointsFinalScore.Total = S3(ind)
PointsFinalScore=4×8 table
    CustAge    ResStatus    EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    Total
    _______    _________    _________    __________    _______    _______    _________    _____

      52.9      61.555       58.503        24.647      51.551     50.416        89.4       389 
     67.65      61.555       58.503        24.647      51.551     75.723       49.64       389 
    54.234      61.555       58.503        24.647      51.551     75.723      63.271       389 
      52.9      92.441       58.503        24.647      61.277     50.416       49.64       390 

Оригинал creditscorecard модель без округления была откалибрована по данным с логистической регрессией. Ранжирование и вероятности имеют статистическую основу.

Однако округление эффективно изменяет creditscorecard модель. Когда округляется только окончательный балл, это приводит к некоторым «связям» в округленных баллах, но сохраняется, по крайней мере, ранжирование риска по баллам (потому что если s1 < = s2, то раунд (s1) < = раунд (s2)).

Однако, когда вы округляете все очки, счет может набрать дополнительные очки случайно. Например, во второй строке таблицы (строка 363 исходных данных) точки для всех предикторов округляются почти на 0.5. Исходный балл - 389.27. Округление итогового балла делает его 389. Однако округление всех точек делает это 392, это на три очка выше, чем округление итоговой оценки.

В этом примере показано, как использовать formatpoints для оценки отсутствующих или выходящих за пределы диапазона данных. При оценке данных некоторые наблюдения могут отсутствовать (NaN, или undefined) или вне диапазона. Необходимо решить, назначены ли этим случаям точки. Использовать аргумент пары имя-значение Missing для этого.

Создать creditscorecard с использованием CreditCardData.mat для загрузки данных (с использованием набора данных из Refaat 2011). Используйте 'IDVar' аргумент в creditscorecard указать, что 'CustID' содержит информацию об идентификаторе и не должен быть включен в качестве предикторной переменной.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое binning to bin для всех предикторов.

sc = autobinning(sc);

Указать, что минимальное допустимое значение для 'CustAge' равно нулю. Это делает любые отрицательные значения для возраста недопустимыми или выходящими за пределы диапазона.

sc = modifybins(sc,'CustAge','MinValue',0);

Подгонка модели линейной регрессии с использованием параметров по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Предположим, что в данных, которые требуется оценить, отсутствуют или находятся вне диапазона наблюдений. Обратите внимание, что по умолчанию точки и оценка, назначенные отсутствующему значению, равны NaN.

% Set up a data set with missing and out of range data for illustration purposes
newdata = data(1:5,:);
newdata.CustAge(1) = NaN; % missing
newdata.CustAge(2) = -100; % invalid
newdata.ResStatus(3) = '<undefined>'; % missing
newdata.ResStatus(4) = 'House'; % invalid
disp(newdata)
    CustID    CustAge    TmAtAddress     ResStatus     EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    UtilRate    status
    ______    _______    ___________    ___________    _________    __________    _______    _______    _________    ________    ______

      1         NaN          62         Tenant         Unknown        50000         55         Yes       1055.9        0.22        0   
      2        -100          22         Home Owner     Employed       52000         25         Yes       1161.6        0.24        0   
      3          47          30         <undefined>    Employed       37000         61         No        877.23        0.29        0   
      4          50          75         House          Employed       53000         20         Yes       157.37        0.08        0   
      5          68          56         Home Owner     Employed       53000         14         Yes       561.84        0.11        0   
[Scores,Points] = score(sc,newdata);
disp(Scores)
       NaN
       NaN
       NaN
       NaN
    1.4535
disp(Points)
    CustAge    ResStatus    EmpStatus    CustIncome     TmWBank     OtherCC     AMBalance
    _______    _________    _________    __________    _________    ________    _________

        NaN    -0.031252    -0.076317      0.43693       0.39607     0.15842    -0.017472
        NaN      0.12696      0.31449      0.43693     -0.033752     0.15842    -0.017472
    0.21445          NaN      0.31449     0.081611       0.39607    -0.19168    -0.017472
    0.23039          NaN      0.31449      0.43693     -0.044811     0.15842      0.35551
      0.479      0.12696      0.31449      0.43693     -0.044811     0.15842    -0.017472

Использовать аргумент пары имя-значение Missing заменять NaN с точками, соответствующими нулевому весу доказательств (WOE).

sc = formatpoints(sc,'Missing','ZeroWOE');
[Scores,Points] = score(sc,newdata);
disp(Scores)
    0.9667
    1.0859
    0.8978
    1.5513
    1.4535
disp(Points)
    CustAge    ResStatus    EmpStatus    CustIncome     TmWBank     OtherCC     AMBalance
    _______    _________    _________    __________    _________    ________    _________

    0.10034    -0.031252    -0.076317      0.43693       0.39607     0.15842    -0.017472
    0.10034      0.12696      0.31449      0.43693     -0.033752     0.15842    -0.017472
    0.21445      0.10034      0.31449     0.081611       0.39607    -0.19168    -0.017472
    0.23039      0.10034      0.31449      0.43693     -0.044811     0.15842      0.35551
      0.479      0.12696      0.31449      0.43693     -0.044811     0.15842    -0.017472

Либо используйте аргумент пара имя-значение Missing для замены отсутствующего значения на минимальные точки для предикторов с отсутствующими значениями.

sc = formatpoints(sc,'Missing','MinPoints');
[Scores,Points] = score(sc,newdata);
disp(Scores)
    0.7074
    0.8266
    0.7662
    1.4197
    1.4535
disp(Points)
    CustAge     ResStatus    EmpStatus    CustIncome     TmWBank     OtherCC     AMBalance
    ________    _________    _________    __________    _________    ________    _________

    -0.15894    -0.031252    -0.076317      0.43693       0.39607     0.15842    -0.017472
    -0.15894      0.12696      0.31449      0.43693     -0.033752     0.15842    -0.017472
     0.21445    -0.031252      0.31449     0.081611       0.39607    -0.19168    -0.017472
     0.23039    -0.031252      0.31449      0.43693     -0.044811     0.15842      0.35551
       0.479      0.12696      0.31449      0.43693     -0.044811     0.15842    -0.017472

В качестве третьей альтернативы используйте аргумент пара имя-значение Missing чтобы заменить отсутствующее значение максимальными точками для предикторов с отсутствующими значениями.

sc = formatpoints(sc,'Missing','MaxPoints');
[Scores,Points] = score(sc,newdata);
disp(Scores)
    1.3454
    1.4646
    1.1739
    1.8273
    1.4535
disp(Points)
    CustAge    ResStatus    EmpStatus    CustIncome     TmWBank     OtherCC     AMBalance
    _______    _________    _________    __________    _________    ________    _________

      0.479    -0.031252    -0.076317      0.43693       0.39607     0.15842    -0.017472
      0.479      0.12696      0.31449      0.43693     -0.033752     0.15842    -0.017472
    0.21445      0.37641      0.31449     0.081611       0.39607    -0.19168    -0.017472
    0.23039      0.37641      0.31449      0.43693     -0.044811     0.15842      0.35551
      0.479      0.12696      0.31449      0.43693     -0.044811     0.15842    -0.017472

Убедитесь, что минимальные и максимальные точки, назначенные отсутствующим данным, соответствуют минимальным и максимальным точкам для соответствующих предикторов. Точки для 'CustAge' представлены в первых семи строках информационной таблицы точек. Для 'ResStatus' точки находятся в строках с 8 по 10.

PointsInfo = displaypoints(sc);
PointsInfo(1:7,:)
ans=7×3 table
    Predictors         Bin          Points  
    ___________    ____________    _________

    {'CustAge'}    {'[0,33)'  }     -0.15894
    {'CustAge'}    {'[33,37)' }     -0.14036
    {'CustAge'}    {'[37,40)' }    -0.060323
    {'CustAge'}    {'[40,46)' }     0.046408
    {'CustAge'}    {'[46,48)' }      0.21445
    {'CustAge'}    {'[48,58)' }      0.23039
    {'CustAge'}    {'[58,Inf]'}        0.479

min(PointsInfo.Points(1:7))
ans = -0.1589
max(PointsInfo.Points(1:7))
ans = 0.4790
PointsInfo(8:10,:)
ans=3×3 table
     Predictors           Bin           Points  
    _____________    ______________    _________

    {'CustAge'  }    {'<missing>' }        0.479
    {'ResStatus'}    {'Tenant'    }    -0.031252
    {'ResStatus'}    {'Home Owner'}      0.12696

min(PointsInfo.Points(8:10))
ans = -0.0313
max(PointsInfo.Points(8:10))
ans = 0.4790

В этом примере описывается назначение точек для отсутствующих данных при 'BinMissingData' параметр имеет значение true.

  • Предикторы, у которых отсутствуют данные в обучающем наборе, имеют явное место для <missing> с соответствующими баллами в итоговой карте показателей. Эти точки вычисляются на основе значения веса доказательств (WOE) для <missing> bin и коэффициенты логистической модели. В целях оценки эти баллы присваиваются отсутствующим значениям и значениям вне диапазона.

  • Предикторы без отсутствующих данных в обучающем наборе не имеют <missing> bin, поэтому невозможно оценить WOE по данным обучения. По умолчанию точки для отсутствующих и выходящих за пределы диапазона значений имеют значение NaN, и это приводит к оценке NaN при выполнении score. Для предикторов, не имеющих явных <missing> bin, используйте аргумент имя-значение 'Missing' в formatpoints чтобы указать, как недостающие данные должны рассматриваться в целях оценки.

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла dataMissing с отсутствующими значениями.

load CreditCardData.mat 
head(dataMissing,5)
ans=5×11 table
    CustID    CustAge    TmAtAddress     ResStatus     EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    UtilRate    status
    ______    _______    ___________    ___________    _________    __________    _______    _______    _________    ________    ______

      1          53          62         <undefined>    Unknown        50000         55         Yes       1055.9        0.22        0   
      2          61          22         Home Owner     Employed       52000         25         Yes       1161.6        0.24        0   
      3          47          30         Tenant         Employed       37000         61         No        877.23        0.29        0   
      4         NaN          75         Home Owner     Employed       53000         20         Yes       157.37        0.08        0   
      5          68          56         Home Owner     Employed       53000         14         Yes       561.84        0.11        0   

fprintf('Number of rows: %d\n',height(dataMissing))
Number of rows: 1200
fprintf('Number of missing values CustAge: %d\n',sum(ismissing(dataMissing.CustAge)))
Number of missing values CustAge: 30
fprintf('Number of missing values ResStatus: %d\n',sum(ismissing(dataMissing.ResStatus)))
Number of missing values ResStatus: 40

Использовать creditscorecard с аргументом имя-значение 'BinMissingData' установить в значение true в ячейку отсутствующих числовых или категориальных данных в отдельной ячейке. Применение автоматического binning.

sc = creditscorecard(dataMissing,'IDVar','CustID','BinMissingData',true);
sc = autobinning(sc);

disp(sc)
  creditscorecard with properties:

                GoodLabel: 0
              ResponseVar: 'status'
               WeightsVar: ''
                 VarNames: {1x11 cell}
        NumericPredictors: {1x6 cell}
    CategoricalPredictors: {'ResStatus'  'EmpStatus'  'OtherCC'}
           BinMissingData: 1
                    IDVar: 'CustID'
            PredictorVars: {1x9 cell}
                     Data: [1200x11 table]

Установить минимальное значение, равное нулю для CustAge и CustIncome. При этом любая отрицательная возрастная или доходная информация становится недействительной или «вне диапазона». В целях оценки значения вне диапазона присваиваются тем же баллам, что и отсутствующие значения.

sc = modifybins(sc,'CustAge','MinValue',0);
sc = modifybins(sc,'CustIncome','MinValue',0);

Просмотр и печать информации о ячейках для числовых данных для 'CustAge' который включает отсутствующие данные в отдельной ячейке с маркировкой <missing>.

[bi,cp] = bininfo(sc,'CustAge');
disp(bi)
         Bin         Good    Bad     Odds       WOE       InfoValue 
    _____________    ____    ___    ______    ________    __________

    {'[0,33)'   }     69      52    1.3269    -0.42156      0.018993
    {'[33,37)'  }     63      45       1.4    -0.36795      0.012839
    {'[37,40)'  }     72      47    1.5319     -0.2779     0.0079824
    {'[40,46)'  }    172      89    1.9326    -0.04556     0.0004549
    {'[46,48)'  }     59      25      2.36     0.15424     0.0016199
    {'[48,51)'  }     99      41    2.4146     0.17713     0.0035449
    {'[51,58)'  }    157      62    2.5323     0.22469     0.0088407
    {'[58,Inf]' }     93      25      3.72     0.60931      0.032198
    {'<missing>'}     19      11    1.7273    -0.15787    0.00063885
    {'Totals'   }    803     397    2.0227         NaN      0.087112
plotbins(sc,'CustAge')

Figure contains an axes. The axes with title CustAge contains 3 objects of type bar, line. These objects represent Good, Bad.

Просмотр и печать информации о ячейках для категориальных данных для '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')

Figure contains an axes. The axes with title ResStatus contains 3 objects of type bar, line. These objects represent Good, Bad.

Для 'CustAge' и 'ResStatus' предикторы, отсутствуют данные (NaNs и <undefined>) в учебных данных, и процесс связывания оценивает значение WOE, равное -0.15787 и 0.026469 соответственно для отсутствующих данных в этих предикторах, как показано выше.

Для EmpStatus и CustIncome отсутствует явная ячейка для отсутствующих значений, поскольку данные обучения не содержат отсутствующих значений для этих предикторов.

bi = bininfo(sc,'EmpStatus');
disp(bi)
        Bin         Good    Bad     Odds       WOE       InfoValue
    ____________    ____    ___    ______    ________    _________

    {'Unknown' }    396     239    1.6569    -0.19947    0.021715 
    {'Employed'}    407     158    2.5759      0.2418    0.026323 
    {'Totals'  }    803     397    2.0227         NaN    0.048038 
bi = bininfo(sc,'CustIncome');
disp(bi)
           Bin           Good    Bad     Odds         WOE       InfoValue 
    _________________    ____    ___    _______    _________    __________

    {'[0,29000)'    }     53      58    0.91379     -0.79457       0.06364
    {'[29000,33000)'}     74      49     1.5102     -0.29217     0.0091366
    {'[33000,35000)'}     68      36     1.8889     -0.06843    0.00041042
    {'[35000,40000)'}    193      98     1.9694    -0.026696    0.00017359
    {'[40000,42000)'}     68      34          2    -0.011271    1.0819e-05
    {'[42000,47000)'}    164      66     2.4848      0.20579     0.0078175
    {'[47000,Inf]'  }    183      56     3.2679      0.47972      0.041657
    {'Totals'       }    803     397     2.0227          NaN       0.12285

Использовать fitmodel чтобы соответствовать модели логистической регрессии с использованием данных веса доказательств (WOE). fitmodel внутренне преобразует все переменные предиктора в значения WOE, используя ячейки, найденные в процессе автоматического объединения. fitmodel затем подходит модель логистической регрессии с использованием пошагового метода (по умолчанию). Для предикторов, у которых отсутствуют данные, существует явное <missing> bin, с соответствующим значением WOE, вычисленным на основе данных. При использовании fitmodel, соответствующее значение WOE для <missing> применяется при выполнении преобразования WOE.

[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1442.8477, Chi2Stat = 4.4974731, PValue = 0.033944979
6. Adding ResStatus, Deviance = 1438.9783, Chi2Stat = 3.86941, PValue = 0.049173805
7. Adding OtherCC, Deviance = 1434.9751, Chi2Stat = 4.0031966, PValue = 0.045414057

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70229     0.063959     10.98    4.7498e-28
    CustAge        0.57421      0.25708    2.2335      0.025513
    ResStatus       1.3629      0.66952    2.0356       0.04179
    EmpStatus      0.88373       0.2929    3.0172      0.002551
    CustIncome     0.73535       0.2159     3.406    0.00065929
    TmWBank         1.1065      0.23267    4.7556    1.9783e-06
    OtherCC         1.0648      0.52826    2.0156      0.043841
    AMBalance       1.0446      0.32197    3.2443     0.0011775


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 88.5, p-value = 2.55e-16

Масштабируйте точки карты показателей по методу «points, bodds and points to удвоить шансы (PDO)» с помощью 'PointsOddsAndPDO' аргумент formatpoints. Предположим, что вы хотите, чтобы оценка 500 очков иметь шансы 2 (в два раза больше вероятность быть хорошим, чем быть плохим) и что шансы удвоить каждые 50 очков (так что 550 очков будет иметь шансы 4).

Отображение карты показателей, показывающей масштабированные точки для предикторов, сохраненных в модели фитинга.

sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
PointsInfo = displaypoints(sc)
PointsInfo=38×3 table
     Predictors           Bin          Points
    _____________    ______________    ______

    {'CustAge'  }    {'[0,33)'    }    54.062
    {'CustAge'  }    {'[33,37)'   }    56.282
    {'CustAge'  }    {'[37,40)'   }    60.012
    {'CustAge'  }    {'[40,46)'   }    69.636
    {'CustAge'  }    {'[46,48)'   }    77.912
    {'CustAge'  }    {'[48,51)'   }     78.86
    {'CustAge'  }    {'[51,58)'   }     80.83
    {'CustAge'  }    {'[58,Inf]'  }     96.76
    {'CustAge'  }    {'<missing>' }    64.984
    {'ResStatus'}    {'Tenant'    }    62.138
    {'ResStatus'}    {'Home Owner'}    73.248
    {'ResStatus'}    {'Other'     }    90.828
    {'ResStatus'}    {'<missing>' }    74.125
    {'EmpStatus'}    {'Unknown'   }    58.807
    {'EmpStatus'}    {'Employed'  }    86.937
    {'EmpStatus'}    {'<missing>' }       NaN
      ⋮

Обратите внимание, что точки для <missing> ячейка для CustAge и ResStatus явно показаны (как 64.9836 и 74.1250соответственно). Эти точки вычисляются на основе значения WOE для <missing> bin и коэффициенты логистической модели.

Для предикторов, не имеющих отсутствующих данных в обучающем наборе, нет явных <missing> бункер. По умолчанию для точек установлено значение NaN для отсутствующих данных и они приводят к оценке NaN при выполнении score. Для предикторов, не имеющих явных <missing> bin, используйте аргумент имя-значение 'Missing' в formatpoints чтобы указать, как недостающие данные должны рассматриваться в целях оценки.

Для иллюстрации возьмите несколько строк из исходных данных в качестве тестовых данных и введите некоторые отсутствующие данные. Также введите некоторые недопустимые значения или значения вне диапазона. Для числовых данных допустимые значения ниже минимального (или выше максимального) считаются недопустимыми, например, отрицательное значение для возраста (отзыв 'MinValue' был ранее установлен в значение 0 для CustAge и CustIncome). Для категориальных данных недопустимыми значениями являются категории, явно не включенные в карту показателей, например, статус резидентности, ранее не сопоставленный с категориями карт показателей, например «Дом», или бессмысленная строка, например «abc123».

tdata = dataMissing(11:18,mdl.PredictorNames); % Keep only the predictors retained in the model
% Set some missing values
tdata.CustAge(1) = NaN;
tdata.ResStatus(2) = '<undefined>';
tdata.EmpStatus(3) = '<undefined>';
tdata.CustIncome(4) = NaN;
% Set some invalid values
tdata.CustAge(5) = -100;
tdata.ResStatus(6) = 'House';
tdata.EmpStatus(7) = 'Freelancer';
tdata.CustIncome(8) = -1;
disp(tdata)
    CustAge     ResStatus      EmpStatus     CustIncome    TmWBank    OtherCC    AMBalance
    _______    ___________    ___________    __________    _______    _______    _________

      NaN      Tenant         Unknown          34000         44         Yes        119.8  
       48      <undefined>    Unknown          44000         14         Yes       403.62  
       65      Home Owner     <undefined>      48000          6         No        111.88  
       44      Other          Unknown            NaN         35         No        436.41  
     -100      Other          Employed         46000         16         Yes       162.21  
       33      House          Employed         36000         36         Yes       845.02  
       39      Tenant         Freelancer       34000         40         Yes       756.26  
       24      Home Owner     Employed            -1         19         Yes       449.61  

Оцените новые данные и посмотрите, как точки назначаются для отсутствующих CustAge и ResStatus, потому что у нас есть явная ячейка с точками для <missing>. Однако для EmpStatus и CustIncome score функция устанавливает точки на NaN.

[Scores,Points] = score(sc,tdata);
disp(Scores)
  481.2231
  520.8353
       NaN
       NaN
  551.7922
  487.9588
       NaN
       NaN
disp(Points)
    CustAge    ResStatus    EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance
    _______    _________    _________    __________    _______    _______    _________

    64.984      62.138       58.807        67.893      61.858     75.622      89.922  
     78.86      74.125       58.807        82.439      61.061     75.622      89.922  
     96.76      73.248          NaN        96.969      51.132     50.914      89.922  
    69.636      90.828       58.807           NaN      61.858     50.914      89.922  
    64.984      90.828       86.937        82.439      61.061     75.622      89.922  
    56.282      74.125       86.937        70.107      61.858     75.622      63.028  
    60.012      62.138          NaN        67.893      61.858     75.622      63.028  
    54.062      73.248       86.937           NaN      61.061     75.622      89.922  

Использовать аргумент имя-значение 'Missing' в formatpoints выбор способа назначения точек отсутствующим значениям для предикторов, не имеющих явного <missing> бункер. В этом примере используйте 'MinPoints' для опции 'Missing' аргумент. Минимальные баллы для EmpStatus в карте показателей, показанной выше, 58.8072, и для CustIncome минимальные баллы: 29.3753.

sc = formatpoints(sc,'Missing','MinPoints');
[Scores,Points] = score(sc,tdata);
disp(Scores)
  481.2231
  520.8353
  517.7532
  451.3405
  551.7922
  487.9588
  449.3577
  470.2267
disp(Points)
    CustAge    ResStatus    EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance
    _______    _________    _________    __________    _______    _______    _________

    64.984      62.138       58.807        67.893      61.858     75.622      89.922  
     78.86      74.125       58.807        82.439      61.061     75.622      89.922  
     96.76      73.248       58.807        96.969      51.132     50.914      89.922  
    69.636      90.828       58.807        29.375      61.858     50.914      89.922  
    64.984      90.828       86.937        82.439      61.061     75.622      89.922  
    56.282      74.125       86.937        70.107      61.858     75.622      63.028  
    60.012      62.138       58.807        67.893      61.858     75.622      63.028  
    54.062      73.248       86.937        29.375      61.061     75.622      89.922  

Входные аргументы

свернуть все

Модель кредитной карты показателей, указанная как 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' и логический скаляр. Если true, система показателей явно разделяет базовые точки. Если false, базовые точки распределены по всем переменным в creditscorecard объект.

Типы данных: char

Индикатор для точек, назначенных отсутствующей или выходящей за пределы диапазона информации при оценке, указанный как пара, разделенная запятыми, состоящая из 'Missing' и вектор символов со значением для NoScore, ZeroWOE, MinPoints, или MaxPoints, где:

  • NoScore - отсутствующие и выходящие за пределы диапазона данные не получают присвоенных точек, а для точек установлено значение NaN. Кроме того, общий балл устанавливается равным NaN.

  • ZeroWOE - отсутствующим или выходящим за пределы диапазона данным присваивается нулевое значение веса доказательства (WOE).

  • MinPoints - Отсутствующие или находящиеся вне диапазона данные получают минимально возможные точки для этого предиктора. Это штрафует счет, если более высокие баллы лучше.

  • MaxPoints - Отсутствующие или находящиеся вне диапазона данные получают максимально возможные точки для этого предиктора. Это штрафует счет, если более низкие баллы лучше.

    Примечание

    При использовании creditscorecard аргумент «имя-значение» 'BinMissingData' со значением true, отсутствующие данные для числовых и категориальных предикторов привязаны в отдельном ячейке с меткой <missing>. <missing> bin содержит только отсутствующие значения для предиктора и не содержит недопустимые значения или значения вне диапазона для предиктора.

Типы данных: char

Индикатор округления точек или баллов, определяемый как разделенная запятыми пара, состоящая из 'Round' и вектор символов со значениями 'AllPoints', 'FinalScore' или 'None', где:

  • None - Округление не применяется.

  • AllPoints - Примените округление к баллам каждого предсказателя, прежде чем сложить общую оценку.

  • FinalScore - Округлять только итоговую оценку (округление применяется после сложения всех очков).

Для получения дополнительной информации и примера использования 'Round' аргумент пары имя-значение см. в разделах Округление и Вероятности по умолчанию.

Типы данных: char

Индикатор для параметров сдвига и масштабирования уклона для кредитной карты показателей, определяемый как пара, разделенная запятыми, состоящая из 'ShiftAndSlope' и числовой массив с двумя элементами [Shift, Slope]. Slope не может быть нулевым. ShiftAndSlope используются значения для масштабирования скоринговой модели.

Примечание

ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.

Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope кому[0,1].

Типы данных: double

Индикатор для целевых точек (Points) для данного уровня шансов (Odds) и желаемое количество баллов для удвоения шансов (PDO), указанная как пара, разделенная запятыми, состоящая из 'PointsOddsAndPDO' и числовой массив с тремя элементами [Points,Odds,PDO]. Odds должно быть положительным числом. PointsOddsAndPDO используются для поиска параметров масштабирования для модели оценки.

Примечание

Точки удвоить шансы (PDO) может быть положительным или отрицательным, в зависимости от того, означают ли более высокие баллы более низкий риск, или наоборот.

ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.

Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope кому[0,1].

Типы данных: double

Индикатор для худших (самый высокий риск) и лучших (самый низкий риск) баллов в карте показателей, указанный как пара, разделенная запятыми, состоящая из 'WorstAndBestScores' и числовой массив с двумя элементами [WorstScore,BestScore]. WorstScore и BestScore должны быть различными значениями. Они WorstAndBestScores используются для поиска параметров масштабирования для модели оценки.

Примечание

WorstScore означает самый рискованный балл, и его значение может быть ниже или выше, чем «лучший» балл. Другими словами, «минимальный» балл может быть «худшим» баллом или «лучшим» баллом в зависимости от желаемой шкалы баллов.

ShiftAndSlope, PointsOddsAndPDO, и WorstAndBestScores являются методами масштабирования, и одновременно можно использовать только один из этих аргументов пары имя-значение. Три других аргумента пары имя-значение (BasePoints, Missing, и Round) не являются методами масштабирования и могут использоваться вместе или с любым из трех методов масштабирования.

Чтобы удалить предыдущее масштабирование и вернуться к немасштабированным баллам, установите ShiftAndSlope кому[0,1].

Типы данных: double

Выходные аргументы

свернуть все

Модель кредитной карты показателей возвращена как обновленная creditscorecard объект. Для получения дополнительной информации об использовании creditscorecard объект, см. creditscorecard.

Алгоритмы

Оценка индивидуума i дается по формуле

Score(i) = Shift + Slope*(b0 + b1*WOE1(i) + b2*WOE2(i)+ ... +bp*WOEp(i))

где bj - коэффициент j-й переменной в модели, а WOEj (i) - значение веса доказательства (WOE) для i-го индивидуума, соответствующего j-й переменной модели .Shift и Slope Далее рассматриваются константы масштабирования. Константой масштабирования можно управлять с помощью formatpoints.

Если данные для отдельного i находятся в i-й строке данного набора данных, для вычисления оценки данные (i, j) связываются с использованием существующих карт связывания и преобразуются в соответствующее значение веса доказательства.WOEj (i). Используя коэффициенты модели, немасштабированный балл вычисляется как

 s = b0 + b1*WOE1(i) + ... +bp*WOEp(i).

Для простоты предположим в приведенном выше описании, что j-я переменная в модели является j-м столбцом на входе данных, хотя, в общем, порядок переменных в данном наборе данных не должен соответствовать порядку переменных в модели, и набор данных может иметь дополнительные переменные, которые не используются в модели.

Опциями форматирования можно управлять с помощью formatpoints. Когда базовые точки сообщаются отдельно (см. formatpoints параметр BasePoints), базовые точки задаются

Base Points = Shift + Slope*b0,
и точки для j-го предиктора, i-й строки задаются
Points_ji = Slope*(bj*WOEj(i))).

По умолчанию базовые точки не сообщаются отдельно, в этом случае

Points_ji = (Shift + Slope*b0)/p + Slope*(bj*WOEj(i)),
где p - количество предикторов в модели карты показателей.

По умолчанию к точкам не применяется округление score функция (Round является None). Если Round имеет значение AllPoints использование formatpoints, то точки для отдельного i для переменной j задаются

 points if rounding is 'AllPoints': round( Points_ji )
и, если базовые точки сообщаются отдельно, они также округляются. Это дает целочисленные баллы на предсказатель, следовательно, также целочисленные баллы. Если Round имеет значение FinalScore использование formatpoints, то баллы на предсказателя не округляются, и округляется только итоговая оценка
 score if rounding is 'FinalScore': round(Score(i)).

Относительно параметров масштабирования, Shift параметр и Slope параметр может быть установлен непосредственно с помощью ShiftAndSlope параметр formatpoints. Кроме того, можно использовать formatpoints параметр для WorstAndBestScores. В этом случае параметры Shift и Slope обнаруживаются внутри системы путем решения

Shift + Slope*smin = WorstScore,
Shift + Slope*smax = BestScore,
где WorstScore и BestScore являются первым и вторым элементами в formatpoints параметр для WorstAndBestScores и smin и smax являются минимальными и максимально возможными немасштабированными показателями:
smin = b0 + min(b1*WOE1) + ... +min(bp*WOEp),
smax = b0 + max(b1*WOE1) + ... +max(bp*WOEp).

Третьей альтернативой баллам по шкале является PointsOddsAndPDO параметр в formatpoints. В этом случае предположим, что немасштабированный балл s дает логарифмические коэффициенты для строки, и Shift и Slope параметры определяются путем решения следующей системы:

Points = Shift + Slope*log(Odds)
Points + PDO = Shift + Slope*log(2*Odds)
где Points, Odds, и PDO («указывает удвоить шансы») являются первым, вторым и третьим элементами в PointsOddsAndPDO параметр.

Всякий раз, когда данный набор данных имеет отсутствующие или выходящие за пределы диапазона данные (i, j), точки для предсказателя j, для отдельного i, устанавливаются вNaN по умолчанию, что приводит к отсутствию оценки для этой строки (a NaN оценка). Использование Missing параметр для formatpoints, вы можете изменить это поведение и установить соответствующее значение веса доказательства (WOE) равным нулю, или установить точки на минимальные точки или максимальные точки для этого предиктора.

Ссылки

[1] Андерсон, R. The Credit Скоринг Toolkit. Издательство Оксфордского университета, 2007 год.

[2] Рефаат, М. Карты оценки кредитных рисков: разработка и внедрение с использованием SAS. lulu.com, 2011.

Представлен в R2014b