Секрет успешного трудоустройства — в дотошной подготовке к собеседованиям!
Этот материал не рассчитан на изучение тем с нуля. Это чеклист и тренажёр, по которому стоит пройтись перед техническим интервью по классическому ML. Кратко, по делу, с акцентом на то, что действительно спрашивают.
В этой части разберем:
основы машинного обучения,
переобучение и кросс-валидация,
линейные модели,
метрики классификации и регрессии.
Параллельно доступно видеоинтервью с разбором тех же вопросов — можно смотреть и закреплять материал.
В Telegram-канале — регулярный контент по ML и DL, а на Boosty — разборы реальных собеседований.
Подписывайтесь, следующие части уже скоро, там разберем: деревья решений, ансамбли, метрические модели и кластеризацию.
Основы МЛ
Какие задачи МЛ бывают?
-
Обучение с учителем
-
бинарная классификация
объект может принимать только одно значение из 2хпример: определения письма на почте - спам / не спам
-
многоклассовая классификация
объект может принимать только одно значение из конечного n > 2пример: определение категории письма на почте - чеки/госписьма/рассылки/маркетплейсы/спорт/новости/рабочие
-
мультилейбл классификация
объект может принимать несколько значений из конечного n > 2пример, определение топика новостей: новость может быть и про спорт и про политику одновременно
-
регрессия
тут предсказываем уже не класс, а вещественное числопример: прогнозирование цены на квартиру
-
ранжирование
применяется, когда нужно уметь упорядочивать объекты попарно, списком или проставлять число релеватности, например, от 0 до 1пример: рекомендательные системы, поисковые сервисы
-


-
Обучение без учителя
По данным модель будет делать вывод о том, как сгруппировать объекты, мы заранее не имеем никакой разметки-
кластеризация
-
пример: сгруппировать отзывы на продукт по тематике, заранее мы не знаем, на какие топики можно поделить отзывы - кластеризация нам в этом поможет
-
-
-
Обучение с подкреплением
отдельная большая сложная область машинного обучения, но обычно она выходит за рамки стандартных роадмапов изучения профессии
Какие признаки бывают?
Числовые (возраст, цена)
Категориальные (цвет, страна)
Булевы (да/нет)
Временные ряды (температура по дням)
Текстовые (описание товара)
Изображения (пиксели)

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

Основная цель ML-модели — хорошо работать на новых данных, а не просто запомнить старые, поэтому с переобучением обязательно нужно бороться и предотвращать его.
Как бороться с переобучением:
Регуляризация — добавление штрафа к функции потерь (например, L1 или L2), чтобы ограничить сложность модели.
Аугментация данных — особенно в компьютерном зрении или NLP, помогает расширить датасет и сделать модель устойчивее.
Упрощение модели — уменьшение количества параметров, глубины нейросети / решающего дерева и т.п.
Собирание большего количества данных — лучший способ повысить обобщающую способность, если есть возможность.
Зачем делать стандартизацию?
Мы приводим признаки к общему масштабу. Это позволяет избежать ситуации, когда один признак с диапазоном [0, 10000] “давит” на другой, у которого разброс от 0 до 1. Не всегда обязательно, но в большинстве случаев — очень желательно. Также такой препроцессинг стабилизирует обучение.
Особенно если ты используешь модели, которые чувствительны к масштабу данных: например, линейную регрессию, логистическую регрессию, k-ближайших соседей, PCA и нейросети. Но стандартизацию делать не всегда обязательно, например, для обучения деревьев не требуется стандартизация.
Пример, когда без нормализации / стандартизации никуда:
Когда обучаем линейную модуль, у нас есть веса при признаках. Если у какого-то признака слишком большой масштаб, то и коэффициент должен быть больше, чтобы скомпенсировать такой масштаб. Таким образом теряется интерпретируемость весов линейной модели, потому что признаки не в равных условиях.
Что такое гиперпараметр модели? В чем отличие от параметра? Приведи примеры гиперпараметров у пары разных моделей?
Параметры модели — это то, что модель это то, что модель изучает из данных. Например, веса в линейной регрессии или веса нейронной сети.
Гиперпараметры — это параметры, которые задаются до обучения модели и не изменяются во время обучения. Они управляют процессом обучения и архитектурой модели.
Примеры:
Линейная регрессия с L2-регуляризацией (Ridge):
Параметры: веса модели (коэффициенты при признаках).
Гиперпараметр: коэффициент регуляризации alpha, который контролирует, насколько сильно мы штрафуем большие веса.
Random Forest:
Параметры: деревья сами по себе и их сплиты.
Гиперпараметры: n_estimators (сколько деревьев), max_depth, min_samples_split, и т.п.
Что такое кросс-валидация?
Кросс-валидация — это метод оценки качества модели машинного обучения, при котором данные многократно делятся на обучающую и тестовую выборки, который помогает понять, как она будет работать на новых данных. Идея в том, чтобы не просто один раз разделить данные на train/test, а многократно проверять модель на разных разбиениях данных.
Кросс-валидация помогает получить более хорошую оценку качества модели. Если мы используем стандартный train/test split, то мы сильно зависим от единственного разбиения. Кросс-валидация позволяет получить более устойчивую оценку качества.

