TGViewer
Maxim.ML - канал Maxim.ML - канал @ml_maxim · 1.05K subscribers
Post #101 1.26K
🤓 Интересное из собесов на ML-щика

Давно не было про собесы, поэтому принес важные кейсы с моих собесов, что сейчас есть актуального по теории ML и практике в system design

⚡️ Кейс 1 - Алгоритмы бустинга

Вот тут писал 💡, что сделаю разбор, что я спрашиваю на собесах про catboost. Исправляюсь - сегодня расскажу про важные особенности основных алгоритмов, понимание которых отличает новичка от профи.

Джентельменский набор алгоритмов бустинга: Аманда, Линда и Роуз XGBoost, LightGBM и CatBoost


🌟 XGBoost (2016, original paper 📑)

🔵Особенность 1 - Функция оптимизации для деревьев. В objective явно добавляется штраф за сложность дерева (например, за число листьев и L2 по весам листьев), поэтому контроль переобучения вшит в математику алгоритма, а не только в внешние приемы вроде early stopping

🔵Особенность 2 - Параллелизация и системные оптимизации. XGBoost проектировался как scalable GBDT - поддерживает параллельный поиск сплитов (по фичам/блокам данных), эффективные структуры хранения и обработку данных, что дает выигрыш на больших датасетах и многоядерных CPU (один из самых первых!)

🔵Особенность 3 - Second-order boosting (использование гессиана). В XGBoost каждый шаг бустинга минимизирует локальную квадратичную аппроксимацию лосса: дерево строится так, чтобы наилучшим образом уменьшить сумму grad и hess вкладов по объектам, где градиенты задают направление исправления ошибок, а гессианы - насколько агрессивным может быть это исправление; из этой аппроксимации напрямую выводятся формулы и для выбора сплитов (gain), и для оптимальных весов листьев, что делает обучение и точнее, и стабильнее



🌟 LightGBM (2017, original paper 📑)

🔵Особенность 1 - Histogram-based обучение (binned признаки). Непрерывные величины бьются на бины, дальше сплиты считаются по гистограммам, что резко снижает стоимость поиска сплитов и память

🔵Особенность 2 - Leaf-wise (best-first) рост дерева. LightGBM обычно растит дерево в глубину по самому выгодному листу, а не layer-wise по уровням, из‑за чего при той же глубине может быть быстрее/точнее, но легче переобучиться (нужны ограничения вроде max_depth/num_leaves/min_data_in_leaf)

🔵Особенность 3 - Две ключевые оптимизации: GOSS и EFB. GOSS (Gradient-based One-Side Sampling) для уменьшения числа объектов при оценке gain и EFB (Exclusive Feature Bundling) для склейки взаимно-исключающих sparse фич (например one-hot), чтобы уменьшить effective features



🌟 CatBoost (2019, original paper 📑)

🔵Особенность 1 - Ordered boosting. Обучающие градиенты/статистики строятся по перестановке (permutation), чтобы снизить специфический target leakage, который возникает в классическом бустинге при некоторых схемах использования таргета/статистик

🔵Особенность 2 - Ordered target statistics / target encoding для categorical фичей. Категориальные признаки обрабатываются через целевые статистики по таргету, рассчитанные аккуратно (в ordered-порядке), чтобы не подглядывать в истинный таргет текущего объекта

🔵Особенность 3 - Симметричные деревья. Деревья одной структуры на уровне (один и тот же split на каждом уровне) дают быстрый инференс и удобную реализацию/векторизацию, ценой ограничений на класс деревьев (это часто ключ к скорости CatBoost на CPU)


⚡️ Кейс 2 - System design

Это свежий кейс с недавнего собеса. Кандидату надо было показать и рассказать, как бы он собрал RAG Pipeline удобного QnA поиска по корпоративной JIRA, и его итоговый результат на картинке (последняя картинка 🖼). Вы уже могли заметить проблемы в схеме, особенно если помните эту публикацию 💡, в которой детально разобрано, что надо реализовывать и как улучшать.

Вообще, вес секции system design сейчас подрос, особенно на middle+ позиции. И конечно одна из причин - активное внедрение copilots и coding agents. Становится критически важно держать в голове полную схем проекта, даже при разработке маленькой его части. Кстати, уже поднимал эту тему и писал об этом здесь 💡.


Всем сильных собесов 💪 и усидчивости при подготовке
  • 👍 11
  • 🔥 4
  • 👎 3
  • ⚡ 1
  • ❤ 1
More from @ml_maxim
  1. Sep 17, 2026Тут huawei выпустила отчёт intelligent world 2035, там целых 10 смелых прогнозов, советую…
  2. Sep 14, 2026Показательно получилось 🛌 Вчера таки написал на habr про то, как легко теперь копировать…
  3. Sep 11, 2026Сходил за сырниками, а пришлось анализировать данные 📈 В магазине играла знакомая песня.…
  4. Sep 8, 2026Выхожу из декретного творческого отпуска 🛌 и сразу рассказываю свои апдейты и новости, на…
  5. Apr 14, 2026Архитектуру построили. А ML - нет 🤷‍♂️ Завершился наш с Никитой модуль по AI-агентам в ВШ…
  6. Mar 31, 2026Как неожиданно и приятно Месяц назад отправлял свою рукопись в ainl, сегодня пришёл резуль…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →