exponenta event banner

bininfo

Возвращать сведения о ячейке предиктора

Описание

пример

bi = bininfo(sc,PredictorName) возвращает информацию на уровне ячейки, такую как частоты «Хорошо», «Плохо» и статистика ячейки для предиктора, указанного в PredictorName.

пример

bi = bininfo(___,Name,Value) добавляет необязательные аргументы «имя-значение».

пример

[bi,bm] = bininfo(sc,PredictorName,Name,Value) добавляет необязательные аргументы «имя-значение».bininfo также при необходимости возвращает карту биннинга (bm) или правила bin в виде вектора точек отсечения для числовых предикторов или таблицы группировок категорий для категориальных предикторов.

пример

[bi,bm,mv] = bininfo(sc,PredictorName,Name,Value) возвращает информацию на уровне ячейки, такую как частоты «Хорошо», «Плохо» и статистика ячейки для предиктора, указанного в PredictorName использование необязательных аргументов пары имя-значение. bininfo (необязательно) возвращает карту привязки или правила bin в виде вектора точек отсечения для числовых предикторов или таблицы групп категорий для категориальных предикторов. Кроме того, необязательные аргументы пары имя-значение mv возвращает числовой массив, содержащий минимальное и максимальное значения, заданные (или определенные) пользователем. mv выходной аргумент устанавливается в пустой массив для категориальных предикторов.

Примеры

свернуть все

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011).

load CreditCardData 
sc = creditscorecard(data);

Отображение сведений о ячейке для категориального предиктора ResStatus.

bi = bininfo(sc,'ResStatus')
bi=4×6 table
         Bin          Good    Bad     Odds        WOE       InfoValue
    ______________    ____    ___    ______    _________    _________

    {'Home Owner'}    365     177    2.0621     0.019329    0.0001682
    {'Tenant'    }    307     167    1.8383    -0.095564    0.0036638
    {'Other'     }    131      53    2.4717      0.20049    0.0059418
    {'Totals'    }    803     397    2.0227          NaN    0.0097738

Используйте CreditCardData.mat файл для загрузки данных (dataWeights), который содержит столбец (RowWeights) для весов (с использованием набора данных из Refaat 2011).

load CreditCardData

Создать creditscorecard объект, использующий необязательный аргумент пары имя-значение для 'WeightsVar'.

sc = creditscorecard(dataWeights,'WeightsVar','RowWeights')
sc = 
  creditscorecard with properties:

                GoodLabel: 0
              ResponseVar: 'status'
               WeightsVar: 'RowWeights'
                 VarNames: {1x12 cell}
        NumericPredictors: {1x7 cell}
    CategoricalPredictors: {'ResStatus'  'EmpStatus'  'OtherCC'}
           BinMissingData: 0
                    IDVar: ''
            PredictorVars: {1x10 cell}
                     Data: [1200x12 table]

Отображение информации о ячейке для числового предиктора 'CustIncome'. Когда необязательный аргумент пары имя-значение 'WeightsVar' используется для указания веса наблюдения (образца), bi таблица содержит взвешенные счетчики.

bi = bininfo(sc,'CustIncome');
bi(1:10,:)
ans=10×6 table
       Bin        Good        Bad       Odds        WOE       InfoValue 
    _________    _______    _______    _______    ________    __________

    {'18000'}    0.94515      1.496    0.63179     -1.1667     0.0059198
    {'19000'}    0.47588    0.80569    0.59065     -1.2341     0.0034716
    {'20000'}     2.1671     1.4636     1.4806    -0.31509    0.00061392
    {'21000'}     3.2522    0.88064      3.693     0.59889     0.0021303
    {'22000'}     1.5438     1.2714     1.2142    -0.51346     0.0012913
    {'23000'}      1.787     2.7529    0.64913     -1.1397      0.010509
    {'24000'}     3.4111     2.2538     1.5135    -0.29311    0.00082663
    {'25000'}     2.2333     6.1383    0.36383     -1.7186      0.042642
    {'26000'}     2.1246     4.4754    0.47474     -1.4525      0.024526
    {'27000'}     3.1058      3.528    0.88032    -0.83501     0.0082144

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011).

load CreditCardData 
sc = creditscorecard(data);

Отображение настраиваемой информации о ячейке для категориального предиктора ResStatus, сохраняя только WOE столбец. Вес доказательств (WOE) определяется bin by bin, но не существует понятия «всего WOE», поэтому последний элемент в 'Totals' строка имеет значение NaN.

bi = bininfo(sc,'ResStatus','Statistics','WOE');
disp(bi)
         Bin          Good    Bad       WOE   
    ______________    ____    ___    _________

    {'Home Owner'}    365     177     0.019329
    {'Tenant'    }    307     167    -0.095564
    {'Other'     }    131      53      0.20049
    {'Totals'    }    803     397          NaN

