DeepLearning Blog

Основы ML

Published Dec. 11, 2025, 1:11 p.m. by a.glazyrin
image

Основы машинного обучения

1. Типы задач ML

Supervised Learning (Обучение с учителем)

  • Что: Модель обучается на размеченных данных
  • Как: Есть правильные ответы (labels) для обучения
  • Примеры:
  • Классификация: спам/не спам, кошка/собака
  • Регрессия: предсказание цены, температуры

Unsupervised Learning (Обучение без учителя)

  • Что: Модель ищет структуру в данных без правильных ответов
  • Как: Нет labels, только данные
  • Примеры:
  • Кластеризация: группировка клиентов
  • Снижение размерности: PCA, t-SNE
  • Поиск аномалий

Reinforcement Learning (Обучение с подкреплением)

  • Что: Агент учится, взаимодействуя со средой
  • Как: Получает "награды" за правильные действия
  • Примеры:
  • Игровые AI (AlphaGo)
  • Робототехника
  • Рекомендательные системы

2. Признаки и целевая переменная

Признаки (Features)

  • Что: Характеристики объектов, которые модель использует для предсказания
  • Пример для квартиры: площадь, район, этаж, год постройки
  • Типы:
  • Числовые: площадь = 54.5 м²
  • Категориальные: район = "Центральный"
  • Бинарные: лифт = да/нет

Целевая переменная (Target)

  • Что: То, что мы хотим предсказать
  • Пример: Цена квартиры
  • Обозначение: $y$ в формулах

Матрица признаков (Features Matrix)

  • Обозначение: $X$ (размер: n_samples × n_features)
  • Пример:
    | площадь | район_центр | этаж | ... | → признаки |---------|-------------|------|-----| | 54.5 | 1 | 5 | ... | → объект 1 | 72.3 | 0 | 2 | ... | → объект 2

3. Что такое переобучение и как его обнаружить?

Переобучение (Overfitting)

Что: Модель слишком хорошо "выучила" обучающие данные, но плохо работает на новых

Аналогия: Студент зазубрил билеты, но не понял тему → провалит новый вопрос

Как обнаружить:

  1. Разделить данные на три части:
    - Train (обучение): 60-70%
    - Validation (валидация): 15-20%
    - Test (тест): 15-20%

  2. Сравнить метрики:
    Качество модели: - На train: 98% (отлично!) - На validation: 65% (плохо!) - На test: 63% (очень плохо!)
    Разрыв > 5-10% → переобучение

  3. Learning Curves (кривые обучения):
    - Ошибка на train снижается, но на validation растёт или не улучшается
    - Большой разрыв между кривыми


4. Как бороться с переобучением?

1. Больше данных

  • Собрать больше примеров
  • Аугментация (для изображений, текста)

2. Упростить модель

  • Уменьшить глубину дерева
  • Уменьшить число слоёв в нейросети
  • Использовать регуляризацию

3. Регуляризация

  • L1/L2 регуляризация — штраф за большие веса
  • Dropout (в нейросетях) — случайное "выключение" нейронов
  • Early stopping — остановка до переобучения

4. Feature Engineering

  • Удалить неважные признаки
  • Создать более осмысленные признаки

5. Ансамбли

  • Объединить несколько простых моделей
  • Bagging (Random Forest), Boosting

5. Параметры и гиперпараметры

Параметры модели

  • Что: Настраиваются автоматически во время обучения
  • Примеры:
  • Веса в линейной регрессии: $w_0, w_1, ..., w_m$
  • Разделения в дереве решений
  • Веса в нейронной сети
  • Как настраиваются: Градиентный спуск, обратное распространение

Гиперпараметры модели

  • Что: Настраиваются вручную ДО обучения
  • Примеры:
  • Скорость обучения (learning rate)
  • Глубина дерева
  • Число нейронов в слое
  • Как настраиваются: Grid search, random search, ручной подбор

Простая аналогия:

  • Параметры — как мышцы тела (тренируются)
  • Гиперпараметры — как программа тренировок (выбирается тренером)

6. Примеры гиперпараметров разных моделей

Линейная регрессия / Логистическая регрессия

  • Сила регуляризации ($λ$ или C)
  • Тип регуляризации (L1, L2, Elastic Net)
  • Доля L1 в Elastic Net ($α$)

Дерево решений

  • Максимальная глубина (max_depth)
  • Минимальное число samples в листе (min_samples_leaf)
  • Критерий разделения (gini/entropy)

