Анализ данных на Python в примерах и задачах

Алгоритм xgboost

В данной лекции рассматривается алгоритм машинного обучения XGBoost (eXtreme Gradient Boosting), разработанный компанией Google. Лектор демонстрирует практическую работу с библиотекой: её установку, подготовку данных на примере известного датасета «Перепись населения США» (1996 год), сравнение эффективности XGBoost с алгоритмами 90-х годов. Особое внимание уделяется использованию GridSearch для автоматического подбора гиперпараметров, формату данных DMatrix для оптимизации вычислений, а также визуализации важности признаков и построению итогового дерева решений.

Основные мысли

1. Мощь XGBoost: Это один из самых сильных и популярных алгоритмов машинного обучения, основанный на бустинге.
2. Исторический контекст: На датасете 1996 года лучшие алгоритмы того времени достигали точности ~86% после долгой настройки. Современный XGBoost на дефолтных настройках показывает результат выше.
3. Автоматизация настройки: GridSearch позволяет перебирать гиперпараметры (max_depth, min_child_weight, learning_rate и др.) без ручного вмешательства.
4. Оптимизация данных: Формат DMatrix специально разработан для XGBoost и ускоряет вычисления по сравнению с обычным Pandas DataFrame.
5. Интерпретируемость: XGBoost позволяет визуализировать важность признаков и построить итоговое дерево решений, что делает алгоритм понятным для анализа.
Показывать лекцию целиком
Краткое изложение

Введение в XGBoost:
• Алгоритм разработан компанией Google, изначально использовался внутри компании, позже стал Open Source.
• Основан на бустинге (последовательном каскадировании алгоритмов).
• Требует отдельной установки: pip install xgboost (также рекомендуется установить seaborn для визуализации).

Подготовка данных (датасет «Перепись населения США»):
• Датасет 1996 года, ставший классикой ML. Цель — предсказать, зарабатывает ли человек больше $50 000 в год.
• Признаки: возраст, рабочий класс, образование, семейное положение, раса, пол, капитал, часы работы, страна и др. Есть веса (fnlwgt) для учета частоты строк.
• Предобработка: замена символов-заглушек (« ?») на NaN, удаление пропусков, приведение целевой переменной к единообразию, кодирование категориальных признаков.

Применение XGBoost и GridSearch:
• Используется GridSearchCV для подбора гиперпараметров (max_depth, min_child_weight).
• Настройка learning_rate, n_estimators, subsample.
• Результат на тестовой выборке — точность около 86.5%, что сопоставимо или лучше лучших алгоритмов 90-х (86%).

Продвинутая работа с DMatrix:
• DMatrix — оптимизированная структура данных для XGBoost, ускоряющая GridSearch.
• Удалось снизить ошибку до ~10.5% (точность ~89.5%) на обучении.

Анализ результатов:
• Построен график важности признаков. Наиболее значимые: fnlwgt (вес группы), возраст, occupation, часы работы.
• Визуализировано итоговое дерево решений, которое интерпретируемо.

Выводы

1. XGBoost является мощным, гибким и интерпретируемым алгоритмом, который на простых настройках превосходит сложные модели прошлого.
2. Автоматический подбор гиперпараметров (GridSearch) существенно экономит время и часто даёт лучшие результаты, чем ручной перебор.
3. Использование структуры DMatrix вместо стандартного DataFrame значительно ускоряет работу XGBoost.
4. Датасет 1996 года, считавшийся сложным, сегодня решается «в несколько строк кода» с высоким качеством, что демонстрирует прогресс науки о данных.
5. Интерпретируемость алгоритма (важность признаков, визуализация дерева) является важным преимуществом для бизнес-задач.

Вопросы для самопроверки

1. На каком методе ансамблирования (бэггинг, бустинг, стэкинг) основан алгоритм XGBoost и в чём суть этого метода?
2. Почему лектор сравнивает результаты XGBoost именно с алгоритмами 1996 года? Какой исторический аргумент приводится?
3. Какие шаги предобработки данных были выполнены перед подачей в модель? Почему замена « ?» на NaN важна?
4. Для чего используется GridSearchCV? Приведите пример двух гиперпараметров XGBoost, которые подбирались в лекции.
5. Что такое DMatrix и в чём его преимущество перед Pandas DataFrame при работе с XGBoost?
6. Какой признак оказался самым важным по версии построенной модели? Какие ещё признаки вошли в топ-5?
7. Какую точность (accuracy) удалось получить на тестовой выборке в итоге? Сравните с точностью лучших алгоритмов 1996 года.
8. Почему лектор называет подход с последовательной оптимизацией (сначала одни параметры, потом другие) «небольшим читерством»?
Вернуться к учебному плану