Рубрики
Без рубрики

Краткое введение в поддержку векторной машины

Поддержка векторных машин (SVM) является одним из самых популярных машин обучения классами … Теги с обучением машины, кодирование начинающих, Python, SVM.

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

Кто должен прочитать этот пост

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

Прочитав этот пост, вы узнаете:

  1. Что такое SVM точно
  2. Как использовать классификатор SVM от Sklearn (Python)
  3. Настройка его параметров для лучших результатов

Так что давайте начнем!

Что такое SVM?

Как упоминалось ранее, SVM лежит в классе контролируемых алгоритмов, используемых для классификации. Начнем с примера 2 класса:

Данные классы X1 и X2, мы хотим найти границу решения, которые отделяют 2 класса лучшие I.E. с минимальной ошибкой.

SVM делает это с «Гиперплоскость» Отказ Теперь эта гиперплоскость может быть одной строкой в случае двумерных данных и может быть плоскостью в трехмерном.

Не собираясь в математику за занавесом, давайте понять некоторые основные функции здесь.

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

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

Границы важны

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

Каждая новая точка данных в тестовых данных будет классифицирована в соответствии с этим запасом. Если он лежит на правой стороне этого, он будет классифицирован как красный круг, иначе как голубая звезда.

Лучшая часть, SVM также может классифицировать нелинейные данные.

Вещи становятся немного сложными в случае нелинейных данных. Здесь SVM использует ‘K_ernel-trick_’ , Он использует функцию ядра для отображения нелинейных данных для более высоких измерений, чтобы она становилась линейными и находит границу решения там.

Функция ядра всегда используется SVM, будь то линейные или нелинейные данные, но его основная функция вступает в игру, когда данные неразделимы в его текущей форме. Здесь функция ядра добавляет размеры к задаче для классификации.

Теперь давайте посмотрим какой-код.

Использование поддержки векторных машин

С помощью Sklearn вы можете использовать силу классификатора SVM всего несколькими строками кода.

from sklearn import svm

#Our linear classifier
clf = svm.SVC(kernel='linear')

''' 
X\_train is your training data y\_train are the corresponding labels y\_pred are the predicted samples of the test data X\_test 
'''

#Training our classifier on the training set with labels
clf.fit(X\_train, y\_train)

#Predicting output on the Test set 
y\_pred = clf.predict(X\_test)

#Finding the Accuracy 
print("Accuracy:",metrics.accuracy\_score(y\_test, y\_pred))

В этом случае мы используем линейное ядро, как вы можете увидеть. В зависимости от проблемы, вы можете использовать различные типы функций ядра:

  • Линейный
  • Полиномиал
  • Радиальная основа Функции
  • Гауссов
  • Несущественный

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

Вы можете получить доступ к полному коду здесь Отказ

Если вам скучно, вот милый кот!

Параметры настройки

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

Регуляризация : Вы когда-нибудь слышали о термине переоценке? Если у вас нет, я думаю, вы должны узнать некоторые основы здесь Отказ В SVM, чтобы избежать преодоления, мы выбираем мягкую маржу, а не затруднительную точку зрения, мы позволяем некоторым точкам данных вступить в нашу маржу намеренно (но мы все еще наказываем его), чтобы наш классификатор не преодолел на нашем учебном образце. Здесь наступает важный параметр гамма (γ), который контролирует перенапряжение в SVM. Чем выше гамма, тем выше гиперплоскость пытается соответствовать учебным данным. Следовательно, выбирая оптимальную гамма, чтобы избежать переоценки, а также подразделение – это ключ.

Наказание на ошибке: Параметр C представляет наказание по ошибке для неправильной классификации для SVM. Он поддерживает компромисс между более гладкой гиперплоскостью и неправильными классификациями. Как упоминалось ранее, мы допускаем некоторые неправильные классификации для избежания перенапряжения нашего классификатора.

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

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

Это это для SVMS! Если у вас есть какие-либо вопросы, дайте мне знать в комментариях.

Поздравляю о добытии до конца поста!

Вот печенье для вас

Если вам понравилось этот пост, не забудьте Как Действительно

Первоначально опубликовано в Adityarogilla.com 2 ноября 2018 года.

Оригинал: “https://dev.to/adityarohilla94/a-brief-introduction-to-support-vector-machine-4ne8”