Мощный блог

Классический ML: линейные модели, SVM, kNN и наивный Байес

28 августа 2026 · Собесы

Темы 17–22: линейная и логистическая регрессия, L1/L2-регуляризация, ядровой трюк в SVM, kNN с его метриками расстояния и наивный Байес.

17. Линейная регрессия

Важность на собеседовании: 9/10 █████████░

🔥🔥🔥 Критично. База, которую спрашивают почти всегда, часто с просьбой вывести решение или градиент. Копают средне-глубоко: предположения модели, аналитическое решение против SGD, что делать с мультиколлинеарностью.

Разбивка по подтемам:

Подтема Балл
Предположения модели и что при нарушении 9/10
Нормальное уравнение vs SGD 8/10
Мультиколлинеарность и VIF 8/10
Линейность по параметрам, а не по признакам 7/10
Гаусс–Марков / BLUE 5/10

Модель: ŷ = w₀ + w₁x₁ + … + w_dx_d = wᵀx. Потеря — MSE.

Аналитическое решение (нормальное уравнение): w = (XᵀX)⁻¹Xᵀy. Сложность O(nd² + d³). Применимо при малом d (сотни). При большом d или n — SGD.

Предположения (их и просят перечислить):

  1. Линейность связи признаков и таргета.
  2. Независимость наблюдений.
  3. Гомоскедастичность — постоянная дисперсия остатков. Нарушение (расширяющийся «конус» на графике остатков) → оценки коэффициентов остаются несмещёнными, но стандартные ошибки и p-value неверны.
  4. Нормальность остатков — нужна только для доверительных интервалов и тестов, не для самой оценки.
  5. Отсутствие мультиколлинеарности — иначе коэффициенты нестабильны и неинтерпретируемы (VIF > 10 — тревога).

Важное различие, которое ценят. Модель линейна по параметрам, а не по признакам. y = w₀ + w₁x + w₂x² — по-прежнему линейная регрессия. Поэтому полиномиальные признаки, сплайны и взаимодействия совместимы с линейной моделью.

Теорема Гаусса–Маркова: при выполнении предположений МНК-оценка является BLUE — лучшей линейной несмещённой оценкой (минимальная дисперсия среди линейных несмещённых). Нормальность для этого не требуется.

Вопрос: Как понять, что линейной модели недостаточно? — Посмотреть на график остатков от предсказаний: если видна структура (парабола, воронка, тренд), модель что-то не улавливает. Плюс сравнить с бустингом на тех же признаках: большой разрыв означает существенную нелинейность или взаимодействия.

18. Регуляризация: L1, L2, ElasticNet

Важность на собеседовании: 10/10 ██████████

🔥🔥🔥 Критично. «Чем L1 отличается от L2» — вопрос из абсолютного топа по частоте на РФ-собесах. Копают глубоко: почему именно L1 зануляет, байесовская интерпретация, что делать при коррелирующих признаках. Разжёвываю подробно.

Разбивка по подтемам:

Подтема Балл
Почему L1 зануляет: геометрия + градиент 10/10
L2 при коррелирующих признаках 9/10
Байесовская интерпретация (априор на веса) 8/10
Обязательное масштабирование, C = 1/λ 8/10
ElasticNet и когда он нужен 7/10
Другие способы регуляризации 8/10

Идея. К потере добавляется штраф за величину весов: L_total = L_data + λ·R(w). λ управляет силой: больше λ → проще модель → выше bias, ниже variance.

L2 (Ridge): R = ‖w‖² = Σwᵢ². Веса сжимаются к нулю, но не становятся нулём. Хорошо работает при коррелирующих признаках: распределяет вес между ними поровну. Решение в замкнутом виде: w = (XᵀX + λI)⁻¹Xᵀy — добавка λI гарантирует обратимость даже при мультиколлинеарности.

L1 (Lasso): R = ‖w‖₁ = Σ|wᵢ|. Зануляет часть весов → автоматический отбор признаков, разреженная модель.

Почему именно L1 зануляет — два объяснения (нужны оба).

Геометрическое. Минимизация с ограничением — это поиск точки касания эллипсов уровня функции потерь с областью ограничения. Для L2 область — круг (гладкий, касание почти всегда в общей точке, где обе координаты ненулевые). Для L1 — ромб с острыми углами на осях координат. Касание с большой вероятностью происходит именно в углу, а угол = один из весов равен нулю.

Через градиент. Производная L2-штрафа 2λw стремится к нулю вместе с весом — сила «притяжения к нулю» ослабевает, и вес асимптотически приближается к нулю, не достигая его. Производная L1-штрафа λ·sign(w) постоянна по модулю независимо от величины веса. Пока градиент данных меньше λ, вес продавливается ровно в ноль и там остаётся.

ElasticNet: λ₁‖w‖₁ + λ₂‖w‖². Нужен, когда признаков больше, чем объектов, или есть группы сильно коррелирующих признаков: чистый Lasso в такой группе случайно выбирает один признак и обнуляет остальные (нестабильно между запусками), ElasticNet отбирает группу целиком.

