鸣谢
本文引用了下列文章或书籍
1.《机器学习》俗称西瓜书,作者:周志华
2.用讲故事的办法帮你理解SMO算法
3.吴恩达CS299课堂资料
说到支持向量机,首先得介绍一些基础知识,现在开始。
凸集
凸集定义:集合C内任意两点连成的**线段(注意和仿射集的区别)**都在集合C内,则C为凸集。
举个例子:
显然上图中,左图是凸集,右边那个像肾一样的肯定不是凸集~
凸包
凸包定义:包含集合C的最小凸集,为集合C的凸包。
仿射集
定义:通过集合内中任意两不同点的直线,该直线仍在集合内,则该集合为仿射集
感性认识:即这个集合是“平的”是“直的”,换句话说即它是“线性的”
仿射集的例子:直线,平面,超平面
显然仿射集都是凸集,凸集不一定是仿射集。
拉格朗日乘数法
假设有优化问题:
min f(x)
s.t. Fi(x)<=0 i=1,2,…,n
上述优化问题的意思是,我要求f(x)的最小值,并且有如下约数条件
- F1(x)<=0
- F2(x)<=0
…
n. Fn(x)<=0
我们要求解上述优化问题,可以使用拉格朗日乘数法,即构造一个函数L,其中:
L = f(x) + ∑ i = 1 n λ i F i ( x ) \sum_{i=1}^n\lambda_iF_i(x) ∑i=1nλiFi(x)
然后将L对λ,x求导,使导数都为0,联立方程组可以求出原解析问题的解。
超平面
什么是超平面?听上去好像很牛逼的样子?其实是一个很简单的概念,简单点说就是:二维空间的超平面为一维直线,三维空间的超平面为二维平面…以此类推,n维空间的n-1维仿射集为n为空间的超平面。
举个例子:
上图就是一个二维空间的超平面,什么?这TM不是一根直线么?
可不就是在骗你…啊呸!可不就是一条直线么?这就是伟大的数学家的定义啊!
三维空间中的超平面就是一个空间里的平面,就像这样:
是不是有点感觉了?没错:二维空间的超平面为一维直线,三维空间的超平面为二维平面…以此类推,n维空间的n-1维仿射集为n为空间的超平面。
下面给出超平面的数学公式:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
其中W(W1,W2,W3,W4,…,Wn)为法向量,决定了超平面的方向。
b为位移项,决定了超平面在方向上的“位置”。
是不是有一点抽象,不用怕,我们继续用二维空间来举例子。
图中的两条直线分别为:
X1+X2+1=0和X1+X2+2=0
对照上面的公式,发现:
W1=W2=(1,1)
b1=1
b2=2
按照定义,W为法向量,我们来画一画试试:
哎哟卧槽?还真是法向量!怎么样?老夫没有忽悠你吧?
接下来看b,很容易发现这两条直线是平行的,唯一不同的就是这两条直线在它们的法向量的方向的“位置”不同,没错,这个b就是直线在它的法向量上的“位置”。
先导知识介绍完毕了,现在开始正戏。
支持向量机(SVM)基本模型
老规矩,没有图我说个J8,先来看一张图:
先忽略掉图中平行的两根细直线,暂时不管它。
很明显图中有+和-两种类别的样本,我们现在要想一个办法,找一个超平面,来把它分成两个类别,图中划了好多个超平面,都能达到我们的目的。
但是,有这么多超平面,只有一个才是我们要选择的,其实大家心里都有一杆秤,只要你不是太奇葩,总会觉得那根“最粗最大”的超平面才是我们想要的。
但是为啥我们要选择那个超平面呢?难道是因为它“最粗最大”?放肆! 老夫是那么肤浅的人吗?
没错,那个“最粗最大”的超平面看起来最顺眼,为啥最顺眼,因为它正好在两个类别的“中间”啊!它划分的最平均啊,选择他的话能够尽量减少划分错误的可能性,因为它不会偏向两边任何一个类,用它来分类最“公正”。换而言之,用它来划分结果是最鲁棒的。
好!就决定是你了!“粗大君”!我们设这个“粗大”的超平面为:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
它可以将空间分成两类:
1.
w
T
x
+
b
>
0
w^Tx+b>0
wTx+b>0
2.
w
T
x
+
b
<
0
w^Tx+b<0
wTx+b<0
是不是被老夫精妙的操作给震慑住了?
我来解释一下,如图所示(该图只是举个例子,具体数值没有意义),超平面将二维空间分成了红色和蓝色两类:
好了,这下总算有个如何分类的方针了,可是最重要的事情还没讲呢!那就是这个划分类型的超平面该如何确定呢?回到这张图:
生成两个样本集合的凸包,然后在凸包的支持向量上做切线,找到其中两个切线平行且方向相反且距离最大的那对切线,就是图中这两条虚线。然后找到这两个虚线“中间”的那个超平面(也就是这两条直线的垂线的垂直平分线)就是图中的实线。
那么问题来了,如何保证存在平行切线?
答:使数据集线性可分。
如何使数据线性可分呢?答案就是核函数。
核函数在后面提。
现在我们已经找到了,两条虚线(凸包的切线):
{
w
T
x
i
+
b
>
=
+
1
,
y
i
=
+
1
w
T
x
i
+
b
<
=
−
1
,
y
i
=
−
1
\begin{cases} w^Tx_i+b>=+1,y_i=+1\\ w^Tx_i+b<=-1,y_i=-1\\ \end{cases}
{wTxi+b>=+1,yi=+1wTxi+b<=−1,yi=−1
归纳一下就是:
y
i
(
w
T
x
i
+
b
)
>
=
+
1
y_i(w^Tx_i+b)>=+1
yi(wTxi+b)>=+1
这个公式的意思就是:
当第i个样本的特征xi带入公式大于等于1的时候分为正类,也就是图中的“+”类
当第i个样本的特征xi带入公式小于等于-1的时候分为负类,也就是图中的“-”类
那么为什么一定是1呢?这个1和-1是缩放得到的,其实原式应该写为:
w
T
x
i
+
b
>
=
+
δ
,
δ
∈
R
w^Tx_i+b>=+δ,δ ∈ R
wTxi+b>=+δ,δ∈R
w
T
x
i
+
b
<
=
−
δ
,
δ
∈
R
w^Tx_i+b<=-δ,δ ∈ R
wTxi+b<=−δ,δ∈R
由于
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0是平分线,所以两边的距离是相等的,所以等式右边可以保证绝对值相等。又因为等式左边的系数w和b代表着任意实数(只不过是一个代号而已),所以可以任意缩放。
如图所示,距离超平面最近的几个点正好在虚线对应的超平面上,也就是样本中可以让这两个不等式取“等号”的点。
于是数学家们给这几个点取了一个牛逼的名字,即“支持向量”,而这两条虚线的距离为
γ
=
2
∣
∣
w
∣
∣
\gamma=\frac{2}{||w||}
γ=∣∣w∣∣2
我知道肯定有的同学不知道这个分数下面的||w||是啥意思,不要着急,容老夫慢慢道来。
想必各位高中都学过平行直线距离公式吧,什么?忘了?没关系,让老夫来帮你回忆回忆。
设两条直线公式分别为:
Ax1+Bx2+C1=0
Ax1+Bx2+C2=0
那么这两条直线的距离公式为:
∣
C
1
−
C
2
∣
A
2
+
B
2
\frac{|C1-C2|}{\sqrt[]{A^2+B^2}}
A2+B2∣C1−C2∣
带入上面这个公式:
γ
=
2
∣
∣
w
∣
∣
\gamma=\frac{2}{||w||}
γ=∣∣w∣∣2
是不是发现了|C1-C2|=2,而下面的||w||=
A
2
+
B
2
\sqrt[]{A^2+B^2}
A2+B2。
好了,现在来解释这个||w||就轻松多了,假设w为一个向量(w1,w2,…,wn)那么||w||=
w
1
2
+
w
2
2
+
.
.
.
+
w
n
2
\sqrt[]{w_1^2+w_2^2+...+w_n^2}
w12+w22+...+wn2,称为w的范数。
言归正传,这两个虚线的距离被称作“间隔”,很直观的理解就是把两个划分开的“间隔”,显然要分类效果尽可能的好的话,这个“间隔”就要尽可能的大!而要让这个“间隔”尽可能的大,就要让这个γ尽可能的大,换而言之就是要让处于分母位置的||w||尽可能的小,也就是让||w||²尽可能的小。于是我们得到了支持向量机的基本模型:
min
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2
s.t.
y
i
(
w
T
x
i
+
b
)
>
=
1
y_i(w^Tx_i+b)>=1
yi(wTxi+b)>=1 ,i=1,2,…,m
求解支持向量机基本模型
看到这个优化问题的样子,我们是不是第一反应就是拉格朗日乘数法!!
没有错!对支持向量机基本模型使用拉格朗日乘数法,得到如下式子:
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^m\alpha_i(1-y_i(w^Tx_i+b)) L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))
然后我们用L对w,b分别求偏导,得到:
w
=
∑
i
=
1
m
α
i
y
i
x
i
w=\sum_{i=1}^m\alpha_iy_ix_i
w=∑i=1mαiyixi
0
=
∑
i
=
1
m
α
i
y
i
0=\sum_{i=1}^m\alpha_iy_i
0=∑i=1mαiyi
将上述结果再回代入L中,得到对偶问题:
m
a
x
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
max_\alpha\quad\sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j
maxα∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxj
此时的约束条件变成了:
s.t.
∑
i
=
1
m
α
i
y
i
=
0
\quad\sum_{i=1}^m\alpha_iy_i=0
∑i=1mαiyi=0
α
i
>
=
0
,
i
=
1
,
2
,
.
.
.
,
m
\ \ \quad\quad\alpha_i>=0,\quad i=1,2,...,m
αi>=0,i=1,2,...,m
解出来α之后,再求出w和b就可以得到最后的结果啦:
f
(
x
)
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
b
f(x)=\sum_{i=1}^m\alpha_iy_ix_i^Tx+b
f(x)=i=1∑mαiyixiTx+b
很显然,如果当x维度很高的话,这个方程会十分难解,为了避免这个问题,数学家们又想了一个歪…哦不,高招。
我们的高招,SMO算法华丽登场!
在介绍SMO之前,我们需要介绍KKT条件。
KKT条件
首先我们有:
一般优化问题的拉格朗日乘数法:
minimize
f
0
(
x
)
,
x
∈
R
f_0(x),\quad x\in R
f0(x),x∈R
subject to
f
i
(
x
)
<
=
0
,
i
=
1
,
2
,
.
.
.
.
,
m
f_i(x)<=0,\quad i=1,2,....,m
fi(x)<=0,i=1,2,....,m
h
j
(
x
)
=
0
,
j
=
1
,
2
,
.
.
.
.
,
p
h_j(x)=0,\quad \ \ j=1,2,....,p
hj(x)=0, j=1,2,....,p
求出的拉格朗日函数为:
L
(
x
,
λ
,
v
)
=
f
0
(
x
)
+
∑
i
=
1
m
λ
i
f
i
(
x
)
+
∑
j
=
1
p
v
j
h
j
(
x
)
L(x,\lambda,v)=f_0(x)+\sum_{i=1}^m\lambda_if_i(x)+\sum_{j=1}^pv_jh_j(x)
L(x,λ,v)=f0(x)+∑i=1mλifi(x)+∑j=1pvjhj(x)
该拉格朗日函数的对偶函数为:
g
(
λ
,
v
)
=
inf
L
(
x
,
λ
,
v
)
=
inf
(
f
0
(
x
)
+
∑
i
=
1
m
λ
i
f
i
(
x
)
+
∑
i
=
1
p
v
i
h
i
(
x
)
)
g(\lambda,v)=\inf L(x,\lambda,v)=\inf(f_0(x)+\sum_{i=1}^m\lambda_if_i(x)+\sum_{i=1}^pv_ih_i(x))
g(λ,v)=infL(x,λ,v)=inf(f0(x)+∑i=1mλifi(x)+∑i=1pvihi(x))
若我们要通过求对偶问题的解来求原问题的解,即需要对偶函数的最大值就是原问题的最小值。即:
g
(
λ
∗
,
v
∗
)
\quad \quad g(\lambda^*,v^*)
g(λ∗,v∗)
=
inf
(
f
0
(
x
)
+
∑
i
=
1
m
λ
i
∗
f
i
(
x
)
+
∑
i
=
1
p
v
i
∗
h
i
(
x
)
)
\quad =\quad \inf(f_0(x)+\sum_{i=1}^m\lambda_i^*f_i(x)+\sum_{i=1}^pv_i^*h_i(x))
=inf(f0(x)+∑i=1mλi∗fi(x)+∑i=1pvi∗hi(x))
<
=
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
i
∗
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
∗
h
i
(
x
∗
)
)
\quad <= \ f_0(x^*)+\sum_{i=1}^m\lambda_i^*f_i(x^*)+\sum_{i=1}^pv_i^*h_i(x^*))
<= f0(x∗)+∑i=1mλi∗fi(x∗)+∑i=1pvi∗hi(x∗))
<
=
f
0
(
x
)
\quad <= \ f_0(x)
<= f0(x)
也就是要让上面两个不等式取等号。
要让第一个不等式取等号,即使x*为函数的驻点,即函数对x求导数为0
要让第一个不等式取等号,由于hi(x)=0,所以得要求λf(x)=0,所以得到如下约束:
{
f
i
(
x
∗
)
<
=
0
,
i
=
1
,
2
,
.
.
.
,
m
h
i
(
x
∗
)
=
0
,
i
=
1
,
2
,
.
.
.
,
p
λ
i
∗
>
=
0
,
i
=
1
,
2
,
.
.
.
,
m
λ
i
∗
f
i
(
x
∗
)
=
0
,
i
=
1
,
2
,
.
.
.
,
m
∇
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
i
∗
∇
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
∗
∇
h
i
(
x
∗
)
)
=
0
\begin{cases} f_i(x^*)<=0,\quad i=1,2,...,m\\ h_i(x^*)=\ \ \ 0,\quad i=1,2,...,p\\ \lambda_i^*\ \ >=\quad \ 0,\quad i=1,2,...,m\\ \lambda_i^*f_i(x^*)=0,\quad i=1,2,...,m\\ \nabla f_0(x^*)+\sum_{i=1}^m\lambda_i^*\nabla f_i(x^*)+\sum_{i=1}^pv_i^*\nabla h_i(x^*))=0\\ \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧fi(x∗)<=0,i=1,2,...,mhi(x∗)= 0,i=1,2,...,pλi∗ >= 0,i=1,2,...,mλi∗fi(x∗)=0,i=1,2,...,m∇f0(x∗)+∑i=1mλi∗∇fi(x∗)+∑i=1pvi∗∇hi(x∗))=0
SMO算法
拉格朗日对偶问题我们都会解,但是一旦数据集很大的话,求解过程就会十分复杂
max
∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j ∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxj
s.t.
∑
i
=
1
m
α
i
y
i
=
0
\sum_{i=1}^m\alpha_iy_i=0
∑i=1mαiyi=0
α
i
>
=
0
,
i
=
1
,
2
,
.
.
.
,
m
\alpha_i>=0,\quad i=1,2,...,m
αi>=0,i=1,2,...,m
需要有一个优化的算法来求解这个复杂的问题,即SMO算法
因为直接求解超平面十分困难,我们从另外一个角度来思考问题,首先:
我们设最优超平面为g(x)。那么按照SVM的理论,如果这个g(x)是最优的分离超平面,就有:
{
f
i
(
x
∗
)
<
=
0
,
i
=
1
,
2
,
.
.
.
,
m
h
i
(
x
∗
)
=
0
,
i
=
1
,
2
,
.
.
.
,
p
λ
i
∗
>
=
0
,
i
=
1
,
2
,
.
.
.
,
m
λ
i
∗
f
i
(
x
∗
)
=
0
,
i
=
1
,
2
,
.
.
.
,
m
∇
f
0
(
x
∗
)
+
∑
i
=
1
m
λ
i
∗
∇
f
i
(
x
∗
)
+
∑
i
=
1
p
v
i
∗
∇
h
i
(
x
∗
)
)
=
0
\begin{cases} f_i(x^*)<=0,\quad i=1,2,...,m\\ h_i(x^*)=\ \ \ 0,\quad i=1,2,...,p\\ \lambda_i^*\ \ >=\quad \ 0,\quad i=1,2,...,m\\ \lambda_i^*f_i(x^*)=0,\quad i=1,2,...,m\\ \nabla f_0(x^*)+\sum_{i=1}^m\lambda_i^*\nabla f_i(x^*)+\sum_{i=1}^pv_i^*\nabla h_i(x^*))=0\\ \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧fi(x∗)<=0,i=1,2,...,mhi(x∗)= 0,i=1,2,...,pλi∗ >= 0,i=1,2,...,mλi∗fi(x∗)=0,i=1,2,...,m∇f0(x∗)+∑i=1mλi∗∇fi(x∗)+∑i=1pvi∗∇hi(x∗))=0
姑且称这个叫g(x)目标条件吧。根据已有的理论,上面的推导过程是可逆的。也就是说,只要我能找到一个α,它能满足g(x)目标条件,那么这个α就是对偶问题的最优解。
SMO算法思路
首先,初始化一个α,让它满足对偶问题的两个初始限制条件,然后不断优化它,使得由它确定的分离超平面满足g(x)目标条件,在优化的过程中始终确保它满足初始限制条件,这样就可以找到最优解。
那么如何优化α呢?
遵循如下两个基本原则:
1.每次优化时,必须同时优化α的两个分量,因为只优化一个分量的话,新的α就不再满足初始限制条件中的等式条件了。
2.每次优化的两个分量应当是违反g(x)目标条件比较多的。就是说,本来应当是大于等于1的,越是小于1违反g(x)目标条件就越多,这样一来,选择优化的两个分量时,就有了基本的标准。
于是,先选一个违反目标条件最多的α1。如何选α2呢,先给出方法:
E i = g ( x i ) − y i E_i=g(x_i)-y_i Ei=g(xi)−yi
首先,Ei为第i个样本预测的误差。
选取α2的标准就是取所有α中|E1-E2|最大的那个。
因为优化的方向是使目标函数(代价)变小的方向,所以当取了第一个α1之后,我们应该选的α2,它的误差应该与α1的误差方向相反且相差最远。比如E1是正的,我们要使优化后目标函数变小,我们最好应该选个负的E2,且越负越好。
于是这样每次只用选两个α进行优化,其它α看作定值,这样把N个解的问题,转换成了两个变量求解的问题
核函数
核函数是干嘛的?你百度半天可能都得不出结果,让老夫来好好忽悠…哦不,好好教导你吧!我们来举个例子:
这个图上有四个点,两个“+”和两个“-”,老夫让你用一个超平面(也就是画一条直线)将它们分类,你能行吗?没错!你不行,其实老夫也不行,各大数学家也不行啊,所有人都只能画像图上那样的曲线才能达到分类的效果,当初这个问题可把数学家们愁坏了。这可咋整啊?
终于,有一个骨骼清奇的骚年想了一个高招,我们给这几个点再加一个维度不就成了?让他们到三维空间里去,不就能用一个超平面来分类了?如图所示:
没错,单纯的给每个点加一个“Z”坐标,让他们从二维的变成三维的,这就是一种十分简单的核函数。
现在你们知道核函数是干嘛了的吧,没错,就是将低维线性不可分的数据映射到高维,从而使它们线性可分的"函数"。
常用的几个比较牛逼的核函数如下:
看到上面这些"骨骼清奇"的核函数,是不是有一种被吓尿了的感觉?这他娘的都是啥子玩意哦?!不要怕,这些家伙本质上和上面我介绍的那种单纯的加一个"Z"坐标的核函数是一样的。甚至这些函数比我说的那个核函数还要"low"。为啥?让老夫细细说来:
首先,作为初学者的你,看到上面这些"如同瞎扯"一般的公式,第一反应肯定是,这他娘的是咋来的哦?长了个什么样的脑子的人才能想出这种鸟玩意来?
我来告诉你,其实这些函数,从某种意义上来说,都是…瞎…写…的! 没错!就是瞎写的!
这些函数其实是几十年来,数学家们在成千上万次实验中总结出来的经验之谈(说的难听点就是瞎凑出来的函数,效果比较好,但是为啥效果好就只有老天爷知道了)
这也是我上面说这些函数比我举例子的那个简单核函数还要"low"的原因,因为我那个核函数至少能保证让数据映射到高维之后真的线性可分。而用这些奇形怪状的核函数对数据进行映射了之后,就没人知道会发生啥情况了,只能看最终效果好不好,不好咱就在换一个。没错…
换…一…个!
上文讨论的都是硬间隔SVM,软间隔SVM与硬间隔的原理类似,只是多了一项松弛因子。
软间隔SVM
干点实事儿。如图所示:
先不看那两条虚线,我们来看看中间那个,根据我们上面所说的,显然用它可以将整个二维空间分成两类,而且显然使用这种方式来分类+类别和-类别效果还不错的样子。
那我们是不是大功告成了呢?我们这样分就好了呢?
我们来考虑一个问题,如果出现这种情况呢?如图所示:
这下是不是有点懵了?这TM是啥啊?没错,如果仅采用[外链图片转存失败(img-2cFWpSAB-1563502288844)(https://img-blog.csdn.net/20171023165247185?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQ3NTQ3OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]这个超平面来很“生硬”的将空间分为非黑即白的两种类型,是不是太严格了呢?如果数据的两种类别本身就不是那么的泾渭分明呢?就像图中一样,这样划分是不是有些太“死板”了。
为了解决这种问题,数学家们想了一个办法,俗话说“水至清则无鱼”,“做人留一线”,一刀割太死板了,我们来设置一个缓冲地带吧!
没错!就是图中的两个虚线中间的区域,数学家规定落入这个区域内的样本我们已经分类正确了(换而言之就是不管它们了,无视掉),他们的特征本身就不那么“明显”,那么我们干嘛还要为此“劳神”呢?老子不管你了还不成?没错!就是这么简单!数学家们给这个方法取了个名字叫做“soft margin”。
当然,软间隔SVM除了不考虑落在缓冲带的点以外,还可以**单独(在计算支持向量时仍然不考虑它们)**计算它们的损失,比如把目标函数修改为如图:
min
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
l
0
/
1
(
y
i
(
w
T
x
i
+
b
)
−
1
)
\frac{1}{2}||w||^2+C\sum_{i=1}^ml_{0/1}(y_i(w^Tx_i+b)-1)
21∣∣w∣∣2+C∑i=1ml0/1(yi(wTxi+b)−1)
其中C>0是一个常数,
l
0
/
1
l_{0/1}
l0/1是“0/1损失函数”
l
0
/
1
=
{
1
,
i
f
z
<
0
;
0
,
o
t
h
e
r
w
i
s
e
.
l_{0/1}=\begin{cases} 1, \quad if\ z<0;\\ 0, \quad \ otherwise.\\ \end{cases}
l0/1={1,if z<0;0, otherwise.
显然当C无穷大时,会变回硬间隔SVM,C取0时就是我上面说的完全不考虑这些点啦。
软间隔SVM还有许多计算损失的函数:
hinge损失:
l
h
i
n
g
e
(
z
)
=
max
(
0
,
1
−
z
)
;
l_{hinge}(z)=\max(0,1-z);
lhinge(z)=max(0,1−z);
指数损失(exponential loss):
l
e
x
p
(
z
)
=
exp
(
−
z
)
;
l_{exp}(z)=\exp(-z);
lexp(z)=exp(−z);
对率损失(logistic loss):
l
l
o
g
(
z
)
=
log
(
1
+
exp
(
−
z
)
)
;
l_{log}(z)=\log (1+\exp(-z));
llog(z)=log(1+exp(−z));
本文就不详解啦。
本文中的观点仅代表个人浅见,如标题所写,仅为戏言尔。
不过若能帮助到您也是我的荣幸。