Вопрос или проблема
Допустим, я пытаюсь предсказать, будет ли автомобиль продан на аукционе или нет (это не то, чем я на самом деле занимаюсь, но это хорошо это иллюстрирует), используя табличные данные. У меня есть год выпуска автомобиля, его цвет, модель и т. д. Модель — это название автомобиля (например, Sportage, Mazda3 и т. д.), и некоторые из более известных моделей, такие как Sportage, появляются много раз, тогда как менее популярные могут появляться только один или два раза. В этом случае какой идеальный способ справиться с этим?
Больше информации:
В моем случае у меня около 3000 различных моделей автомобилей, и первые две или три составляют около 20% моих данных, но остальные появляются только один или два раза в общем наборе данных. Я пробовал кодирование с помощью one-hot, и это значительно увеличило мой результат, но этого все еще недостаточно (я знаю, что на самом деле это может быть лучше).
P.S: Я уже смотрел посты о высокой кардинальности, и хотя я думаю, что это связано с моей проблемой, это все же другая тема.
Спасибо большое!
Поскольку несколько моделей автомобилей составляют ваши 20% данных, вы можете создать матрицу сходства всех классов автомобилей с этими 2-3 моделями автомобилей. Таким образом, в этой матрице каждая модель автомобиля имеет 2-3 значения, отражающих ее сходство с этими 2-3 моделями автомобилей. Теперь вы можете добавить эти новые признаки к существующим признакам, чтобы улучшить классификацию недостаточно представленных моделей автомобилей.
Вы можете поиграть с количеством моделей автомобилей, чтобы сравнить каждую модель автомобиля. Здесь эти 2-3 модели автомобилей охватывают 20% ваших данных. Возможно, что 30 моделей автомобилей охватят, скажем, 40% данных, что все еще полезно, так как у нас есть 3000 моделей автомобилей.
Ответ или решение
Если вы работаете с проблемами предсказания на основе табличных данных, где одна из категорий (например, модели автомобилей) имеет высокую кардинальность и обладает несбалансированным распределением, необходимо применить несколько стратегий для улучшения качества ваших моделей. В вашей ситуации, когда несколько популярных моделей составляют 20% данных, а остальные встречаются лишь по одному или два раза, рассмотрите следующие подходы:
1. Классификация и сгруппирование
Перед тем как перейти к сложным методам, можно рассмотреть возможность сгруппирования менее популярных моделей. Например, если у вас есть более 3000 различных моделей, вы можете сгруппировать их в несколько классов: «другие» или по регионам/производителям. Это позволит уменьшить разрозненность данных и повысит количество примеров в каждой категории.
2. Создание дополнительных признаков
Для недостающих данных можно создать дополнительные признаки, учитывающие информацию, связанную с популярными моделями. Ваша идея о ценностной оценке модели сравнения достаточно разумна. Рассмотрите возможность создания матрицы схожести между автомобильными моделями. Каждый опыт может быть описан новым набором признаков, отражающих схожесть с 2-3 наиболее популярными моделями. Вы можете исследовать следующие методы для улучшения представления данных:
- Векторизация: Используйте TF-IDF или word embeddings для генерации числовых представлений на основе текста (например, названий моделей).
- Эмбеддинги: Рассмотрите возможность применения эмбеддингов, чтобы создать более компактные представления для каждой модели. Это позволит вашему алгоритму "учиться" на связях между популярными и редкими моделями.
- Добавление контекстуальных данных: Вещественные / контекстные атрибуты, такие как страна производства или тип кузова, могут зависеть от модели. Добавьте их как новые признаки.
3. Модели, устойчивые к классовому дисбалансу
Используйте модели и алгоритмы, которые могут лучше обрабатывать классовый дисбаланс. Ваши варианты:
- Смещение: Введите веса в модель, которые позволяют придавать большее значение редким классам. Алгоритмы, такие как Random Forest, позволяют легко указывать веса.
- Аугментация данных: Попробуйте генерировать дополнительные экземпляры для редких классов, используя техники создания синтетических данных, такие как SMOTE (Synthetic Minority Over-sampling Technique). Это важно, если количество наблюдений недостаточно для статистической значимости.
4. Использование ансамблей моделей
Объединение нескольких моделей может значительно улучшить качество вашей предсказательной программы. Создайте ансамбли, в которые включите как сильные, так и слабые модели. Это может помочь уравновесить слабые предсказания для редких классов.
5. Обработка категориальных данных
Одно из первых решений, которые вы уже исследовали, – это one-hot кодирование. Однако, обратите внимание, что это подходит не всегда. Рассмотрите другие методы кодирования, такие как:
- Целевое кодирование (Target Encoding): Используйте среднее значение целевой переменной для каждой категории. Это особенно полезно в случае высоких уровней кардинальности, но важно следить за переобучением.
- Ordinal Encoding: Если модели имеют иерархическую структуру или изначально связаны (например, по уровням цен), стоит использовать порядковое кодирование.
Заключение
Работа с редкими эталонами в моделях предсказания требует комбинации стратегий. Объединение методов группировки, создания новых признаков, использования устойчивых моделей и тонкой настройки кодирования может существенно повысить точность ваших предсказаний. Применяйте ансамбли методик для достижения наилучшего результата, оптимизируя каждую из стратегий для достижения максимальной эффективности в ваших предсказаниях.