Метод опорных векторов (SVM) М

Алгоритм машинного обучения с учителем, который строит разделяющую гиперплоскость с максимальным зазором между классами для классификации и регрессии.

English Support Vector Machine, SVM
Синонимы SVM, машина опорных векторов, метод опорных векторов, МОВ

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

Как это работает

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

Для линейно неразделимых данных применяется ядерный трюк (kernel trick). Он позволяет неявно перевести данные в пространство более высокой размерности, где их можно разделить линейно, без явного вычисления координат в этом пространстве. Популярные ядра — линейное, полиномиальное, радиальное базисное (RBF) и сигмоидное.

Зачем это нужно

SVM хорошо работает на малых и средних наборах данных, особенно когда число признаков сопоставимо или превышает число наблюдений. Алгоритм эффективен в задачах текстовой классификации, биоинформатике, распознавании изображений и финансовом скоринге. Благодаря использованию только опорных векторов, модель экономична по памяти.

Примеры

  • Классификация текстов: определение спама в электронной почте по частотным признакам слов. SVM строит гиперплоскость в пространстве признаков, отделяя спам от нормальных писем.
  • Медицинская диагностика: классификация опухолей как доброкачественных или злокачественных на основе морфологических признаков клеток.
  • Финансовый скоринг: оценка кредитоспособности заёмщика по набору финансовых и демографических признаков.
  • Распознавание рукописных цифр: классификация изображений цифр от 0 до 9 с использованием нелинейного ядра.

Формула или метрика

Задача оптимизации в линейном случае формулируется как минимизация 1/2 · ||w||2 при ограничениях yi(wTxi + b) ≥ 1 для всех i. Для линейно неразделимых данных вводится параметр C, регулирующий компромисс между шириной зазора и ошибками классификации.

Типичные ошибки

  • Отсутствие масштабирования признаков. SVM чувствителен к масштабу данных: признаки с большим разбросом значений будут доминировать. Перед обучением необходимо нормализовать или стандартизировать признаки.
  • Неверный выбор ядра и параметров. Использование RBF-ядра с слишком малым значением γ приводит к переобучению, с слишком большим — к недообучению. Параметр C также требует настройки.
  • Применение SVM на очень больших наборах данных. Обучение SVM имеет высокую вычислительную сложность, поэтому на миллионах объектов алгоритм может быть непрактичным.
  • Игнорирование дисбаланса классов. При сильном дисбалансе SVM может смещаться в сторону多数ного класса. Следует использовать веса классов или другие методы борьбы с дисбалансом.

Как улучшить

  • Масштабируйте признаки. Используйте StandardScaler или MinMaxScaler перед обучением. Это одно из самых важных условий стабильной работы SVM.
  • Подбирайте параметры через кросс-валидацию. GridSearchCV по параметрам C, γ и типу ядра позволяет найти оптимальную конфигурацию.
  • Используйте линейное ядро для больших данных. Если признаков много, а объектов мало, линейное ядро часто работает быстрее и не хуже нелинейных.
  • Применяйте веса классов при дисбалансе. Параметр class_weight='balanced' в scikit-learn автоматически корректирует веса.
  • Комбинируйте SVM с отбором признаков. Удаление неинформативных признаков снижает риск переобучения и ускоряет обучение.

Источники

Scikit-learn: Support Vector Machines — документация библиотеки с описанием классов SVC, NuSVC и LinearSVC (https://scikit-learn.org/stable/modules/svm.html)

Корнеев М.В. Курс по машинному обучению, раздел SVM — учебные материалы с практическими примерами (https://github.com/koroteevmv/ML_course)

Николенко С.И. Метод опорных векторов — лекция TRA Robotics, 2018 (https://logic.pdmi.ras.ru/~sergey/teaching/tra18/06-svm.pdf)

Vapnik V.N. The Nature of Statistical Learning Theory — Springer, 1995 (ISBN 978-0-387-94559-0)