Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова. Курс "Алгоритмы интеллектуальной обработки больших объемов данных", Лекция №7 "Машина опорных векторов"
Лектор - Николай Анохин
Разделяющая поверхность с максимальным зазором. Формулировка задачи оптимизации для случаев линейно-разделимых и линейно-неразделимых классов. Сопряженная задача. Опорные векторы. KKT-условия. SVM для задач классификации и регрессии. Kernel trick. Теорема Мерсера. Примеры функций ядра.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9pyyrqknouMZbIPf4l3CwUP
3. Постановка задачи
Пусть дан набор объектов D = {(xi , yi )}, xi ∈ X, yi ∈ Y, i ∈ 1, . . . , N,
полученный из неизвестной закономерности y = f (x). Необходимо
выбрать из семейства параметрических функций
H = {h(x, θ) : X × Θ → Y}
такую h∗
(x) = h(x, θ∗
), которая наиболее точно апроксимирует f (x).
Задачи
Регрессия: Y = [a, b] ⊂ R
Классификация: |Y| < C
2 / 29
6. Обобщенные линейные модели
Обучающая выборка
X = (x1, . . . , xN )
Значения целевой переменной
t1, . . . , tN ; tj ∈ {−1, +1}
Функция принятия решения
y(x) = w φ(x) + b
Разделяющая плоскость (РП)
yi (xi)ti > 0
Решений много: как выбрать?
5 / 29
7. Максимальный зазор
Margin – наименьшее расстояние
между РП и обучающим объектом.
dj =
|y(xj )|
w
=
tj y(xj )
w
=
=
tj (w φ(xj ) + b)
w
Оптимальная РП
arg max
w,b
1
w
min
j
tj (w φ(xj ) + b)
6 / 29
8. Задача оптимизации
Расстояние от точки 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
7 / 29
9. Метод множителей Лагранжа 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 в лагранжиан
8 / 29
10. Сопряженная задача
Сорпяженная задача
˜L(a) =
N
j=1
aj −
1
2
N
i=1
N
j=1
ai aj ti tj φ(xi ) φ(xj ) → max
a
при условиях
aj ≥ 0, ∀j ∈ 1, . . . , N
N
j=1
aj tj = 0
Наблюдения
k(xi , xj ) = φ(xi ) φ(xj ) – неотрицательно-определенная функция
лагранжиан ˜L(a) – выпуклая и ограниченная сверху функция
9 / 29
11. Классификация
Функция принятия решения
y(x) = w φ(x) + b =
N
j=1
aj tj φ(xj ) φ(x) + b =
N
j=1
aj tj k(xj , x) + b
Условия Karush-Kuhn-Tucker
aj ≥ 0
tj y(xj) − 1 ≥ 0
aj {tj y(xj) − 1} = 0
Опорным векторам xj ∈ S соответствуют aj > 0
b =
1
Ns
i∈S
ti −
j∈S
aj tj k(xi, xj)
10 / 29
14. Смягчение ограничений
Переменные ξj ≥ 0 (slacks):
ξj =
0, если y(xj)tj ≥ 1
|tj − y(xj )|, иначе
Задача оптимизации
C
N
j=1
ξj +
1
2
w 2
→ min
w,b
13 / 29
15. Сопряженная задача
Сорпяженная задача
˜L(a) =
N
j=1
aj −
1
2
N
i=1
N
j=1
ai aj ti tj φ(xi ) φ(xj ) → max
a
при условиях
0 ≤ aj ≤ C, ∀j ∈ 1, . . . , N
N
j=1
aj tj = 0
Наблюдения
aj = 0 – правильно проклассифицированные объекты
aj = C – опорные векторы внутри отступа
0 < aj < C – опорные векторы на границе
14 / 29
20. Функции ядра
φ(x) – функция преобразования x из исходного пространства в
спрямляющее пространство
Проблема: количество признаков может быть очень велико
Идея Kernel Trick
В процессе тренировки и применения SVM исходные векторы x
используются только как аргументы в скалярном произведении
k(xi , xj ) = φ(xi ) φ(xj). Но в этом случае можно избежать
вычисления ϕ(x)!
19 / 29
21. Теорема Мерсера
Теорема
Функция k(x, z) является ядром тогда и только тогда, когда она
симметрична
k(x, z) = k(z, x)
неотрицательно определена
x∈X z∈X
k(x, z)g(x)g(z)dxdz 0, ∀g(x) : X → R
Задача
Пусть x ∈ R2
, а преобразование φ(x)
φ(x) = (1,
√
2x1,
√
2x2, x2
1 ,
√
2x1x2, x2
2 ).
Проверить, что функция k(x, z) = (1 + x z)2
является функцией
ядра для данного преобразования.
20 / 29
22. Некоторые стандартные функции ядра
Линейное ядро
k(x, z) = x z
Полиномиальное ядро степени d
k(x, z) = (x z + r)d
Radial Basis Function
k(x, z) = e−γ|x−z|2
Sigmoid
k(x, z) = tanh(γx z + r)
21 / 29
25. Связь с линейными моделями
Задача оптимизации
N
j=1
ξj +
1
2
w 2
∼
N
j=1
E(y(xj ), tj ) + λ w 2
→ min
w,b
Hinge loss
E(yj , tj ) =
1 − yj tj , если yj tj < 1
0, иначе
24 / 29
26. Stochastic Gradient Descent
Градиентный спуск
wk+1 = wk − η(k)
1
N
N
n=1
wl(xn, w, tn)
Стохастический градиентный спуск
wk+1 = wk − η(k) wl(xk, w, tk )
Усредненный стохастический градиентный спуск ¯wk = 1
k
k
j=1 wj
wk+1 = wk − η(k) wl(xk, w, tk ), ¯wk+1 =
k
k + 1
¯wk +
1
k + 1
wk+1
Сходимость: k η2
k < ∞, k ηk = ∞
25 / 29
27. SGD tips
Использовать SGD, когда обучение модели занимает слишком
много времени
Перемешать тренировочную выборку
Следить за training error и validation error
Поверять, правильно ли вычисляется градиент
Q(z, w + δ) ≈ Q(z, w) + δg
Подобрать η0 на небольшой выборке
ηk = η0(1 + η0λk)−1
, λ – параметр регуляризации
26 / 29
28. SVM – итоги
+ Нелинейная разделяющая поверхность
+ Глобальая оптимизация
+ Разреженное решение
+ Хорошая обобщающая способность
- Не поддерживает p(Ck |x)
- Чувствительность к выбросам
- Нет алгоритма выбора ядра
- Медленное обучение
27 / 29
29. Эксперименты над SVM
В задаче рассматриваются 4 алгоритма генерации обучающих
выборок. Требуется разработать функцию, автоматически
подбирающую параметры модели SVM в зависимости от полученной
выборки.
Инструкция по выполнению задания
1. Скачать код http://bit.ly/1y26EF4
2. Запустить хелп, при желании изучить
$ python svm.py -h
$ python svm.py cc -h
3. Запустить какой-нибудь пример, разобраться с картинкой
$ python svm.py gauss
4. Работать над кодом (функция select_model)
28 / 29