Вы находитесь на странице: 1из 12

Урок 12

Метрические алгоритмы и SVM

12.1. Метод ближайших соседей


В этом разделе будут рассмотрены метрические алгоритмы, которые подразумевают, что в пространстве
признаков было введено понятие расстояния, другими словами, определена метрика.

12.1.1. Метод ближайших соседей (kNN)


Самый простой метрический метод в задаче классификации — метод ближайшего соседа, суть которого
заключается в том, что новая точка относится к такому же классу, что и ближайшая к ней точка из обучающей
выборки.

x(2)

x(5)
x(3)
? ?

x(1)
x(6)
x(4)

Рис. 12.1: Метод ближайшего соседа Рис. 12.2: Метод ближайших соседей (k = 6)

Для повышения надежности можно принимать решение по более чем одной точке. В этом и состоит ме-
тод ближайших соседей: объект относится к тому классу, к которому принадлежит большинство из его k
ближайших соседей. Еще больше повысить надежность можно правильным образом определив веса в мето-
де ближайших соседей. Веса могут зависеть как от номера соседа w(x(i) ) = w(i), так и от расстояния до
него w(x(i) ) = w(d(x, x(i) )).
Во взвешенном kN N объект x относится к тому классу, взвешенная сумма по объектам из множества k
ближайших соседей для которого больше:
k
X
a(x) = argmaxy∈Y
 
x(i) = y w(x(i) ).
i=1

12.1.2. Центроидный классификатор


Еще один простой метрический классификатор — центроидный классификатор. Сначала по обучающей вы-
борке {(xi , yi )}m
i=1 определяются «центры» всех классов (`y — количество объектов класса y):

1 X
µy = xi .
`y i:y =y
i

1
?

Рис. 12.3: Центроидный классификатор. Крестиками изображены центры классов.

После этого центроидный классификатор относит каждый новый объект x к тому классу, центр которого
находится ближе всего в пространстве признаков к признаковому описанию нового объекта:

a(x) = argminy∈Y d(µy , x).

12.1.3. Взвешенный kNN для регрессии


Метод k ближайших соседей можно использовать для решения задачи регрессии. Пусть x — новый объект,
который требуется классифицировать, а x(i) — i-ый ближайший сосед из обучающей выборки. Взвешенный
kNN для задачи регрессии в таком случае определяется выражением:
Pk
i=1 w(x(i) )x(i)
a(x) = Pk .
i=1 w(x(i) )

Следует обратить внимание на выбор весовой функции, поскольку это сильно влияет на качество решения.

Рис. 12.4: Метод kN N в задаче регрессии в случае различных весовых функций.

Например, если в качестве веса в задаче регрессии использовать величину, обратную к расстоянию, то
в результате получится переобученная модель. Это связано с тем, что, если объект уже есть в обучающей
выборке, то он будет входить в сумму практически с бесконечным весом и алгоритм вернет для него то же
значение, что и было в обучающей выборке.

2
12.2. Настройка параметров в kNN
Данный раздел посвящен вопросу подбора параметров в методе ближайших соседей так, чтобы качество
работы алгоритма было наилучшим. К числу параметров относятся: количество соседей, весовые функции,
метрика и так далее.
Проверять качество работы алгоритма с выбранными параметрами лучше не на обучающей выборке, а на
отложенной. Также можно использовать кросс-валидацию.

12.2.1. Количество соседей


Основной параметр в kNN — количество соседей.

Рис. 12.5: Зависимость ошибки классификации от количества соседей в kNN для объектов из тестовой и
обучающей выборок.

Если оценивать качество работы алгоритма по объектам из обучающей выборки, то, как это показывает
график, оптимальное значение k будет равно 1. При этом значении k алгоритм совсем не ошибается на объ-
ектах обучающей выборки. Действительно, при классификации объекта из обучающей выборки, ближайшим
к нему объектом из обучающей выборки будет он сам. Именно поэтому качество алгоритма нужно всегда
проверять на тестовой выборке.
В общем зависимость от k следующая: сначала качество на контроле становится все лучше с ростом k, а
затем качество начинает ухудшаться.

Рис. 12.6: Ошибка классификации для объектов из тестовой выборки.

Выбирать следует такое значение k, при котором достигается наилучшая оценка качества работы алго-
ритма на контроле.

3
12.2.2. Веса соседей как функция от номера
Если используется взвешенный kNN, то необходимо задать весовую функцию. Такая функция не должна
возрастать с ростом номера объекта. Простейший вариант — это w(x) = 1. При выборе весовой функции
всегда следует сначала пробовать его перед тем, как рассматривать более сложные варианты.
Если выбор w(x) = 1 не дает желаемых результатов, можно попробовать определить веса как функцию
от номера соседа:
• w(i) = q i , 0<q<1
• w(i) = 1i , w(i) = i+a ,
1
w(i) = 1
(i+a)b

• w(i) = 1 − i−1
k (не очень удачный вариант).
Функция, которая линейно зависит от номера соседа, не является хорошим выбором. Например, в случае
k = 4, если 1 и 4 соседи некоторого объекта x принадлежат к первому классу, а 2 и 3 — ко второму, алгоритм
не сможет классифицировать этот объект. Это, конечно, не значит, что эта функция вовсе не применима на
практике, но эту её особенность следует учитывать.

12.2.3. Веса объектов как функция от расстояния


Другой способ определить весовую функцию — задать ее как функцию от расстояния. Ранее уже было сказа-
но, что в задаче регрессии выбор весовой функции w(d) = d1 приводит к переобученности. Грубо говоря, это
было связано с тем, что при d = 0 значение весовой функции было бесконечно большим. Поэтому необходимо
более аккуратно выбирать весовую функцию. Например, можно попробовать следующие варианты:
• w(d) = 1
(d+a)b

• w(d) = q d , 0<q<1
Существует более общий подход к придумыванию функции весов, зависящих от расстояний, который основан
на использовании так называемых ядер. Но этот подход сейчас не будет обсуждаться.

12.3. Метрики в kNN


12.3.1. Понятие метрики
Метрика является функцией, задающей расстояние в метрическом пространстве, и должна удовлетворять
следующим аксиомам:
1. ρ(x, y) ≥ 0, причем ρ(x, y) = 0 ⇐⇒ x = y.
2. ρ(x, y) = ρ(y, x),
3. ρ(x, y) ≤ ρ(x, z) + ρ(z, y).
Эти аксиомы не будут обсуждаться в рамках данного раздела, так как излагаемый далее материал носит
исключительно прикладной характер.
Можно привести следующие примеры метрик:
• Евклидова метрика: v
u n
uX
ρ(x, y) = t (xi − yi )2
i=1

• Манхэттенская метрика:
n
X
ρ(x, y) = |xi − yi |
i=1

• Метрика Минковского (обобщение Евклидовой и Манхэттенской метрик):

n
! q1
X
q
ρ(x, y) = |xi − yi | .
i=1

4
Наглядно демонстрируют структуру метрики изображения единичных окружностей в ней.

q=3 q=∞

q
=
2
q=1

Рис. 12.7: Изображения единичной окружности, то есть множества точек, удаленных на расстояние 1 от
начала координат, в различных метриках.

12.3.2. Функции близости


Часто, особенно в задачах анализа текста, используется так называемая косинусная мера, которая представ-
ляет собой косинус угла между векторами:
Pn
x·y xi yi
similarity = cos θ = = pPn i=1 pPn
kxk · kyk 2
i=1 xi
2
i=1 yi

Причем косинусная мера — не расстояние, а функция близости, то есть такая функция, которая тем больше,
чем больше объекты друг на друга похожи.
В рекомендательных системах используется коэффициент корреляции r. Он также может быть использо-
ван как функция близости и похож на косинусную меру:
Pn
((xi − x̄)(yi − ȳ))
r = pPn i=1 pPn
2 2
i=1 (xi − x̄) i=1 (yi − ȳ)

Конечно, существует и много других функций близости, которые в разной степени учитывают разные раз-
личия между векторами:
• Скалярное произведение:
P
xi yi
P
• Коэффициент Дайса: P2 2 xP i yi
xi + yi2
P
xi yi
• Косинусная мера: qP q
x2i
P 2
yi
P
• Коэффициент Жаккара: P x2i yiP
x2i +
P
yi − xi yi

12.4. Проклятие размерности


В этом разделе будут рассмотрены основные особенности применения понятия расстояния в случае про-
странств большой размерности. Часто пространства признаков в задачах машинного обучения как раз и
относятся к этому случаю.

5
12.4.1. Небольшие отличия в большом числе координат
Пусть даны три точки, радиус-векторы которых:

x1 = (a1 , a2 , ..., aN ),
x2 = (a1 + ε, a2 + ε, ..., aN + ε),
x3 = (a1 , a2 + ∆, ..., aN ).

Вектор x2 отличается от вектора x1 незначительно в каждой координате, а вектор x3 — только в одной,


но существенно. При этом расстояние от первой точки до второй и расстояние от первой до третьей могут
совпадать.
Другими словами, когда признаков очень много, незначительные различия в каждом признаке могут
значить больше, чем одно большое различие в одном. Такое поведение не всегда является желаемым.

12.4.2. Почти одинаковые расстояния


Когда количество объектов сравнимо с количеством признаков, может возникнуть ситуация, что расстояния
между двумя любыми объектами будет почти одинаковым.
Действительно, на плоскости три точки, равноудаленные друг от друга, образуют вершины треугольника,
в трехмерном пространстве четыре равноудаленные друг от друга, точки являются вершинами тетраэдра,
а в N -мерном пространстве можно выбрать N + 1 точку так, что расстояние между любыми двумя было
одинаковым.

12.4.3. Экспоненциальный рост необходимых данных


Пусть X — вектор в признаковом пространстве из N бинарных признаков, например:

X = (0, 0, 1, 0, 1, 1, ..., 1).

Всего в этом пространстве 2N различных векторов, а значит размер обучающей выборки, необходимый, чтобы
покрыть все возможные комбинации эти признаков будет также порядка 2N .
Другими словами, количество необходимых данных с ростом размерности пространства экспоненциально
увеличивается.
У данного факта есть красивая геометрическая иллюстрация. Пусть в N -мерном пространстве дан куб с
ребром 1 и меньший куб, длина ребер которого равна ` < 1. Меньший куб вложен в больший таким образом,
что они име­ют общую вершину и их грани попарно параллельны. Доля объема меньшего куба от объема
большего выражается формулой:
v
= `N → 0, N → ∞,
V
где v и V — объемы меньшего и большего кубов соответственно.
Пусть ` = 12 . Если ставится задача описать положение какой-либо точки из большого куба с точностью до
размеров маленького, то при увеличении размерности пространства и сохранении линейных размеров кубов
количество требуемых для этого данных растет экспоненциально.

12.5. Рекомендации фильмов с помощью kNN


12.5.1. Задача
В данном разделе решается задача построения рекомендательной системы с помощью метода ближайших
соседей. А именно необходимо построить рекомендации фильмов на основе истории пользовательских оценок.
Можно представить себе таблицу «пользователь-фильм», в которой какие-то значения заполнены, но не
все. Таким образом, необходимо научиться прогнозировать значения, отсутствующие в данной таблице.

12.5.2. User-based подход


Один из возможных подходов к задаче заключается в том, что среди пользователей ищутся наиболее похожие
на того пользователя, для которого делается прогноз. Этим пользователям в соответствие ставятся веса: тем,
кто более похож, вес устанавливается больше, и так далее. В качестве прогноза для исходного пользователя

6
Пила Улица Вязов Ванильное небо 1+1
Маша 5 4 1 2
Юля 5 2
Вова 3 5
Коля 3 4 5
Петя 4
Ваня 5 3 3

Таб.: Пример возможной таблицы «пользователь-фильм».

указываются усредненные с учетом весовых коэффициентов оценки фильмов этих наиболее похожих на него
пользователей.
Описанный выше прогноз называется user-based. Аналогично можно рассмотреть item-based подход, где
сначала выбирается интересующий фильм, ищутся похожие на него фильмы и так далее. Далее для опреде-
ленности речь будет идти только про user-based подход.

12.5.3. Похожесть пользователей


В качестве меры похожести wi,j двух пользователей можно использовать коэффициент корреляции:
P
(ri,a − r̄i )(rj,a − r̄j )
wi,j = pP a pP ,
2 2
a (ri,a − r̄i ) a (rj,a − r̄j )

где r̄i = N1i a ri,a — средние оценки i-го пользователя, Ni — количество просмотренных им фильмов. Сум-
P
мирование ведется только по тем фильмам, которые смотрели оба пользователя.

12.5.4. Прогнозирование рейтинга


Теперь можно спрогнозировать рейтинг фильма как средний рейтинг с добавленной к нему взвешенной сум-
мой рейтингов других пользователей:
P
j (rj,a − r̄j )wi,j
r̂i,a = r̄i + P .
j |wi,j |

Если количество пользователей в системе велико, достаточно производить суммирование только по k бли-
жайших соседей к пользователю, для которого дается оценка:
P
j∈kN N (i) (rj,a − r̄j )wi,j
r̂i,a = r̄i + P .
j∈kN N (i) |wi,j |

Таким образом метод kNN может быть адаптирован к задаче рекомендации.

12.6. Метод опорных векторов (SVM)


Давайте познакомимся поближе с еще одним методом, который не вошел в основную часть курса, а именно
с методом опорных векторов.

12.6.1. Метод опорных векторов


Конечно, в каком-то виде вы с ним уже знакомы. Это просто линейный классификатор

a(x) = sign(hw, xi − w0 ),

использующий кусочно-линейную функцию потерь

L(Mi ) = max{0, 1 − Mi } = (1 − Mi )+

7
и L2 -регуляризатор:
`
X
L(Mi ) + γkwk2 → min .
| {z } | {z } w
i=1
Функция потерь Квадратичный регуляризатор

Но на самом деле метод был придуман не из общего вида линейных классификаторов и не из обобщения с
функциями потерь и регуляризаторами. Он был придуман из других довольно простых соображений.

12.6.2. Разделяющая полоса в случае линейно разделимой выборки


Пусть для простоты рассматривается задача бинарной классификации и некоторая линейно разделимая вы-
борка. Выборка называется линейно разделимой, если в пространстве признаков существует такая гиперплос-
кость, что объекты разных классов будут находиться по разные стороны от этой плоскости.

Рис. 12.8: Разделяющая гиперплоскость не единственна.

При этом гиперплоскость может быть проведена не единственным образом и возникает задача отыскания
оптимальной разделяющей гиперплоскости.
Пусть разделяющая гиперплоскость существует и задается уравнением hw, xi − w0 = 0. Можно выбрать
две параллельные ей и расположенные по разные стороны от нее гиперплоскости так, чтобы между ними
не было объектов выборки, а расстояние между ними было максимальным. В таком случае каждая из двух
получившихся граничных плоскостей будет «приставлена» к соотвествующему классу.

x+
x−

Рис. 12.9: Разделяющая полоса в случае линейно разделимой выборки

Поскольку уравнение плоскости можно умножать на ненулевое число без изменения соответствующей
плоскости, всегда можно выбрать (отнормировать) w и w0 таким образом, чтобы уравнения граничных плос-
костей имели вид:
hw, xi − w0 = ±1.

8
Это условие нормировки можно также сформулировать следующим образом:

min yi (hw, xi − w0 ) = 1.
i=1,...,`

На каждой из двух граничных плоскостей будет лежать как минимиум один объект из соответствующого
ей класса (иначе расстояние между плоскостями можно увеличить). Пусть x+ и x− — два таких вектора,
лежащие на построенных плоскостях и принадлежащие соответствующим классам.
Тогда для ширины разделяющей полосы будет справедливо выражение (как это следует из аналитической
геометрии):  
w 2
(x+ − x− ), =
kwk kwk
Правая часть равенства получена в предположении, что используется описанная выше нормировка.
Теперь можно поставить задачу построения такой разделяющей гиперплоскости, что расстояние между
соответствующими ей граничными плоскостями будет максимальным:
(
hw, wi → min,
yi (hw, xi − w0 ) ≥ 1, i = 1, ..., `.

12.6.3. Случай линейно неразделимой выборки


Поскольку в случае линейно неразделимой выборки по определению любой линейный классификатор будет
ошибаться, условие yi (hw, xi−w0 ) ≥ 1 не может быть выполнено для всех i. Естественным обобщением задачи
построения оптимальной гиперплоскости на случай линейно неразделимой выборки является введение ошибок
ξi ≥ 0 алгоритма и штрафов за эти ошибки в минимизируемую функцию следующим образом:
 `
1 X
ξi → min ,

hw, wi + C


2

w,w0 ,ξ
i=1


 yi (hw, xi − w0 ) ≥ 1 − ξi , i = 1, ..., `,

ξi ≥ 0, i = 1, ..., `.

Множитель 1/2 был введен для удобства, а C задает размер штрафа за ошибки.

12.6.4. Оптимизационная задача для метода опорных векторов


Получившаяся оптимизационная задача:
 `
1 X
ξi → min ,

hw, wi + C


2

w,w0 ,ξ
i=1


 yi (hw, xi − w0 ) ≥ 1 − ξi , i = 1, ..., `,

ξi ≥ 0, i = 1, ..., `

является оптимизационной задачей в методе опорных векторов (SVM) и непосредственно связана с задачей
линейной классификации. Действительно, поскольку Mi = yi (hw, xi − w0 ) — отступ на i-ом объекте выборки:

yi (hw, xi − w0 ) ≥ 1 − ξi =⇒ ξi ≥ 1 − Mi .

Учитывая также условие ξi ≥ 0, можно получить:



`
 1 hw, wi + C
 X
ξi → min ,

2 i=1
w,w0 ,ξ

 ξ ≥ max{0, 1 − M },

i = 1, ..., `,
i i

При фиксированных w и w0 задача оптимизации по ξ имеет следующий вид:


`
X
ξi → min, при условии ξi ≥ max{0, 1 − Mi }, i = 1, ..., `,
ξ
i=1

9
а ее решением будет ξi = max{0, 1 − Mi } = (1 − Mi )+ .
Теперь можно вернуться к общей задаче минимизации и переписать ее виде:
`
X 1
Q(w, w0 ) = (1 − Mi (w, w0 ))+ + kwk2 → min .
i=1
2C w,w0

Последнее выражение называется безусловной оптимизационной задачей в SVN. В такой формулировке от-
четливо видно и функцию потерь, и L2 регуляризатор.

12.7. Ядра в методе опорных векторов (Kernel trick)


Пока ансамбли решающих деревьев не набрали своей популярности, SVM очень часто использовали даже в
тех задачах, где разделяющая поверхность не похожа на линейную.

12.7.1. Добавление новых признаков и kernel trick


Чтобы применять SVN в нелинейном случае, строилось спрямляющее пространство. В основе этого лежит
очень простая и очень красивая идея: если в каком-то исходном пространстве признаков классы не являются
линейно разделимыми, то может быть можно отобразить это пространство признаков в какое-то новое, в
котором классы уже будут линейно разделимы.

x2
√ x22
ϕ : (x1 , x2 ) → x21 , 2x1 x2 , x22


x1 b2

a2
x21

2x1 x2

Рис. 12.10: Пример построения спрямляющего пространства.

Не обязательно задавать это отображение явно, так как в SVM везде фигурирует только скалярное про-
изведение вида hw, xi.
Пусть ϕ(x) — спрямляющее отображение, тогда, чтобы записать SVM в спрямляющем пространстве, необ-
ходимо во всех формулах сделать следующие подстановки:

x → ϕ(x), w → ϕ(w), hw, xi → hϕ(w), ϕ(x)i.

Тогда метод SVM может быть сформулирован в исходном пространстве, если в качестве скалярного произ-
ведения использовать, возможно, нелинейную симметричную функцию

K(w, x) = hϕ(w), ϕ(x)i

и таким образом получать нелинейную разделяющую поверхность. Эта идея называется в англоязычной
литературе kernel trick.

10
12.7.2. Линейное ядро
В простейшем случае ядро совпадает со скалярным произведением:
K(w, x) = hw, xi.

Рис. 12.11: Линейное ядро

Следует отметить, что линейное ядро в некоторых задачах — самый лучший выбор, например в задачах
классификации текстов, и не стоит выкидывать его из рассмотрения.

12.7.3. Полиномиальное ядро


Другой пример — это полиномиальное ядро:
K(w, x) = (hw, xi + r)d .

Рис. 12.12: Полиномиальное ядро

11
Полиномиальное ядро получается, если в качестве спрямляемого пространство выступает пространство
многочленов не выше определенной степени.

12.7.4. Радиальное ядро


И другое часто используемое ядро — это радиальное ядро:

K(w, x) = exp −γkw − xk2 .




Рис. 12.13: Радиальное ядро

Поскольку радиальное ядро выражается через евклидово расстояние, будут проявляться основные про-
блемы метрических алгоритмов, в том числе проклятие размерности. Именно поэтому не стоит применять
это ядро, если признаков действительно очень-очень много.
Но так или иначе, оно позволяет строить очень сложные границы классов. Спрямляющее пространство,
которое соответствует данному ядру, является бесконечномерным.

12.7.5. Ядра и библиотеки


SVM реализован в различных библиотеках: какие-то (например LibSVM) поддерживают различные ядра, но
некоторые (например LibLinear) — только линейное ядро. Причем, если на практике потребуется применить
SVM с линейным ядром, лучше использовать LibLinear, который лучше оптимизирован для вычислений с
линейным ядром, а не LibSVM с указанием линейного ядра.
Scikit-learn же просто предоставляет удобный доступ к LibSVM и LibLinear, поэтому все сказанное выше
применимо и здесь: LinearSVC поддерживает только линейное ядро и оптимизирован для этого случая, а SVC
поддерживает различные ядра.

12