Вопрос или проблема
Я не совсем уверен, как мне следует настраивать xgboost, прежде чем использовать его в качестве мета-обучающего в ансамблевом обучении.
Должен ли я включать матрицу предсказаний (то есть df, содержащий столбцы результатов предсказаний от различных базовых моделей) или мне стоит включить только оригинальные признаки?
Я пробовал оба метода, используя только ‘n_estimators’, настроенный по метрике F1 для кросс-валидации. (скорость обучения = 0.1)
Метод 1: С предсказательной матрицей + оригинальные признаки:
n_estimators = 1 (это значит, что в модель включено всего одно дерево, является ли это аномальным?)
F1 Score (Train): 0.907975 (предполагает переобучение)
Метод 2: Только с оригинальными признаками:
n_estimators = 1
F1 Score (Train): 0.39
Я получаю довольно разные результаты для обоих методов, что имеет смысл, так как график важности признаков для Метода 1 показывает, что одно из предсказаний первого уровня является наиболее важным.
Я думаю, что предсказания первого уровня от базовых моделей должны быть включены в поиск по сетке. Какие мысли?
Вам следует настраивать мета-оценщик, используя любые данные, с которыми вы хотите, чтобы он в конечном итоге предсказывал. Это определенно должно включать предсказания базовой модели (иначе вы на самом деле не используете ансамблирование) и может или не может включать (некоторые) оригинальные признаки.
Однако важное замечание: вы не должны обучать мета-оценщик, используя “предсказания” базовых моделей на их собственных обучающих данных; их более точно называли бы оценками, а не предсказаниями, потому что базовые модели уже имели доступ к истине. Распространенный подход – обучать мета-оценщик на предсказаниях вне выборки из кросс-валидации по обучению базовых моделей.
Если базовые модели довольно хороши, то разумно, что модель xgboost может использовать только одно дерево; ей просто нужно подправить уже хорошие предсказания от базовых моделей. Но подумайте о снижении скорости обучения или увеличении регуляризации, чтобы проверить, сможет ли больше деревьев показать лучшие результаты.
Да, вы определенно можете использовать предсказания первой базовой модели в качестве входных данных для мета-обучения. Это может улучшить модели и активно использовалось на конкурсных платформах.
Эта техника известна как техника стекинга и подвержена переобучению. Если вы хотите использовать стекинг для ваших моделей, я бы посоветовал использовать кросс-валидацию вне выборки и посмотреть на производительность.
Вам следует попробовать следовать этому подходу; это помогает ограничить переобучение (читайте, переобучение все еще может происходить, но шансы снижаются при хорошем дизайне):
https://developer.ibm.com/articles/stack-machine-learning-models-get-better-results/
Ответ или решение
Когда вы занимаетесь настройкой XGBoost в качестве мета-учителя в ансамблевом обучении, важно правильно учитывать какие данные использовать для обучения. В данном контексте стоит рассмотреть использование прогнозов базовых моделей (первого уровня) вместе с оригинальными признаками.
1. Включение матрицы предсказаний базовых моделей
Использование предсказаний базовых моделей в качестве признаков для мета-учителя является общей практикой в методах стеккинга. Это может значительно улучшить качество модели, так как мета-учитель сможет использовать информацию, которую базовые модели извлекли из данных.
Однако следует помнить, что вы не должны обучать мета-учителя на "предсказаниях" базовых моделей на их собственных тренировочных данных. Данные, которые они предсказывают в этом случае, являются более точными, так как модели уже имели доступ к истинным меткам. Чтобы избежать переобучения и повысить обобщающую способность модели, чаще всего используется метод кросс-валидации (к примеру, out-of-fold predictions) для генерации предсказаний, которые затем могут быть использованы для обучения мета-учителя.
2. Параметры настройки для XGBoost
При настройке параметров XGBoost, таких как n_estimators
, learning_rate
и других, вам нужно учитывать не только качество модели, но и возможность переобучения. Ваши эксперименты показывают достаточно хорошие результаты при использовании предсказательной матрицы, но также поднимают вопрос об переобучении. Чтобы предотвратить это, можно:
- Уменьшить
learning_rate
, чтобы XGBoost мог использовать больше дерева (например, увеличениеn_estimators
до 100), что позволит избежать чрезмерного воздействия одного дерева на результаты. - Применить регуляризацию, используя параметры
alpha
(L1) иlambda
(L2), чтобы уменьшить влияние отдельных признаков и контролировать сложность модели.
3. Потенциальные результаты
Метод 1 с использованием матрицы предсказаний показывает значительное превосходство по сравнению с методом 2, когда используются только оригинальные признаки. Это подтверждает важность информации, извлекаемой базовыми моделями. Тем не менее, важно следить за признаками переобучения, такими как высокий F1 score на тренировочных данных, но низкий на валидационных.
4. Лучшие практики
Следует помнить о следующих лучших практиках при использовании XGBoost в качестве мета-учителя:
- Убедитесь, что ваша кросс-валидация правильно структурирована, чтобы создать обобщающие предсказания.
- Исследуйте возможность применения различных метрик оценки производительности, возможно, в том числе метрик, более чувствительных к классовому дисбалансу, если это актуально для ваших данных.
- Рассмотрите внедрение дополнительных уровней в вашей модели при необходимости, а не полагайтесь только на один мета-учитель.
Заключение
В целом, использование предсказательной матрицы базовых моделей вместе с оригинальными признаками в процессе настройки XGBoost как мета-учителя — это целесообразный подход для повышения качества ансамблевого обучения. Важно тщательно следить за параметрами модели и использовать подходы, которые минимизируют риск переобучения, создавая более обобщающую модель.