Отображение настраиваемой информации о ячейке для категориального предиктора ResStatus, сохраняя только Odds и WOE столбцы, без Totals строка.

bi = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE'},'Totals','Off');
disp(bi)
         Bin          Good    Bad     Odds        WOE   
    ______________    ____    ___    ______    _________

    {'Home Owner'}    365     177    2.0621     0.019329
    {'Tenant'    }    307     167    1.8383    -0.095564
    {'Other'     }    131      53    2.4717      0.20049

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

Для значения информации, энтропии и Джини значение, сообщаемое на уровне ячейки, является вкладом ячейки в общее значение. Общее информационное значение, энтропия и показатели Джини находятся в 'Totals' строка.

Для квадрата хи, если есть N ячеек, первые N-1 значения в 'Chi2' столбец отчет попарно chi квадратная статистика для смежных ячеек. Например, эта парная мера также используется 'Merge' алгоритм в autobinning для определения необходимости объединения двух смежных ячеек. В этом примере первое значение в 'Chi2' столбец (1.0331) - статистика квадратов хи для ячеек 1 и 2 ('Home Owner' и 'Tenant') и второе значение в столбце (2.5103) - статистика квадратов хи для ячеек 2 и 3 ('Tenant' и 'Other'). В этом примере больше нет парных значений хи-квадрата, поэтому третий элемент 'Chi2' столбец имеет значение NaN. Значение квадрата хи, указанное в 'Totals' строка - это статистика хи-квадрат, вычисленная по всем ячейкам.

bi = bininfo(sc,'ResStatus','Statistics',{'InfoValue','Entropy','Gini','Chi2'});
disp(bi)
         Bin          Good    Bad    InfoValue    Entropy     Gini       Chi2 
    ______________    ____    ___    _________    _______    _______    ______

    {'Home Owner'}    365     177    0.0001682    0.91138    0.43984    1.0331
    {'Tenant'    }    307     167    0.0036638    0.93612    0.45638    2.5103
    {'Other'     }    131      53    0.0059418    0.86618    0.41015       NaN
    {'Totals'    }    803     397    0.0097738    0.91422    0.44182    2.5549

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011).

load CreditCardData 
sc = creditscorecard(data);

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

[bi,cg] = bininfo(sc,'ResStatus')
bi=4×6 table
         Bin          Good    Bad     Odds        WOE       InfoValue
    ______________    ____    ___    ______    _________    _________

    {'Home Owner'}    365     177    2.0621     0.019329    0.0001682
    {'Tenant'    }    307     167    1.8383    -0.095564    0.0036638
    {'Other'     }    131      53    2.4717      0.20049    0.0059418
    {'Totals'    }    803     397    2.0227          NaN    0.0097738

cg=3×2 table
       Category       BinNumber
    ______________    _________

    {'Home Owner'}        1    
    {'Tenant'    }        2    
    {'Other'     }        3    

Для группирования категорий Tenant и Other, изменить таблицу группировки категорий cg чтобы номер ячейки для Other совпадает с номером ячейки для Tenant. Затем используйте modifybins для обновления карты показателей.

cg.BinNumber(3) = 2;
sc = modifybins(sc,'ResStatus','CatGrouping',cg);

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

[bi,cg] = bininfo(sc,'ResStatus')
bi=3×6 table
       Bin        Good    Bad     Odds        WOE       InfoValue 
    __________    ____    ___    ______    _________    __________

    {'Group1'}    365     177    2.0621     0.019329     0.0001682
    {'Group2'}    438     220    1.9909    -0.015827    0.00013772
    {'Totals'}    803     397    2.0227          NaN    0.00030592

cg=3×2 table
       Category       BinNumber
    ______________    _________

    {'Home Owner'}        1    
    {'Tenant'    }        2    
    {'Other'     }        2    

Создать creditscorecard с использованием CreditCardData.mat для загрузки файла data (с использованием набора данных из Refaat 2011).

load CreditCardData 
sc = creditscorecard(data);

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

