Введение
В этом руководстве мы узнаем о методах опорных векторов (Support Vector Machines, SVM), которые представляют собой набор методов обучения с учителем, используемых для классификации, регрессии и обнаружения выбросов. SVM эффективны в высокомерных пространствах и могут по-прежнему хорошо работать, когда количество размерностей превышает количество выборок.
Преимущества SVM включают их эффективность в высокомерных пространствах, эффективность использования памяти и гибкость в использовании различных функций ядра. Однако важно избегать переобучения и выбирать правильное ядро и регуляризационный термин для данной задачи.
В этом руководстве мы рассмотрим следующие темы:
- Классификация с использованием SVM
- Мультиклассовая классификация
- Оценки и вероятности
- Неравномерные задачи
- Регрессия с использованием SVM
- Экстремальная оценка плотности и обнаружение новизны
Советы по работе с ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике в Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Классификация с использованием SVM
- Начните с импорта необходимых библиотек:
from sklearn import svm
- Определите обучающие выборки
Xи метки классовy:
X = [[0, 0], [1, 1]]
y = [0, 1]
- Создайте экземпляр классификатора
SVCи подстройте модель под данные:
clf = svm.SVC()
clf.fit(X, y)
- Используйте обученную модель для предсказания новых значений:
clf.predict([[2., 2.]])
Мультиклассовая классификация
- Классификаторы
SVCиNuSVCможно использовать для мультиклассовой классификации с использованием подхода "один против остальных" ("one-versus-one"):
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
Оценки и вероятности
- Методы SVM не предоставляют напрямую оценки вероятностей, но вы можете включить оценку вероятностей, установив параметр
probabilityв значениеTrue:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- Затем вы можете использовать метод
predict_proba, чтобы получить вероятности для каждого класса:
clf.predict_proba([[2., 2.]])
- Обратите внимание, что оценка вероятностей требует значительных вычислительных ресурсов и требует проведения кросс-валидации, поэтому используйте ее с осторожностью.
Неравномерные задачи
- Методы SVM могут обрабатывать неравномерные задачи путем настройки параметра
class_weight:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
Регрессия с использованием SVM
- Для задач регрессии методы SVM можно использовать с классом
SVR:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
Экстремальные значения и обнаружение аномалий
- Методы SVM также можно использовать для оценки плотности и обнаружения аномалий с использованием класса
OneClassSVM:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
Обзор
В этом руководстве мы изучили методы опорных векторов (SVM) и их применение в классификации, регрессии, оценке плотности и обнаружении аномалий. Мы рассмотрели шаги классификации, многоклассовой классификации, оценок и вероятностей, неравномерных задач, регрессии и оценки плотности. Методы SVM - мощные инструменты машинного обучения и могут быть использованы в различных сценариях для получения точных прогнозов.