Как выполнить целевое кодирование, когда данные содержат повторяющиеся строки?

Вопрос или проблема

Как мне выполнить кодирование для категории, если данные содержат повторяющиеся строки? Могу ли я выполнить целевое кодирование? Или могу использовать другое кодирование?

Я хочу выяснить, как включить категориальную переменную в модель для предсказания числовой переменной Y. Поскольку я работаю с некоторыми законодательными данными, моя проблема заключается в том, что код категории содержит более 4000 уникальных значений, которые нельзя легко сгруппировать (*) и они могут повторяться. Фактически, анекдотически я знаю, что этот код является сильным предиктором Y, а повторы кода в строке будут иметь более сильное влияние на Y.

Моя попытка решения:
На самом деле, я попробовал сделать это сам, думая, что, возможно, что-то настолько простое, как среднее значение целевой переменной, умноженное на количество каждого кода (Таблица B * Таблица C). Но я не уверен, что это действительный тип кодирования.

A = образец законодательных данных для предсказания переменной этики Y, значения были анонимизированы

+-----+-----------+------------+
| row | Category  | Y variable |
+-----+-----------+------------+
|   2 | 15-11-2   |        370 |
|   2 | 15-11-106 |        370 |
|   2 | 15-5-44   |        370 |
|   2 | 15-11-41  |        370 |
|   3 | 15-7-23   |        363 |
|   3 | 15-7-23   |        363 |
|   3 | 15-11-37  |        363 |
|   3 | 15-11-37  |        363 |
|   3 | 15-5-21   |        363 |
|   6 | 15-11-106 |        287 |
|   6 | 15-5-21   |        287 |
|   7 | 16-5-70   |        931 |
|   7 | 15-5-23   |        931 |
|   7 | 15-5-41   |        931 |
|   9 | 15-11-7   |        336 |
|   9 | 15-2-30   |        336 |
|   9 | 40-11-76  |        336 |
|   9 | 15-2-2    |        336 |
|   9 | 15-11-131 |        336 |
|   9 | 15-11-131 |        336 |
|  10 | 15-2-30   |        350 |
|  10 | 15-11-131 |        350 |
+-----+-----------+------------+

B = Средние значения для уникальных строк

+-----------+-----------------------+
| Category  | Average of Y variable |
+-----------+-----------------------+
| 15-11-106 | 334.714               |
| 15-11-2   | 298.994               |
| 15-11-37  | 251.931               |
| 15-11-41  | 399.210               |
| 15-11-7   | 288.021               |
| 15-2-2    | 234.533               |
| 15-2-30   | 303.127               |
| 15-5-21   | 317.999               |
| 15-5-23   | 252.109               |
| 15-5-41   | 300.882               |
| 15-5-44   | 499.405               |
| 15-5-70   | 277.306               |
| 15-7-23   | 244.976               |
| 40-11-76  | 261.938               |
| 15-11-131 | 319.799               |
+-----------+-----------------------+

Таблица C: Количества каждой категории

+-----+-----------+-------------------+
| row | Category  | Count of Category |
+-----+-----------+-------------------+
|   2 | 15-11-106 |                 1 |
|   2 | 15-11-2   |                 1 |
|   2 | 15-11-41  |                 1 |
|   2 | 15-5-44   |                 1 |
|   3 | 15-11-37  |                 2 |
|   3 | 15-5-21   |                 1 |
|   4 | 15-7-23   |                 2 |
|   4 | 16-8-18   |                 1 |
|   5 | 16-7-1    |                 1 |
|   6 | 16-8-2    |                 1 |
|   6 | 15-11-106 |                 1 |
|   7 | 15-5-21   |                 1 |
|   7 | 15-5-23   |                 1 |
|   8 | 15-5-41   |                 1 |
|   8 | 16-5-70   |                 1 |
|   8 | 16-11-37  |                 1 |
|   8 | 16-7-21   |                 1 |
|   9 | 15-11-131 |                 2 |
|   9 | 15-11-7   |                 1 |
|   9 | 15-2-2    |                 1 |
|   9 | 15-2-30   |                 1 |
|   9 | 40-11-76  |                 1 |
|  10 | 15-11-131 |                 1 |
|  10 | 15-2-30   |                 1 |
|  10 | 40-11-76  |                 1 |
|     |           |                   |
+-----+-----------+-------------------+

