Метод опорных векторов SVM для введения в машинное обучение

машинное обучение

Это 10-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

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

функция стоимости

обзорлогистическая регрессияв функции стоимости вCost(hθ(x),y)Cost(h_{\theta}(x),y):

Cost=y(i)log(hθ(x))+(1y(i))log(1hθ(x))=y(i)(log(11+eθTx))+(1y(i))(log(111+eθTx))=y(i)log(11+eθTx)(1y(i))log(111+eθTx)\begin{aligned}Cost& =y^{(i)}log(h_{\theta}(x))+(1-y^{(i)})log(1-h_{\theta}(x))\\&=y^{(i)}(-log(\dfrac{1}{1+e^{-\theta^{T}x}}))+(1-y^{(i)})(-log(1-\dfrac{1}{1+e^{-\theta^{T}x}}))\\&=-y^{(i)}log(\dfrac{1}{1+e^{-\theta^{T}x}})-(1-y^{(i)})log(1-\dfrac{1}{1+e^{-\theta^{T}x}})\end{aligned}

сначала игнорироватьii,когдаy=1y=1, надеемся, что стоимость минимальна, т. е. надеемсяθTx0\theta^{T}x \gg0;когдаy=0y=0, надеемся, что стоимость минимальна, т. е. надеемсяθTx0\theta^{T}x \ll0, изображение выглядит следующим образом:

在这里插入图片描述

наблюдать за изображением, когдаy=1y=1час,zzстановится больше, а стоимость уменьшается.Чтобы получить более высокую точность предсказания, SVM выпрямляет кривую в полилинию, принимаяz=1z=1является поворотным моментом, предыдущая логистическая регрессия былаz=θTx0z=\theta^{T}x \gg0, прогнозируемый результат близок кy=1y=1, теперь SVM меняется наz=θTx1z=\theta^{T}x \gg1, прогнозируемый результат близок кy=1y=1. когдаy=0y=0То же время. мы будемy=1,y=0y=1,y=0Когда две новые функции стоимости названы какCost1(z),Cost0(z)Cost_1(z),Cost_0(z), изображение выглядит следующим образом:

在这里插入图片描述

Заменить в функции стоимости логистической регрессииCostCost, мы можем получить функцию стоимости машины опорных векторов:

J(θ)=1mi=1m[y(i)Cost1(θTx(i))+(1y(i))Cost0(θTx(i))]+λ2mj=1nθj2J(\theta)=\frac{1}{m}\sum\limits_{i=1}^m [y^{(i)}Cost_1(\theta^T x^{(i)})+(1-y^{(i)})Cost_0(\theta^T x^{(i)})]+\frac{\lambda}{2m}\sum\limits_{j=1}^{n}\theta_j^2

минимизировать стоимость

SVM определяет свой процесс минимизации стоимости прогнозирования как:

minθCi=1m[y(i)Cost1(θTx(i))+(1y(i))Cost0(θTx(i))]+12j=1nθj2\mathop{min}\limits_{\theta} C\sum\limits_{i=1}^m [y^{(i)}Cost_1(\theta^T x^{(i)})+(1-y^{(i)})Cost_0(\theta^T x^{(i)})]+\frac{1}{2}\sum\limits_{j=1}^{n}\theta_j^2

Как можно видетьλm\frac{\lambda}{m}После извлечения функция стоимости приведенного выше SVM может быть просто описана как:CA+BCA+B, нетрудно понять, что функция стоимости логистической регрессии также может быть просто описана как:A+λBA+\lambda B.

На самом деле логистическая регрессия выполняетсяλ\lambdaдля настройки весов, а SVM преобразует ихCCдля регулировки веса. ФактическиCCможно считать эквивалентным1λ\frac{1}{\lambda}.

Гипотетическая функция

Когда параметры получаются путем минимизацииθ\thetaПосле этого можно подставить следующую гипотетическую функцию для предсказания:

