l6: Метод опорных векторов
DESCRIPTION
L6: Метод опорных векторовTRANSCRIPT
Введение в Data ScienceЗанятие 5. Машины Опорных Векторов
Николай Анохин Михаил Фирулик
29 марта 2014 г.
План занятия
Идея maximum margin
Функции ядра
Мотивация
Обобщенные линейные модели
Обучающая выборка
X = (x1, . . . , xN)
Значения целевой переменной
t1, . . . , tN ; tj ∈ {−1,+1}
Функция принятия решения
y(x) = w>φ(x) + b
Разделяющая плоскость (РП)
yi (xi)ti > 0
Решений много: как выбрать?
Максимальный зазор
Margin – наименьшее расстояниемежду РП и обучающим объектом.
dj =|y(xj)|‖w‖
=tjy(xj)
‖w‖=
=tj(w>φ(xj) + b)
‖w‖Оптимальная РП
argmaxw,b
[1
‖w‖minj
tj(w>φ(xj) + b)
]
Задача оптимизации
Расстояние от точки xj до РП
dj =tj(w>φ(xj) + b)
‖w‖
Для точки xj , лежащей на минимальном расстоянии от РП положим
tj(w>φ(xj) + b) = 1
Задача оптимизации
1
2‖w‖2 → min
w,b
при условияхtj(w
>φ(xj) + b) ≥ 1, ∀j ∈ 1, . . . ,N
Метод множителей Лагранжа a = (a1, . . . , aN)>, ai ≥ 0.
L(w, b, a) =1
2‖w‖2 −
N∑j=1
aj [tj(w>φ(xj) + b)− 1]
Дифференцируем по w и b
w =N∑j=1
aj tjφ(xj), 0 =N∑j=1
aj tj
Подставляем w и b в лагранжиан
Сопряженная задача
Сорпяженная задача
L̃(a) =N∑j=1
aj −1
2
N∑i=1
N∑j=1
aiaj ti tjφ(xi )>φ(xj)→ max
a
при условияхaj ≥ 0, ∀j ∈ 1, . . . ,N
N∑j=1
aj tj = 0
НаблюденияI k(xi , xj) = φ(xi )>φ(xj) – неотрицательно-определенная функцияI лагранжиан L̃(a) – выпуклая и ограниченная сверху функция
Классификация
Функция принятия решения
y(x) = w>φ(x) + b =N∑j=1
aj tjφ(xj)>φ(x) + b =
N∑j=1
aj tjk(xj , x) + b
Условия Karush-Kuhn-Tucker
aj ≥ 0
tjy(xj)− 1 ≥ 0
aj{tjy(xj)− 1} = 0
Опорным векторам xj ∈ S соответствуют aj > 0
b =1
Ns
∑i∈S
ti −∑j∈S
aj tjk(xi, xj)
Линейно-разделимый случай
ЗадачаДана обучающая выборка
x1 x2 tx1 1 −2 1x2 1 2 −1
Найти оптимальную разделяющую плоскость, используясопряженную задачу оптимизации
Линейно-неразделимый случай
Смягчение ограничений
Переменные ξj ≥ 0 (slacks):
ξj =
{0, если y(xj)tj ≥ 1
|tj − y(xj)|, иначе
Задача оптимизации
CN∑j=1
ξj +1
2‖w‖2 → min
w,b
Сопряженная задача
Сорпяженная задача
L̃(a) =N∑j=1
aj −1
2
N∑i=1
N∑j=1
aiaj ti tjφ(xi )>φ(xj)→ max
a
при условиях0 ≤ aj ≤ C , ∀j ∈ 1, . . . ,N
N∑j=1
aj tj = 0
НаблюденияI aj = 0 – правильно проклассифицированные объектыI aj = C – опорные векторы внутри отступаI 0 < aj < C – опорные векторы на границе
Классификация
Функция принятия решения
y(x) =N∑j=1
aj tjk(xj , x) + b
Константа b
b =1
NM
∑i∈M
ti −∑j∈S
aj tjk(xi, xj)
Связь с линейными моделями
Задача оптимизации
N∑j=1
ξj +1
2‖w‖2 ∼
N∑j=1
E (y(xj), tj) + λ‖w‖2 → minw,b
Hinge loss
E (yj , tj) =
{1− yj tj , если yj tj > 1
0, иначе
Численные методы оптимизации
I Chunking (Vapnik, 1982)I Decomposition (Osuna, 1996)I Sequential Minimal Optimization (Platt, 1999)
Задача регрессии
Переменные ξj ≥ 0, ξ̂j ≥ 0 (slacks):
tj ≤ y(xj) + ε+ ξn
tj ≥ y(xj)− ε− ξ̂nЗадача оптимизации
CN∑j=1
(ξ̂j + ξj) +1
2‖w‖2 → min
w,b
Функции ядра
φ(x) – функция преобразования x из исходного пространства вспрямляющее пространство
Проблема: количество признаков может быть очень велико
Идея Kernel TrickВ процессе тренировки и применения SVM исходные векторы xиспользуются только как аргументы в скалярном произведенииk(xi , xj) = φ(xi )>φ(xj). Но в этом случае можно избежатьвычисления ϕ(x)!
Теорема Мерсера
ТеоремаФункция k(x, z) является ядром тогда и только тогда, когда она
I симметричнаk(x, z) = k(z, x)
I неотрицательно определена∫x∈X
∫z∈X
k(x, z)g(x)g(z)dxdz, ∀g(x) : X→ R
ЗадачаПусть x ∈ R2, а преобразование φ(x)
φ(x) = (1,√2x1,√2x2, x
21 ,√2x1x2, x
22 ).
Проверить, что функция k(x, z) = (1 + x>z)2 является функциейядра для данного преобразования.
Некоторые стандартные функции ядра
I Линейное ядроk(x, z) = x>z
I Полиномиальное ядро степени d
k(x, z) = (x>z+ r)d
I Radial Basis Function
k(x, z) = e−γ|x−z|2
I Sigmoidk(x, z) = tanh(γx>z+ r)
Опять ирисы
SVM. Итоги
+ Нелинейная разделяющая поверхность+ Глобальая оптимизация+ Разреженное решение+ Хорошая обобщающая способность- Не поддерживает p(Ck |x)- Чувствительность к выбросам- Нет алгоритма выбора ядра- Медленное обучение
Эксперименты над SVMВ задаче рассматриваются 4 алгоритма генерации обучающихвыборок. Требуется разработать функцию, автоматическиподбирающую параметры модели SVM в зависимости от полученнойвыборки.
Инструкция по выполнению задания
1. Выкачать в локальный репо код из ветки svm
2. Запустить хелп, при желании изучить
$ python svm.py -h$ python svm.py cc -h
3. Запустить какой-нибудь пример, разобраться с картинкой
$ python svm.py gauss
4. Работать над кодом (функция select_model)
Домашнее задание 4
Машина опорных векторовИспользовать готовую имплементацию
I алгоритма SVM для задачи классификацииI алгоритма SVM для задачи регрессии
Ключевые датыI До 2014/04/05 00.00 предоставить решение задания
Спасибо!
Обратная связь