Сноска:
(*) Что я имею в виду под “код категории нельзя легко сгруппировать”, так это то, что 15-11-2 и 15-11-1 нельзя сгруппировать под 15-11 или 15. Я также пробовал кластеризацию.

Да, вы можете выполнить целевое кодирование. Посмотрите это видео с @2:18 до @3:50. Надеюсь, это поможет.

Обновление: Таблицы B достаточно, чтобы кодировать, у вас есть средние значения y для каждой категории. Если ответ выглядит так [15-11-106, 15-11-2], то вы можете заменить эти значения на [334.714, 298.994], теперь вы можете применить любую статистику, чтобы получить окончательное значение кодирования, будь то среднее/мода/медиана и т.д. этих значений.

Среднее значение целевой переменной, умноженное на количество каждого кода (Таблица B * Таблица C) — это ничего иное, как сумма целевой переменной для каждой уникальной категории (вместо среднего значения целевой переменной вы собираетесь выбрать сумму целевой переменной). Я не думаю, что это хорошая стратегия.

Ответ или решение

Как производить целевое кодирование при наличии повторяющихся строк

Введение

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

Понимание целевого кодирования

Целевое кодирование подразумевает замену категориальных значений на статистические меры, связанные с целевой переменной (например, среднее значение целевой переменной для каждой категории). Этот метод может быть особенно эффективным, когда у вас есть множество уникальных категорий, как в вашей ситуации (более 4000 уникальных значений).

Обработка повторяющихся строк

Поскольку ваши данные содержат повторяющиеся категории, вам необходимо учитывать это в процессе кодирования. Рассмотрим ваши предложения и дополнения:

  1. Подсчет среднего значения целевой переменной: Как правильно указано в ваших таблицах, первым шагом является получение среднего значения целевой переменной Y для каждой уникальной категории. Этот шаг вы уже успешно выполнили, создав таблицу B.

  2. Интеграция с частотой появления: Вместо прямого использования средних значений, как вы предложили, целесообразно рассмотреть возможность применения весов, основанных на частоте появления каждой категории. Это позволит вам учесть, как количество повторений влияет на влияние данной категории на целевую переменную. Например, для категории, которая появляется несколько раз, можно умножить среднее значение категории на количество её вхождений.

  3. Итоговая формула: Для каждой строки в вашем наборе данных вы можете вычислить целевое значение следующим образом:
    [
    \text{Значение} = \frac{(\text{Среднее значение для категории}) \times (\text{Количество вхождений})}{\text{Общее количество вхождений для всех категорий}}
    ]

  4. Суммы и средние значения: Также вы можете рассмотреть возможность создания сводной меры, например, использовать модуль или медиану среди средних значений для категорий, которые встречаются в строке. Это позволит смягчить влияние выбросов, которые могут возникнуть при использовании простого среднего значения.

Пример практического применения

В вашем случае, предположим, что для строки, содержащей категории [15-11-106, 15-11-2]:

  • Среднее значение для 15-11-106 = 334.714
  • Среднее значение для 15-11-2 = 298.994

Вы можете взять их среднее:
[
\text{Итоговое значение} = \frac{334.714 + 298.994}{2} = 316.854
]

Либо, если учитывать частоту:

  • Далее, если 15-11-106 встречается 3 раза, а 15-11-2 2 раза, итог будет:
    [
    \text{Итоговое значение} = \frac{(334.714 \times 3) + (298.994 \times 2)}{3 + 2} = \frac{1004.142 + 597.988}{5} = 320.042
    ]

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...