Learn AI with Python · Урок

Теория SVM: отступы и опорные векторы

Классификатор с максимальным отступом, жёсткий и мягкий отступ (параметр C), опорные векторы

Урок 1 из 413 шагов

«Теория SVM: отступы и опорные векторы» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое SVM

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

Разделяющая гиперплоскость

В двумерном пространстве граница является линией, а в пространствах большей размерности — гиперплоскостью. SVM задаёт её уравнением w . x + b = 0 и классифицирует точки по тому, с какой стороны они находятся.

Зазор

Зазор — это расстояние между гиперплоскостью и ближайшими точками каждого класса. SVM максимизирует этот зазор, поскольку более широкий зазор обычно обеспечивает лучшее обобщение на новые данные.

Гиперплоскость с максимальным зазором

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

Опорные векторы

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

from sklearn.svm import SVC

model = SVC(kernel="linear")
model.fit(X, y)
print("Support vectors:\n", model.support_vectors_)
print("Indices:", model.support_)

Почему важны опорные векторы

Поскольку модель определяют только опорные векторы, SVM эффективно используют память во время предсказания и сосредотачиваются на самых сложных и информативных примерах возле границы, а не на простых примерах, расположенных далеко от неё.

Жёсткий зазор

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

Проблема жёсткого зазора

Реальные данные содержат шум и редко бывают идеально разделимыми. Один выброс может сделать жёсткий зазор невозможным или вынудить модель использовать неоправданно узкий зазор. Поэтому нужно допускать некоторые ошибки.

Мягкий зазор

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

Параметр штрафа

C задаёт штраф за нарушения. Большее значение C сильнее наказывает ошибки, что приводит к меньшему зазору, который плотнее соответствует обучающим данным (с риском переобучения). Меньшее значение C допускает больше свободы и более широкий зазор (более сильную регуляризацию).

from sklearn.svm import SVC

strict = SVC(C=100, kernel="linear")   # narrow margin, fits closely
relaxed = SVC(C=0.1, kernel="linear")  # wide margin, more tolerant

Практическая настройка параметра штрафа

Выбирайте значение C с помощью перекрёстной проверки. Слишком большое значение приводит к переобучению, а слишком маленькое — к недообучению. Оптимальное значение уравновешивает ширину зазора и точность на обучающих данных для вашего набора данных.

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

gs = GridSearchCV(SVC(kernel="linear"), {"C": [0.01, 0.1, 1, 10, 100]}, cv=5)
gs.fit(X, y)
print("Best C:", gs.best_params_)

Быстрая проверка

Проверьте свои знания о теории SVM.

Итоги

Итоги: SVM находят гиперплоскость с максимальным зазором, разделяющую классы. Опорные векторы — это ближайшие точки, которые единственные определяют границу. Для жёсткого зазора требуется идеальное разделение, а мягкий зазор допускает нарушения, регулируемые параметром C (большее значение C = меньший зазор и более слабая регуляризация).

Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
53
Уроки
225

Часто задаваемые вопросы

Урок «Теория SVM: отступы и опорные векторы» бесплатный?

Да — полный текст урока «Теория SVM: отступы и опорные векторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Теория SVM: отступы и опорные векторы»?

Классификатор с максимальным отступом, жёсткий и мягкий отступ (параметр C), опорные векторы Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Теория SVM: отступы и опорные векторы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Теория SVM: отступы и опорные векторы
  2. Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра
  3. Классификация с помощью SVM и sklearn
  4. Регрессия с помощью SVM (SVR)
← Назад к Learn AI with Python