Я пытаюсь понять, как я могу кодировать категориальные переменные, используя оценку правдоподобия, но пока добился небольшого успеха.
Любые предложения будут ценны.
feature-engineering
маленький карлик
источник
источник
Ответы:
Я тоже изучал эту тему, и вот что я нашел:
Этот тип кодирования называется вероятностным кодированием , ударным кодированием или целевым кодированием.
Идея заключается в кодировании вашей категориальной переменной с использованием целевой переменной (непрерывной или категориальной в зависимости от задачи). Например, если у вас есть задача регрессии, вы можете закодировать свою категориальную переменную с помощью среднего целевого значения. Для каждой категории вы вычисляете соответствующее среднее значение цели (среди этой категории) и заменяете значение категории этим средним значением.
Если у вас есть задача классификации, вы рассчитываете относительную частоту вашей цели по отношению к каждому значению категории.
С математической точки зрения эта кодировка означает вероятность вашей цели, зависящую от значения каждой категории.
Если вы сделаете это простым способом, как я описал выше, вы, вероятно, получите предвзятую оценку. Вот почему в сообществе Kaggle они обычно используют 2 уровня перекрестной проверки. Прочитайте этот комментарий Раддара здесь . Соответствующая записная книжка здесь .
Цитата:
Другая реализация этой кодировки здесь .
В R библиотеки vtreat есть реализация ударного кодирования. Смотрите этот пост .
В библиотеке CatBoost есть много опций для кодирования категориальных переменных, включая целевую кодировку.
В sklearn такой кодировки еще нет.
источник
Целевое кодирование теперь доступно в sklearn через пакет category_encoders.
Как отметил Джош в комментарии выше.
источник
Кодирование правдоподобия по-прежнему недоступно в Scikit Learn. Вы можете сделать это, создав словарь, а затем выполнить функцию замены.
источник