Допустим, у нас 1000 строк данных.
Мы хотим проверить модель, не тратя целых 30% на тест (дорого!).
С 5-fold кросс-валидацией:
Делим на 5 частей по 200.
5 раз обучаем модель на 800 строках и тестируем на 200.
Считаем среднюю метрику — вот и честная оценка!
Также кросс-валидация очень полезна при подборе гиперпараметров модели, так мы хотим чтобы модель не просто «выучилась» под один тестовый сет, а обобщилась.

Когда особенно важна кросс-валидация:
Данных мало.
-
Метрика нестабильна.
данные неоднородные (например, разная сложность, шум, выбросы),
или модель неустойчива и легко переобучается,
или выборка маленькая и случай играет большую роль.
Хочешь точно подобрать гиперпараметры.
Нужно убедиться, что модель не переобучена.
Нужно сравнить несколько моделей честно.
Виды кросс-валидация?
k-fold cross-validation — стандартный вариант.
Stratified K-Fold — если у тебя несбалансированные классы, он сохраняет соотношение классов в каждом фолде.
Leave-One-Out (LOO) — экстремальный случай, где каждый пример по очереди становится валидационным. Тяжёлый, но точный.
TimeSeriesSplit — для временных рядов, где важно сохранять порядок во времени.
Для временных рядов обычный KFold не подойдёт, потому что он ломает хронологию — а во временныхрядах будущее не может «подсматривать» в прошлое. Нужно использовать Time Series Cross‑Validation, или TimeSeriesSplit в sklearn. Суть — мы двигаем «окно» обучения и валидации по временной шкале, сохраняя порядок событий.

