Машины опорных векторов (SVM) — это мощный алгоритм контролируемого обучения, используемый для задач классификации и регрессии. Основная цель SVM — найти оптимальную гиперплоскость, которая лучше всего разделяет точки данных разных классов в многомерном пространстве. Классификация набора признаков в SVM глубоко связана с функцией решения, особенно с ее знаком, который играет важную роль в определении того, на какую сторону гиперплоскости попадает данная точка данных.
Функция принятия решения в SVM
Функция решения для SVM может быть выражена как:
где:
– — весовой вектор, определяющий ориентацию гиперплоскости.
– — вектор признаков классифицируемой точки данных.
– это член смещения, который сдвигает гиперплоскость.
Классификация точки данных используется знак решающей функции:
Этот знак определяет сторону гиперплоскости, на которой лежит точка данных.
Роль знака в классификации
Знак решающей функции () напрямую определяет метку класса, присвоенную точке данных
, Вот как это работает:
1. Положительный знак: Если , знак решающей функции положительный. Это означает, что точка данных
лежит на той стороне гиперплоскости, где расположен положительный класс. Поэтому,
классифицируется как принадлежащий к положительному классу (обычно обозначается как +1).
2. Отрицательный знак: Если , знак решающей функции отрицательный. Это указывает на то, что точка данных
лежит на той стороне гиперплоскости, где расположен отрицательный класс. Следовательно,
классифицируется как принадлежащий к отрицательному классу (обычно обозначается как -1).
3. 0: В том редком случае, когда , точка данных
лежит точно на гиперплоскости. Этот сценарий теоретически возможен, но практически редок из-за непрерывного характера реальных данных.
Геометрическая интерпретация
Геометрическая интерпретация функции принятия решения важна для понимания того, как SVM классифицирует точки данных. Гиперплоскость, определяемая действует как граница принятия решений между двумя классами. Ориентация и положение этой гиперплоскости определяются весовым вектором
и термин смещения
.
1. Маржа: Маржа — это расстояние между гиперплоскостью и ближайшими точками данных каждого класса. SVM стремится максимизировать этот запас, чтобы гарантировать, что гиперплоскость не только разделяет классы, но и делает это на максимально возможном расстоянии от ближайших точек данных. Эти ближайшие точки данных известны как опорные векторы.
2. Векторы поддержки: Опорные векторы — это точки данных, расположенные ближе всего к гиперплоскости. Они имеют решающее значение для определения положения и ориентации гиперплоскости. Любое изменение положения этих опорных векторов приведет к изменению гиперплоскости.
Пример
Рассмотрим простой пример, когда у нас есть двумерное пространство признаков с точками данных из двух классов. Обозначим положительный класс +1, а отрицательный класс -1. Предположим, что весовой вектор и термин смещения
.
Для точки данных , мы можем вычислить функцию решения следующим образом:
С , знак функции решения положительный, и, следовательно, точка данных
относится к положительному классу (+1).
Для другой точки данных , мы вычисляем функцию решения как:
Опять же, , поэтому знак положительный, и
относится к положительному классу (+1).
Теперь рассмотрим точку данных :
В этом случае, , поэтому знак отрицательный, и
классифицируется как принадлежащий к отрицательному классу (-1).
Математическая формулировка
Математическая формулировка SVM включает решение задачи оптимизации для поиска оптимального решения. и
которые максимизируют прибыль при правильной классификации обучающих данных. Задачу оптимизации можно выразить так:
в котором это метка класса точки данных
, а ограничение гарантирует, что все точки данных правильно классифицированы с запасом не менее 1.
Уловка ядра
Во многих практических приложениях данные не могут быть линейно разделены в исходном пространстве признаков. Чтобы решить эту проблему, SVM можно расширить до нелинейной классификации, используя трюк с ядром. Функция ядра неявно отображает данные в многомерное пространство, где возможно линейное разделение. Обычно используемые функции ядра включают полиномиальное ядро, ядро радиальной базисной функции (RBF) и сигмовидное ядро.
Функция принятия решения в ядерной SVM становится:
в котором – множители Лагранжа, полученные из двойственной формы задачи оптимизации.
Реализация Python
В Python библиотека scikit-learn обеспечивает простую реализацию SVM через класс SVC. Ниже приведен пример использования SVC для классификации набора данных:
python from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # Load the dataset iris = datasets.load_iris() X = iris.data y = iris.target # Select only two classes for binary classification X = X[y != 2] y = y[y != 2] # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Create an SVM classifier with a linear kernel clf = SVC(kernel='linear') # Train the classifier clf.fit(X_train, y_train) # Predict the class labels for the test set y_pred = clf.predict(X_test) # Calculate the accuracy of the classifier accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy * 100:.2f}%')
В этом примере класс SVC используется для создания классификатора SVM с линейным ядром. Классификатор обучается на обучающем наборе, а точность оценивается на тестовом наборе. Классификация набора признаков в SVM принципиально зависит от знака решающей функции. . Знак определяет, на какой стороне гиперплоскости лежит точка данных, тем самым относя ее к соответствующему классу. Функция принятия решения, процесс оптимизации для поиска оптимальной гиперплоскости и потенциальное использование функций ядра для обработки нелинейной разделимости — все это важные компоненты SVM. Понимание этих аспектов дает комплексное представление о том, как работают SVM и их применение в различных задачах машинного обучения.
Другие недавние вопросы и ответы, касающиеся Машинное обучение EITC/AI/MLP с Python:
- Как рассчитывается параметр b в линейной регрессии (точка пересечения оси Y линии наилучшего соответствия)?
- Какую роль играют векторы поддержки в определении границ решения SVM и как они идентифицируются в процессе обучения?
- Каково значение вектора весов w и смещения b в контексте оптимизации SVM и как они определяются?
- Какова цель метода визуализации в реализации SVM и как он помогает понять производительность модели?
- Как метод прогнозирования в реализации SVM определяет классификацию новой точки данных?
- Какова основная цель машины опорных векторов (SVM) в контексте машинного обучения?
- Как можно использовать такие библиотеки, как scikit-learn, для реализации классификации SVM в Python и какие ключевые функции при этом используются?
- Объясните значение ограничения (y_i (mathbf{x}_i cdot mathbf{w} + b) geq 1) в оптимизации SVM.
- Какова цель задачи оптимизации SVM и как она формулируется математически?
- Какова роль уравнения гиперплоскости (mathbf{x} cdot mathbf{w} + b = 0) в контексте машин опорных векторов (SVM)?
Просмотрите дополнительные вопросы и ответы в разделе Машинное обучение EITC/AI/MLP с помощью Python