Группировка категорий и сегментация признаков в логистической регрессии (пример)

Материал из MachineLearning.

Перейти к: навигация, поиск

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

Сегментация признака - разбиение множества значений признака на некоторые семейства таким образом, чтобы учесть нелинейные зависимости значений признака в обобщенно - линейной модели.

Содержание

Постановка задачи

Задана регрессионная модель - логистическая регрессия.

Набор данных: \mathbf{x}\in\mathbb{R}^{n},\ y\in\{0, 1\}

\mathbf{D} = \{(\mathbf{x}^{1},y^{1}),\ldots,(\mathbf{x}^{i},y^{i}),\ldots,(\mathbf{x}^{m},y^{m})\}

Целевая переменная: \mathbf{y} = (y^{1},\ldots,y^{m})^{T}

Модель: P(y^{i}|\mathbf{x}^i) = (\sigma(\langle\mathbf{w},\mathbf{x}^{i}\rangle))^{y^{i}}(1 - \sigma(\langle\mathbf{w},\mathbf{x}^{i}\rangle))^{1 - y^{i}}\ где \sigma(\langle\mathbf{w},\mathbf{x}^{i}\rangle) = \frac{1}{1 + \exp(-\langle\mathbf{w},\mathbf{x}^{i}\rangle)}

Индексы: \{1,\ldots,m\} = \mathbf{L}\cup\mathbf{T} - разбиение на обучающую и контрольную выборки. \{1,\ldots,n\} = \mathbf{F} - индексы признаков.

Требуется:

1) Сегментировать линейные признаки.

2) Категоризовать номинальные признаки.

При этом надо применить как новые алгоритмы, так и классические, приведенные в книге Credit Risk Scorecards: Developing and Implementing Intelligent Credit Scoring. Сравнить оба подхода.

Описание алгоритмов

До выполнения алгоритмов сегментации и категоризации предполагается из начальных данных выбрать набор признаков для построения регрессинной модели. Принято называть такие признаки активными. Для этого решается задача максимизации правдоподобия на контрольной выборке, или эквивалентно - минимизация его логарифма, взятого с противополжным знаком

-\ln(P(\mathbf{y}|\mathbf{x})) = - \sum_{i\subseteq\mathbf{L}}(y^{i}\ln(\sigma(\langle\mathbf{w},\mathbf{x}^{i}\rangle)) + (1 - y^{i})\ln(1 - \sigma(\langle\mathbf{w},\mathbf{x}^{i}\rangle))) = S_{\mathbf{L},\mathbf{A}}(\mathbf{w})

Здесь под строкой \mathbf{x}^{i} подразумевается строка из условия, но с удаленными координатами, номера которых не входят во множество индексов A. Вектор \mathbf{w} соответствующей длины. Текущее множество активных признаков - \mathbf{A}\subseteq\mathbf{F} . Тогда задача нахождения множества активных признаков и соответствующего им вектора весов записывается в виде

\mathbf{w}_{\mathbf{A}} = \underset{\mathbf{w}}{\operatorname{argmin}}(S_{\mathbf{L},\mathbf{A}}(\mathbf{w}))

\mathbf{A} = \underset{\mathbf{A}^{*}\in2^{\mathbf{F}}}{\operatorname{argmin}}(S_{\mathbf{T},\mathbf{A}^{*}}(\mathbf{w}__{\mathbf{A}^{*}}))

На первом шаге все номинальные признаки считаются активными. Затем используется простой жадный алгоритм, удаляющий на каждом шаге признак, без которого значение правдоподобия на контрольной выборке наиболее оптимально. Вектор весов находится с помощью алгоритма Ньютона - Рафсона. В данном эксперименте считается, что активными должны получится около половины признаков.

Сегментация линейных признаков

Пусть линейный признак \mathbf{x}_{j} принимают значения из отрезка [a_{j},b_{j}]. Вводится начальное разбиение отрезка [a_{j},b_{j}], на k отрезков одинаковой длины a_{j} = x_{1} < x_{2} < \ldots < x_{n_{k}} = b_{j}. Строится кусочно - линейная функция f(x) = a x+ b + c_1|x-x_1| + c_2|x-x_2| + \ldots +c_n|x-x_n_k|. На каждом шаге алгоритма случайным образом изменяется значение x_{i}, где индекс i - случаное число из 1 ,\ldots, n_{k}. Коэффициенты f(x) при этом всегда изменяются так, чтобы f(x_{2m - 1}) = 0,\ f(x_{2m}) = 1 где m\in\mathbb N. Для \mathbf{x}_{j} и построенной f(x) строится признак \mathbf{j}: значения нового признака - значение функции в соответствующей точке отрезка [a_{j},b_{j}]. Если для новой функции f(x) значение S_{\mathbf{L},\mathbf{A}^{*}}(\mathbf{w}) уменьшается, то сохраняется изменение x_{i}. Здесь \mathbf{A}^{*} = \mathbf{A}\cup\mathbf{j}. Алгоритм заканчивает работу по достижении первого минимума.

