- Вопрос или проблема
- Ответ или решение
- Как реорганизовать ваш набор данных для интерпретируемости без потери производительности?
- Введение
- Причины снижения производительности
- Рекомендации
- 1. Улучшение качества данных
- 2. Извлечение и проектирование новых признаков
- 3. Расширение набора данных
- 4. Оценка и оптимизация моделей
- Заключение
Вопрос или проблема
Что я делаю:
Я предсказываю рейтинги продуктов с использованием бустинговых деревьев (XGBoost) с набором данных в следующем формате:
Что я хочу сделать:
Я хочу использовать SHAP TreeExplainer, чтобы интерпретировать каждое предсказание моей модели в терминах атрибутов продукта и ID пользователей.
Что я получаю:
Моя модель делает все выводы на основе названий продуктов и ID пользователей, вместо атрибутов продуктов и ID пользователей.
Что я пробовал:
Я обнаружил, что каждое название продукта имеет уникальную комбинацию атрибутов, т.е. зная атрибуты, можно найти его название. Поэтому моя идея заключалась в том, чтобы удалить столбец product_name
, оставив только атрибуты.
Мое предположение было в том, что переструктурирование набора данных таким образом приведет к интерпретируемости, которую я хотел, без потерь в производительности (так как название продукта не добавляет никакой новой информации).
Что я получил:
Производительность модели значительно снизилась. Даже с тщательной настройкой гиперпараметров я не смог приблизиться к производительности, которую я имел при использовании также названия продукта.
Что я думаю, возможно, происходит:
- Мой набор данных слишком мал для обучения модели на атрибутах продуктов (10 тысяч образцов, 60 атрибутов).
или
- Возможно, некоторые атрибуты добавляют смещение и нарушают способность модели обобщать, что приводит к переобучению.
Я немного скептичен насчет пункта 2, так как моя потеря на обучении также возросла, когда я удалил название продукта.
Мой вопрос:
Итак, как я могу переструктурировать мой набор данных? У кого-нибудь есть предположения, почему моя модель не может достичь той же производительности без использования названия продукта? Любые идеи или подсказки, что я могу попробовать?
Что может происходить, так это то, что ваши предикторы атрибутов слабы, они шумные. Значимые деревья решений не могут быть построены из признаков атрибутов продуктов с помощью XGB.
Когда вы добавляете имя в качестве предиктора, XGB находит сигнал по отношению к вашей целевой переменной — рейтингу, и поэтому вы получаете лучший результат. Таким образом, ваша модель, использующая имя и атрибуты, может показывать лучшие результаты, чем модель, использующая только атрибуты, по этой причине.
Если вы из опыта в данной области знаете, что атрибуты продуктов очень слабо связаны с рейтингом, тогда можете заключить, что данный набор атрибутов не поможет вам делать точные предсказания. Или вместо того, чтобы полагаться на знания в данной области, можете использовать корреляцию или соответствующие статистические тесты, чтобы понять связь атрибутов с рейтингом и, если выяснится, что связь отсутствует или очень слаба, можно сделать вывод, что модель невозможна.
Таким образом, если возможно, добавьте более релевантные признаки, если хотите создать достаточно хорошую модель.
С уважением, Вик
Что касается вашего первого вопроса, нет, ваш набор данных не слишком мал, чтобы давать плохие результаты, хотя добавление большего объема данных, безусловно, поможет. Я работал с наборами данных, меньшими, чем ваш.
Ответ на ваш второй вопрос зависит от того, проводился ли отбор/создание признаков. Обычно лучший вид отбора признаков осуществляется с помощью знаний/опыта в данной области. Статистические методы отбора признаков могут быть точными или нет, поэтому обычно рекомендуется сначала использовать знания в данной области, чтобы исключить признаки. Если производительность не улучшается, только тогда используйте другие методы, хотя и с осторожностью.
Что вы можете сделать, так это удалить характеристику идентификатора продукта, так как идентификаторы обычно не вносят существенного вклада в модель, кроме увеличения размерности. (Я не знаю, в какой области вы работаете, но если вы считаете, что идентификаторы продуктов являются важными и помогают предсказывать цель, то, разумеется, оставьте эту характеристику.)
Кроме того, есть много вещей, которые вы можете сделать для улучшения вашей модели, некоторые из которых (сначала создайте базовую модель, где вы не выполняете отбор признаков и настройку гиперпараметров. Это поможет вам получить базовый результат для сравнения):-
1.) Используйте знания в области для создания признаков и посмотрите, можно ли уменьшить размерности, объединив 2 или более числовых признаков в 1.
2.) Используйте знания в области для отбора признаков, и если это не помогает, используйте другие техники отбора признаков.
3.) Настройка гиперпараметров
4.) Попробуйте разные модели
5.) Добавьте больше данных
Одно или несколько из этих действий определенно помогут вам создать лучшую модель.
Помните, что построение модели — это итеративный процесс, и нужно продолжать пробовать разные подходы, чтобы получить наилучшую возможную модель. Не пробуйте пару вещей и не приходите к выводу, что модель не лучшая.
Удачи!
.
Ответ или решение
Как реорганизовать ваш набор данных для интерпретируемости без потери производительности?
Введение
Вы занимаетесь прогнозированием оценок продуктов, используя метод бустинга деревьев решений (XGBoost), и хотите интерпретировать результаты модели, используя метод SHAP TreeExplainer. Основная проблема заключается в том, что модель основывает свои прогнозы на именах продуктов, вместо использования атрибутов продуктов. После удаления столбца с именами продуктов, производительность модели снижается. Ниже представлены шаги и рекомендации для решения этой проблемы.
Причины снижения производительности
-
Недостаточная мощность атрибутов: Вполне возможно, что атрибуты продуктов являются слабопредикторами. То есть, они содержат слишком много шума и не предоставляют значимой информации для формирования деревьев решений.
-
Влияние уникальных связей: Имя продукта может невольно отражать уникальные комбинации атрибутов, что упрощает задачу модели по связи входных данных с целевыми переменными. Следовательно, удаление имени приводит к потере скрытых взаимосвязей.
Рекомендации
1. Улучшение качества данных
-
Анализ атрибутов: Используйте статистические тесты и анализ корреляции, чтобы проверить, насколько атрибуты связаны с целевой переменной. Это поможет понять, насколько существенным является их вклад в модель.
-
Ограничение количества признаков: Вместо удаления имен продуктов, которые содержат значимую информацию, рассмотрите возможность исключения менее информативных признаков.
2. Извлечение и проектирование новых признаков
- Сочетание атрибутов: Используйте знания домена для создания новых признаков путем комбинирования существующих. Это может повысить информативность данных.
3. Расширение набора данных
- Сбор дополнительных данных: Добавление новых данных может сгладить шум и улучшить обобщающую способность модели.
4. Оценка и оптимизация моделей
-
Базовая модель: Создайте базовую модель без дополнительного отбора признаков и настройки гиперпараметров. Это поможет объективно оценить внесенные изменения.
-
Подбор гиперпараметров и новых моделей: Попробуйте разные алгоритмы машинного обучения и выполните более детальную настройку гиперпараметров.
Заключение
Создание интерпретируемой и производительной модели — это итеративный процесс, требующий постоянного анализа и улучшений. Следуйте предложенным шагам, и вы сможете повысить производительность вашей модели, не жертвуя при этом ее объяснимостью. Удачи в вашей работе над моделью!