Что делать, если очень много признаков в датасете? Что такое проклятие размерности?
С одной стороны, если признаков много, это хорошо, потому что больше информации для модели, которую она может извлечь и учитывать в своих предсказаниях.
Но с другой стороны это также может быть вредно для нас:
долго обучаем модель, долго инферинсим (применяем для тестовых/реальных данных)
«проклятие размерости» — с увеличением количества признаков нужно экспоненциально больше данных. Плохо работают метрические методы. Много шума в данных, так как не все признаки важны
Если признаков очень много, особенно если их больше, чем наблюдений — это уже потенциальная проблема. И называется она красиво — проклятие размерности. Суть в том, что по мере роста числа признаков, объёмы пространства растут экспоненциально, и данные становятся всё более разреженными. То есть, условно, в высокоразмерном пространстве даже 10 тысяч точек — это «капля в море». Расстояния между точками теряют смысл, плотности теряют смысл, а модели, особенно те, что зависят от расстояний — например, k-NN, SVM с RBF — начинают вести себя плохо. А ещё — переобучение приходит быстрее.
Есть несколько стратегий для борьбы с проклятием размерности:
-
Отбор признаков (Feature selection)
-
Удаление малоинформативных признаков
здравым смыслом можем оценить
посмотреть на корреляцию с таргетом
удалить с большим количеством выбросов
удалить признаки с очень низкой дисперсией
Удалить мультиколлинеарные признаки (линейно зависимые признаки)
Встроенные методы моделей (model-based)
feature_importances_ — встроенный атрибут в RandomForestClassifier, GradientBoostingClassifier и т.д.не забываем про L1 регуляризацию
-
-
Снижение размерности (feature extraction)
PCA, t-SNE, UMAP — строят новое пространство меньшей размерности.
-
Собрать больше данных
Если есть возможность, это всегда помогает компенсировать высокую размерность.
Какие схемы многоклассовой классификации существуют?
One-vs-Rest (OvR, или One-vs-All)
В этой схеме мы обучаем N моделей, где каждая учится отличать один класс против всех остальных.
-
Пример: если у тебя 3 класса — A, B, C — ты тренируешь 3 модели:
A против (B и C)
B против (A и C)
C против (A и B)
Инференсим объект по всем моделям и выбираем ту, которая выдала максимальную уверенность. Простая и понятная схема. Часто используется по умолчанию — например, в LogisticRegression(multi_class='ovr') в sklearn.
используется по умолчанию
может игнорировать минорные классы
One-vs-One (OvO)
Тут всё наоборот: мы обучаем модель для каждой пары классов. То есть, если у тебя N классов, будет моделей.
-
Для 3 классов:
A vs B
A vs C
-
B vs C.
итого 3 модели
Звучит как очень много моделей, но каждая модель обучается только на части данных так что они маленькие и быстро обучаются. Такая схема хорошо работает с SVM
используется реже, так как нужно обучать
моделей.
NATIVE
Некоторые модели из коробки поддерживают многоклассовость. Например:
Деревья, Random Forest, CatBoost — умеют работать с многими классами напрямую.
Нейросети — просто ставим Softmax на выходе.
Что такое дисбаланс данных и почему это плохо?
Когда распределение классов в выборке, например, не 50/50, а 90/10.
Модели становится тяжелее предсказывать минорный класс.
Теряется интепретируемость у метрик, например, accuracy.
Какие методы балансировки датасета бывают?
Undersampling
-
Случайное уменьшение выборки мажорного класса
Просто случайно удаляем часть объектов из «большого» класса. Пример: берём случайные 10% из класса A, чтобы уравнять с B. Быстро, но можно потерять полезную информацию.
-
Через кластеризацию
Обучаем кластеризацию на данных мажорного класса и для каждого кластера из 10ти объектов можем оставить, например, только центр кластера. Дольше, но потенциально теряем меньше полезной информации. Избавляемся от дублей в данных.
Oversampling
-
Дублируем примеры редкого класса
Random Oversampling — просто копируем.
-
Генерируем новые
SMOTE (Synthetic Minority Oversampling Technique) — генерирует синтетические точки между существующими.
ADASYN — как SMOTE, но делает упор на те области, где минорный класс особенно “зажат” мажорным.
-
Можно применять аугментацию данных
в компьютерном зрении (CV) — поворачивать изображения и менять у них контрастность, например.
в методах работы с текстом (NLP) — случайно вставлять/удалять символы, перефразировать текст или случайные слова заменять синонимами
Конечно, можно и нужно комбинировать.
Линейные модели
Что такое линейные модели и как они устроены?
Линейные модели — это класс моделей машинного обучения, в которых предсказание получается как линейная комбинация входных признаков

x — признаки (входные данные),
w — веса (коэффициенты модели),
? — свободный член (bias, сдвиг),
y~ — предсказание модели.
Если представить двумерный случай и задачу классификации.
То есть мы хотим линейно разделить наши классы — тогда веса будут отвечать за угол наклона прямой, а свободный член за ее сдвиг.

Но константу b обычно опускают, потому что для нее используют новый единичный признак.
Основные линейные модели — это линейная регрессия и логистическая регрессия.
В чем отличие линейной регрессии от логистической регрессии?
Линейная регрессия:
Регрессия
Линейная комбинация признаков
Лосс — MSE (среднеквадратичная ошибка)
Логистическая регрессия
Бинарная классификация
Сигмоида от линейной комбинации признаков, полученное значение интерпретируется как вероятность принадлежности к классу 1
Логарифмическая функция потерь (log-loss)
Что такое log-loss, откуда он берется?
Это функция потерь для бинарной классификации.
Формула выглядит как

