ВВЕДЕНИЕ: –
Машины опорных векторов (svm) — это популярные классы алгоритмов, используемых в машинном обучении для задач классификации и регрессии. Алгоритм SVM пытается найти наилучшую гиперплоскость, которая разделяет точки данных разных классов в пространстве признаков. SVM — это мощный алгоритм, который хорошо работает как с линейно разделимыми, так и с нелинейно разделимыми данными.
РАБОТА АЛГОРИТМА SVM:-
Алгоритм SVM работает, находя оптимальную гиперплоскость, которая отделяет точки данных разных классов с максимальным запасом от обоих классов.
что такое маржа? :- Поле — это расстояние между гиперплоскостью и ближайшей точкой данных каждого класса.
Оптимальная гиперплоскость — это та, которая максимизирует запас и обеспечивает максимально точную классификацию.
НО ЧТО, ЕСЛИ ДАННЫЕ НЕ ЛИНЕЙНО РАЗДЕЛИМЫ
В случае нелинейно разделимых данных SVM использует технику, называемую трюком ядра, для преобразования пространства признаков в многомерное пространство, где данные становятся разделимыми. Функция ядра вычисляет сходство между двумя точками данных в многомерном пространстве без фактического преобразования самих точек данных.
Некоторые популярные функции ядра:
линейное ядро: линейное ядро просто вычисляет внутренний продукт между двумя входными векторами в исходном пространстве признаков.
полиномиальное ядро: полиномиальное ядро отображает входные данные в многомерное пространство признаков, используя полиномиальную функцию.
ядро gaussion: ядро gaussion отображает входные данные в бесконечномерное пространство признаков, используя функцию gaussion.
Алгоритм SVM можно использовать как для бинарной классификации, так и для задач мультиклассовой классификации. В случае многоклассовой классификации SVM использует метод, называемый «один против одного» или «один против всех», для классификации точек данных.
РЕАЛИЗАЦИЯ:-
Алгоритм SVM прост в реализации, и многие библиотеки машинного обучения предоставляют реализацию алгоритма. Вот реализация алгоритма SVM на Python с использованием библиотеки scikit-learn:
from sklearn import svm from sklearn.datasets import make_classification form sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score #Generate a random classification dataset with two features and two classes X,y =make_classification(n_samples=100,n_features=2,n_classes=2,random_state=1) #split the dataset into training and testing sets X_train,X_test,y_train,t_test=train_test_split(X,y,test_size=0.3,random_state=1) #Create an SVM classifier with a linear kernel clf=svm.SVM(kernel='linear') #train the classifier on the training data clf.fit(X_train,y_train) #predict the classes of the testing data y_pred=clf.predict(X_test) #calculate the accuracy of the classifier accuracy=accuracy_score(y_test,y_pred)
Вывод:-
Алгоритм SVM — очень мощный алгоритм, используемый в машинном обучении для задач классификации. он хорошо работает как с линейно разделимыми, так и с нелинейно разделимыми данными.