← Маршрут ML-инженерии

Урок · 2 мин чтения · упражнения и самопроверка

Линейные модели, деревья и ансамбли

После урока: объяснить регуляризация и выполнить упражнение «Сравнить кандидатов на одинаковых данных», обосновав выбранный подход..

Перед началом

Примеры выполняются локально: скачайте лабораторию и установите зависимости по README. Онлайн-редактор алгоритмических задач не содержит ML-библиотеки.

От линейного правила к ансамблю

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

Регуляризация ограничивает сложность решения. У LogisticRegression параметр C задаёт обратную силу регуляризации: меньше C означает более сильное ограничение. Это гиперпараметр, который выбирается на validation/CV. Масштаб признаков влияет на интерпретацию ограничения, поэтому линейную модель в лаборатории используем со StandardScaler.

Деревья

Дерево решений последовательно делит пространство признаков условиями. Глубокое дерево может почти запомнить train. Ограничения глубины и минимального размера листа помогают контролировать сложность. Деревья обычно не требуют стандартизации числовых признаков, но это не отменяет контракт входа и обработку пропусков согласно конкретной реализации.

Random Forest усредняет множество деревьев, обученных с разнообразием данных и признаков. Gradient boosting добавляет модели последовательно, исправляя ошибки предыдущих. Эти семейства могут хорошо работать с табличными данными, но их преимущества надо проверять по одинаковой процедуре, учитывая обучение, задержку и размер артефакта.

Выбор по требованиям

Начните с простой модели, которую можете объяснить и воспроизвести. Сравните качество, время обучения, время запроса и потребление памяти. Победа по одной метрике не делает модель лучшим выбором для ограниченного CPU-сервиса. Не добавляйте нейросеть до понимания данных и baseline.

Пример показывает различие обучения и проверки: дерево fit получает train, а predict — отдельные строки. Для реального сравнения моделей используйте одинаковые folds, а не множество случайных test-разбиений в поиске удачного результата.

Пошаговый пример

python
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
data = load_wine()
a, b, ya, yb = train_test_split(data.data, data.target, test_size=0.2, stratify=data.target, random_state=42)
model = DecisionTreeClassifier(max_depth=3, random_state=42).fit(a, ya)
print(len(model.predict(b)))
print(model.get_depth() <= 3)

Ожидаемый вывод

text
36
True

Предсказаний столько же, сколько holdout-строк. Ограничение max_depth соблюдается.

Сделайте самостоятельно

Добавьте RandomForestClassifier как кандидата к лабораторной модели. До запуска запишите, какие метрики и ограничения будете сравнивать.

Ответ и критерии проверки

Сравнивайте macro-F1 на тех же CV-folds train, затем время обучения и inference. Выберите кандидата до оценки holdout. Зафиксируйте random_state и параметры, чтобы сравнение можно было повторить.

Проверьте понимание

1. Что означает меньшее C в LogisticRegression?
2. Нужно ли выбирать модель только по train-метрике?

Редакция SubTree · Проверка примеров: 26.10.2026

Исполняемые примеры проверены автоматическим запуском; источники сверены при подготовке.