hθ(x)={1if  θTx00otherwiseh_{\theta}(x)=\begin{cases}1&if\;\theta^T x\geqslant0 \\0&otherwise\end{cases}

Большая маржинальная интуиция

В функции стоимости предыдущего SVM мы узнали, что когдаy=1y=1, SVM ожидаетθTx1\theta^{T}x \gg1; и когдаy=0y=0, SVM ожидаетθTx1\theta^{T}x \ll-1. иCCиспользуется для регулировки веса. Рассмотрим частный случай, предположимCCзадается очень большим, то в процессе минимизации функции стоимости нам понадобится промежуточное значениеAAТо есть первый член функции стоимости равенy=1,y=0у=1, у=0всегда для00, что превращает задачу минимизации в задачу минимизации второго членаBBПроблема:

min12j=1nθj2          s.t{θTx(i)1if  y(i)=1θTx(i)1if  y(i)=0min \dfrac{1}{2}\sum\limits_{j=1}^{n}\theta_j^2 \;\;\;\;\; s.t\begin{cases}\theta^Tx^{(i)}\geqslant 1&if\;y^{(i)}=1 \\\theta^T x^{(i)}\leqslant -1&if\;y^{(i)}=0\end{cases}

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

在这里插入图片描述

Математический вывод

Сначала просмотрите знания о векторном скалярном продукте. Предположим, что есть два двумерных вектораuuиvv:

u=[u1u2],v=[v1v2]u=\begin{bmatrix}u_1\\u_2\end{bmatrix},v=\begin{bmatrix}v_1\\v_2\end{bmatrix}

Мы делаем геометрическую диаграмму, чтобы представить ее интуитивно, и пустьppВыражается какvvпо прогнозамuuдлина, как показано на рисунке:

[Не удалось передать изображение по внешней ссылке, исходный сайт может иметь механизм защиты от пиявки, рекомендуется сохранить изображение и загрузить его напрямую (img-eZnPmNta-1628350970614)(/imgs/vector inner product.PNG)]

Тогда векторный внутренний продукт:(u,v)=uTv=pu=u1v1+u2v2(u,v)=u^T v=p\cdot ||u||=u_1v_1+u_2v_2

в,u=u12+u22||u||=\sqrt{u_1^2+u_2^2}заuuнорма, также известная как длина. должны знать о том,ppявляется числом со знаком, когда векторu,vu,vКогда прилежащий угол больше 90°,ppявляется отрицательным числом.

Вернувшись в SVM, мы предполагаем, что есть два параметраθ\theta,Сейчасθ=[θ1θ2]\theta=\begin{bmatrix}\theta_1\\\theta_2\end{bmatrix}, и разрешиθ0=0\theta_0=0, чтобы игнорировать перехват, так что векторθ\thetaмимо источника, то:

min12j=1nθj2=min12j=1n(θ12+θ12)=min12j=1n(θ12+θ12)2=min12j=1nθ\begin{aligned}min \dfrac{1}{2}\sum\limits_{j=1}^{n}\theta_j^2 & =min \dfrac{1}{2}\sum\limits_{j=1}^{n}(\theta_1^2+\theta_1^2)\\&=min \dfrac{1}{2}\sum\limits_{j=1}^{n}(\sqrt{\theta_1^2+\theta_1^2})^2\\&=min \dfrac{1}{2}\sum\limits_{j=1}^{n}||\theta|| \end{aligned}

Видно, что все, что делает SVM, — это минимизирует вектор параметровθ\thetaКвадрат нормы (или длины) .

Дополнительно мы можем получить:θTx(i)=p(i)θ\theta^T x^{(i)}=p^{(i)}\cdot||\theta||,p(i)p^{(i)}во-первыхiiобучающие выборкиx(i)x^{(i)}в векторе параметровθ\thetaпроекция на. Как показано ниже:

在这里插入图片描述

правильноy(i)=1y^{(i)}=1, мы надеемсяp(i)θ1p^{(i)}\cdot||\theta||\geqslant1,еслиp(i)p^{(i)}(В настоящее времяp(i)>0p^{(i)}>0) очень мало, тоθ||\theta||будет очень большим; то же самое верноy(i)=0y^{(i)}=0, мы надеемсяp(i)θ1p^{(i)}\cdot||\theta||\leqslant -1,еслиp(i)p^{(i)}(В настоящее времяp(i)<0p^{(i)}<0) очень мало, тоθ||\theta||будет очень большим, что согласуется с нашим первоначальным желанием минимизировать вектор параметровθ\thetaКвадрат нормы противоречит. Поэтому мы предпочитаемp(i)p^{(i)}достаточно большой.

Функция ядра

определение

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

在这里插入图片描述

Наша предыдущая проблема линейной классификации контента уже обсуждалась, чтобы с помощью прямой линии разделить набор данных и добиться наибольшей границы решения. Для нелинейных задач, прежде чем вспоминать логистическую регрессию, мы должны увеличить количество признаков с помощью сопоставления признаков (комбинации признаков) для выполнения полиномиального подбора. Для SVM полиномиальная регрессия высокого порядка не обязательно вносит существенный вклад, и поэтому использование SVM заключается во введении заранее выбранныхориентир, примерxxс достопримечательностямиl(i)l^{(i)}сходство как новый признакfif_i:

fi=similarity(x,l(i)) f_i = similarity(x,l^{(i)})

мера расстоянияsimilaritysimilarityЭта функция называется функцией ядра. Обычно используемые функции ядра Гаусса:fi=exp(xl(i)22о2)f_i=exp(-\dfrac{||x-l^{(i)}||^2}{2\sigma^2})

  • когдаxxс достопримечательностямиl(i)l^{(i)}Расстояние между примерно00час,fi1f_i \approx 1
  • когдаxxс достопримечательностямиl(i)l^{(i)}Когда расстояние между ними становится достаточно большим,fi0f_i \approx 0

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

Выбор ориентира

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

то есть предположим, что у нас естьmmобразцы, затемl(1)=x(1),l(2)=x(2),..,l(m)=x(m)l^{(1)=x^{(1)}},l^{(2)=x^{(2)}},..,l^{(m)=x^{(m)}}. доступны новые функцииf(i)f^{(i)}:

f(i)=[f0(i)=1f1(i)=similarity(x(i),l(1))...fi(i)=similarity(x(i),l(i))=1...fm(i)=similarity(x(i),l(m))]f^{(i)} = \begin{bmatrix} f_0^{(i)}=1 \\ f_1^{(i)}=similarity(x^{(i)},l^{(1)})\\... \\f_i^{(i)}=similarity(x^{(i)},l^{(i)})=1 \\... \\ f_m^{(i)}=similarity(x^{(i)},l^{(m)}) \end{bmatrix}

Соответственно, окончательный SVM минимизирует стоимость процесса:

minθCi=1m[y(i)Cost1(θTf(i))+(1y(i))Cost0(θTf(i))]+12j=1n=mθj2 \mathop{min}\limits_{\theta} C\sum\limits_{i=1}^m [y^{(i)}Cost_1(\theta^T f^{(i)})+(1-y^{(i)})Cost_0(\theta^T f^{(i)})]+\frac{1}{2}\sum\limits_{j=1}^{n=m}\theta_j^2

Другие функции ядра

  • Полиномиальная функция ядра (Polynomial KerneПриходить)

  • ядро Лапласа

  • Строковая функция ядра (String kernel)

  • Функция ядра хи-квадрат (chi-square kernel)

  • Функция ядра пересечения гистограммы (histogram intersection kernel)

  • и т.д...

Совет по применению SVM

в настоящее времяsklearnСуществует много очень полных наборов инструментов для прямого вызова.Для приложений SVM общие параметрыCCВыбор функции ядра — два наиболее важных параметра применения SVM.

заCCРегулировка фактически связана с параметром регуляризацииλ\lambdaНапротив:

  • низкое смещение,высокая дисперсия, то есть столкнулсяпереоснащениеВремя:уменьшать CCценность.
  • высокое отклонение,низкая дисперсия, то есть столкнулсянедооснащениеВремя:увеличивать CCценность.

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

Когда количество выборок велико, а количество признаков мало, необходимо использовать функцию ядра. заФункция ядра Гаусса,разныео\sigmaЭффект стоимости также отличается:

  • о\sigmaКогда он больше, это может привести к низкой дисперсии и высокому смещению;
  • о\sigmaКогда он мал, это может привести к низкому смещению и высокой дисперсии.

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

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


Прикреплен после реализации кода домашнего задания: