За последние несколько лет алгоритмы ранжирования стали чрезвычайно популярными в отрасли, и все больше и больше компаний находят достоинства в их приложениях. LightGBM - это быстрая, распределенная и высокопроизводительная модель обучения на основе дерева с градиентным бустом (GBDT, GBRT, GBM и MART), которую можно использовать для регрессии, классификации и ранжирования. Алгоритм LightGBM универсален и обеспечивает превосходные результаты по сравнению с другими алгоритмами ранжирования, такими как XGBoost и матричная факторизация, что ускоряет внедрение.

Введение в LightGBM

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

Он разработан для распространения и обладает следующими преимуществами:

  • Более быстрая скорость обучения и более высокая эффективность.
  • Более низкое использование памяти.
  • Лучшая точность.
  • Поддержка параллельного обучения и обучения на GPU.
  • Способен обрабатывать крупномасштабные данные.

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

LightGBM в качестве рейтинга

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



Важные параметры

  • num_leaves (по умолчанию = 31) - максимальное количество листьев дерева для базовых учащихся.
  • max_depth (по умолчанию = -1) - максимальная глубина дерева для базовых учащихся.
  • n_estimators (по умолчанию = 100) - количество увеличиваемых деревьев для соответствия.
  • цель - «регресс» для LGBMRegressor, «двоичный» или «мультиклассовый» для LGBMClassifier, «лямбдаранк» для LGBM Ranker.
  • подвыборка (по умолчанию = 1.0) - коэффициент подвыборки обучающего экземпляра.
  • reg_alpha (по умолчанию = 0,0) - член регуляризации L1 для весов.
  • reg_lambda (по умолчанию = 0,0) - термин регуляризации L2 для весов.

Реализация

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=1)
query_train = [X_train.shape[0]]
query_val = [X_val.shape[0]]
query_test = [X_test.shape[0]]
import lightgbm as lgb
gbm = lgb.LGBMRanker()
gbm.fit(X_train, y_train, group=query_train,
        eval_set=[(X_val, y_val)], eval_group=[query_val],
        eval_at=[5, 10 ], early_stopping_rounds=50)
  1. eval_at: эти параметры используются k для оценки nDCG @ k по проверочному набору.
  2. Early_stopping_rounds: параметр для ранней остановки, чтобы эта модель не пересекалась

Трудно представить, как оценивать рейтинговую систему. Сравнение списков рекомендуемых элементов со списками соответствующих элементов не является интуитивным. Нормализованная дисконтированная совокупная прибыль основана на предположении, что высокорелевантные документы более полезны, чем умеренно релевантные документы, которые, в свою очередь, более полезны, чем нерелевантные документы. Для получения дополнительных сведений о матрице ранжирования и оценки https://medium.com/swlh/rank-aware-recsys-evaluation-metrics-5191bba16832

Дальнейшее чтение