Сравнение различных энкодеров категориальных признаков

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы сравним производительность различных категориальных энкодеров на наборе данных с оценками вин. В качестве целевой переменной для прогнозирования мы будем использовать столбец 'points'. Мы сравним следующие энкодеры: TargetEncoder, OneHotEncoder, OrdinalEncoder и удаление категории. Также рассмотрим, как использовать встроенную поддержку категориальных признаков в HistGradientBoostingRegressor.

Советы по работе с ВМ

После запуска ВМ кликните в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

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

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49316{{"Сравнение различных энкодеров категориальных признаков"}} end

Загрузка данных из OpenML

Во - первых, мы загружаем набор данных с оценками вин с помощью функции fetch_openml из модуля scikit - learn.datasets. Мы будем использовать только подмножество числовых и категориальных признаков в данных. В данных мы будем использовать следующее подмножество числовых и категориальных признаков: numerical_features = ["price"] и categorical_features = ["country", "province", "region_1", "region_2", "variety", "winery"].

Обучение и оценка конвейеров с различными энкодерами

В этом разделе мы будем оценивать конвейеры с использованием HistGradientBoostingRegressor с различными стратегиями кодирования. Мы будем оценивать модели с использованием кросс-валидации и записывать результаты.

Встроенная поддержка категориальных признаков

В этом разделе мы строим и оцениваем конвейер, который использует встроенную поддержку категориальных признаков в HistGradientBoostingRegressor, которая поддерживает не более 255 уникальных категорий. Мы группируем категориальные признаки на признаки с низкой и высокой кардинальностью. Высококардинальные признаки будут закодированы с использованием целевого кодирования, а низкокардинальные признаки будут использовать встроенную категориальную функцию в градиентном бустинге.

Построение графиков результатов

В этом разделе мы показываем результаты, построив графики тестовых и обучающих оценок.

Обзор

В этом практическом занятии мы сравнили производительность различных энкодеров категориальных признаков на наборе данных с оценками вин. Мы также рассмотрели, как использовать встроенную поддержку категориальных признаков в HistGradientBoostingRegressor. Мы обнаружили, что удаление категорий дает худшие результаты, а энкодеры целевых переменных показывают наилучшие. Ординальное кодирование назначает произвольный порядок признакам, которые затем обрабатываются как числовые значения в HistGradientBoostingRegressor. Схема one - hot кодирования, вероятно, привела бы к переобучению конвейера, так как количество признаков резко возрастает при редких категориях, которые случайно коррелируют с целевой переменной. При использовании энкодера целевых переменных происходит такое же группирование, но поскольку закодированные значения статистически упорядочены по связи с целевой переменной, использование группирования в HistGradientBoostingRegressor имеет смысл и приводит к хорошим результатам.