Опубликован: 02.09.2013 | Доступ: свободный | Студентов: 429 / 54 | Длительность: 19:27:00
Лекция 2:

Введение в машинное обучение

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
1.1.2. Метод k ближайших соседей

Метод k ближайших соседей (k nearest-neighbor, k-NN) относится к наиболее простым и в то же время универсальным методам, используемым как для решения задач классификации, так и восстановления регрессии. В случае классификации новый объект классифицируется путем отнесения его к классу, являющемуся преобладающим среди k ближайших (в пространстве признаков) объектов из обучающей выборки. Если k=1 , то новый объект относится к тому же классу, что и ближайший объект из обучающей выборки.

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

Опишем метод более формально. Пусть N_k(x) – множество ближайших к x объектов из обучающей выборки. Тогда для задачи классификации положим

f(x)=arg\,\, max_y \lvert \lbrace i:y^{(i)}=y,x^{(i)}\in N_k(x) \rbrace \rvert,

а для задачи восстановления регрессии –

f(x)=\frac 1 k$ \sum_{x^{(i)} \in N_k(x)} {y^{(i)}}.

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

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

\rho(x,x')=\sqrt{\sum^d_{j=1} {\lvert x_j-x_j' \rvert ^2}},

однако оно применимо только для признаков, описываемых количественными переменными. Если все переменные качественные, то можно использовать расстояние Хэмминга

\rho(x,x')=\sum^d_{j=1} {I(x_j \neq x_j')}.

В общем случае используют функцию

\rho(x,x')=\sum^d_{j=1} {a_j\rho_j(x_j,x_j')},

где a_j – неотрицательные параметры, \rho_j(x_j,x_j')=(x_j-x_j')^2 для качественных переменных, \rho_j(x_j,x_j')=I(x_j \neq x_j') для качественных переменных. Заметим, что функция расстояния не обязательно должна быть метрикой и неравенство треугольника может быть не выполнено.

Для повышения точности модели также могут использоваться специальные алгоритмы обучения метрики расстояния (например, Large Margin Nearest Neighbour [8]).

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

1.1.3. Машина опорных векторов

Один из самых популярных методов машинного обучения – машина опорных векторов (SVM – Support Vector Machine) – является развитием идей, предложенных в 1960–1970 гг. В. Н. Вапником и А. Я. Червоненкисом. Окончательное очертание метод принял в 1995 г., когда было показано, как в этом методе можно эффективно использовать ядра [4].

Рассмотрим вначале случай двух линейно разделимых классов. Для удобства будем их кодировать числами 1,-1 т. е. \mathcal{Y}=\lbrace 1,-1\rbrace.

Оптимальной разделяющей гиперплоскостью называется гиперплоскость, такая, что расстояние от нее до ближайшей точки из обучающей выборки (не важно из какого класса) максимально. Таким образом, оптимальная разделяющая гиперплоскость максимизирует зазор (отступ) – расстояние от нее до точек из обучающей выборки. Часто это приводит к хорошим результатам и на объектах тестовой выборки.

Математическая постановка задачи выглядит следующим образом:

Требуется найти

max_{\beta,\beta_0,w} w,

при ограничениях

y^{(i)}(\beta x^{(i)}+\beta_0)\geqslant w\,\,\,\,(i=1,2,...,N),\lvert \lvert \beta \rvert \rvert =1,

где \beta x^{(i)} означает скалярное произведение

\beta x^{(i)}=\sum^d_{j=1} {\beta_j x^{(i)}_j},

а \lvert \lvert \beta \rvert \rvert – евклидову норму

