分类模型——SVM支持向量机
1 什么是支持向量机
首先看一下百度百科对支持向量机的介绍:
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。
SVM可以通过核方法(kernel method)进行非线性分类,是常见的核学习(kernel learning)方法之一。
看不太懂?看不太懂就对了,毕竟百度百科已不说人话很多年。以下是我个人的描述:
支持向量机是一个用于分类的模型,一般用于对输入进行二分类,即分为是或不是两类。
如果输入的对象拥有n个参数,则代表输入对象的点存在于n维空间中,支持向量机的目的是构建一个n-1维的连续划分,使这个划分能较精确地划分现有的输入,同时能对未来的输入有较好的包容性。
2 对支持向量机的直观感知
最直观的支持向量机模型为二维平面内点的划分,再形象化一些,可以将待划分的点看做阵前对垒的两支军队。很明显,两军之间的那条明显的界限即为分割线,因为它分开了两种点,每种点在分隔线的一侧占据极大的比重(或者全部)。这样的分割线就是我们需要的分隔。
但在支持向量机中,仅仅将两种点分开是不够的,因为这样的分隔可能存在无数种,前面已介绍过,支持向量机所求的分隔不仅要完成分隔的功能,还要兼顾包容性,即降低经验风险与结构风险。为直观认识到支持向量机需要的划分是什么样子的,可以看下图:
在这三条线中,那个分隔更符合支持向量机的要求呢?答案是H3。可以明显地看到H1甚至都没有分开两种点,而H2虽然分开了两种点,但因为分隔地过于精细,H2两侧最近的点的距离过近,如果接下来的输入数据有抖动,很容易分类错误,对数据的包容性不好,即结构风险较大。相比较而言,H3不仅满足了分隔的要求,同时距离H3最近的点的距离达到了最大值,分隔的容错率较好。
3 支持向量机处理问题的三种状态
在实际使用支持向量机时,会遇到三种状态的待分隔点集,每种状态对应一种支持向量机的求解方法,由简到繁有以下三种:
-
线性可分
在当前空间中,存在一种分隔可以将两种点完全区分开
-
线性
在当前空间中,不存在一种分隔可以将两种点完全分开,但两组点集之间有模糊的边界存在
-
非线性
在当前空间中,不存在一种分隔可以将两组点集完全分开,也不存在边界
接下来对这三种状态的分隔求解方法做推导
4 名词解释
线性可分
就是两组点可以被空间中的一个超平面分开,数学表述为:
D 0 D_0 D0 和 D 1 D_1 D1 是 n 维欧氏空间中的两个点集。如果存在 n 维向量 W 和实数 b,使得所有属于 D 0 D_0 D0 的点 X 都有 W X + b > 0 WX+b>0 WX+b>0 ,而对于所有属于 D 1 D_1 D1 的点 则有 W X + b < 0 WX+b<0 WX+b<0 ,则我们称 D 0 D_0 D0 和 D 1 D_1 D1 线性可分。
间隔
点到超平面的最小距离
最大间隔超平面(分隔)
当n>3时,n维向量W很难被想象出来,被称为超平面。
最大间隔超平面有以下两个要求:
- 能分隔两组点集
- 距离超平面最近的点的距离取得最大值
支持向量
距离最大间隔超平面最近的点
5 线性可分
5.1 待求解式的推导过程
对于点P ( x , y ) (x,y) (x,y)和直线l: A x + B y + b = 0 Ax+By+b=0 Ax+By+b=0,点P到直线l的距离公式为 ∣ A x + B y + b ∣ A 2 + B 2 \frac{|Ax+By+b|}{\sqrt{A^2+B^2}} A2+B2∣Ax+By+b∣,我们很熟悉这样的公式,然而这仅是二维平面上点到直线的距离计算公式。在实际应用中,待分隔的点集通常有许多的特征,即点集存在于多维空间中,这时我们就需要对距离公式做推广。
对于点P ( x 1 , x 2 , x 3 . . . x n ) (x_1, x_2, x_3...x_n) (x1,x2,x3...xn),我们记作 x T x^T xT,对于超平面H: w 1 x 1 + w 2 x 2 + w 3 x 3 . . . + w n x n + b w_1x_1+w_2x_2+w_3x_3...+w_nx_n+b w1x1+w2x2+w3x3...+wnxn+b,我们记作 w x T + b wx^T+b wxT+b,其中 w = ( w 1 , w 2 , w 3 . . . w n ) w=(w_1,w_2,w_3...w_n) w=(w1,w2,w3...wn)。此时点P到超平面H的距离为
∣ w x T + b ∣ ∣ ∣ w ∣ ∣ \frac{|wx^T+b|}{||w||} ∣∣w∣∣∣wxT+b∣
∣ ∣ w ∣ ∣ = w 1 2 + w 2 2 + w 3 2 . . . + w n 2 ||w||=\sqrt{w_1^2+w_2^2+w_3^2...+w_n^2} ∣∣w∣∣=w12+w22+w32...+wn2。
对于超平面H: w x T + b wx^T+b wxT+b,若此时支持向量到超平面的距离为 d d d,则可得到不等式
∣ w x T + b ∣ ∣ ∣ w ∣ ∣ ≥ d \frac{|wx^T+b|}{||w||}\geq{d} ∣∣w∣∣∣wxT+b∣≥d
注:支持向量即与超平面距离最小的点
让我们回顾一下最大间隔超平面的定义:1. 能分隔两组点集 2.距离超平面最近的点的距离取得最大值,它们分别为带求解问题的准确性标准和本体
5.1.1 准确性标准
我们引入 y y y作为点集分类的标签。搭建模型时,超平面H对点集进行分类,最容易也是最有效的分类为正负分类。所以我们引入互为相反数的 y y y作为分类标签(比如 y ∈ { − 1 , 1 } y\in\{-1,1\} y∈{ −1,1}),对于点集中的所有点,都满足 y ( w x T + b ) ≥ 0 y(wx^T+b)\geq0 y(wxT+b)≥0时两组点被正确分隔, ∣ w x T + b ∣ |wx^T+b| ∣wxT+b∣为判断分类置信度的依据, ∣ w x T + b ∣ |wx^T+b| ∣wxT+b∣越大,代表分类越明确。
使用模型时,对于任意一组数据,在经过超平面H: w x T + b wx^T+b wxT+b计算后会产生一个输出,此时我们可以利用输出的正负对数据进行分类(比如常用分类决策函数sign)
总而言之,对于可分隔数据模型,正确分隔可用下式表示
y ( w x T + b ) ≥ 0 y(wx^T+b)\geq0 y(wxT+b)≥0
5.1.2 待求解问题
为了使模型具有更好的鲁棒性,不至于因为输入数据的微小差异而分为不同的类,我们要做的就是最大化两点集的间隔,使得距离最大间隔超平面距离最小的点的距离取得最大值
这么说有点绕,将问题用数学形式表达为
m a x d 0 s . t . ∀ d i , d i ≥ d 0 max \ d_0\\ s.t. \quad\forall d_i , d_i\geq d_0 max d0s.t.∀di,di≥d0
d i d_i di为点 x i x_i xi到超平面的距离, d 0 d_0 d0为所有距离中的最小距离。
如果令分类标签 y ∈ { − 1 , 1 } y\in\{-1,1\} y∈{
−1,1},则带求解问题可进一步写为
m a x y 0 ( w x 0 T + b ) ∣ ∣ w ∣ ∣ s . t . ∀ x i , y i ( w x i + b ) ≥ y 0 ( w x 0 T + b ) max \ \frac{y_0(wx_0^T+b)}{||w||}\\ s.t. \quad\forall x_i, y_i(wx_i+b)\geq y_0(wx_0^T+b) max ∣∣w∣∣y0(wx0T+b)s.t.∀xi,yi(wxi+b)≥y0(wx0T+b)
5.2 带求解问题的转化
在5.1中我们得到了待解决的问题。超平面随着 w w w与 b b b的变化在空间中运动,这个变化是连续的;而对每个确定的超平面我们都要计算点集与超平面的距离,因为点与点是离散的,我们很难用连续的数学工具处理所有点的距离在变化过程中的最小值,因此,我们需要将待求解问题转化。首先,原问题等价于
m a x λ γ 0 ∣ ∣ λ w ∣ ∣ s . t . ∀ x i