Байесовский взгляд (см. тему 6): L2 = гауссов априор на веса, L1 = лапласов априор. Регуляризация — это формализованное убеждение «веса скорее малы».

Практические детали, о которых спрашивают:

  • Масштабирование обязательно. Штраф зависит от величины весов, а вес обратно пропорционален масштабу признака. Без стандартизации регуляризация штрафует признаки неравномерно.
  • Свободный член w₀ не регуляризуют — иначе модель искусственно смещается к нулю.
  • В sklearn у LogisticRegression параметр C = 1/λ: меньше C — сильнее регуляризация (частая путаница на собесе).
  • Другие формы регуляризации — это тоже ответ на вопрос «как бороться с переобучением»: ранняя остановка, dropout, аугментация данных, ограничение глубины дерева, subsample/colsample в бустинге, weight decay, label smoothing, ансамблирование.

Вопрос: У вас 10 000 признаков и 500 объектов. Что берёте? — L1 или ElasticNet: нужен отбор признаков, потому что при d ≫ n модель без разреживающего штрафа переобучится идеально. ElasticNet предпочтительнее, если признаки коррелируют группами. Плюс обязательная кросс-валидация по λ и nested CV, если ещё и сравниваем модели.

19. Логистическая регрессия

Важность на собеседовании: 10/10 ██████████

🔥🔥🔥 Критично. Топ-3 по частоте вместе с метриками и бустингом. Регулярно просят вывести градиент на доске (см. тему 3). Копают глубоко: почему не MSE, что означают коэффициенты, как связано с линейной разделимостью.

Разбивка по подтемам:

Подтема Балл
Вывод градиента (см. тему 3) 10/10
Почему кросс-энтропия, а не MSE 9/10
Интерпретация коэффициентов через шансы 8/10
Калиброванность из коробки 7/10
Полная разделимость и уход весов в ∞ 6/10

Модель: p(y=1|x) = σ(wᵀx), где σ(z) = 1/(1+e⁻ᶻ).

Почему сигмоида. Она отображает ℝ → (0,1) и, что важнее, вытекает из логит-преобразования: log(p/(1−p)) = wᵀx. То есть логрег — линейная модель в пространстве логарифмов шансов.

Интерпретация коэффициентов (это спрашивают). exp(wᵢ) — во сколько раз изменяются шансы (odds = p/(1−p)) при увеличении признака xᵢ на единицу. Не вероятность, а именно шансы. Например, w=0.7 → exp(0.7)≈2 — шансы удваиваются.

Потеря — логистическая (кросс-энтропия): L = −Σ[y log p + (1−y) log(1−p)]. Выпукла → единственный глобальный минимум.

Почему не MSE для классификации. Три причины: (1) с сигмоидой MSE невыпукла по весам → локальные минимумы; (2) градиент MSE содержит множитель σ'(z), который стремится к нулю при уверенно неправильном ответе — модель «замирает» именно там, где должна учиться быстрее всего; (3) кросс-энтропия — это MLE для Бернулли, то есть статистически корректная функция потерь.

Важные свойства:

  • Даёт хорошо откалиброванные вероятности «из коробки» (в отличие от SVM, RF, наивного Байеса) — потому что обучается на правильном правдоподобии.
  • Линейная граница решения. Нелинейность добавляется руками: полиномиальные признаки, взаимодействия, бинирование.
  • Полная разделимость выборки — проблема: если классы разделимы линейно идеально, MLE уходит в бесконечность, веса растут неограниченно. Лечится регуляризацией (в sklearn она включена по умолчанию, C=1.0).
  • Multiclass: one-vs-rest или softmax-регрессия (multinomial).

Вопрос: Почему логрег часто остаётся бейзлайном даже в 2026? — Он быстрый, интерпретируемый, даёт калиброванные вероятности, легко мониторится и не ломается на дрейфе так резко, как сложные модели. На разреженных текстовых признаках (TF-IDF) он до сих пор конкурентоспособен и обучается за секунды. Правильная стратегия — начинать с него как с бейзлайна и доказывать, что более сложная модель окупает свою стоимость.

20. SVM и ядровой трюк

Важность на собеседовании: 4/10 ████░░░░░░

🔥 Иногда. В 2026 SVM почти не используют в проде, и интервьюеры это знают. Спрашивают как проверку кругозора: «объясни идею максимального зазора» и «что такое kernel trick». Глубоко не копают, вывод двойственной задачи требуют крайне редко. Учить по минимуму.

Идея. Найти гиперплоскость, максимально удалённую от обеих групп точек. Ширина зазора 2/‖w‖, значит максимизация зазора = минимизация ‖w‖.

Опорные векторы — только те объекты, что лежат на границе зазора или нарушают его. Остальные на решение не влияют вообще: удалите их — модель не изменится. Это ключевое свойство и главный ответ на вопрос «чем SVM отличается от логрега».

Soft margin. Параметр C управляет компромиссом: большой C — жёсткий зазор, стремление классифицировать всё верно (риск переобучения); малый C — широкий зазор, допускаются нарушения (сильнее регуляризация). Обратите внимание: логика та же, что у C в логрегрессии.

