Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Избавляемся от проклятия Sklearn: пишем XGBoost с нуля

5d08ba0cd07942f2ddbf82e5b21ba5e7?s=47 FunCorp
February 11, 2019
3.3k

Избавляемся от проклятия Sklearn: пишем XGBoost с нуля

«Избавляемся от проклятия Sklearn: пишем XGBoost с нуля», Артём Хапкин, Mail.ru Group

О докладе

Рассказ про бустинг. Что нужно знать, чтобы самому его написать. Какие есть подводные камни, как можно улучшать его работу.

В настоящее время сложно представить место, где не используются ансамблевые алгоритмы бустинга над решающими деревьями. Это и поисковые движки, алгоритмы ранжирования рекомендаций, соревнования на Kaggle и ещё много где.

Существуют много готовых реализаций алгоритма: Catboost, Lightgbm, Xgboost и прочее. Однако, бывают случаи, когда пользоваться готовыми решениями из коробки не очень хорошо — теряется понимание работы алгоритма, а для определённых задач такие реализации не очень подходят и пр.

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

5d08ba0cd07942f2ddbf82e5b21ba5e7?s=128

FunCorp

February 11, 2019
Tweet

Transcript

  1. Ссылка на презентацию.

  2. Избавляемся от проклятия Sklearn - пишем XGBoost с нуля. Автор:

    Хапкин Артем, Mail.Ru Group
  3. Scikit-learn - это библиотека для машинного обучения на языке программирования

    Python с открытым исходным кодом. Основные ее преимущества: 1.Простые и эффективные инструменты для data mining и data analysis. 2.Удобный доступ к необходимым компонентам. 3.Построен на NumPy, SciPy и Matplotlib. 4.Встроенные реализации основных алгоритмов машинного обучения, включая градиентный бустинг.
  4. Зачем вообще нужны алгоритмы, завязанные на решающих деревьях? • подходят

    для задач, где данные взаимосвязь между данным сложно найти • данные могут быть любой природы • при правильной регуляризации алгоритмы достаточно быстрые • неограниченное качество при обучении • у каждой крупной компании есть свои кастомные алгоритмы (некоторые в OpenSource), основанные на решающих деревьях
  5. Деревья решений.

  6. Достоинства деревьев решений: • Прост в понимании и интерпретации. •

    Не требует подготовки данных. • Способен работать как с категориальными, так и с интервальными переменными. Прочие методы работают лишь с теми данными, где присутствует лишь один тип переменных. • Булева логика. • Является надёжным методом. Метод хорошо работает даже в том случае, если были нарушены первоначальные предположения, включённые в модель. • Позволяет работать с большим объёмом информации без специальных подготовительных процедур.
  7. Но также есть и недостатки: • Проблема получения оптимального дерева

    решений является NP-полной с точки зрения некоторых аспектов оптимальности даже для простых задач. • В процессе построения дерева решений могут создаваться слишком сложные конструкции, которые недостаточно полно представляют данные (переобучение). • Существуют концепты, которые сложно понять из модели, так как модель описывает их сложным путём. Данное явление может быть вызвано проблемами XOR, чётности. В этом случае мы имеем дело с непомерно большими деревьями. • Для данных, которые включают категориальные переменные с большим набором уровней (закрытий), больший информационный вес присваивается тем атрибутам, которые имеют большее количество уровней.
  8. На что стоит обратить внимание при написании своего дерева решений:

    • Быстрый пересчет ошибки, за O(1). Любая линейная сложность убьет алгоритм по сложности при больших N. • Учитывать связи (в основном, линейные) различных комбинаций признаков, а не только ортогональные разбиения. • Добавить элемент MatrixNet - Oblivious деревья, очень мощный интсрумент регуляризации. Уменьшаем глубину не только в рамках одной рекурсии, а храним полностью топологию дерева на каждой глубине. • Добавить prunning - обрезание неэффективных узлов дерева.
  9. Результаты экспериментов для деревьев.

  10. Градиентный бустинг - основная идея.

  11. None
  12. None
  13. None
  14. Результаты экспериментов для бустинга.

  15. Основная идея XGBoost.

  16. Gain.

  17. Результаты экспериментов для XGBoost.

  18. Бустинг, итоги: • хорошо работает для больших обучающих выборок в

    ситуациях когда в данных имеются сложные зависимости • Для бустинга лучше строить длинные композиции из слабых моделей, чем короткие из сильных • Применять надо с регуляризацией, иначе результаты могут получиться удручающими • Стохастические алгоритмы (BagBoo и BooBag) часто используются, а их можно эффективно распараллелить. Бустинг предполагает последовательное построение композиции • Реальное качество на обучении ограничено лишь числом машин при выполнении определенных условий
  19. Всем спасибо!