一.凸规划
1.凸集
-
设
集
合
S
⊂
R
n
,
若
S
中
任
意
两
点
连
线
仍
属
于
S
,
则
S
称
为
凸
集
,
即
设集合S⊂ℝ^n,若S中任意两点连线仍属于S,则S称为凸集,即
设集合S⊂Rn,若S中任意两点连线仍属于S,则S称为凸集,即
x 1 + λ ( x 2 − x 1 ) ∈ S x_1+λ(x_2−x_1)∈S x1+λ(x2−x1)∈S
2.凸函数
-
设
S
为
R
n
上
的
非
空
凸
集
,
f
是
定
义
在
S
上
的
实
函
数
,
若
对
任
意
x
1
,
x
2
∈
S
,
及
λ
∈
(
0
,
1
)
,
都
有
设S为\R^n上的非空凸集,f是定义在S上的实函数,若对任意x1,x2∈S,及λ∈(0,1),都有
设S为Rn上的非空凸集,f是定义在S上的实函数,若对任意x1,x2∈S,及λ∈(0,1),都有
f ( x 1 + λ ( x 2 − x 1 ) ) ≤ f ( x 1 ) + λ [ f ( x 2 ) − f ( x 1 ) ] f(x1+λ(x2−x1))≤f(x1)+λ[f(x2)−f(x1)] f(x1+λ(x2−x1))≤f(x1)+λ[f(x2)−f(x1)]
则 称 f 为 S 上 的 凸 函 数 。 则称f为S上的凸函数。 则称f为S上的凸函数。
对 于 一 元 函 数 f , 凸 函 数 的 几 何 解 释 可 简 单 理 解 为 曲 线 f 上 任 意 两 点 的 弦 不 在 曲 线 下 方 。 对于一元函数f,凸函数的几何解释可简单理解为曲线f上任意两点的弦不在曲线下方。 对于一元函数f,凸函数的几何解释可简单理解为曲线f上任意两点的弦不在曲线下方。
3.凸规划
- 考虑非线性规划问题
m i n f ( x ) x ∈ R min \quad f(x) \quad x∈R minf(x)x∈R
s . t . g i ( x ) ≤ 0 s.t. \quad g_i(x) \leq 0 s.t.gi(x)≤0
h j ( x ) = 0 , j = 1 , . . . , l h_j(x) = 0, \quad j=1,...,l hj(x)=0,j=1,...,l
设 f ( x ) 为 凸 函 数 , g i ( x ) 为 凸 函 数 , h j ( x ) 是 线 性 函 数 , 则 问 题 的 可 行 域 为 设f(x)为凸函数,g_i(x)为凸函数,hj(x)是线性函数,则问题的可行域为 设f(x)为凸函数,gi(x)为凸函数,hj(x)是线性函数,则问题的可行域为
S = { x ∣ g i ( x ) ≥ 0 , i = 1 , ⋯ , m ; h j ( x ) = 0 , j = 1 , ⋯ , l } S= \{ x|g_i(x)≥0,i=1,⋯,m;h_j(x)=0,j=1,⋯,l \} S={x∣gi(x)≥0,i=1,⋯,m;hj(x)=0,j=1,⋯,l}
上述问题是求凸函数在凸集上的极小点,这类问题成为凸规划。
重要性质:凸规划的局部极小点就是全局极小点。
一、简介
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。模型包括:
当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。
二、线性可分支持向量机
给定训练样本集D=(x1,y1),(x2,y2),⋯,(xm,ym),其中yi∈{−1,+1},分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。
如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。那么什么是线性函数呢?其实很简单,在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。我们看一个简单的二维空间的例子,O代表正类,X代表负类,样本是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。
那么我们考虑第一个问题,为什么要间隔最大呢?一般来说,一个点距离分离超平面的远近可以表示分类预测的确信度,如图中的A B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。 接下来考虑第二个问题,怎么计算间隔?只有计算出了间隔,才能使得间隔最大化。在样本空间中,划分超平面可通过如下线性方程来描述:
其中w为法向量,决定了超平面的方向,b为位移量,决定了超平面与原点的距离。假设超平面能将训练样本正确地分类,即对于训练样本(xi,yi),满足以下公式:
该公式被称为最大间隔假设,yi=+1 表示样本为正样本,yi=−1 表示样本为负样本,式子前面选择大于等于+1,小于等于-1只是为了计算方便,原则上可以是任意常数,但无论是多少,都可以通过对 w 的变换使其为 +1 和 -1。
实际上该公式等价于:
距离超平面最近的这几个样本点满足yi(WTxi+b)=1,它们被称为“支持向量”。虚线称为边界,两条虚线间的距离称为间隔(margin)。
关于间隔的计算:它就等于两个异类支持向量的差在 W方向上的投影,W方向是直线yi(WTxi+b)=0的法线方向。
故有:
至此,我们求得了间隔,SVM的思想是使得间隔最大化,也就是:
显然,最大化 2/||w|| 相当于最小化 ||w||,为了计算方便,将公式转化成如下公式,它即为支持向量机的基本型:
该基本型是一个凸二次规划问题,可以采用拉格朗日乘子法对其对偶问题求解求解,拉格朗日函数:
对W,b求导,令其分别为0,可得;
将其带入拉格朗日函数中,可得:
解出 α 之后,可以求得 w , 进而求得 b,可以得到模型:
该过程的KTT条件为;
我们分析一下,对于任意的训练样本 (xi,yi),若 αi=0,则其不会在公式中的求和项中出现,也就是说,它不影响模型的训练;若 αi>0,则yif(xi)−1=0,也就是 yif(xi)=1,即该样本一定在边界上,是一个支持向量。这里显示出了支持向量机的重要特征:当训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关。