Группировка категорий

Пусть номинальный признак \mathbf{x}_{i} характеризуются числами из множества категорий \tex\{1,\ldots,c\}. Ему в соответствие ставится множество \Gamma такое, что 1 \le |\Gamma| \le c. Требуется найти такую сюръективную функцию h_{\Gamma}:\{1,\ldots,c\}\to\Gamma и соответствующее ей множество \Gamma = \{1,\ldots,c^{*}\}, которая минимизирует функцию S_{\mathbf{T},\mathbf{A}(\mathbf{w}) при замене для \mathbf{x}_{i}: \tex\{1,\ldots,c\} на \tex\{h_{\Gamma}(1),\ldots,h_{\Gamma}(c)\}. В данном случае признаков и категорий достаточно мало, поэтому эффективен полный перебор.


Также предлагается один из классических методов группировки категорий. Для этого сначала для каждого значения номинального признака считается его WOE (Weight of evidence) по формуле: WOE = 100* \ln(\frac{Distr Good}{Distr Bad}), где Distr Good в данном случае - отношение числа людей, которым выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым выдали кредит. Distr Bad - отношение числа людей, которым не выдали кредит, имевших данное значение номинального признака, к общему числу людей, которым не выдали кредит. Теперь пусть некоторый номинальный признак под номером j принимает значения \tex\{1,\ldots,n_{j}\}. Для него нужно рассчитать IV(Information Value) по формуле:  IV = \sum_{i = 1}^{n_j}(Distr Good_{i} - Distr Bad_{i})* \ln(\frac{Distr Good_{i}}{Distr Bad_{i}}). Для признаков с самыми большими значениями IV в одну группу объединяются категории с близкими значеними WOE. При таком подходе важно задать условия близости значений WOE и количество группируемых категорий.

Вычислительный эксперимент

Описание данных

Используются реальные данные (GERMAN_UIC) о выдаче или не выдаче банком кредитов. Всего приведены 24 признака для 1000 человек и информация о том, выдан ли впоследствии кредит. Формально данные можно представить следующим образом:


Визуализация результатов

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

Активные признаки.
1, 2, 3, 4, 5, 6, 7, 9, 10, 11 , 12, 16, 20

Примеры сегментации линейных признаков

Изображен график функции f(x).

Признак номер 1. Начальная длина шага равна 8.

Изображение:step 4 function.png

Признак номер 1. Начальная длина шага равна 4.

Изображение:Step_2_function_(640_x_454).png

ROC - кривые

В случае группировки перебором.

Изображение:Brforcegrouping.png

Классическая группировка. С условием близости Weight of evidence равным 10. Дискретизация меньше , так как число групп больше чем в предыдущем случае.

Изображение:Clgr10.png

С условием близости Weight of evidence равным 5.

Изображение:Clgr5.png

Сегментация линейных признаков. Шаг функции f(x) равен 2. Значения сильно изменяются, так как в группировке категорий линейные признаки были исключены.

Изображение:Segm2.png

Исследование свойств алгоритма

Значения 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) на контрольной выборке

Сегментация линейных Классическая группировка Альтернативная группировка
123.2138 158.1518 145.6036

S(w) на контроле принимает наилучшее значение при сегментации линенйных признаков. Переборная группировка дает несколько лучшее по сравнению с классикой значение S(w) на контроле, зато сама модель несколько хуже, чем в классическом случае с точки зрения значения AUC.

Исходный код

  • Исходный код Matlab

Смотри также

  1. Машинное обучение (курс лекций, К.В.Воронцов)
  2. Логистическая регрессия (пример)
  3. Логистическая функция
  4. Регрессионный анализ
  5. Алгоритм Ньютона-Рафсона
  6. Метод наименьших квадратов

Литература

  • 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.
  • D. W. Hosmer, S. Lemeshow. Applied logistic regression. Wiley, New York, 2000.
Данная статья является непроверенным учебным заданием.
Студент: Участник:Никита Животовский
Преподаватель: Участник:В.В. Стрижов
Срок: ?

До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}.

См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.

Личные инструменты