bi = bininfo(sc,'CustIncome')
bi=46×6 table
       Bin       Good    Bad     Odds         WOE       InfoValue 
    _________    ____    ___    _______    _________    __________

    {'18000'}      2      3     0.66667      -1.1099     0.0056227
    {'19000'}      1      2         0.5      -1.3976     0.0053002
    {'20000'}      4      2           2    -0.011271    6.3641e-07
    {'21000'}      6      3           2    -0.011271    9.5462e-07
    {'22000'}      4      2           2    -0.011271    6.3641e-07
    {'23000'}      4      4           1     -0.70442     0.0035885
    {'24000'}      5      5           1     -0.70442     0.0044856
    {'25000'}      4      9     0.44444      -1.5153      0.026805
    {'26000'}      4     11     0.36364       -1.716      0.038999
    {'27000'}      6      6           1     -0.70442     0.0053827
    {'28000'}     13     11      1.1818     -0.53736     0.0061896
    {'29000'}     11     10         1.1     -0.60911     0.0069988
    {'30000'}     18     16       1.125     -0.58664      0.010493
    {'31000'}     24      8           3      0.39419     0.0038382
    {'32000'}     21     15         1.4     -0.36795     0.0042797
    {'33000'}     35     19      1.8421    -0.093509    0.00039951
      ⋮

Уменьшите количество ячеек с помощью autobinning функция ( modifybins также может использоваться функция).

sc = autobinning(sc,'CustIncome');

Просмотрите обновленную информацию о ячейке. Карта привязки или правила для числовых данных суммируются как «точки отсечения», возвращаемые как необязательный вывод (cp).

