<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=212.237.8.84&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=212.237.8.84&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/212.237.8.84"/>
		<updated>2026-05-14T11:37:57Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2_(SVM)&amp;diff=70665</id>
		<title>Метод опорных векторов (SVM)</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2_(SVM)&amp;diff=70665"/>
				<updated>2019-04-01T08:06:12Z</updated>
		
		<summary type="html">&lt;p&gt;212.237.8.84: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{в разработке}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Метод опорных векторов''' (англ. ''support vector machine'', ''SVM'') — один из наиболее популярных методов обучения, который применяется для решения задач классификации и регрессии. Основная идея метода заключается в построении гиперплоскости, разделяющей объекты выборки наиболее оптимальным способом. Алгоритм работает в предположении, что чем больше расстояние (зазор) между разделяющей гиперплоскостью и объектами разделяемых классов, тем меньше будет средняя ошибка классификатора.&lt;br /&gt;
&lt;br /&gt;
== Метод опорных векторов в задаче классификации ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу бинарной классификации, в которой объектам из $X=\mathbb{R}^n$ соответствует один из двух классов $Y = \{-1, +1\}$.&lt;br /&gt;
&lt;br /&gt;
Пусть задана обучающая выборка пар &amp;quot;объект-ответ&amp;quot;: $T^\ell = (\vec{x}_i, y_i)_{i=1}^\ell$. Необходимо построить алгоритм классификации $a(\vec{x}) : X \to Y$.&lt;br /&gt;
&lt;br /&gt;
=== Разделяющая гиперплоскость ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:svm_hyperplane.png|300px|thumb|right|Примеры разделяющих гиперплоскостей в $\mathbb{R}^2$]]&lt;br /&gt;
&lt;br /&gt;
В пространстве $\mathbb{R}^n$ уравнение $\langle \vec{w}, \vec{x} \rangle - b = 0$ при заданных $\vec{w}$ и $b$ определяет гиперплоскость — множество векторов $\vec{x} = (x_1, \ldots, x_n)$, принадлежащих пространству меньшей размерности $\mathbb{R}^{n-1}$. Например, для $\mathbb{R}^1$ гиперплоскостью является точка, для $\mathbb{R}^2$ — прямая, для $\mathbb{R}^3$ — плоскость и т.д. Параметр $\vec{w}$ определяет вектор нормали к гиперплоскости, а через $\frac{b}{\lVert \vec{w} \rVert}$ выражается расстояние от гиперплоскости до начала координат.&lt;br /&gt;
&lt;br /&gt;
Гиперплоскость делит $\mathbb{R}^n$ на два полупространства: $\langle \vec{w}, \vec{x} \rangle - b &amp;gt; 0$ и $\langle \vec{w}, \vec{x} \rangle - b &amp;lt; 0$. &lt;br /&gt;
&lt;br /&gt;
Говорят, что гиперплоскость разделяет два класса $C_1$ и $C_2$, если объекты этих классов лежат по разные стороны от гиперплоскости, то есть выполнено либо&lt;br /&gt;
&lt;br /&gt;
$\begin{cases}\langle \vec{w}, \vec{x} \rangle - b &amp;gt; 0, &amp;amp;&amp;amp; \forall x \in C_1 \\ \langle \vec{w}, \vec{x} \rangle - b &amp;lt; 0, &amp;amp;&amp;amp; \forall x \in C_2\end{cases}$&lt;br /&gt;
&lt;br /&gt;
либо&lt;br /&gt;
&lt;br /&gt;
$\begin{cases}\langle \vec{w}, \vec{x} \rangle - b &amp;lt; 0, &amp;amp;&amp;amp; \forall x \in C_1 \\ \langle \vec{w}, \vec{x} \rangle - b &amp;gt; 0, &amp;amp;&amp;amp; \forall x \in C_2\end{cases}$&lt;br /&gt;
&lt;br /&gt;
=== Линейно разделимая выборка ===&lt;br /&gt;
&lt;br /&gt;
Пусть выборка линейно разделима, то есть существует некоторая гиперплоскость, разделяющая классы $-1$ и $+1$. Тогда в качестве алгоритма классификации можно использовать линейный пороговый классификатор:&lt;br /&gt;
&lt;br /&gt;
$a(\vec{x}) = sign(\langle \vec{w}, \vec{x} \rangle - b) = sign\left(\sum\limits_{i=1}^\ell w_i x_i - b\right)$&lt;br /&gt;
&lt;br /&gt;
где $\vec{x} = (x_1, \ldots, x_n)$ — вектор значений признаков объекта, а $\vec{w} = (w_1, \ldots, w_n) \in \mathbb{R}^n$ и $b \in \mathbb{R}$ — параметры гиперплоскости.&lt;br /&gt;
&lt;br /&gt;
Но для двух линейно разделимых классов возможны различные варианты построения разделяющих гиперплоскостей. Метод опорных векторов выбирает ту гиперплоскость, которая максимизирует отступ между классами:&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Отступ''' (англ. ''margin'') — характеристика, оценивающая, насколько объект &amp;quot;погружён&amp;quot; в свой класс, насколько типичным представителем класса он является. Чем меньше значение отступа $M_i$, тем ближе объект $\vec{x}_i$ подходит к границе классов и тем выше становится вероятность ошибки. Отступ $M_i$ отрицателен тогда и только тогда, когда алгоритм $a(x)$ допускает ошибку на объекте $\vec{x}_i$. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Для линейного классификатора отступ определяется уравнением: $M_i(\vec{w}, b) = y_i(\langle \vec{w}, \vec{x}_i \rangle - b)$&lt;br /&gt;
}}&lt;br /&gt;
Если выборка линейно разделима, то существует такая гиперплоскость, отступ от которой до каждого объекта положителен:&lt;br /&gt;
&lt;br /&gt;
$\exists \vec{w}, b : \; M_i(\vec{w}, b) = y_i(\langle \vec{w}, \vec{x}_i \rangle - b) &amp;gt; 0, \; i = 1\ldots\ell$&lt;br /&gt;
&lt;br /&gt;
Мы хотим построить такую разделяющую гиперплоскость, чтобы объекты обучающей выборки находились на наибольшем расстоянии от неё.&lt;br /&gt;
&lt;br /&gt;
Заметим, что при умножении $\vec{w}$ и $b$ на константу $c \neq 0$ уравнение $\langle c\vec{w}, \vec{x} \rangle - cb = 0$ определяет ту же самую гиперплоскость, что и $\langle \vec{w}, \vec{x} \rangle - b = 0$. Для удобства проведём нормировку: выберем константу $c$ таким образом, чтобы $\min\limits_i M_i(\vec{w}, b) = 1$. При этом в каждом из двух классов найдётся хотя бы один объект, отступ которого равен этому минимуму: иначе можно было бы сместить гиперплоскость в сторону класса с большим отступом.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SVM_margin.png|300px|thumb|right|Оптимальная разделяющая гиперплоскость в $\mathbb{R}^2$]]&lt;br /&gt;
Нормировка позволяет определить разделяющую полосу между классами, как множество точек, расстояние от которых до гиперплоскости меньше $1$: $\{x: -1 &amp;lt; \langle \vec{w}, \vec{x}_i \rangle - b &amp;lt; 1\}$. &lt;br /&gt;
&lt;br /&gt;
Ширину разделяющей полосы можно выразить как проекцию &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|id=kkt&lt;br /&gt;
|author=Условия Каруша—Куна—Таккера&lt;br /&gt;
|statement=&lt;br /&gt;
Пусть поставлена задача нелинейного программирования с ограничениями:&lt;br /&gt;
$$&lt;br /&gt;
\begin{cases}&lt;br /&gt;
f(x) \to \min\limits_{x \in X} \\&lt;br /&gt;
g_i(x) \leq 0,\;i=1\ldots m \\&lt;br /&gt;
h_j(x) = 0,\;j=1\ldots k&lt;br /&gt;
\end{cases}&lt;br /&gt;
$$&lt;br /&gt;
&lt;br /&gt;
Если $\hat{x} \in \arg\min f$ — решение задачи при наложенных ограничениях, то существуют множители $\mu_i, i = 1\ldots m$, $\lambda_j, j = 1\ldots k$, что для функции Лагранжа $L(x; \mu, \lambda)$ выполняются условия:&lt;br /&gt;
&lt;br /&gt;
$$\begin{cases}\frac{\partial L}{\partial x} = 0 \quad L(x; \mu, \lambda) = f(x) + \sum\limits_{i=1}^m \mu_i g_i(x) + \sum\limits_{j=1}^k \lambda_j h_j(x) \\ g_i(x) \leq 0,\;h_j(x) = 0 \quad \text{(исходные ограничения)} \\ \mu_i \geq 0 \quad \text{(двойственные ограничения)} \\ \mu_i g_i(x) = 0 \quad \text{(условие дополняющей нежёсткости)} \end{cases}$$&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В качестве аппроксимации функции потерь возьмём $L(x_i, y_i) = max(0, 1 - M_i(w, w_0))$&lt;br /&gt;
&lt;br /&gt;
Запишем функционал для метода оптимизации эмпирического риска с использованием данной функции потерь и регуляризации:&lt;br /&gt;
&lt;br /&gt;
$\sum\limits_{i=1}^\ell (1 - M_i(w, w_0))_+ + \frac{1}{2C} \lVert w \rVert^2 \to \min\limits_{w, w_0}$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Линейно неразделимая выборка ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Метод опорных векторов в задаче регрессии ==&lt;br /&gt;
// TODO&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Обзор библиотек для машинного обучения на Python]]&lt;br /&gt;
* [[Общие понятия]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2 machinelearning.ru {{---}} Машина опорных векторов]&lt;br /&gt;
* [https://www.youtube.com/watch?v=Adi67_94_gc&amp;amp;list=PLJOzdkh8T5kp99tGTEFjH_b9zqEQiiBtC&amp;amp;index=5 Лекция &amp;quot;Линейные методы классификации: метод опорных векторов&amp;quot;]  {{---}} К.В. Воронцов, курс &amp;quot;Машинное обучение&amp;quot; 2014&lt;br /&gt;
* [https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2 Wikipedia {{---}} Метод опорных векторов]&lt;br /&gt;
* Alexey Nefedov {{---}} [https://svmtutorial.online/ Support Vector Machines: A Simple Tutorial]&lt;br /&gt;
* John Platt {{---}} [https://www.microsoft.com/en-us/research/publication/sequential-minimal-optimization-a-fast-algorithm-for-training-support-vector-machines/ Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Классификация]]&lt;br /&gt;
[[Категория: Регрессия]]&lt;/div&gt;</summary>
		<author><name>212.237.8.84</name></author>	</entry>

	</feed>