Ядровой трюк (kernel trick). Решение зависит от данных только через скалярные произведения ⟨xᵢ,xⱼ⟩. Заменяем их на ядро K(xᵢ,xⱼ) = ⟨φ(xᵢ),φ(xⱼ)⟩ и получаем работу в пространстве высокой размерности без явного вычисления φ. Для RBF-ядра это пространство бесконечномерно, и всё равно всё считается.

  • Линейное: K = xᵀz — для текстов и больших разреженных данных.
  • RBF (гауссово): K = exp(−γ‖x−z‖²) — универсальное. γ большая → узкие «колокола» → переобучение.
  • Полиномиальное: K = (xᵀz + c)^d.

Ограничения: сложность обучения между O(n²) и O(n³) — на больших данных неприменим; не даёт вероятностей напрямую (нужен Platt scaling); обязательно масштабирование признаков.

Вопрос: Почему SVM почти вытеснен? — На табличных данных бустинг лучше по качеству и линейно масштабируется; на текстах и картинках — нейросети. SVM остаётся нишевым: малые выборки высокой размерности, некоторые задачи биоинформатики.

21. kNN и метрики расстояния

Важность на собеседовании: 5/10 █████░░░░░

🔥 Иногда как алгоритм, но 🔥🔥 часто в NLP-контексте — потому что векторный поиск в RAG это и есть kNN. Спрашивают связку «kNN → ANN → HNSW». Сам по себе kNN разбирают неглубоко.

Механика. Обучения нет («ленивый» алгоритм): запоминаем выборку, при предсказании ищем k ближайших и голосуем (классификация) или усредняем (регрессия). Предсказание O(n·d) — дорого.

Ключевые моменты:

  • Масштабирование обязательно — иначе признак с большим размахом определяет расстояние целиком.
  • Малое k → сложная изрезанная граница, высокий variance. Большое k → сглаживание, рост bias. k=1 идеально запоминает train (нулевая ошибка) и плохо обобщает.
  • Проклятие размерности — главная проблема. В высоких размерностях расстояния между всеми парами точек становятся почти одинаковыми, понятие «ближайший» теряет смысл. Поэтому перед kNN делают снижение размерности, а эмбеддинги специально обучают так, чтобы близость была осмысленной.

Метрики расстояния: евклидово (L2), манхэттенское (L1, устойчивее в высоких размерностях), косинусное (для текстов — важна не длина вектора, а направление), Жаккар (множества), Хэмминг (бинарные/хешированные векторы).

Мост к NLP: векторный поиск в RAG — это kNN по эмбеддингам. Точный поиск O(n) не масштабируется на миллионы документов, поэтому используют приближённый поиск (ANN): HNSW, IVF, PQ (тема 60). То есть kNN никуда не делся — он переехал в векторные БД.

Вопрос: Почему для эмбеддингов обычно косинус, а не евклид? — Косинус игнорирует длину вектора и сравнивает только направление, что соответствует смыслу «семантической близости»: длина эмбеддинга часто отражает частотность или длину текста, а не содержание. На практике эмбеддинги нормируют, и тогда косинус эквивалентен скалярному произведению, а ранжирование по L2 совпадает с ранжированием по косинусу.

22. Наивный Байес

Важность на собеседовании: 3/10 ███░░░░░░░

⚪ Редко. Спрашивают почти исключительно как исторический бейзлайн классификации текстов или как проверку понимания формулы Байеса. Хватит определения, «наивного» предположения и сглаживания.

Модель: P(y|x) ∝ P(y)·Π P(xᵢ|y). «Наивность» — предположение об условной независимости признаков при известном классе.

Почему работает, хотя предположение заведомо ложно. Для классификации важен не точный расчёт вероятности, а правильный порядок классов по вероятности. Ошибки от нарушения независимости часто одинаково смещают все классы и не меняют argmax. При этом вероятности выходят плохо откалиброванными — обычно вырожденными к 0 или 1.

Сглаживание Лапласа: P(xᵢ|y) = (count + α)/(total + α·|V|). Без него одно невиданное слово обнуляет всё произведение. α=1 — классика.

Варианты: MultinomialNB (счётчики слов, тексты), BernoulliNB (бинарное присутствие слова), GaussianNB (непрерывные признаки).

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

Вопрос: Где ещё живёт наивный Байес? — Быстрый бейзлайн классификации текстов, спам-фильтры, задачи с очень малой выборкой (обучается на десятках примеров), и как компонент в ансамблях. Обучается за миллисекунды — хороший «нулевой» ориентир перед тем, как тратить GPU.


Часть 5 из 17 конспекта для подготовки к собеседованиям на NLP/LLM-разработчика. Остальные части — в разделе «Собесы».

0,0
0 оценок
5★
0
4★
0
3★
0
2★
0
1★
0

Оставить отзыв

Нажмите на звезду для оценки от 1 до 5
Необязательно. Используется только для связи
0/2000

Комментарии

Все С ответами Проверенные Только 4-5★