Підтримка векторної машини (SVM) у машинному навчанні

Support Vector Machine є одним з найпопулярніших алгоритмів машинного навчання. Він ефективний і може навчатися на обмежених наборах даних. Але що це?

Що таке опорна векторна машина (SVM)?

Машина опорних векторів – це алгоритм машинного навчання, який використовує контрольоване навчання для створення моделі двійкової класифікації. Це ковток. У цій статті пояснюється SVM і його зв’язок із обробкою природної мови. Але спочатку давайте проаналізуємо, як працює машина опорних векторів.

Як працює SVM?

Розглянемо просту задачу класифікації, де ми маємо дані, які мають дві ознаки, x і y, і один вихід – класифікацію, яка є або червоною, або синьою. Ми можемо побудувати уявний набір даних, який виглядає так:

З огляду на такі дані завдання полягатиме у створенні межі рішення. Межа рішення – це лінія, яка розділяє два класи наших точок даних. Це той самий набір даних, але з межею рішення:

За допомогою цієї межі прийняття рішення ми можемо робити прогнози, до якого класу належить точка даних, враховуючи, де вона лежить відносно межі прийняття рішення. Алгоритм опорних векторів створює найкращу межу рішення, яка буде використовуватися для класифікації точок.

Але що ми маємо на увазі під найкращим рішенням?

Можна стверджувати, що найкраща межа рішення – це та, яка максимізує свою відстань від будь-якого з опорних векторів. Опорні вектори — це точки даних будь-якого класу, найближчого до протилежного класу. Ці точки даних створюють найбільший ризик неправильної класифікації через їх близькість до іншого класу.

Навчання машини опорних векторів, таким чином, передбачає спроби знайти лінію, яка максимізує запас між опорними векторами.

Також важливо відзначити, що оскільки межа рішення розташована відносно опорних векторів, вони є єдиними детермінантами положення межі рішення. Таким чином, інші точки даних є зайвими. Таким чином, навчання потребує лише опорних векторів.

У цьому прикладі сформована межа рішення є прямою лінією. Це лише тому, що набір даних має лише дві функції. Коли набір даних має три функції, утворена межа рішення є площиною, а не лінією. А коли вона має чотири або більше ознак, межа рішення відома як гіперплощина.

Нелінійно розділені дані

У наведеному вище прикладі розглядалися дуже прості дані, які при нанесенні на графік можуть бути розділені лінійною межею рішення. Розглянемо інший випадок, коли дані відображаються таким чином:

У цьому випадку розділення даних за допомогою лінії неможливо. Але ми можемо створити іншу функцію, z. І ця функція може бути визначена рівнянням: z = x^2 + y^2. Ми можемо додати z як третю вісь до площини, щоб зробити її тривимірною.

  Як увімкнути захищену папку на телефонах Samsung

Коли ми дивимося на 3D-графіку під таким кутом, що вісь x горизонтальна, а вісь z вертикальна, ми отримуємо такий вигляд:

Значення z вказує на відстань точки від початку координат відносно інших точок на старій площині XY. Як наслідок, сині точки ближче до початку координат мають низькі z-значення.

У той час як червоні точки, розташовані далі від початку координат, мали вищі z-значення, побудова графіка їхнього z-значення дає нам чітку класифікацію, яку можна розмежувати лінійною межею прийняття рішення, як показано на малюнку.

Це потужна ідея, яка використовується в машинах опорних векторів. Загалом, це ідея відображення розмірів у більшу кількість вимірів, щоб точки даних могли бути розділені лінійною межею. Функції, які відповідають за це, є функціями ядра. Існує багато функцій ядра, наприклад сигмоїдна, лінійна, нелінійна та RBF.

Щоб зробити відображення цих функцій ефективнішим, SVM використовує трюк ядра.

SVM у машинному навчанні