Чем ближе ? к истинному классу, тем меньше logloss.
Вывод следующий:
Logloss — это negative log-likelihood
Когда мы обучаем логистическую регрессию, мы по сути максимизируем правдоподобие для распределения Бернулли предсказанных вероятностей на обучающей выборке.
То есть хотим максимизировать величину:

Но с произведениями неудобно работать, поэтому прологарифмируем выражение.
А также чтобы решать задачу минимизации, а не максимизации домножим на — 1.
Получаем искомую формулу:

Какие есть плюсы и минусы у линейных моделей?
Плюсы:
Простота
Быстрое обучение
Интерпретируемость
Не требуют большого кол-ва данных
хорошо работают с трендами
Минусы:
Плохо работают с нелинейными зависимостями
Чувствительны к выбросам
Требуют нормализации признаков
Как можно интерпретировать линейные модели?
Через знак веса:
? >0: признак положительно влияет на целевую переменную.
?<0: признак отрицательно влияет.
?=0: признак не влияет (или модель считает его бесполезным).
Модуль веса:
Чем больше абсолютное значение, тем более важен этот признак для модели.
Важно:
Но сравнивать можно только после нормализации признаков, иначе масштабы «врут».
Больше верим коэффициенту при использовании регуляризации и / или отсутствии мультиколлинеарности.
Что такое мультиколлинеарность? Как ее победить?
Мультиколлинеарность — это ситуация, когда некоторые признаки сильно коррелируют друг с другом.
Почему это плохо:
Веса могут по модулю сильно увеличиваться да и вообще становятся нестабильными.
Плохая интерпретируемость.
Что можно сделать:
Удаление коррелированных признаков
Регуляризация
Как заподозрить переобучение у линейной модели?
Кроме того, чтобы считать метрики качества на отложенной выборке, можно посмотреть на коэффициенты перед признаки у обученной модели.
Если они очень большие, выглядят неадекватно и потеряли интерпретируемость, то, скорее всего, модель переобучилась.
Что такое регуляризация в линейных моделях? Какие бывают и в чем их особенности?
Регуляризация — это способ борьбы с переобучением, когда мы накладываем на модель дополнительные ограничения, чтобы сделать ее проще, устойчивее и с лучшей обобщающей способностью.
Регуляризация в линейных моделях — это добавка к функции потерь, которая штрафует модель за слишком сложные решения — обычно за большие веса.

λ – это очередной гиперпараметр
А штраф за большие веса может быть в виде L1 — нормы коэффициентов или L2.
L1 (Lasso)

L2 (Ridge)

ElasticNet
Комбинация L1 и L2.
Кроме того, что L1 и L2 уменьшают нормы весов, L1 еще и зануляет коэффициенты при неважных признаках из-за природы своей геометрической интерпретации.
Какая геометрическая интепретация L1 и L2 регуляризаций?

Линии уровня L1 — N‑мерные октаэдры, поэтому пересечение с линиями уровня основной лосс функции будет, скорее всего, на осях, где один из признаков обнуляется.
Как обучаются линейные модели (2 способа)?
Способ 1: Аналитическое решение
Решаем уравнение напрямую через линейную алгебру

Не используется в больших задачах, т.к. требует обращать матрицу - а это дорого и может быть вырожденной (при мультиколлинеарности).
Способ 2: Градиентный спуск

Так как у нас есть функция потерь, она дифференциремая, то есть если посчитать градиент этой функции, то антиградиент покажет, куда нужно смещаться для наискорейшего убывания.
Смещаться будем итеративно со скоростью обучения, которую часто называют learning rate.
Также для ускорения оптимизации можно считать градиент не по всем объектам выборки, а по батчам.