Random Forest / Gradient Boosting

  • Число деревьев (n_estimators)
  • Максимальная глубина каждого дерева
  • Доля признаков для каждого дерева (max_features)
  • Скорость обучения (learning rate) для бустинга

Нейронные сети

  • Число слоёв
  • Число нейронов в каждом слое
  • Скорость обучения (learning rate)
  • Размер батча (batch size)
  • Dropout rate
  • Оптимизатор (Adam, SGD, RMSprop)

K-Means (кластеризация)

  • Число кластеров (k)
  • Инициализация центроидов
  • Максимальное число итераций

7. Что такое кросс-валидация и зачем она нужна?

K-Fold Cross-Validation

Что: Разбиваем данные на K частей (folds), K раз обучаем на K-1 частях, тестируем на оставшейся

Как работает (пример 5-Fold):

Данные: [1][2][3][4][5]  (5 частей)

Итерация 1: Train на [2][3][4][5], Test на [1]
Итерация 2: Train на [1][3][4][5], Test на [2]
Итерация 3: Train на [1][2][4][5], Test на [3]
Итерация 4: Train на [1][2][3][5], Test на [4]
Итерация 5: Train на [1][2][3][4], Test на [5]

Итог: 5 оценок качества → усредняем

Зачем нужна:

  1. Более надёжная оценка — используем все данные для тестирования
  2. Меньше зависимости от конкретного разбиения
  3. Лучше используем данные — особенно важно при малом объёме данных

Типы кросс-валидации:

  • K-Fold — стандартная (K=5 или 10)
  • Stratified K-Fold — сохраняет распределение классов
  • Leave-One-Out (LOO) — каждый объект как отдельный test
  • Time Series Split — для временных рядов (не перемешивать!)

8. Как подбирать гиперпараметры

Что: Перебираем ВСЕ комбинации из заранее заданных значений

Пример для SVM:

param_grid = {
    'C': [0.1, 1, 10, 100],           # 4 значения
    'kernel': ['linear', 'rbf'],       # 2 значения
    'gamma': [0.001, 0.01, 0.1, 1]     # 4 значения
}
# Всего комбинаций: 4 × 2 × 4 = 32

Плюсы:
- Находит глобальный оптимум (если он в сетке)
- Простой в реализации
- Детерминированный результат

Минусы:
- Медленно при многих параметрах
- Тратит время на плохие комбинации

Что: Случайно выбираем комбинации из заданных распределений

Пример:

param_dist = {
    'C': loguniform(0.001, 100),      # случайно из диапазона
    'max_depth': randint(3, 20),       # случайное целое
    'learning_rate': uniform(0.01, 0.3) # случайное дробное
}

Плюсы:
- Быстрее Grid Search
- Часто находит лучшее решение
- Можно задавать распределения, а не фиксированные значения

Минусы:
- Может пропустить хорошие комбинации
- Не гарантирует воспроизводимость

3. Bayesian Optimization (Байесовская оптимизация)

Что: Использует предыдущие результаты, чтобы выбирать следующие точки

Как работает:
1. Пробуем несколько случайных комбинаций
2. Строим вероятностную модель (часто Gaussian Process)
3. Выбираем следующую точку, которая, вероятно, даст улучшение
4. Повторяем

Плюсы:
- Самый эффективный по числу итераций
- Учитывает информацию о предыдущих пробах
- Хорошо для дорогих моделей (нейросети)

Минусы:
- Сложнее в реализации
- Зависит от начальных точек

4. Automated ML (AutoML)

Что: Автоматический подбор не только гиперпараметров, но и:
- Моделей
- Признаков
- Предобработки

Библиотеки: Auto-sklearn, TPOT, H2O AutoML


Практические рекомендации:

Когда что использовать:

  1. Мало гиперпараметров (<5) → Grid Search
  2. Много гиперпараметров → Random Search или Bayesian
  3. Очень долгое обучение → Bayesian Optimization
  4. Быстрый прототип → дефолтные значения + ручная настройка

Процесс подбора:

1. Выбрать метрику (accuracy, F1, RMSE)
2. Выбрать стратегию валидации (чаще всего K-Fold)
3. Определить пространство поиска
4. Запустить поиск
5. Проверить лучшую модель на тестовой выборке

Важные моменты:

  • Никогда не используйте тестовую выборку для подбора!
  • При кросс-валидации разделяйте на train/test ДО CV
  • Используйте отдельную валидационную выборку для финальной оценки
  • Записывайте результаты экспериментов
0.0
0 оценок
5★
0
4★
0
3★
0
2★
0
1★
0

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

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

Комментарии

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