Группировка категорий и сегментация признаков в логистической регрессии (пример)
Материал из MachineLearning.
Строка 39: | Строка 39: | ||
Также предлагается один из классических методов группировки категорий. Для этого сначала для каждого значения номинального признака считается его <tex>WOE</tex> (Weight of evidence) по формуле: <tex>WOE = 100* \ln(\frac{Distr Good}{Distr Bad})</tex>, где <tex>Distr Good</tex> в данном случае - отношение числа людей, которым выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым выдали кредит. <tex>Distr Bad</tex> - отношение числа людей, которым не выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым не выдали кредит. Теперь пусть некоторый номинальный признак под номером <tex>j</tex> принимает значения <tex>\tex\{1,\ldots,n_{j}\}</tex>. Для него нужно рассчитать <tex>IV</tex>(Information Value) по формуле: <tex> IV = \sum_{i = 1}^{n_j}(Distr Good_{i} - Distr Bad_{i})* \ln(\frac{Distr Good_{i}}{Distr Bad_{i}})</tex>. Для признаков с самыми большими значениями <tex>IV</tex> в одну группу объединяются категории с близкими значеними <tex>WOE</tex>. При таком подходе важно задать условия близости значений <tex>WOE</tex> и количество группируемых категорий. | Также предлагается один из классических методов группировки категорий. Для этого сначала для каждого значения номинального признака считается его <tex>WOE</tex> (Weight of evidence) по формуле: <tex>WOE = 100* \ln(\frac{Distr Good}{Distr Bad})</tex>, где <tex>Distr Good</tex> в данном случае - отношение числа людей, которым выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым выдали кредит. <tex>Distr Bad</tex> - отношение числа людей, которым не выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым не выдали кредит. Теперь пусть некоторый номинальный признак под номером <tex>j</tex> принимает значения <tex>\tex\{1,\ldots,n_{j}\}</tex>. Для него нужно рассчитать <tex>IV</tex>(Information Value) по формуле: <tex> IV = \sum_{i = 1}^{n_j}(Distr Good_{i} - Distr Bad_{i})* \ln(\frac{Distr Good_{i}}{Distr Bad_{i}})</tex>. Для признаков с самыми большими значениями <tex>IV</tex> в одну группу объединяются категории с близкими значеними <tex>WOE</tex>. При таком подходе важно задать условия близости значений <tex>WOE</tex> и количество группируемых категорий. | ||
== Вычислительный эксперимент == | == Вычислительный эксперимент == | ||
- | |||
- | |||
=== Визуализация результатов === | === Визуализация результатов === | ||
- | Результат выполнения алгоритма поиска множества активных признаков. Линейные признаки для удобства перенесены в начало. | + | Результат выполнения алгоритма поиска множества активных признаков. Линейные признаки для удобства перенесены в начало списка. |
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Строка 48: | Строка 46: | ||
|- | |- | ||
- | |1,2,3,4,5,6,9,10,16,20 | + | | 1, 2, 3, 4, 5, 6, 7, 9, 10, 11 , 12, 16, 20 |
|} | |} | ||
Строка 61: | Строка 59: | ||
[[Изображение:Step_2_function_(640_x_454).png]] | [[Изображение:Step_2_function_(640_x_454).png]] | ||
+ | |||
+ | === ROC - кривые === | ||
+ | В случае группировки перебором. | ||
+ | |||
+ | [[Изображение:Brforcegrouping.png]] | ||
+ | |||
+ | Классическая группировка. | ||
+ | С условием близости Weight of evidence равным 10. Дискретизация меньше , так как число групп больше чем в предыдущем случае. | ||
+ | |||
+ | [[Изображение:Clgr10.png]] | ||
+ | |||
+ | С условием близости Weight of evidence равным 5. | ||
+ | |||
+ | [[Изображение:Clgr5.png]] | ||
+ | |||
+ | Сегментация линейных признаков. Шаг функции <tex>f(x)</tex> равен 2. Значения сильно изменяются, так как в группировке категорий линейные признаки были исключены. | ||
+ | |||
=== Исследование свойств алгоритма === | === Исследование свойств алгоритма === | ||
+ | ==== Значения Information Value для номинальных признаков ==== | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 4 | ||
+ | ! 5 | ||
+ | ! 6 | ||
+ | ! 7 | ||
+ | ! 9 | ||
+ | ! 10 | ||
+ | ! 11 | ||
+ | ! 12 | ||
+ | ! 16 | ||
+ | ! 20 | ||
+ | |- | ||
+ | | 0.6670 | ||
+ | | 0.2092 | ||
+ | | 0.1960 | ||
+ | | 0.0864 | ||
+ | | 0.0036 | ||
+ | | 0.1126 | ||
+ | | 0.0576 | ||
+ | | 0.0133 | ||
+ | | 0.0322 | ||
+ | | 0.0314 | ||
+ | |} | ||
+ | ==== Значения S(w) на контрольной выборке ==== | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Сегментация линейных | ||
+ | ! Классическая группировка | ||
+ | ! Альтернативная группировка | ||
+ | |- | ||
+ | | строка 1, ячейка 1 | ||
+ | | 158.1518 | ||
+ | | 145.6036 | ||
+ | |} | ||
+ | S(w) на контроле принимает наилучшее значение при сегментации линенйных признаков. Переборная группировка дает несколько лучшее по сравнению с классикой значение S(w) на контроле, зато сама модель несколько хуже, чем в классическом случае с точки зрения значения AUC. | ||
== Исходный код == | == Исходный код == | ||
Версия 18:08, 31 октября 2010
Группировка категорий и сегментация признаков — методы, позволяющие упростить и одновременно улучшить регрессионную модель. В частности, группировка категорий позволяет понять взаимосвязь значений признаков и использовать линейные модели для нелинейных зависимостей.
Содержание |
Постановка задачи
Дана задача кредитного скоринга. Регрессионная модель - логистическая регрессия. Требуется найти множество активных признаков. Затем сегментировать линейные признаки, сгруппировать номинальные и ординарные. При этом надо применить как новые алгоритмы, так и классические. Сравнить оба подхода, вычислить статистическую значимость производных признаков.
Описание данных
Используются реальные данные (GERMAN_UIC) о выдаче или не выдаче банком кредитов. Всего приведены 24 признака для 1000 человек и информация о том, выдан ли впоследствии кредит. Формально данные можно представить следующим образом:
Набор данных:
Целевая переменная:
Модель:
где
Индексы:
- разбиение на обучающую и контрольную выборки.
- индексы признаков.
Описание алгоритмов
Поиск активных признаков
Сначала находится множество активных признаков. Для этого решается задача максимизации правдоподобия, или эквивалентно - минимизация его логарифма, взятого с противополжным знаком
Здесь под строкой подразумевается строка из условия, но с удаленными координатами, номера которых не входят во множество индексов
. Вектор
соответствующей длины. Множество активных признаков -
. Тогда задача нахождения множества активных признаков и соответствующего им вектора весов записывается в виде
Для решения задачи поиска множества активных признаков предлагается следующий подход. Все линейные признаки заведомо считаются активными. В данном случае их всего 3, и впоследствии они будут сегментированы. Далее используется простой жадный алгоритм, удаляющий на каждом шаге признак, без которого значение правдоподобия наиболее оптимально. В логистической регрессии добавляется постоянный признак, а вектор весов находится с помощью алгоритма Ньютона - Рафсона. В данном эксперименте считается, что удаленными должны быть около половины всех признаков.
Сегментация линейных признаков
Пусть значения линейного признака характеризуются числами из отрезка
. Вводится разбиение отрезка
, на
отрезков одинаковой длины
. Строится кусочно - линейная функция
. Значения признака - значение функции в соответствующей точке отрезка
. Коэффициенты
подобираются так, чтобы
где
. На каждом шаге алгоритма случайным образом изменяется значение
, но так, чтобы не изменить порядок чисел разбиения. Коэффициенты
изменяются соответсвующим образом. Если для новой функции
значение
уменьшается, то сохраняется изменение
. Алгоритм заканчивает работу по достижении первого минимума.
Группировка категорий
Пусть номинальный признак характеризуются числами из множества категорий
. Ему в соответствие ставится множество
такое, что
. Требуется найти такую сюръективную функцию
и соответствующее ей множество
, которая минимизирует функцию
при замене для
:
на
. В данном случае признаков и категорий достаточно мало, поэтому эффективен полный перебор.
Также предлагается один из классических методов группировки категорий. Для этого сначала для каждого значения номинального признака считается его (Weight of evidence) по формуле:
, где
в данном случае - отношение числа людей, которым выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым выдали кредит.
- отношение числа людей, которым не выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым не выдали кредит. Теперь пусть некоторый номинальный признак под номером
принимает значения
. Для него нужно рассчитать
(Information Value) по формуле:
. Для признаков с самыми большими значениями
в одну группу объединяются категории с близкими значеними
. При таком подходе важно задать условия близости значений
и количество группируемых категорий.
Вычислительный эксперимент
Визуализация результатов
Результат выполнения алгоритма поиска множества активных признаков. Линейные признаки для удобства перенесены в начало списка.
Активные признаки. |
---|
1, 2, 3, 4, 5, 6, 7, 9, 10, 11 , 12, 16, 20 |
Примеры сегментации линейных признаков
Изображен график функции .
Признак номер 1. Начальная длина шага равна 8.
Признак номер 1. Начальная длина шага равна 4.
ROC - кривые
В случае группировки перебором.
Классическая группировка. С условием близости Weight of evidence равным 10. Дискретизация меньше , так как число групп больше чем в предыдущем случае.
С условием близости Weight of evidence равным 5.
Сегментация линейных признаков. Шаг функции равен 2. Значения сильно изменяются, так как в группировке категорий линейные признаки были исключены.
Исследование свойств алгоритма
Значения Information Value для номинальных признаков
4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 16 | 20 |
---|---|---|---|---|---|---|---|---|---|
0.6670 | 0.2092 | 0.1960 | 0.0864 | 0.0036 | 0.1126 | 0.0576 | 0.0133 | 0.0322 | 0.0314 |
Значения S(w) на контрольной выборке
Сегментация линейных | Классическая группировка | Альтернативная группировка |
---|---|---|
строка 1, ячейка 1 | 158.1518 | 145.6036 |
S(w) на контроле принимает наилучшее значение при сегментации линенйных признаков. Переборная группировка дает несколько лучшее по сравнению с классикой значение S(w) на контроле, зато сама модель несколько хуже, чем в классическом случае с точки зрения значения AUC.
Исходный код
Смотри также
- Машинное обучение (курс лекций, К.В.Воронцов)
- Логистическая регрессия (пример)
- Логистическая функция
- Регрессионный анализ
- Алгоритм Ньютона-Рафсона
- Метод наименьших квадратов
Литература
- Siddiqi N. Credit Risk Scorecards: Developing and Implementing Intelligent Credit Scoring. John Wiley & Sons, Inc. 2006
- Bishop C. Pattern Recognition And Machine Learning. Springer. 2006.
![]() | Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |