Support vector machines

Метод опорных векторов (SVM - support vector machines) - это набор алгоритмов "обучения с учителем", которые достаточно эффективно используются в задачах классификации. В их основе лежат работы В.Н.Вапника и А.Я.Червоненкиса. Этот метод принадлежит к семейству линейных классификаторов.
Различные инструменты для классификации данных можно найти на веб-сайте Science Hunter.
Для иллюстрации мощности метода опорных векторов, приведу фрагмент из книги Педро Домингоса "Верховный алгоритм."
"Метод опорных векторов был детищем советского специалиста по частотному подходу Владимира Вапника. Вапник большую часть своей карьеры работал в московском Институте проблем управления, но в 1990 году Советский Союз рухнул, и ученый уехал в  США, где устроился на работу в легендарную Bell Labs.
В поисках применения своему алгоритму Вапник и его сотрудники вскоре вышли на распознавание написанных от руки цифр, в котором их коллеги-коннекционисты в Bell Labs были мировыми экспертами. Ко всеобщему удивлению, метод опорных векторов с ходу справился не хуже многослойного перцептрона, который тщательно, годами оттачивали для распознавания цифр. Это подготовило почву для долгой интенсивной конкуренции между методами. Метод опорных векторов можно рассматривать как обобщение перцептрона, использование специфической меры сходства (скалярного произведения векторов) даст гиперплоскостную границу между классами. Но у метода опорных векторов имеется большое преимущество по сравнению с многослойными перцептронами: у весов есть единичный оптимум, а не много локальных, и поэтому их намного легче надежно найти.
Несмотря на это, опорные векторы не менее выразительны, чем многослойные перцептроны: опорные векторы фактически действуют как скрытый слой, а их взвешенное среднее — как выходной слой. Например, метод опорных векторов может легко представлять функцию исключающего ИЛИ, имея один опорный вектор для каждой из четырех возможных конфигураций. Но и коннекционисты не сдавались без боя. В 1995 году Ларри Джекел, глава отдела Bell Labs, в котором работал Вапник, поспорил с ним на хороший обед, что к 2000 году нейронные сети будут так же понятны, как метод опорных векторов. Он проиграл. В ответ Вапник поспорил, что к 2005 году никто не будет пользоваться нейронными сетями. И тоже проиграл. (Единственным, кто бесплатно пообедал, был Янн Лекун, их свидетель.) Более того, с появлением глубокого обучения коннекционисты снова взяли верх. При условии обучаемости, сети со многими слоями могут выражать многие функции компактнее, чем метод опорных векторов, у которого всегда только один слой, а это иногда имеет решающее значение.
Другим заметным ранним успехом метода опорных векторов была классификация текстов, которая оказалась большим благом для зарождающегося интернета. В то время самым современным классификатором был наивный байесовский алгоритм, но, когда каждое слово в языке — это измерение, даже он мог начать переобучаться. Для этого достаточно слова, которое по случайности в тренировочных данных встречается на всех спортивных страницах и ни на каких других: в этом случае у наивного Байеса появятся галлюцинации, что любая страница, содержащая это слово, посвящена спорту. А метод опорных векторов благодаря максимизации зазора может сопротивляться переобучению даже при очень большом числе измерений.
В целом чем больше опорных векторов выбирает метод, тем лучше он обобщает. Любой обучающий пример, который не представляет собой опорный вектор, будет правильно классифицирован, если появит­ся в тестовой выборке, потому что граница между положительными и отрицательными примерами по-прежнему будет на том же месте. Поэтому ожидаемая частота ошибок метода опорных векторов, как правило, равна доле примеров, являющихся опорными векторами. По мере роста числа измерений эта доля тоже будет расти, поэтому метод не застрахован от проклятия размерности, но он более устойчив к нему, чем большинство алгоритмов.
Кроме практических успехов, метод опорных векторов перевернул с ног на голову много воззрений, которые олицетворяли здравый смысл в машинном обучении. Например, опроверг утверждение, которое иногда путают с бритвой Оккама, что более простые модели точнее. Метод может иметь бесконечное число параметров и все равно не переобучаться при условии, что у него достаточно большой зазор.
Самое неожиданное свойство метода опорных векторов заключается в следующем: какие бы изогнутые границы он ни проводил, эти границы всегда будут прямыми линиями (или гиперплоскостями). В этом нет противоречия. Причина заключается в том, что прямые линии будут находиться в другом пространстве. Допустим, примеры живут на плоскости \((x, y)\), а граница между положительными и отрицательными областями — это парабола \(y = x^2\). Ее невозможно представить в виде прямой линии, но, если мы добавим третью координату \(z\) (данные окажутся в пространстве \((x, y, z))\) и  установим координату \(z\) каждого примера равной квадрату его координаты \(x\), граница будет просто диагональной плоскостью, определенной \(y = z\).
В результате точки данных поднимутся в третье измерение, некоторые больше, чем другие, но ровно настолько, насколько нужно, и — вуаля! — в этом новом измерении положительные и отрицательные примеры можно будет разделить плоскостью. То, что метод делает с ядрами, опорными векторами и весами, можно рассматривать как картирование данных в более высокоразмерное пространство и нахождение в этом пространстве гиперплоскости с максимальным зазором. Для некоторых ядер полученное поле имеет бесконечное число измерений, но для метода опорных векторов это совершенно не важно. Может быть, гиперпространство — это и сумеречная зона, но метод опорных векторов знает, как находить в ней путь."

