Разница ядер в SVM?

27

Может кто-нибудь подскажите пожалуйста разницу между ядрами в SVM:

  1. линейный
  2. многочлен
  3. Гауссовский (RBF)
  4. сигмоид

Потому что, как мы знаем, ядро ​​используется для отображения нашего входного пространства в пространство пространственных объектов высокой размерности. И в этом пространстве признаков мы находим линейно отделимую границу ..

Когда они используются (при каких условиях) и почему?

user3378327
источник

Ответы:

4

Линейное ядро ​​- это то, что вы ожидаете, линейная модель. Я полагаю, что ядро ​​многочлена аналогично, но граница имеет некоторый определенный, но произвольный порядок

(например, порядок 3: a=b1+b2X+b3X2+b4X3 ).

RBF использует нормальные кривые вокруг точек данных и суммирует их так, чтобы граница решения могла быть определена типом условия топологии, таким как кривые, где сумма превышает значение 0,5. (см. эту картину )

Я не уверен, что такое сигмовидное ядро, если только оно не похоже на модель логистической регрессии, где логистическая функция используется для определения кривых в соответствии с тем, где логистическое значение больше некоторого значения (вероятность моделирования), такого как 0,5, как нормальное кейс.

Джон Йеттер
источник
Таким образом, мы можем получить линейно отделимую гиперплоскость (границу), если мы используем линейное ядро ​​?? и если мы используем полиномиальное ядро ​​или ядро ​​RBF, (для полиномиального) гиперлан может быть кругом сгруппированных классов (для RBF) и кривой ?? это правильно?? scikit-learn.org/stable/modules/svm.html
user3378327
Каждый из ядер работает для версий с большими размерами соответствующих границ. Это отвечает на ваш вопрос? Вы не ограничены тремя измерениями для любого ядра, о котором я знаю.
Джон Йеттер
Я просто хочу прояснить это. То есть граница с использованием линейного ядра является линейной? Для RBF это как круг сгруппированных классов ?? и для полинома, это может быть кривой, основанной на степени полинома ??
user3378327
Я бы не сказал, что RBF - это круг сгруппированных классов. Насколько я понимаю, он применяет функцию, основанную на нормальном распределении в каждой точке данных, и суммирует эти функции. Затем граница образуется кривой, представляющей определенное значение для этой функции. Если кто-то, кто внес свой вклад в библиотеку SVM, может принять участие, это может помочь. Я думаю, что вы понимаете два других ядра правильно.
Джон Йеттер
U сказал, что Linier Kernel - это то, что я ожидал (чтобы получить линейно отделимый класс) с помощью Kernel. и с помощью классификатора SVM мы назвали его LINIER SVM. Но как, если мы сможем получить разделяемые данные без каких-либо ядер в SVM. Как мы это называем ?? Все еще Linier SVM или не Linier SVM ??
user3378327
11

Опираясь на базовые знания читателя о ядрах.

Линейное ядро: K(X,Y)=XTY

K(X,Y)=(γXTY+r)d,γ>0

K(X,Y)=exp(XY2/2σ2)exp(γXY2),γ>0

K(X,Y)=tanh(γXTY+r)

rdγ

Ашок Чоудхары
источник
3
Хотя информация в вашем ответе верна, я не думаю, что она отвечает на поставленный здесь вопрос, который больше относится к тому, какова практическая разница между ними, т.е. когда использовать один или другой.
Firebug
1
Удивительно, но эти простые определения трудно найти. Они должны быть представлены в первую очередь, когда речь идет о различиях в ядрах, но существует широко распространенная ошибка их формулирования.
17
Есть ли официальный источник для них? (Я проверил их, и они кажутся правильными, но я хотел бы иметь возможность процитировать их.)
Кристиан Эрикссон
6

На этот вопрос можно ответить с теоретической и практической точек зрения. Из теоретического в соответствии с теоремой No-Free Lunch говорится, что нет никаких гарантий, что одно ядро ​​будет работать лучше, чем другое. Это априори, вы никогда не знаете, и вы не можете узнать, какое ядро ​​будет работать лучше.

С практической точки зрения обратитесь к следующей странице:

Как выбрать ядро ​​для SVM?

Gnattuha
источник
1

Размышляя о том, для чего «хорошо» ядро ​​или когда его следует использовать, жестких и быстрых правил не существует.

Если вы классификатор / регрессор хорошо работает с данным ядром, целесообразно, если нет, подумать о переходе на другое.

Понимание того, как может работать ваше ядро, особенно если это классификационная модель, можно получить, просмотрев некоторые примеры визуализации, например https://gist.github.com/WittmannF/60680723ed8dd0cb993051a7448f7805

Будет
источник