Помогите мне понять линейную отделимость в двоичном SVM - PullRequest
5 голосов
/ 22 октября 2010

Я кросс-пост это от math.stackexchange.com , потому что я не получаю никакой обратной связи, и это чувствительный ко времени вопрос для меня.


Мой вопрос касается линейной отделимости с гиперплоскостями в машине опорных векторов.

Согласно Википедии :

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

Линейное разделение классов гиперплоскостями интуитивно понятно для меня. И я думаю, что понимаю линейную отделимость для двумерной геометрии. Тем не менее, я реализую SVM с использованием популярной библиотеки SVM (libSVM), и, когда возиться с числами, я не понимаю, как SVM может создать кривую между классами или заключить центральные точки в категории 1 в круговую кривую, окруженный точками в категории 2, если гиперплоскость в n-мерном пространстве V является "плоским" подмножеством измерения n - 1, или для двумерного пространства - 1D-линией.

Вот что я имею в виду:

circularly enclosed class separation for a 2D binary SVM

Это не гиперплоскость. Это круговой Как это работает? Или в SVM больше размеров, чем в двумерных входных 2D-объектах?


Этот пример приложения можно скачать здесь .


Edit:

Спасибо за исчерпывающие ответы. Таким образом, SVM может хорошо отделять странные данные с помощью функции ядра. Поможет ли это линеаризовать данные перед отправкой в ​​SVM? Например, одна из моих входных функций (числовое значение) имеет поворотную точку (например, 0), где она аккуратно вписывается в категорию 1, но выше и ниже нуля она вписывается в категорию 2. Теперь, поскольку я знаю это, будет ли это Помогите классифицировать, чтобы отправить абсолютное значение этой функции для SVM?

Ответы [ 7 ]

11 голосов
/ 22 октября 2010

Как объяснил mokus, машины опорных векторов используют функцию ядра для неявного отображения данных в пространство объектов, где они линейно разделимы:

SVM mapping one feature space into another

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

(Иллюстрация из Крис Торнтон, У. Сассекс .)

8 голосов
/ 23 октября 2010

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

alt text

3 голосов
/ 22 октября 2010

Я не очень хорошо знаком с SVM, но из того, что я помню из моих исследований, они часто используются с «функцией ядра» - по сути, заменой стандартного внутреннего продукта, который эффективно нелинейит пространство. Это примерно эквивалентно применению нелинейного преобразования из вашего пространства в некое «рабочее пространство», где применяется линейный классификатор, и затем перетаскивание результатов обратно в исходное пространство, где линейные подпространства, с которыми работает классификатор, больше не являются линейными. *

Статья в Википедии упоминает об этом в подразделе "Нелинейная классификация" со ссылкой на http://en.wikipedia.org/wiki/Kernel_trick, которая объясняет методику в более общем виде.

2 голосов
/ 20 февраля 2013

Это делается путем применения того, что известно как [Уловка ядра] (http://en.wikipedia.org/wiki/Kernel_trick)). Что в основном делается, так это то, что если что-то не является линейно разделяемым в существующем пространстве ввода (в вашем случае это 2-D),оно проецируется в более высокое измерение, где это было бы разделимо. Функция ядра (может быть нелинейной) применяется для изменения вашего пространственного объекта. Все вычисления затем выполняются в этом пространственном объекте (который также может быть бесконечного размера).

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

Для простого примера рассмотрим пример XOR. Если вы нанесите Input1 по оси X и Input2 по оси Y, тоВыходные классы будут:

  1. Класс 0: (0,0), (1,1)
  2. Class 1: (0,1), (1,0)

Как вы можете заметить, это не линейно разделимо в 2-D.Но если я возьму эти упорядоченные пары в 3-D, (просто переместив 1 точку в 3-D), скажем:

  1. Класс 0: (0,0,1), (1,1,0)
  2. Класс 1: (0,1,0), (1,0,0)

Теперь вы можете легко заметить, что в 3D есть плоскость дляразделите эти два класса линейно.

Таким образом, если вы проецируете свои входные данные в достаточно большое измерение (возможно, бесконечное), то вы сможете линейно разделить ваши классы в этом измерении.

OneЗдесь важно отметить (и, возможно, я отвечу и на другой ваш вопрос), что вам не нужно делать функцию ядра самостоятельно (как я сделал выше).Хорошо, что функция ядра автоматически позаботится о вашем вводе и выяснит, как его «линеаризовать».

1 голос
/ 28 ноября 2011

Для примера SVM в вопросе, заданном в двумерном пространстве, пусть x1, x2 - две оси.Вы можете иметь функцию преобразования F = x1 ^ 2 + x2 ^ 2 и трансформировать эту задачу в одномерную задачу пространства.Если вы внимательно заметили, вы могли видеть, что в преобразованном пространстве вы можете легко линейно разделить точки (пороги по оси F).Здесь трансформированное пространство было [F] (1-мерное).В большинстве случаев вы увеличиваете размерность, чтобы получить линейно разделимые гиперплоскости.

0 голосов
/ 22 октября 2010

Мой ответ на предыдущий вопрос может пролить некоторый свет на то, что происходит в этом случае.Приведенный мною пример очень надуманный и не совсем то, что происходит в SVM, но он должен дать вам интуицию.

0 голосов
/ 22 октября 2010
...