[bi,cp] = bininfo(sc,'CustIncome')
bi=8×6 table
           Bin           Good    Bad     Odds         WOE       InfoValue 
    _________________    ____    ___    _______    _________    __________

    {'[-Inf,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

cp = 6×1

       29000
       33000
       35000
       40000
       42000
       47000

Удалите вручную вторую точку реза (границу между вторым и третьим бункерами) для объединения бункеров 2 и 3. Используйте modifybins для обновления карты показателей.

cp(2) = [];
sc = modifybins(sc,'CustIncome','CutPoints',cp,'MinValue',0);

Просмотрите обновленную информацию о ячейке.

[bi,cp,mv] = bininfo(sc,'CustIncome')
bi=7×6 table
           Bin           Good    Bad     Odds         WOE       InfoValue 
    _________________    ____    ___    _______    _________    __________

    {'[0,29000)'    }     53      58    0.91379     -0.79457       0.06364
    {'[29000,35000)'}    142      85     1.6706     -0.19124     0.0071274
    {'[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.12043

cp = 5×1

       29000
       35000
       40000
       42000
       47000

mv = 1×2

     0   Inf

Следует отметить, что рекомендуется избегать использования бункеров с нулевыми частотами, поскольку они приводят к бесконечности или неопределенности (NaN) статистика. Используйте modifybins или autobinning для изменения ячеек.

Создать 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' который включает отсутствующие данные в отдельной ячейке с маркировкой <missing>.

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

    {'[-Inf,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
disp(cg)
       Category       BinNumber
    ______________    _________

    {'Tenant'    }        1    
    {'Home Owner'}        2    
    {'Other'     }        3    

Обратите внимание, что таблица группировки категорий не включает <missing> потому что это зарезервированная ячейка, и пользователи не могут взаимодействовать непосредственно с <missing> бункер.

plotbins(sc,'ResStatus')

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

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

свернуть все

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

Имя предиктора, указанное с помощью символьного вектора, содержащего имя предиктора. PredictorName чувствителен к регистру.

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: bi = bininfo(sc, PredictorName,'Statistics','WOE','Totals','On')

Список статистических данных для включения в информацию ячейки, указанный как пара, разделенная запятыми, состоящая из 'Statistics' и символьный вектор или массив ячеек символьных векторов. Для получения дополнительной информации см. Статистика для кредитной карты показателей. Возможные значения:

  • 'Odds' - Информация о коэффициентах - это соотношение «Товаров» и «Бэдов».

  • 'WOE' - Вес доказательств. WOE Statistic измеряет отклонение между распределением «Товаров» и «Bads».

  • 'InfoValue' - Информационное значение. Тесно связано с WOE, это статистика, используемая для определения того, насколько сильным предиктором является использование в модели подгонки. Измеряет, насколько сильно отклонение между распределениями «Товар» и «Бэдс». Однако ячейки с только «хорошими» или только «плохими» наблюдениями действительно приводят к бесконечному информационному значению. Рассмотрите возможность изменения ячеек в этих случаях с помощью modifybins или autobinning.

  • 'Entropy' - Энтропия является мерой непредсказуемости, содержащейся в бункерах. Чем больше количество «Товаров» и «Бэдов» различается в пределах бункеров, тем ниже энтропия.

  • 'Gini' - Измерение статистической дисперсии или неравенства в выборке данных.

  • 'Chi2' - Измерение статистической разницы и независимости между группами.

Примечание

Избегайте наличия бункеров с нулевыми частотами, поскольку они приводят к бесконечности или неопределенности (NaN) статистика. Использовать modifybins или autobinning для изменения ячеек.

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

Индикатор для включения строки итоговых значений в нижней части информационной таблицы, указанной как разделенная запятыми пара, состоящая из 'Totals' и вектор символов со значениями On или Off.

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

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

свернуть все

Сведения о ячейке, возвращенные в виде таблицы. Информационная таблица складского места содержит одну строку на складское место и строку итоговых сумм. Столбцы содержат описания ячеек, частоты «Хорошо» и «Плохо», а также статистику ячеек. Избегайте наличия бункеров с нулевыми частотами, поскольку они приводят к бесконечности или неопределенности (NaN) статистика. Использовать modifybins или autobinning для изменения ячеек.

Примечание

При создании creditscorecard объект с creditscorecard, если необязательный аргумент пары имя-значение WeightsVar был использован для указания веса наблюдения (образца), затем bi таблица содержит взвешенные счетчики.

Карта или правила привязки, возвращаемые как вектор точек отсечения для числовых предикторов или таблица групп категорий для категориальных предикторов. Дополнительные сведения см. в разделе modifybins.

Минимальное и максимальное значения Binning (заданные или определенные пользователем), возвращаемые в виде числового массива. mv выходной аргумент устанавливается в пустой массив для категориальных предикторов.

Подробнее

свернуть все

Статистика для кредитной карты показателей

Вес доказательств (WOE) - это мера разницы распределения «Товаров» и «Бэдов» внутри бункера.

Предположим, что данные предсказателя принимают M возможных значений b1,..., bM. Для привязанных данных M - небольшое число. Ответ принимает два значения: «Хорошо» и «Плохо». Таблица частот данных задается следующим образом:

 ХорошоПлохоОбщее количество
b1:n11n12n1
b2:n21n22n2
bM:nM1nM2nM
Итого:nGoodnBadnTotal

Вес доказательств (WOE) определяется для каждого значения данных. bi как

 WOE(i) = log((ni1/nGood)/(ni2/nBad)).

При определении

 pGood(i) = ni1/nGood, pBad(i) = ni2/nBad

тогда pGoodi) Доля «хороших» наблюдений, которые принимают значение bi, и аналогично для pBad(i). Другими словами, pGood(i) дает распределение хороших наблюдений по М наблюдаемым значениям предиктора и аналогично для pBad(i). При этом эквивалентной формулой для WOE является

WOE(i) = log(pGood(i)/pBad(i)).
Используя ту же таблицу частот, коэффициенты для строки i определяются как
Odds(i) = ni1 / ni2,
и шансы для выборки определяются как
OddsTotal = nGood / nBad.

Для каждой строки i можно также вычислить ее вклад в общее информационное значение, заданное

InfoValue(i) = (pGood(i) - pBad(i)) * WOE(i),

и общее информационное значение является просто суммой всех InfoValuel (i) условия. ( Anansum возвращается для отбрасывания вкладов из строк без каких-либо наблюдений.)

Аналогично, для каждой строки i мы можем вычислить его вклад в общую энтропию, заданную

 Entropy(i) = -1/log(2)*(ni1/ni*log(ni1/ni)+ni2/ni*log(ni2/ni),
и общая энтропия является просто взвешенной суммой энтропий строки,
Entropy = sum(ni/nTotal * Entropy(i)), i = 1...M.

Chi2 вычисляется попарно для каждой пары ячеек и измеряет статистическую разницу между двумя группами при разделении или слиянии ячеек и определяется как:

 Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=m,m+1).
Дополнительные сведения о разделении и объединении ячеек см. в разделе Разделение и объединение.

Коэффициент Джини является мерой родительского узла, то есть заданных ячеек/категорий перед разделением или объединением. Коэффициент Джини определяется как:

Gr = 1-G_hat/Gp
G_hat - взвешенная мера Джини для текущего разделения или слияния:
G_hat = Sum((nj/N) * Gj, j=1..m).
Дополнительные сведения о разделении и объединении ячеек см. в разделе Разделение и объединение.

Используя bininfo с весами

При определении весов наблюдения с помощью необязательного параметра WeightsVar аргумент при создании creditscorecard объект, вместо подсчета строк, которые являются хорошими или плохими в каждой ячейке, bininfo функция накапливает вес строк, которые являются хорошими или плохими в каждой ячейке.

Указанные «частоты» больше не являются основным «количеством» строк, а «совокупным весом» строк, которые являются хорошими или плохими и попадают в конкретный бункер. Как только эти «взвешенные частоты» известны, вся другая соответствующая статистика (Good, Bad, Odds, WOE, и InfoValue) вычисляются с помощью обычных формул. Для получения дополнительной информации см. Моделирование карт показателей кредитования с использованием весов наблюдений.

Ссылки

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

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

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