Пример линейно разделимых множеств

Даны два множества \[ \mathcal{A}=\left\{ \left( \begin{array}{r} 3 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 3 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} 6 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 6 \\ -1 \\ \end{array} \right) \right\} \hbox{ и } \mathcal{B}=\left\{ \left( \begin{array}{r} 1 \\ 0 \\ \end{array} \right), \left( \begin{array}{r} 0 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 0 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ 0 \\ \end{array} \right) \right\} \]


Линейно разделимые множества \(\mathcal{A}\) и \(\mathcal{B}\).

Нетрудно видеть, что для данного случая существуют три опорных вектора \[ \mathcal{S}=\left\{ \left( \begin{array}{r} 1 \\ 0 \\ \end{array} \right), \left( \begin{array}{r} 3 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 3 \\ -1 \\ \end{array} \right) \right\}. \] Расширим размерность пространства \[ \tilde{\mathcal{S}}= \left\{ \left( \begin{array}{r} 1 \\ 0 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 3 \\ 1 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 3 \\ -1 \\ 1 \\ \end{array} \right) \right\}. \]


Опорные вектора линейно разделимых множеств \(\mathcal{A}\) и \(\mathcal{B}\).

Выпишем прямую и двойственную задачи метода опорных векторов.
Прямая задачаДвойственная задача
\[ \min_{w,b}\frac{1}{2}w^Tw+C\sum_i\xi_i, \] \[ u_i\left(w^T\varphi(x)_i+b\right)\ge 1-\xi_i, \xi_i\ge 0. \] \[ \min_{\alpha}\frac{1}{2}\alpha^TQ\alpha-\sum_i\alpha_i, \] \[ Q_{i,j}=u_iu_j\varphi(x_i)^T\varphi(x_j) \] \[ \sum_i\alpha_iu_i=0, 0\le \alpha_i\le C. \]
и \(w=\sum_i\alpha_iu_i\varphi(x_i)\).
Тогда получаем задачу \[ \left\{ \begin{array}{ll} \alpha_1\varphi(s_1)\cdot \varphi(s_1)+ \alpha_2\varphi(s_2)\cdot \varphi(s_1)+\alpha_3\varphi(s_3)\cdot \varphi(s_1)=-1,\\ \alpha_1\varphi(s_1)\cdot \varphi(s_2)+ \alpha_2\varphi(s_2)\cdot \varphi(s_2)+\alpha_3\varphi(s_3)\cdot \varphi(s_2)=+1,\\ \alpha_1\varphi(s_1)\cdot \varphi(s_3)+ \alpha_2\varphi(s_2)\cdot \varphi(s_3)+\alpha_3\varphi(s_3)\cdot \varphi(s_3)=+1.\\ \end{array} \right. \] Полагая, что \(\varphi()\) тождественный оператор, наша задача сводится к системе \[ \left\{ \begin{array}{ll} \alpha_1\tilde{s}_1\cdot \tilde{s}_1+ \alpha_2\tilde{s}_2\cdot \tilde{s}_1+\alpha_3\tilde{s}_3\cdot \tilde{s}_1=-1,\\ \alpha_1\tilde{s}_1\cdot \tilde{s}_2+ \alpha_2\tilde{s}_2\cdot \tilde{s}_2+\alpha_3\tilde{s}_3\cdot \tilde{s}_2=+1,\\ \alpha_1\tilde{s}_1\cdot \tilde{s}_3+ \alpha_2\tilde{s}_2\cdot \tilde{s}_3+\alpha_3\tilde{s}_3\cdot \tilde{s}_3=+1.\\ \end{array} \right. \] отсюда \[ \left\{ \begin{array}{ll} 2\alpha_1+ 4\alpha_2+4\alpha_3=-1,\\ 4\alpha_1+ 11\alpha_2+9\alpha_3=+1,\\ 4\alpha_1+ 9\alpha_2+11\alpha_3=+1.\\ \end{array} \right. \] Используя знания по линейной алгебре за первый курс, найдем решение этой системы и получаем \[ \alpha_1=-3.5, \alpha_1=0.75, \alpha_1=0.75. \] Тогда линейная дискриминантная функция будет равна \[ \tilde{w}=\sum_i\alpha_i\tilde{s_i}= -3.5\left( \begin{array}{r} 1 \\ 0 \\ 1 \\ \end{array} \right)+ 0.75\left( \begin{array}{r} 3 \\ 1 \\ 1 \\ \end{array} \right)+ 0.75\left( \begin{array}{r} 3 \\ -1 \\ 1 \\ \end{array} \right)= \left( \begin{array}{r} 1 \\ 0 \\ -2 \\ \end{array} \right) \] Таким образом, получаем разделяющую гиперплоскость \(y=wx+b\), где \(w=(0 \hbox{ }1)^T\) и \(b=-2\).


Построение разделяющей гиперплоскости.

Пример нелинейно разделимых множеств

Даны два множества \[ \mathcal{A}=\left\{ \left( \begin{array}{r} 2 \\ 2 \\ \end{array} \right), \left( \begin{array}{r} 2 \\ -2 \\ \end{array} \right), \left( \begin{array}{r} -2 \\ -2 \\ \end{array} \right), \left( \begin{array}{r} -2 \\ 2 \\ \end{array} \right) \right\} \hbox{ и } \mathcal{B}=\left\{ \left( \begin{array}{r} 1 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ 1 \\ \end{array} \right) \right\} \]


Нелинейно разделимые множества \(\mathcal{A}\) и \(\mathcal{B}\).

Целью линейного классификатора является построение, для имеющихся классов, разделительной гиперплоскости. Однако, очевидно, что для данного случая такой гиперплоскости не существует, поэтому можно использовать нелинейный метод опорных векторов, для чего получить функцию \(\varphi\), которая является нелинейным отображением исходного пространства в какое-либо пространство признаков, позволяющего реализовать линейный классификатор.
Положим \[ \varphi \left( \begin{array}{r} x_1 \\ x_2 \\ \end{array} \right)= \left\{ \begin{array}{lll} \left( \begin{array}{r} 4-x_2+|x_1-x_2| \\ 4-x_1+|x_1-x_2| \\ \end{array} \right), & \hbox{ если }&\sqrt{x_1^2+x_2^2}\gt 2, \\ \left( \begin{array}{r} x_1 \\ x_2 \\ \end{array} \right) & \hbox{ иначе.} \end{array} \right. \] Применение этого преобразования к исходным данным приводит к множествам \[ \tilde{\mathcal{A}}=\left\{ \left( \begin{array}{r} 2 \\ 2 \\ \end{array} \right), \left( \begin{array}{r} 6 \\ 10 \\ \end{array} \right), \left( \begin{array}{r} 6 \\ 6 \\ \end{array} \right), \left( \begin{array}{r} 10 \\ 6 \\ \end{array} \right) \right\} \hbox{ и } \tilde{\mathcal{B}}=\left\{ \left( \begin{array}{r} 1 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ 1 \\ \end{array} \right) \right\} \]


Множеств \(\tilde{\mathcal{A}}\) и \(\tilde{\mathcal{B}}\).

Для данного случая существуют два опорных вектора \[ \mathcal{S}=\left\{ \left( \begin{array}{r} 1 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 2 \\ 2 \\ \end{array} \right) \right\}. \] Расширим размерность пространства \[ \tilde{\mathcal{S}}= \left\{ \left( \begin{array}{r} 1 \\ 1 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 2 \\ 2 \\ 1 \\ \end{array} \right) \right\}. \]


Опорные векторы множеств \(\tilde{\mathcal{A}}\) и \(\tilde{\mathcal{B}}\).

И выпишем условие нахождения дискриминантной функции \[ \left\{ \begin{array}{ll} \alpha_1\varphi(s_1)\cdot \varphi(s_1)+ \alpha_2\varphi(s_2)\cdot \varphi(s_1)=-1,\\ \alpha_1\varphi(s_1)\cdot \varphi(s_2)+ \alpha_2\varphi(s_2)\cdot \varphi(s_2)=+1,\\ \end{array} \right. \] и, соответственно, \[ \left\{ \begin{array}{ll} \alpha_1\tilde{s}_1\cdot \tilde{s}_1+ \alpha_2\tilde{s}_2\cdot \tilde{s}_1=-1,\\ \alpha_1\tilde{s}_1\cdot \tilde{s}_2+ \alpha_2\tilde{s}_2\cdot \tilde{s}_2=+1,\\ \end{array} \right. \] отсюда \[ \left\{ \begin{array}{ll} 3\alpha_1+ 5\alpha_2=-1,\\ 5\alpha_1+ 9\alpha_2=+1.\\ \end{array} \right. \] Решением системы будет \(\alpha_1=-7\) и \(\alpha_2=4\). Линейной дискриминантной функцией будет разделяющая гиперплоскость \[ \tilde{w}=\sum_i\alpha_i\tilde{s_i}= -7\left( \begin{array}{r} 1 \\ 1 \\ 1 \\ \end{array} \right)+ 4\left( \begin{array}{r} 2 \\ 2 \\ 1 \\ \end{array} \right)= \left( \begin{array}{r} 1 \\ 1 \\ -3 \\ \end{array} \right) \] то есть \[ y=wx+b, \hbox{ где } w=\left( \begin{array}{r} 1 \\ 1 \\ \end{array} \right) \hbox{ и }b=-3. \]


Построение разделяющей гиперплоскости.

Пример построения классификатора.

Основываясь на приведенном примере, построим классификатор, для чего определим индикаторную функцию \[ g(x)=\textrm{sign}\left(\sum_i\alpha_i\varphi(s_i)\cdot \varphi(x)\right). \] В качастве примера, проведем классификацию точки \(x=(4,5)\) \[ g \left( \begin{array}{r} 4 \\ 5 \\ \end{array} \right)= \textrm{sign}\left( -7\varphi\left( \begin{array}{r} 1 \\ 1 \\ \end{array} \right) \cdot \varphi\left( \begin{array}{r} 4 \\ 5 \\ \end{array} \right)+ 4\varphi\left( \begin{array}{r} 2 \\ 2 \\ \end{array} \right) \cdot \varphi\left( \begin{array}{r} 4 \\ 5 \\ \end{array} \right) \right) =\textrm{sign}\left( -7\left( \begin{array}{r} 1 \\ 1 \\ 1 \\ \end{array} \right) \cdot \left( \begin{array}{r} 0 \\ 1 \\ 1 \\ \end{array} \right)+ 4\left( \begin{array}{r} 2 \\ 2 \\ 1 \\ \end{array} \right) \cdot \left( \begin{array}{r} 0 \\ 1 \\ 1 \\ \end{array} \right) \right)=\textrm{sign}(-2)=-1. \]


Иллюстрация полученной классификации.

Насколько видно, полученный результат не является удовлетворительным - он противоречит нашим интуитивным представлениям о классификации. Причина в том, что предложенное преобразование отдает предпочтение одному направлению, в отличие от исходных данных. Поэтому новые точки, подлежвщие классификации, существенно зависят от того, в каком направлении от исходных данных они расположены, и это не есть правильно. Таким образом, выбор отображения \(\varphi\) должен не только позволять разделить исходные классы, но и не изменять их топологию. Это может быть достигнуто, например, переходом в простанство большей размерности.
Например, для нашего случая рассмотрим отображение в трехмерное пространство \[ \varphi \left( \begin{array}{r} x_1 \\ x_2 \\ \end{array} \right)= \left( \begin{array}{r} x_1 \\ x_2 \\ \frac{x_1^2+x_2^2-5}{3} \\ \end{array} \right). \] Тогда результат преобразования исходных данных даст \[ \tilde{\mathcal{A}}=\left\{ \left( \begin{array}{r} 2 \\ 2 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} 2 \\ -2 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} -2 \\ -2 \\ 1 \\ \end{array} \right), \left( \begin{array}{r} -2 \\ 2 \\ 1 \\ \end{array} \right) \right\} \hbox{ и } \tilde{\mathcal{B}}=\left\{ \left( \begin{array}{r} 1 \\ 1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} 1 \\ -1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ -1 \\ -1 \\ \end{array} \right), \left( \begin{array}{r} -1 \\ 1 \\ -1 \\ \end{array} \right) \right\}. \] Для первого множества опрные вектора будут определяться \(\alpha_i=\frac{1}{46}\), а для второго - \(\alpha_i=-\frac{7}{46}\). При этом разделяющая гиперплоскость \[ y=wx+b, \hbox{ где } w=\left( \begin{array}{r} 0 \\ 0 \\ 1\\ \end{array} \right) \hbox{ и }b=0. \] Индикаторная функция будет равна \(g(x_3)=\textrm{sign}(x_3).\)


Построение классификатора.

Рассмотренный пример взят отсюда.

Визуализация работы метода опорных векторов.

Полезная литература. Книги.

  1. Ben-Hur A. A User’s Guide to Support Vector Machines / A.Ben-Hur, J.Weston .— 18 p.
  2. Boswell D. Introduction to Support Vector Machines / D.Boswell, 2002 .— 15 p.
  3. Burbidge R. An Introduction to Support Vector Machines for Data Mining / R.Burbidge, B.Buxton, 2001 .— 16 p.
  4. Campbell C. Simple Learning Algorithms for Training Support Vector Machines / C.Campbell, N.Cristianini .— 29 p.
  5. Chen P. A Tutorial on ν-Support Vector Machines / P.Chen, C.Lin, B.Scholkopf .— 29 p.
  6. Cristianini N. An Introduction to Support Vector Machines and Other Kernel-based Learning Methods / N.Cristianini, J.Shawe-Taylor .— Cambridge: Cambridge University Press, 2000 .— 190 p.
  7. Gunn S.R. Support Vector Machines for Classification and Regression / S.R.Gunn; Technical Report .— University of Southhampton, 1998 .— 66 p.
  8. Humel L. Knowledge discovery with support vector machines / L.Humel .— Hoboken, New Jersey: John Wiley& Sons, Inc., 2009 .— 267 p.
  9. Shawe-Taylor J. Kernel Methods for Pattern Analysis / J.Shawe-Taylor, N.Cristianini .— Cambridge: Cambridge University Press, 2004 .— 478 p.
  10. Steinwart I. Support Vector Machines / I.Steinwart, A.Christmann .— New York: Springer, 2008 .— 610 p.
  11. Вапник В.Н. Теория распознавания образов. Статистические проблемы обучения / В.Н.Вапник, А.Я.Червоненкис .— М: Наука, 1974 .— 416 с.
  12. Воронцов К.В. Лекции по методу опорных векторов / К.В.Воронцов, 2007 .— 18 с.
  13. Домингос П. Верховный алгоритм. Как машинное обучение изменит наш мир. / П.Домингос .— М: Манн, Иванов и Фербер, 2016 .— 274 с.
  14. Шумейко А.А. Интеллектуальный анализ данных (Введение в Data Mining) / А.А.Шумейко, С.Л.Сотник .— Днепропетровск: Белая Е.А., 2012 .— 212 с.

Полезная литература. Статьи.

  1. Amarappa S. Data classification using Support vector Machine (SVM), a simplified approach / S.Amarappa, S.Sathyanarayana // International Journal of Electronics and Computer Science Engineering .— 2010 .— №4 Vol.3 .— P.435-445.
  2. Blanchard G. Statistical performance of support vector machines / G.Blanchard, O.Bousquet, P.Massart // The Annals of Statistics .— 2008 .— Vol. 36, No. 2 .— P.489–531.
  3. Brefeld U. Support Vector Machines with Example Dependent Costs / U.Brefeld, P.Geibel, F.Wysotzki // uropean Conference on Machine Learning .— Springer, 2003 .— P.1-12.
  4. Burges C. A Tutorial on Support Vector Machines for Pattern Recognition / C.Burges // Data Mining and Knowledge Discovery 2 .— Boston : Kluwer Academic Publishers, 1998 .— P.121-167.
  5. Devadasa R. Support vector machine classification of object-based data for crop mapping, using multi-temporal landsat imagery / R.Devadasa, R.Denhama, M.Pringlea // XXII Congress of ISPRS .— Melbourne, Australia, 2012 .— P.185-190.
  6. Drucker H. Support vector machines: relevance feedback and information retrieval / H.Drucker, B.Shahrary, D.Gibbon // Information Processing and Management .— 2002 .— №38 .— P.305-323.
  7. Hearst M.A. Support vector machines / M.A.Hearst // IEEE intellegent systems, 1998 .— P.18-28.
  8. Hofmann T. Kernal methods in machine learning / T.Hofmann, B.Scholkopf, A.J.Smola // The Annals of Statistics .— 2008 .— Vol. 36, No. 3 .— P.1171–1220.
  9. Sassano M. Virtual Examples for Text Classification with Support Vector Machines / M.Sassano // EMNLP '03 Proceedings of the 2003 conference on Empirical methods in natural language processing .— Stroudsburg, PA, USA, 2003 .— P.08-215.
  10. Wang J. Support vector machines based on K-means clustering for real-time business intelligence systems / J.Wang, X.Wu, C.Zhang // Int. J. Business Intelligence and Data Mining .— 2005 .— Vol. 1, No. 1 .— P.54-64.
  11. Дружков П.Н. Машина опорных векторов / П.Н.Дружков, Н.Ю.Золотых, А.Н.Половинкин, 2013 .— 10 с.

Вопрос-ответ.

Задать вопрос: