0Pricing
Learn AI with Python · Урок

LightGBM и CatBoost

Почему LightGBM работает быстрее, разбиение на основе гистограмм и CatBoost для категориальных признаков.

«LightGBM и CatBoost» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

За пределами XGBoost

XGBoost обладает высокой эффективностью, но может работать медленно на очень больших наборах данных. LightGBM и CatBoost — более новые библиотеки для градиентного бустинга, которые повышают скорость и более корректно обрабатывают категориальные данные.

Разбиения на основе гистограмм

LightGBM перед поиском разбиений распределяет непрерывные признаки по дискретным интервалам (строит гистограмму). Благодаря этому поиск разбиений выполняется значительно быстрее и требует меньше памяти, чем точный метод.

Построение дерева по листьям

В отличие от построения по уровням, LightGBM строит деревья по листьям: сначала разделяется лист с наибольшим уменьшением потерь. Сходимость ускоряется, но может возникнуть переобучение, поэтому степень сложности контролируется с помощью num_leaves.

LGBMClassifier и num_leaves

num_leaves — важнейший параметр сложности LightGBM. Большие значения повышают точность, но увеличивают риск переобучения. Практическое правило — поддерживать условие num_leaves < 2^max_depth.

from lightgbm import LGBMClassifier

model = LGBMClassifier(
    n_estimators=300,
    num_leaves=31,
    learning_rate=0.05,
    random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))

Преимущества LightGBM по скорости

Благодаря распределению по интервалам гистограммы, построению по листьям и выборке признаков и данных LightGBM заметно быстрее обучается на больших наборах данных, чем XGBoost, часто обеспечивая сопоставимую точность.

from lightgbm import LGBMClassifier

model = LGBMClassifier(
    n_estimators=1000,
    num_leaves=63,
    learning_rate=0.03,
    feature_fraction=0.8,
    bagging_fraction=0.8,
)

Ранняя остановка в LightGBM

LightGBM поддерживает раннюю остановку с помощью обратных вызовов. Передайте набор для оценки и обратный вызов early_stopping, чтобы остановить обучение, когда метрика перестанет улучшаться.

import lightgbm as lgb
from lightgbm import LGBMClassifier

model = LGBMClassifier(n_estimators=2000, learning_rate=0.03)
model.fit(
    Xtr, ytr,
    eval_set=[(Xte, yte)],
    callbacks=[lgb.early_stopping(50)],
)

CatBoost и категориальные признаки

CatBoost особенно эффективен для категориальных данных. Передайте исходные категориальные столбцы напрямую через cat_features — ручное кодирование не требуется.

Внутри он использует упорядоченную статистику целевого признака, чтобы избежать утечки целевого значения.

from catboost import CatBoostClassifier

model = CatBoostClassifier(
    iterations=500,
    learning_rate=0.05,
    depth=6,
    verbose=False,
)
model.fit(Xtr, ytr, cat_features=[0, 3, 5])

Почему отсутствие кодирования так эффективно

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

Основные параметры CatBoost

CatBoost использует iterations (аналог n_estimators), learning_rate и depth (он строит симметричные деревья). Часто он хорошо работает при минимальной настройке.

from catboost import CatBoostClassifier

model = CatBoostClassifier(
    iterations=1000,
    learning_rate=0.03,
    depth=8,
    l2_leaf_reg=3.0,
    verbose=100,
)

Сравнение скорости

Общие рекомендации:

  • LightGBM обычно быстрее всего работает на больших наборах числовых данных
  • CatBoost лучше подходит при большом количестве категориальных признаков и требует меньше настройки
  • XGBoost — зрелое и надёжное решение с удачными значениями по умолчанию

Проверьте все три варианта на своих данных: результаты зависят от задачи.

Выбор библиотеки

Если у Вас много категориальных данных, начните с CatBoost. Для огромных таблиц с числовыми данными и высокой скорости выберите LightGBM. Для проверенного временем базового решения используйте XGBoost. Все три библиотеки реализуют градиентный бустинг, поэтому изученные концепции применимы к каждой из них.

Быстрая проверка

Проверьте свои знания о библиотеках для градиентного бустинга.

Повторение

Повторение: LightGBM использует разбиения на основе гистограмм и построение по листьям, управляемое параметром num_leaves, что обеспечивает высокую скорость на больших наборах числовых данных. CatBoost изначально обрабатывает категориальные признаки через cat_features, без кодирования. Обе библиотеки, как и XGBoost, являются разновидностями градиентного бустинга. Сравнивайте их на своих данных: CatBoost выбирайте для категориальных данных, а LightGBM — для высокой скорости.

Часто задаваемые вопросы

Урок «LightGBM и CatBoost» бесплатный?

Да — полный текст урока «LightGBM и CatBoost» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «LightGBM и CatBoost»?

Почему LightGBM работает быстрее, разбиение на основе гистограмм и CatBoost для категориальных признаков. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «LightGBM и CatBoost»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Деревья решений: теория и реализация
  2. Случайные леса и бэггинг
  3. Градиентный бустинг: GBM и XGBoost
  4. LightGBM и CatBoost
← Назад к Learn AI with Python