Support Vector Machine — це один із багатьох алгоритмів, які використовуються в машинному навчанні поряд із такими популярними, як «дерева рішень» і нейронні мережі. Його вважають за краще, оскільки він добре працює з меншою кількістю даних, ніж інші алгоритми. Його зазвичай використовують для виконання наступних дій:

  • Класифікація тексту: класифікація текстових даних, таких як коментарі та відгуки, за однією або кількома категоріями
  • Розпізнавання облич: аналіз зображень для виявлення облич, наприклад додавання фільтрів для доповненої реальності.
  • Класифікація зображень: машини підтримки векторів можуть ефективно класифікувати зображення порівняно з іншими підходами.

Проблема класифікації тексту

Інтернет наповнений великою кількістю текстових даних. Однак велика частина цих даних є неструктурованою та немаркованою. Щоб краще використовувати ці текстові дані та краще їх розуміти, існує потреба в класифікації. Приклади випадків, коли текст класифікується, включають:

  • Коли твіти класифікуються за темами, щоб люди могли стежити за темами, які їм потрібні
  • Коли електронний лист класифікується як соціальні мережі, акції або спам
  • Коли коментарі на публічних форумах класифікуються як такі, що пропагують ненависть або є непристойними

Як SVM працює з класифікацією природної мови

Support Vector Machine використовується для класифікації тексту на текст, який належить до певної теми, і текст, який не належить до теми. Це досягається шляхом спочатку перетворення та представлення текстових даних у набір даних із кількома функціями.

Один із способів зробити це — створити функції для кожного слова в наборі даних. Потім для кожної точки текстових даних ви записуєте кількість повторень кожного слова. Отже, припустимо, що в наборі даних зустрічаються унікальні слова; ви матимете функції в наборі даних.

  Як налаштувати сайти WordPress із швидким завантаженням на DigitalOcean?

Крім того, ви надасте класифікації для цих точок даних. Хоча ці класифікації позначаються текстом, більшість реалізацій SVM очікують числових міток.

Тому перед навчанням вам доведеться перетворити ці мітки на числа. Коли набір даних буде підготовлено, використовуючи ці функції як координати, ви зможете використовувати модель SVM для класифікації тексту.

Створення SVM на Python

Щоб створити опорну векторну машину (SVM) у Python, ви можете використовувати клас SVC із бібліотеки sklearn.svm. Ось приклад того, як ви можете використовувати клас SVC для створення моделі SVM у Python:

from sklearn.svm import SVC 

# Load the dataset 
X = ... y = ... 

# Split the data into training and test sets 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=19) 

# Create an SVM model 
model = SVC(kernel="linear") 

# Train the model on the training data 
model.fit(X_train, y_train) 

# Evaluate the model on the test data 
accuracy = model.score(X_test, y_test) 

print("Accuracy: ", accuracy) 

У цьому прикладі ми спочатку імпортуємо клас SVC із бібліотеки sklearn.svm. Потім ми завантажуємо набір даних і розділяємо його на навчальний і тестовий набори.

Далі ми створюємо модель SVM, створюючи екземпляр об’єкта SVC і вказуючи параметр ядра як «лінійний». Потім ми навчаємо модель на навчальних даних за допомогою методу відповідності та оцінюємо модель на тестових даних за допомогою методу балів. Метод score повертає точність моделі, яку ми друкуємо на консолі.

Ви також можете вказати інші параметри для об’єкта SVC, наприклад параметр C, який контролює силу регулярізації, і параметр гамма, який керує коефіцієнтом ядра для певних ядер.

Переваги SVM

Ось перелік деяких переваг використання опорних векторних машин (SVM):

  • Ефективність: SVM, як правило, ефективні для навчання, особливо коли кількість зразків велика.
  • Стійкість до шуму: SVM відносно стійкі до шуму в навчальних даних, оскільки вони намагаються знайти класифікатор максимального запасу, який менш чутливий до шуму, ніж інші класифікатори.
  • Ефективність пам’яті: SVM потребують лише підмножини навчальних даних, щоб бути в пам’яті в будь-який момент часу, що робить їх більш ефективними для пам’яті, ніж інші алгоритми.
  • Ефективність у просторах великої розмірності: SVM все ще можуть добре працювати, навіть якщо кількість функцій перевищує кількість зразків.
  • Універсальність: SVM можна використовувати для завдань класифікації та регресії та можуть обробляти різні типи даних, включаючи лінійні та нелінійні дані.

Тепер давайте розглянемо деякі з найкращих ресурсів для вивчення Support Vector Machine (SVM).

Навчальні ресурси

Вступ до опорних векторних машин

У цій книзі про «Вступ до опорних векторних машин» вичерпно та поступово знайомитесь із методами навчання на основі ядра.

  Виправте помилку Netflix. Цей заголовок недоступний для перегляду

Це дає вам міцну основу на основі теорії опорних векторних машин.

Додатки підтримки векторних машин

У той час як перша книга була зосереджена на теорії опорних векторних машин, ця книга про застосування опорних векторних машин зосереджена на їх практичному застосуванні.

У ньому розглядається, як SVM використовуються в обробці зображень, виявленні шаблонів і комп’ютерному зорі.

Машини опорних векторів (інформатика та статистика)

Метою цієї книги про машини опорних векторів (інформатика та статистика) є надання огляду принципів ефективності машин опорних векторів (SVM) у різних програмах.

Автори виділяють кілька факторів, які сприяють успіху SVM, включаючи їх здатність добре працювати з обмеженою кількістю настроюваних параметрів, їх стійкість до різних типів помилок і аномалій, а також їх ефективну обчислювальну продуктивність порівняно з іншими методами.

Навчання з ядрами

«Навчання з ядрами» — це книга, яка знайомить читачів із підтримкою векторних машин (SVM) і пов’язаних методів ядра.

Його створено, щоб дати читачам базове розуміння математики та знання, необхідні для того, щоб почати використовувати алгоритми ядра в машинному навчанні. Метою книги є детальний, але доступний вступ до SVM і методів ядра.

Підтримка векторних машин із Sci-kit Learn

Цей онлайн-курс Support Vector Machines with Sci-kit Learn від мережі проекту Coursera навчає, як реалізувати модель SVM за допомогою популярної бібліотеки машинного навчання Sci-Kit Learn.

Крім того, ви дізнаєтеся про теорію, що лежить в основі SVM, і визначите їх сильні сторони та обмеження. Курс початкового рівня займає близько 2,5 годин.

Підтримка векторних машин у Python: поняття та код

Цей платний онлайн-курс із підтримки векторних машин у Python від Udemy містить до 6 годин відеоінструкцій і має сертифікат.

Він охоплює SVM і те, як їх надійно реалізувати на Python. Крім того, він охоплює бізнес-додатки Support Vector Machines.

Машинне навчання та штучний інтелект: підтримка векторних машин у Python

У цьому курсі з машинного навчання та штучного інтелекту ви дізнаєтесь, як використовувати опорні векторні машини (SVM) для різних практичних застосувань, зокрема розпізнавання зображень, виявлення спаму, медичної діагностики та регресійного аналізу.

Ви будете використовувати мову програмування Python для реалізації моделей ML для цих програм.

Заключні слова

У цій статті ми коротко ознайомилися з теорією опорних векторних машин. Ми дізналися про їх застосування в машинному навчанні та обробці природної мови.

Ми також побачили, як виглядає його реалізація за допомогою scikit-learn. Крім того, ми говорили про практичне застосування та переваги Support Vector Machines.

Незважаючи на те, що ця стаття була лише вступом, додаткові ресурси рекомендували детальніше розповісти про Support Vector Machines. Зважаючи на те, наскільки вони універсальні та ефективні, SVM варто розуміти, щоб розвиватися як науковець з даних та інженер ML.

Далі ви можете перевірити найкращі моделі машинного навчання.