Урок 11. Введение в классификацию: линейный классификатор Perceptron и кросс-валидация K-Fold

На этом занятии мы открываем обширный новый раздел машинного обучения — классификацию. В отличие от регрессионного анализа, где мы прогнозировали непрерывные числа (цену аренды, площадь), в задачах классификации наша цель — соотнести объект с одной из заранее известных категорий или классов.

1. Суть задачи и классификация видов

Задача классификации относится к категории обучения с учителем. Модель анализирует вектор признаков объекта \(X\) и подбирает функцию, которая наилучшим образом соотносит его с истинной меткой класса \(y\).

  • Бинарная (двоичная) классификация: задача, где существует ровно два исхода («Да / Нет», «Спам / Не спам», «Кредит одобрен / Отказано»).
  • Многоклассовая классификация: задача, где количество классов строго больше двух (распознавание 10 цифр от 0 до 9, классификация музыкальных жанров).
  • Многолейбловая (Multi-label) классификация: ситуация, когда один объект может одновременно принадлежать сразу к нескольким категориям (например, новостная статья может быть одновременно помечена тегами «политика», «экономика» и «международные отношения»).

2. Классический датасет «Ирисы Фишера»

В качестве эталонного набора данных мы используем знаменитый датасет Ирисы Фишера, собранный ботаником Эдгаром Андерсоном и опубликованный Рональдом Фишером в 1936 году. Датасет содержит информацию о 150 цветках трех видов ирисов: Setosa (щетинистый), Versicolor (разноцветный) и Virginica (виргинский) — по 50 экземпляров каждого класса.

Для каждого цветка измерены 4 признака (в сантиметрах):

  1. Длина чашелистика (sepal length)
  2. Ширина чашелистика (sepal width)
  3. Длина лепестка (petal length)
  4. Ширина лепестка (petal width)

Ирисы Фишера

Визуальный анализ двух наиболее информативных признаков (длины и ширины лепестка) показывает, что класс Setosa идеально отделяется от двух других классов простой прямой линией (линейно разделим). Классы Versicolor и Virginica частично пересекаются, создавая нетривиальную задачу для классификаторов.

3. Линейный классификатор Perceptron (Перцептрон)

Перцептрон Розенблатта (1957 г.) — исторически одна из первых моделей искусственного нейрона. Он представляет собой простейший линейный классификатор, который пытается найти разделяющую плоскость между классами.

Разделяющая граница Перцептрона

Принцип работы перцептрона:

  1. Вычисляется взвешенная сумма входных признаков (линейная комбинация):
    $$ z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b $$
  2. Значение \(z\) пропускается через пороговую функцию активации (ступеньку Хевисайда):
    • Если \(z > 0\), модель прогнозирует Класс 1.
    • Если \(z \le 0\), модель прогнозирует Класс 0.

Особенность обучения: Классический перцептрон не использует стандартную функцию потерь (Loss Function) и градиентный спуск в их современном понимании. Он функционирует на основе простого правила коррекции ошибок (error-correction rule): если предсказание верно — веса не меняются, если ошибочно — веса \(w\) и смещение \(b\) корректируются в сторону уменьшения ошибки.

Разделяющая граница Перцептрона

Для проведения бинарной классификации мы отбрасываем из датасета класс Setosa (оставляя по 50 объектов классов Versicolor и Virginica), кодируем их метками 0 и 1, делим выборку в пропорции 80/20 и обучаем модель. На тестовом наборе мы получаем идеальную точность (Accuracy = \(1.00\)). Но можно ли доверять этому результату?

4. Проблема единственного разделения и K-Fold кросс-валидация

При однократном случайном разделении данных (train_test_split), особенно на малых выборках (как наши 100 объектов), оценка качества нестабильна. Если в тест случайно попали только легкие, далеко стоящие от разделяющей линии примеры, мы получим излишне оптимистичный результат (\(100\%\) точности). Если попали сложные пограничные объекты — пессимистичный.