Больше про методы оптимизации есть в моем тг канале. А также на бусти есть мок-собес.
Метрики классификации и регрессии
Метрики регрессии
МАЕ — значение ошибки по модулю.
MSE — Квадрат ошибки. Очень чувствителен к выбросам. Если хотим показывать в out of distribution (выбросы).
Если хотим уделить внимание выбросам и их учитывать в обучении, то используем MSE. Если оне не важны, то лучше использовать МАЕ.
RMSE — косметическая надстройка над MSE, просто берем корень из MSE, чтобы посмотреть на ошибку в нормальных значениях, так как из квадрата не сразу понятно, например, квадратные рубли.

R2 — показывает, какая доля дисперсии объяснима моделью. Используется, когда нужно понять на сколько плохая или хорошая модель.

Если ошибка маленькая, то в числителе будет маленькое значение и R2 большое, например, 0,8, то модель объясняет 80% всех данных. Интуитивно: лучше ли модель чем просто усреднение таргета
RMSLE, MAPE, WAPE — для подсчета относительных ошибок, когда нам не так важна абсолютная ошибка, а именно относительная
пример: ошибка в стоимости автомобилей
Метрики классификации
Accuracy — доля правильных ответов относительно всех объектов. Берет только правильные ответы на всех классах. У нее проблемы:
дисбаланс классов — если объектов 1 класса сильно больше чем другого, то метрика не инфомративна
разная цена ошибок — если в задаче классификации одна ошибка стоит больше чем другая, то эту метрику применять не стоит. Пример: выдача кредита или обнаружение заболевания

Precision (Точность) — Доля релевантных среди найденных.
Пример: Классификация хороший ли день для запуска спутника по погоде. Мы можем пропустит хороший день, но нам нельзя лететь в плохую погоду точно.

Recall (Полнота) — Покрытие целевого класса (класса 1). Долю найденных из всех релевантных.
Пример: модель которая выбирает больных из здоровых, пусть лучше выбирает всех, чем кого-то пропустит.


F1 мера, это среднее гармоническое между точностью и полнотой. Если хотя бы один из аргументов стремится к нулю, то и вся модель стремится к нулю (в отличие от среднего арифмитического). Когда хотим найти оптимизировать и precision, и recall.

F1-мера помогает бороться с дисбалансом классов, потому что она учитывает и Precision (точность), и Recall (полноту), а не просто количество правильно предсказанных примеров, как Accuracy.
Fb score — та же метрика, но используется, если требуется отдать предпочтение одной из метрик: точности или полноте.
Roc-Auc-score площадь под ROC кривой в осях TPR и FPR. Дает интегральную оценку модели при любых порогах. А также показывает долю верно упорядоченных пар объектов с разных классов.

Пример:
Отток клиентов, нужно не просто классифицировать клиентов, а еще и понять на сколько классификатор уверен. Если человек с малой вероятностью оттечет, то ему дать купон. Если с большой, то предложить классный тариф.
Precision-Recall AUC (PR AUC)
Строит кривую в осях Precision Recall и вычисляет площадь под ней.
Лучше подходит для сильно несбалансированных данных, чем обычный ROC AUC.
Метрики для многоклассовой классификации
Микроусреднение — усредняем элементы матрицы ошибок (TP, FP, TN, FN) между бинарными классификаторами и потом по усредненной матрице неточностей считаем precision и recall
может плохо отражать качество при дисбалансе
Макроусреднение — сначала по классам считаем precision и recall, а затем усредняем все значения в финальные метрики precision и recall. Лучше отражает плохие значения при дисбалансе.
Ассиметричные метрики
Асимметричные метрики — это метрики, которые по-разному оценивают ошибку в зависимости от направления отклонения предсказания от истинного значения. То есть, ошибка в одну сторону (переоценка или недооценка) "наказывается" сильнее, чем в другую.
В кредитном скоринге: лучше недооценить платёжеспособность клиента, чем переоценить.
В прогнозировании спроса: недооценка спроса приводит к дефициту товара, а переоценка — к избыточным запасам. Иногда первое хуже второго, иногда наоборот.
На этом в этих темах — все, смотрите разбор вопросов на ютубе!
Разборы реальных собеседований на бусти и еще больше полезного контента в тг канале, подписывайтесь, чтобы не пропустить следующие части, а они уже скоро будут)