\lvert \lvert \beta \rvert \rvert=\sqrt{\sum^d_{j=1} {\beta_j ^2}.

Эквивалентная формулировка:

max_{\beta,\beta_0} \lvert \lvert \beta \rvert \rvert^2,

при ограничениях

y^{(i)}(\beta x^{(i)}+\beta_0)\geqslant 1\,\,\,\,(i=1,2,...,N),

Можно показать, что решение этой задачи имеет вид

\beta=\sum^N_{j=1} {a_iy^{(i)}x^{(i)}}, \,\,\,\, где\,a_i\geqslant 0,

уравнение разделяющей гиперплоскости есть \beta x+\beta_0=0 и классификатор определяется правилом

f(x)=sign(\beta x+\beta_0)

Если a_i>0 то x^{(i)} называется опорной точкой или опорным вектором. Легко видеть, что опорные точки лежат на границе разделяющей полосы

-1 \leqslant \beta x+\beta_0 \leqslant 1

следовательно, \beta_0=y^{(i)}-\beta x^{(i)}, где x^{(i)} – произвольный опорный вектор.

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

max_{\beta,\beta_0,\xi,w} w,

при ограничениях

y^{(i)}(x^{(i)}\beta+\beta_0)\geqslant w(1-\xi_i),\,\,\xi_i\geqslant 0,\,\,\,\,(i=1,2,...,N),\lvert \lvert \beta \rvert \rvert =1,\sum^N_{j=1} {\xi_i \leqslant \Xi},

где \Xi – некоторая константа (параметр метода). При \Xi=0 получаем предыдущий случай (линейно разделимых классов). Значение \xi_i пропорционально величине, на которую x^{(i)} заходит за границу разделяющей полосы. В частности, -й объект будет классифицирован неправильно тогда и только тогда, когда \xi_i>1 . Чем меньше \Xi, тем меньше объектов классифицируется неправильно. С другой стороны, \Xi должно быть достаточно велико, чтобы задача была совместной.

Эквивалентная формулировка:

max_{\beta,\beta_0,\xi} \frac 1 2$ \lvert \lvert \beta \rvert \rvert +C\sum^N_{j=1} {\xi_i},

при ограничениях

y^{(i)}(x^{(i)}\beta+\beta_0)\geqslant 1-\xi_i,\,\,\xi_i\geqslant 0,\,\,\,\,(i=1,2,...,N).

Здесь параметр C \geqslant 0 регулирует величину штрафа за то, что некоторые точки выходят за границу разделяющей полосы. Построенная задача является задачей квадратического программирования. Для ее решения можно использовать общие методы для решения таких задач, однако существуют весьма эффективные специальные методы.

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

Дальнейшее усовершенствование метода – использование спрямляющих пространств. Пусть удается перейти от исходного пространства признаков \mathcal{X} к новому пространству \mathcal{H} (которое называется спрямляющим) с помощью некоторого отображения h:\mathcal{X} \rightarrow \mathcal{H}:

h(x)=(h_1(x),h_2(x),...,h_M(x)),

где h_m(x) – базисные функции (m=1,2,...,M). Новый классификатор определяется теперь функцией

f(x)=sign(h(x)\beta x+\beta_0)

Здесь h(x)\beta x+\beta_0=0 – разделяющая поверхность. Если отображение подобрано удачно, в новом пространстве классы могут быть линейно разделимы или близки к таковым.

Оказывается, все вычисления при обучении и при расчете функции f(x) можно организовать так, что h(x) встречается только в выражениях вида

K(x,x')=h(x)h(x').

В частности уравнение разделяющей поверхности имеет вид

\biggl(\sum^N_{j=1} {a_iy^{(i)}h(x^{(i)})}\biggr)h(x)+\beta_0=0

что эквивалентно

\sum^N_{j=1} {a_iy^{(i)}h(x^{(i)})}h(x)+\beta_0=0

или

\sum^N_{j=1} {a_iy^{(i)}K(x^{(i)},x)}+\beta_0=0

Функция K(x,x') называется ядром. На практике, таким образом, вместо того, чтобы испытывать различные функции h можно (так и поступают) подбирать наиболее подходящее ядро K(x,x').

Заметим, что не любая функция K: \mathbb{R}^d \times \mathbb{R}^d \rightarrow \mathbb{R} представима в виде K(x,x')=h(x)h(x'), т. е. может быть использована в качестве ядра. Приведем перечень некоторых популярных функций- ядер:

  • линейное ядро: K(x,x')=xx'
  • многочлен степени: K(x,x')=(\gamma_0+\gamma xx')^d
  • радиальная функция: K(x,x')=e^{-\gamma \lvert \lvert x-x' \rvert \rvert ^2}
  • сигмоидальная ("нейронная") функция: K(x,x')=tanh(\gamma_0+\gamma xx')

Для того чтобы использовать метод опорных векторов для задачи классификации с числом классом K>2 , возможно использовать две стратегии:

  • "Каждый против каждого": построить K(K-1)/2 классификаторов на всех возможных подзадачах бинарной классификации. Новый объект классифицируется всеми построенными решающими правилами, затем выбирается преобладающий класс.
  • "Один против всех": обучить K моделей на задачах бинарной классификации вида "один класс против всех остальных". Класс нового объекта выбирается по максимальному значению отступа.
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Андрей Терёхин
Андрей Терёхин

Нахожу в тесте вопросы, которые в принципе не освещаются в лекции. Нужно гуглить на других ресурсах, чтобы решить тест, или же он всё же должен испытывать знания, полученные в ходе лекции?

Демянчик Иван
Демянчик Иван

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

" Искомый объект можно описать с помощью фильтра F= \lbrace f_{x',y'},x' \in \lbrace0, ...,w_f \rbrace , y' \in \lbrace 0,...,h_f \rbrace \rbrace "