Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра
Почему работают ядра, параметр gamma ядра RBF, выбор ядер для данных различной формы
«Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Когда линий недостаточно
Линейный SVM проводит только прямые границы. Многие наборы данных не являются линейно разделимыми: например, окружность одного класса, окружённая другим классом, не может быть разделена линией. Эту проблему решает ядерный трюк.
Переход в пространство большей размерности
Если данные неразделимы в исходном пространстве, их проекция в пространство большей размерности может сделать их разделимыми. Кривая в двумерном пространстве может превратиться в плоскость в трёхмерном.
Ядерный трюк
Ядерный трюк вычисляет сходство K(x, z) между точками так, как если бы они были отображены в пространство высокой размерности, но без фактического выполнения дорогостоящего отображения. Благодаря этому нелинейные SVM работают эффективно.
Что такое ядерная функция
Ядро K(x, z) — это функция, возвращающая скалярное произведение x и z в некотором пространстве признаков высокой размерности. Разные ядра задают разные отображения признаков и формы границ.
Ядро RBF
Ядро RBF (гауссово) — самый популярный вариант по умолчанию: K(x, z) = exp(-gamma * ||x - z||^2). Оно измеряет сходство, уменьшающееся с расстоянием, и позволяет строить гибкие изогнутые границы.
from sklearn.svm import SVC
model = SVC(kernel="rbf", gamma="scale", C=1.0)
model.fit(X, y)Параметр ширины ядра
gamma управляет шириной ядра RBF. Большое значение gamma означает, что каждая точка влияет только на узкую область, создавая извилистую границу, которая может привести к переобучению. Малое значение gamma означает широкую область влияния и более гладкую границу.
from sklearn.svm import SVC
wiggly = SVC(kernel="rbf", gamma=10) # tight, can overfit
smooth = SVC(kernel="rbf", gamma=0.01) # broad, may underfitСовместная настройка параметров
Работа SVM с ядром RBF зависит и от gamma (гибкость границы), и от C (допустимый уровень ошибок). Эти параметры взаимодействуют, поэтому обычно их настраивают совместно с помощью поиска по сетке.
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
param = {"C": [0.1, 1, 10], "gamma": [0.01, 0.1, 1]}
gs = GridSearchCV(SVC(kernel="rbf"), param, cv=5)
gs.fit(X, y)Полиномиальное ядро
Полиномиальное ядро K(x, z) = (gamma * x . z + r)^degree моделирует взаимодействия вплоть до выбранной степени. Используйте его, если ожидаете взаимодействия признаков известного порядка.
from sklearn.svm import SVC
model = SVC(kernel="poly", degree=3, coef0=1, gamma="scale")
model.fit(X, y)Сигмоидальное ядро
Сигмоидальное ядро K(x, z) = tanh(gamma * x . z + r) ведёт себя подобно функции активации нейронной сети. Оно используется реже и не всегда является допустимым ядром, поэтому редко бывает первым выбором.
from sklearn.svm import SVC
model = SVC(kernel="sigmoid", gamma="scale", coef0=0)Выбор ядра
Рекомендации:
- Линейное для данных высокой размерности или текстовых данных
- RBF — надёжный вариант по умолчанию для нелинейных данных
- Полиномиальное, когда важны взаимодействия известной степени
- Сигмоидальное — редко, для особых случаев
Всегда масштабируйте признаки
Ядра, такие как RBF, используют расстояния, поэтому масштаб признаков имеет огромное значение. Всегда стандартизируйте признаки перед использованием SVM с ядром, иначе признаки с большими масштабами будут доминировать при вычислении сходства.
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
pipe.fit(X, y)Быстрая проверка
Проверьте свои знания о ядрах.
Итоги
Итоги: ядерный трюк вычисляет K(x, z) как скалярное произведение в пространстве высокой размерности без затрат на отображение, что позволяет строить нелинейные границы. RBF использует exp(-gamma * ||x-z||^2), где большие значения gamma приводят к переобучению. Полиномиальное ядро учитывает взаимодействия до степени d. Всегда масштабируйте признаки перед использованием SVM с ядрами.
Часто задаваемые вопросы
Урок «Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра» бесплатный?
Да — полный текст урока «Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра»?
Почему работают ядра, параметр gamma ядра RBF, выбор ядер для данных различной формы Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Теория SVM: отступы и опорные векторы
- Ядерный трюк: RBF, полиномиальное и сигмоидальное ядра
- Классификация с помощью SVM и sklearn
- Регрессия с помощью SVM (SVR)