SVM---支持向量机---个人学习笔记

1. 什么是支持向量机?

支持向量机(support vector machine)是一种二分类模型。它的基本模型是定义在特征空间上间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。

支持向量机学习方法按照从简单到复杂可分为:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)以及非线性支持向量机(non-linear support vector machine)。这三种模型的复杂度有浅到深,其中线性可分支持向量机又称为硬间隔支持向量机(hard margin maximization),针对的线性可分训练数据当训练数据接近线性可分时,通过软间隔最大化(soft margin maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧(kernel trick) 及软间隔最大化,学习非线性支持向量机。

当输入空间为欧式空间或离散集合、特征空间为希尔伯特空间时,核函数(kenel function)表示将输入从输入空间映射到特征空间得到特征向量之间的內积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。这样的方法称为核技巧。核方法(kenel method)是比支持向量机更为一般的机器学习方法。

参考:统计学习-李航
凸二次规划

2. 支持向量机的数学原理

2.1 支持向量机的代价函数

了解支持向量机的数学原理,我们要先回顾下逻辑斯蒂回归的内容:

逻辑斯蒂回归模型的假设函数为:

h θ ( x ) = 1 exp ⁡ − θ T x (1) h_\theta(x) = \frac{1} {\exp^{-\theta^{T} x}}\tag1 hθ(x)=expθTx1(1)

图像曲线为:
在这里插入图片描述
图 1 图1 1

逻辑斯蒂回归的代价函数公式(单个样例):

J = − y l o g h θ ( x ) + ( 1 − y ) l o g ( 1 − h θ ( x ) (2) J = -ylogh_{\theta}(x) + (1-y)log(1-h_{\theta}(x)\tag2 J=yloghθ(x)+(1y)log(1hθ(x)(2)

将假设函数带入2后
J = − y l o g 1 1 + exp ⁡ − θ T x − ( 1 − y ) l o g ( 1 − 1 1 + exp ⁡ − θ T x ) (3) J = -ylog\frac{1}{1+\exp^{-\theta^{T} x}} - (1-y)log(1 - \frac{1}{1+\exp^{-\theta^{T} x}})\tag3 J=ylog1+expθTx1(1y)log(11+expθTx1)(3)

当y=1 时,代价函数如下图中蓝色曲线所示:
在这里插入图片描述
图 2 图2 2

当y=0时,代价函数曲线如下图蓝色曲线所示:

在这里插入图片描述
图 3 图3 3

图2 图3的函数曲线我们分别用紫色的函数曲线作近似代替,并且图2中曲线我们命名为 c o s t 1 ( θ T x ) cost_1(\theta^{T}x) cost1(θTx),图3中的曲线我们命名为 c o s t 0 ( θ T x ) cost_0(\theta^{T}x) cost0(θTx)。因此支持向量机的代价函数我们可以这样表示:
m i n θ C ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) + ( 1 − y i ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 (4) \underset{\theta}{min}C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^{T}x^{(i)} + (1-y^{i})cost_0(\theta^{T}x^{(i)})] + \frac{1}2\sum_{i=1}^{n}\theta_j^2\tag4 θminCi=1m[y(i)cost1(θTx(i)+(1yi)cost0(θTx(i))]+21i=1nθj2(4)

因为支持向量机的代价函数最小值跟系数没有关系,所以我们可以去掉m和lambda,另 C = 1 λ C=\frac{1}{\lambda} C=λ1

在这里插入图片描述
支持向量机的假设函数如下图所示,当 θ T x ≥ 0 \theta^{T}x\geq0 θTx0 h θ ( x ) = 1 h_\theta(x)=1 hθ(x)=1,其它情况下为0

在这里插入图片描述

2.2 如何理解支持向量机代价函数的最小化

在2.1中我们掌握了支持向量机代价函数的表达式后,这一节我们主要要掌握代价函数最小化的推理过程,从上节公式4中我们随着我们训练的进行,A部分是要趋近于0的,B中的部分主要是参数 θ \theta θ,所以支持向量机代价函数最小化的过程,也可以看成是最小化B的过程,但B受限于A,因此:
m i n θ 1 2 ∑ j = 1 n θ j 2 (5) \underset{\theta}{min}\frac{1}2\sum_{j=1}^{n}\theta_{j}^{2} \tag 5 θmin21j=1nθj2(5)
s . t . θ T x ( i ) ≥ 1       i f   y ( i ) = 1 s.t. \theta^{T}x^{(i)}\geq 1   if y^{(i)} =1 s.t.θTx(i)1   if y(i)=1
θ T x ( i ) ≤ − 1     i f   y ( i ) = 0 \theta^{T}x^{(i)}\leq -1  if y^{(i)} =0 θTx(i)1  if y(i)=

θ T x ( i ) \theta^{T}x^{(i)} θTx(i)其实是向量的內积 p ( i ) ⋅ ∣ ∣ θ ∣ ∣ p^{(i)}\cdot||\theta|| p(i)θ, p ( i ) 是 向 量 x ( i ) 在 θ 上 的 投 影 p^{(i)}是向量x^{(i)}在\theta上的投影 p(i)x(i)θ,而公式5就可以看作向量的模 1 2 ∣ ∣ θ ∣ ∣ \frac{1}2||\theta|| 21θ,所以SVM的代价函数最小化的过程也可以表示为:
m i n θ 1 2 ∣ ∣ θ ∣ ∣ (6) \underset{\theta}{min}\frac{1}2 ||\theta||\tag 6 θmin21θ(6)
s . t . { p ( i ) ⋅ ∣ ∣ θ ∣ ∣ ≥ 1   , y ( i ) = 1 p ( i ) ⋅ ∣ ∣ θ ∣ ∣ ≤ − 1   , y ( i ) = 0 s.t. \left\{ \begin{aligned} p^{(i)}\cdot||\theta||\geq{1}  , y^{(i)} =1\\ p^{(i)}\cdot||\theta||\leq{-1}  , y^{(i)} =0 \end{aligned} \right. s.t.{ p(i)θ1 ,y(i)=1p(i)θ1 ,y(i)=

2.3 核函数(kernels)

前面两节主要针对线性可分数据,如果是线性不可分数据,我们就要用到核函数技巧。
在这里插入图片描述

大致的技巧就是我们用 特 征 [ f 1 , f 2 , f 3 , f 4 , f 5 ] 取 代 特 征 [ x 1 , x 2 , x 1 x 2 , x 1 2 , x 2 2 ] 特征[f_1, f_2, f_3, f_4, f_5]取代特征[x_1, x_2, x_1x_2, x_1^2, x_2^2] [f1,f2,f3,f4,f5][x1,x2,x1x2,x12,x22]。这样就相当于将高幂特征转换为低幂特征。下面就是要了解如何求解 特 征 [ f 1 , f 2 , f 3 , f 4 , f 5 ] 特征[f_1, f_2, f_3, f_4, f_5] [f1,f2,f3,f4,f5]

对于给定样本(x,y)的空间上我们手动设置标记点 l 1 , l 2 , l 3 . . . . . l_1, l_2, l_3..... l1,l2,l3.....,记为landmark向量,通过计算原始向量与landmark向量之间的相似度来表示特征 f 1 , f 2 , f 3 . . . . f_1, f_2, f_3.... f1,f2,f3....,如下图所示

在这里插入图片描述
因此,我们能够发现:
x ≈ l ( 1 ) 时 , f 1 ≈ 1 x \approx l^{(1)}时,f_1 \approx 1 xl(1)f11
x 距 离 l ( 1 ) 很 远 时 , f 1 ≈ 0 x距离l^{(1)}很远时,f_1 \approx 0 xl(1)f10

假设当 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 ≥ 0 \theta_0 + \theta_1f_1 + \theta_2f_2 + \theta_3f_3\geq0 θ0+θ1f1+θ2f2+θ3f30时,我们预测样本为“1”(根据前面的假设函数定义得出),假设 θ 0 = − 0.5 , θ 1 = 1 , θ 2 = 1 , θ 3 = 0 \theta_0 =-0.5, \theta_1=1,\theta_2=1, \theta_3=0 θ0=0.5θ1=1θ2=1θ3=0。那么对于下图中给定的样本x,我们可以计算出 f 1 ≈ 1 , f 2 ≈ 0 , f 3 ≈ 0 f_1\approx1, f_2\approx0, f_3\approx 0 f11,f20,f30,带入上式可得知 θ 0 + θ 1 ⋅ 1 + θ 2 ⋅ 0 + θ 3 ⋅ 0 = 0.5 > 0 ; \theta_0 + \theta_1\cdot1 + \theta_2 \cdot 0 + \theta_3 \cdot 0 = 0.5 >0; θ0+θ11+θ20+θ30=0.5>0;,所以预测样本X的类别为“1”。而对于大量的样本,就能得到一个非线性的决策边界,如下图中所示:
在这里插入图片描述
最后,如何设置 l ( 1 ) , l ( 2 ) , l ( 3 ) … l^{(1)}, l^{(2)},l^{(3)}\dots l(1),l(2),l(3)了?其实很简单,在刚开始训练时,我们只需把训练集中的样本一一对应成 l ( 1 ) , l ( 2 ) , l ( 3 ) … l^{(1)}, l^{(2)},l^{(3)}\dots l(1),l(2),l(3)即可,即给定 { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}),....., (x^{(m)}, y^{(m)})\} { (x(1),y(1)),(x(2),y(2)),.....,(x(m),y(m))},令 l ( 1 ) = x ( 1 ) , l ( 2 ) = x ( 2 ) , l ( 3 ) = x ( 3 ) … l ( m ) = x ( m ) l^{(1)}=x^{(1)}, l^{(2)}=x^{(2)},l^{(3)}=x^{(3)}\dots l^{(m)}=x^{(m)} l(1)=x(1),l(2)=x(2),l(3)=x(3)l(m)=x(m)如下图所示:
在这里插入图片描述
所以,对于样本x,我们可以得到如下特征 f = [ f 1 , f 2 , . . . . f m ] T f=[f_1, f_2, ....f_m]^{T} f=[f1,f2,....fm]T:
f 1 = s i m i l a r i t y ( x , l ( 1 ) ) f 2 = s i m i l a r i t y ( x , l ( 2 ) ) f 3 = s i m i l a r i t y ( x , l ( 3 ) ) … \left. \begin{aligned} f_1 = similarity(x,l^{(1)}) \\ f_2 = similarity(x,l^{(2)} )\\ f_3 = similarity(x,l^{(3)} )\\ \dots \end{aligned} \right. f1=similarity(x,l(1))f2=similarity(x,l(2))f3=similarity(x,l(3))
其中, s i m i l a r i t y ( x , l ( i ) ) = e x p ( − ∣ ∣ ∣ x − l ( i ) ∣ ∣ 2 2 δ 2 ) similarity(x, l^{(i)}) = exp(-\frac{|||x-l^{(i)}||^{2}}{2\delta^2}) similarity(x,l(i))=exp(2δ2xl(i)2),而带核函数的SVM代价函数就变为:
m i n θ C ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T f ( i ) + ( 1 − y i ) c o s t 0 ( θ T f ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 \underset{\theta}{min}C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^{T}f^{(i)} + (1-y^{i})cost_0(\theta^{T}f^{(i)})] + \frac{1}2\sum_{i=1}^{n}\theta_j^2 θminCi=1m[y(i)cost1(θTf(i)+(1yi)cost0(θTf(i))]+21i=1nθj2

3. 支持向量机的使用建议

SVM算法模型面世已经几十年,相关算法软件包已经非常成熟,我们没必要自己从头开始做一个实现代码,只需要针对特定的场景选择合适的算法模型,设置合理的参数即可

SVM模型中参数 C , δ 2 C ,\delta^2 C,δ2对模型的影响总结如下:
在这里插入图片描述

对于逻辑回归和SVM,吴恩达老师就总结出了几个非常好的规则供我们参考:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jackhh1/article/details/119295590