Підтримка векторних машин - це проблема оптимізації. Вони намагаються знайти гіперплан, який розділяє два класи з найбільшим запасом. Вектори підтримки - це точки, які потрапляють у цей відступ. Найпростіше зрозуміти, якщо ви будуєте його від простого до більш складного.
Лінійний SVM із жорстким полем
У навчальному наборі, де дані можна лінійно розділяти, і ви використовуєте жорстке поле (не допускається провисання), опорними векторами є точки, які лежать уздовж опорних гіперплощин (гіперплощин, паралельних розділювальній гіперплощині по краях поля )
Всі вектори підтримки лежать точно на краю. Незалежно від кількості розмірів або розміру набору даних, кількість векторів підтримки може бути лише 2.
Soft-Margin Linear SVM
Але що, якщо наш набір даних не можна лінійно розділяти? Ми вводимо SVM з м'якою маржею Ми більше не вимагаємо, щоб наші точки даних знаходились за межами поля, ми дозволяємо деякій кількості з них збиватися через лінію в поле. Ми використовуємо параметр провину C, щоб керувати цим. (nu в nu-SVM) Це дає нам ширший запас і більшу помилку в навчальному наборі даних, але покращує узагальнення та / або дозволяє знайти лінійний поділ даних, який не можна лінійно розділяти.
Тепер кількість векторів підтримки залежить від того, скільки ми дозволяємо слабкості та розподілу даних. Якщо ми допустимо велику кількість слабини, ми матимемо велику кількість опорних векторів. Якщо ми дозволимо дуже мало слабкості, у нас буде дуже мало векторів підтримки. Точність залежить від пошуку правильного рівня слабкості для даних, що аналізуються. За деякими даними неможливо отримати високий рівень точності, ми просто повинні знайти найкраще, що ми можемо.
Нелінійний SVM
Це підводить нас до нелінійного SVM. Ми все ще намагаємось лінійно розділити дані, але зараз намагаємось зробити це у просторі вищих розмірів. Це робиться за допомогою функції ядра, яка, звичайно, має власний набір параметрів. Коли ми переводимо це назад у вихідний простір об’єктів, результат нелінійний:
Тепер кількість векторів підтримки все ще залежить від того, скільки ми дозволяємо слабкості, але це також залежить від складності нашої моделі. Кожен поворот у фінальній моделі у нашому вхідному просторі вимагає визначення одного або декількох векторів підтримки. Зрештою, вихід SVM - це опорні вектори та альфа, що, по суті, визначає, наскільки великий вплив цей конкретний вектор підтримки має на остаточне рішення.
Тут точність залежить від компромісу між моделлю високої складності, яка може перекрити дані, та великим запасом, який буде неправильно класифікувати деякі дані навчання з метою кращого узагальнення. Кількість векторів підтримки може коливатися від дуже мало до кожної окремої точки даних, якщо ви повністю переставляєте свої дані. Цей компроміс контролюється за допомогою C та за допомогою вибору ядра та параметрів ядра.
Я припускаю, коли ви говорили про продуктивність, ви мали на увазі точність, але я думав, що також буду говорити про продуктивність з точки зору складності обчислень. Для того, щоб перевірити точку даних за допомогою моделі SVM, вам потрібно обчислити точковий добуток кожного опорного вектора з тестовою точкою. Тому обчислювальна складність моделі є лінійною за кількістю опорних векторів. Менше векторів підтримки означає швидшу класифікацію тестових балів.
Хороший ресурс:
Підручник з машин векторної підтримки для розпізнавання зразків