Решением этой проблемы является метод K-блочной кросс-валидации (K-Fold Cross-Validation) — стандартный робастный метод оценки качества:

Кросс-валидация

  1. Весь датасет делится на \(K\) равных частей (блоков / фолдов). Обычно выбирают \(K = 5\) или \(K = 10\).
  2. Запускается цикл из \(K\) итераций обучения.
  3. На каждой итерации один из блоков удерживается как тестовый, а остальные \(K-1\) блоков объединяются и служат обучающей выборкой.
  4. В результате мы получаем \(K\) независимых оценок качества.

Интерпретация результатов кросс-валидации:

Мы анализируем две ключевые метрики полученного массива оценок:

  • Среднее значение (Mean Accuracy): Наша итоговая, наиболее надежная и усредненная оценка качества.
  • Стандартное отклонение (Std Dev): Показывает стабильность модели. Большое отклонение сигнализирует о нестабильности модели и ее высокой чувствительности к изменению тренировочной выборки.

Анализ результатов

При запуске 5-блочной кросс-валидации нашего перцептрона мы получаем точность по фолдам: [0.5, 0.9, 0.6, 0.75, 0.9]. Средняя точность составила \(0.730\), а относительное стандартное отклонение превысило \(21.9\%\). Это указывает на высокую вариативность: модель нестабильна и сильно зависит от случайности. Для решения этой проблемы нам потребуются более устойчивые алгоритмы, такие как логистическая регрессия, которую мы изучим в следующей части.

План занятия

  1. Введение в задачу классификации
    • Понятие классификации как задачи обучения с учителем: прогнозирование категориальной метки класса вместо непрерывных чисел.
    • Виды классификации: бинарная (двоичная), многоклассовая и многолейбловая (Multi-label) классификации.
    • Формализация задачи: образцы, признаки (вектор \(X\)), классы и метки класса (\(y\)).
  2. Базовый датасет «Ирисы Фишера»
    • История создания, структура и значимость датасета в индустрии Data Science.
    • Загрузка датасета из Scikit-Learn (функция load_iris()) и трансформация в Pandas DataFrame.
    • Визуализация признаков с помощью двумерной диаграммы рассеяния (длина и ширина лепестка) в Seaborn. Понятие линейной разделимости признаков.
  3. Линейный классификатор Perceptron (Перцептрон)
    • Перцептрон Розенблатта как прародитель современных нейросетевых архитектур.
    • Математическая модель: взвешенная сумма признаков \(z = w_1x_1 + w_2x_2 + b\) и пороговая функция активации (ступенька Хевисайда).
    • Процесс обучения: использование интуитивного правила коррекции ошибок (error-correction rule) вместо вычисления классических функций потерь.
    • Подготовка данных для бинарной классификации: удаление линейно разделимого класса Setosa и маппинг оставшихся классов в 0 и 1.
    • Построение разделяющей границы (вычисление весов \(w\) и сдвига \(b\)) и ее визуальное отображение на графике.
  4. K-блочная кросс-валидация (K-Fold Cross-Validation)
    • Проблема единственного разделения выборки (train_test_split) на малых объемах данных (эффект ложного оптимизма или пессимизма).
    • Суть K-Fold CV: итерационное разбиение датасета на \(K\) блоков (фолдов), поочередное удержание одного из блоков для теста и обучение на остальных.
    • Оценка стабильности: вычисление средней точности (\(\text{Mean Accuracy}\)), стандартного отклонения (\(\text{Std Dev}\)) и относительной вариативности модели.
    • Практический запуск кросс-валидации перцептрона в Scikit-Learn с помощью cross_val_score и StratifiedKFold.

Не уходите просто так – не упустите возможность только здесь и сейчас получить скиду!

Индивидуальная консультация по Яндекс Директу или Google Ads со скидкой

25%

"*"обозначает обязательные поля

Это поле используется для проверочных целей, его следует оставить без изменений.