目录
线性可分(Linear Separable):存在一条直线,可以分开⚪和×;
线性不可分(Nonlinear Separable):不存在一条直线,可以分开⚪和×;


放在三位空间中就变成了一个平面:

由于人眼仅限于三维空间,所以我们需要借助数学来对线性可分和线性不可分给出一个精确的定义。
同样先以二维做例子:
需要注意的是,这个w1和w2是人为设定的,如果反一下的话,符号也要反一下。

我们可以假设有N个训练样本和标签,{(x1,y1),(x2,y2),……,(xn,yn)},其中,若xi属于c1,则yi = + 1,否则yi = -1.
线性可分的严格定义:
一个训练样本集{(x1,y1),(x2,y2),……,(xn,yn)},在 i = 1~N线性可分,是指存在(w1,w2,b)使得对 i = 1~N,有:
(1)若 yi = +1,则w1·xi1 + w2·xi2 + b > 0
(2)若 yi = - 1,则w1·xi1 + w2·xi2 + b < 0
用向量形式作简化:
x i = [ ( x i 1 x i 2 ) " role="presentation" style="position: relative;"> ] T ω i = [ ( ω 1 ω 2 ) " role="presentation" style="position: relative;"> ] T (1)若
" role="presentation" style="position: relative;"> = + 1,则 y i ω T ⋅ x i + b > 0 " role="presentation" style="position: relative;">(2)若
" role="presentation" style="position: relative;"> = - 1,则 y i ω T ⋅ x i + b < 0 " role="presentation" style="position: relative;">
从前面可以引出一个问题:在无数多个分开各个类别的超平面中,到底哪一个最好呢?
例如下面三条线,哪一条更好?

大多人应该都会选择2号线,根据没有免费午餐定理,每一条线的表现应该是一样的。这里就需要考虑训练样本的位置在特征空间上有测量的误差,而2号线对误差的容忍程度最高,也就是容错最大。
那么接下来就是考虑怎么寻找2号线?
VAPNIK给出的回答是:
对于任意一条符合条件的线,尽可能地向两侧移动,即移动到上图中的两条虚线位置。此时我们定义这两条虚线碰到的训练样本叫做这个数据集的支持向量,把两条线之间的距离称为间隔(margin),我们所要求的2号线就是间隔最大的两条线的正中间位置的那条。
这里主要讲如何用严格的数学,寻找最优分类超平面的过程,写成一个最优化问题。
我们假设训练样本集是线性可分的,支持向量机需要寻找的是最大化间隔(margin)的超平面,可以写成如下的形式:
最小化(Minimize):
限制条件:
其中,
下面重点开始解释:
先要讲两个事实:
事实一:
ω T x + b = 0 " role="presentation" style="position: relative;"> 与( α ω T ) x + ( α b ) = 0 " role="presentation" style="position: relative;"> 是同一个超平面。( α ≠ 0 ) " role="presentation" style="position: relative;">事实二:
一个点
" role="presentation" style="position: relative;"> 到超平面 X 0 ω T x + b = 0 " role="presentation" style="position: relative;"> 的距离d = " role="presentation" style="position: relative;"> . | ω T x 0 + b | ‖ ω ‖ 最小化(Minimize):
1 2 ⋅ " role="presentation" style="position: relative;"> | | ω | | 2
ω = " role="presentation" style="position: relative;"> , [ ω 1 ω 2 ⋮ ω m ] | | ω | | 2 = ω 1 2 + ω 2 2 + . . . + ω m 2 = ∑ i = 1 m " role="presentation" style="position: relative;"> ω i 2 基于上面两个事实,我们可以找到一个
α " role="presentation" style="position: relative;">进行缩放( ω , b ) → ( α ω , α b ) " role="presentation" style="position: relative;"> ,最终使得:在支持向量
" role="presentation" style="position: relative;"> 上有 x 0 | ω T x 0 + b | = 1 " role="presentation" style="position: relative;">而在非支持向量上
| ω T x 0 + b | > 1 " role="presentation" style="position: relative;">此时
d = " role="presentation" style="position: relative;">,要最大化d,就是要最小化 1 ‖ ω ‖ " role="presentation" style="position: relative;"> ‖ ω ‖ 限制条件:
y i ( ω T x i + b ) ≥ 1 , ( i = 1 ∼ N ) " role="presentation" style="position: relative;">其中
" role="presentation" style="position: relative;"> 的作用是协调超平面的作用,使得一边的 y i ( ω T x + b ) > 1 " role="presentation" style="position: relative;">,另一边的( ω T x + b ) < 1 " role="presentation" style="position: relative;">
二次规划的定义是:
(1)目标函数(Objective Function)是二次项。
(2)限制条件是一次项。
要么无解,要么只有唯一的最小值。
如果线性不可分,那么上面是无解的,即不存在
限制条件改写为:
改造后的支持向量机优化版本:
最小化 :
限制条件: (1)
(2)
比例因子C 起到了平衡两项的关键作用,是由人为设定的。
我们把人为事先设定的参数叫做算法的超参数。
通常会不断变化C的值 => 同时测试算法的识别率 => 选取合适的超参数C
(调参侠出现啦!!)
支持向量机采用的是将特征空间由低维映射到高维,然后再用线性超平面对数据进行分类。
一个定理:
假设在一个M维空间上随机取N个训练样本,随机得对每个训练样本赋予标签+1 或 -1,若这些训练样本线性可分得概率为P(M),
则有:当M趋于无穷大时,P(M) = 1.
直观上地感受一下: 当特征空间得维度M增加的时候,带估计参数
( ω , b ) " role="presentation" style="position: relative;">的维度也会增加,也就是说整个算法模型的自由度会增加,当然更容易分开低维的时候无法分开的数据集。
这里以具体研究
Vladimir Naumovich Vapnik:我们可以不用知道
φ ( X ) " role="presentation" style="position: relative;"> 的具体形式。
我们定义
核函数K和映射
K ( X 1 , X 2 ) " role="presentation" style="position: relative;"> 能写成φ ( X 1 ) T ⋅ φ ( X 2 ) " role="presentation" style="position: relative;"> 的充要条件:(1)
K ( X 1 , X 2 ) = K ( X 2 , X 1 ) " role="presentation"> (交换性)(2)
∀ C i ( i = 1 ∼ N ) , ∀ N ∑ i = 1 N ∑ j = 1 N C i C j K ( X i , X j ) >= 0 " role="presentation"> (半正定性)
原问题的定义:
最小化:
限制条件:
定义该原问题的对偶问题如下:
定义函数:
其中,
在此基础上,定义对偶问题如下:
最大化:
限制条件:
综合原问题和对偶问题的定义得到:
定理一:
如果
我们定义
强对偶定理:
如果
(也就是说,如果原问题的目标函数是凸函数,限制条件是线性函数,那么对偶差距等于0)
根据定理一推出的不等式:
若
回顾一下。
首先:
得到: 最小化:
限制条件:(1)
(2)
将对偶问题写成如下形式:
最大化:
限制条件: (1)
(2)