支持向量机 SVM 机器学习基础(6)

来源:互联网 发布:.net core cms 编辑:程序博客网 时间:2024/05/19 05:06

支持向量机(Support vector machines, SVM)

支持向量机提出了一种聪明的优化目标(pose a cleverly-chosen optimization objective),它是目前最流行应用最广的学习算法之一。这里有 July 写的 支持向量机通俗导论(理解SVM的三层境界)供大家阅读。

大间距分类器

优化目标

  1. 代价函数:

    J(θ)=yloghθ(x)+(1y)log(1hθ(x))hθ(x)=11+eθTxcost1(z)=loghθ(x),cost0(z)=log(1hθ(x))

    优化目标

  2. 目标方程:

    minθJ=1m[i=0my(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+λ2mj=1nθ2j      J=Jmλ,c=1λJ=c[i=0my(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2j

大间距指导

SVM又被称为大间距分类器。

1 支持向量机

minci=0m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2j

支持向量机间距

2 SVM决策边界

minci=0m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2js.t.   θTx(i)+1,ify(i)=1equaly(i)=1          θTx(i)1,ify(i)=0equaly(i)=0

当常数 c 很大时,目标函数近似为

minc×0+12j=1nθ2j12j=1nθ2js.t. θTx(i)+1,ify(i)=1        θTx(i)1,ify(i)=0

求得该优化目标,得到的结果就是最大间隔。

最大间隔

3 针对异常值

异常值间隔

通过调整 c 的大小,减少异常值对分类器的影响。

大间距分类器下的数学

本模块描述了 SVM 的数学原理,主要包含向量间距的内积表述。

1 向量内积

uTv==puu1v1+u2v2

其中,

u=[u1u2]Tv=[v1v2]T

2 SVM 决策边界

min12j=1nθ2j=12(nj=1θ2j)212θ2s.t.θTx(i)+1,ify(i)=1θTx(i)1,ify(i)=0

n=2 时,其表达式与几何图形如下所示,

向量点乘几何

θTx(i)=p(i)θ=θ1x1+θ2x2

其中,

θTx(i)1equalp(i)θ1

由此,我们可以把目标方程转换成新的形式,即

mins.t. 12θ2p(i)θ+1,ify(i)=1p(i)θ1,ify(i)=0

接下来,我们通过 n=2 的几何图像表述的方法来描述这个方程与间距量的关系,

向量与间距

我们假定 p(i)θ+1,则当
1) p(i) 较大时, θ 较小,即目标值 12θ2 较小;
2) p(i) 较小时, θ 较大,即目标值 12θ2 较大。
因此,我们可以发现,2) 的情况相比于 1) 更优,即目标值更小,代表的意义是间距更大。


核函数

核函数 1

在 SVM 中采用“核函数”,使其被构造成为一种复杂的非线性分类器,相对应的,得到非线性决策边界。

1 非线性决策边界

类似逻辑回归中的决策边界 hθ(x),对于非线性的的 hθ(x),例如

hθ(x)yy=θ0+θ1x1+θ2x2+θ3x1x2+θ4x21+θ5x22+=1hθ(x)0=0hθ(x)<0

非线性决策边界

2 核函数

核函数的实质,是一种定义特征的方法,原有特征记作 x,新特征记作 f。根据原有特征计算得到新的特征。

其中一种定义(或称之为“计算”)的方法是相似度映射,记作

xl(i)f

其中 l(i) 是特征标记(或称为基),一般可以取 l(i)=x(i)

新特征 f 的计算形式为

fi=i=similarity(x,l(i))=e(xl(i)2σ2)1,2,

其中,similarity 可以被称作是一种核函数,上式的核函数是高斯核函数(Gaussian kernel),核函数记作 K(x,l(i))

3 高斯核函数

高斯核函数类似高斯密度函数,呈钟形。

高斯核函数

最终,我们通过核函数 K(x,l(i)) 得到关于 x 的新特征集合 fi,可以想象,这是一个非线性化过程。

核函数 2

在该模块中, SVM 中应用核函数,讨论权衡偏差、方差的问题。

1 选择标记点

在 SVM 的基中,l(i)=x(i),使得新特征 fi 表示为 x(i) 与其他数据的离散程度,即每一个样本与其他样本的距离。

2 带核函数的 SVM
  • 给定样本:(x(1),y(1)),,(x(m),y(m))
  • 选择标记点:l(1)=x(1),,l(m)=x(m)
  • 特征映射:f(i)j=K(x(i),l(j)),f(i)0=1  f(i)=[f(i)0f(i)1f(i)2f(i)m]T
  • 特征向量:x(i)Rn+1f(i)Rm+1
  • 参数 θθRm+1

最终,我们得到了关于新特征 f(i) 与参数 θ 的目标方程:

minθ ci=1my(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))+12j=1mθ2j

值得注意的事,当 m 很大时,mj=1θ2j=θTθ=θ2 的计算复杂度会很大,其优化的计算方法是 θTMθ,改变数值,但不影响目标方程的优化求解。

3 SVM 参数

该模块讨论支持向量机的参数对算法的偏差、方差的关系。

c (1/λ)
c 过大,可能引起低偏差、高方差,同样地,增大 c 可以降低偏差;c 过小,可能引起高偏差、低方差,同样地,减少 c 可以降低方差。
σ2 高斯核
σ2 过大,高斯核函数会变得平滑,可能引起高偏差、低方差;σ2 过小,高斯核函数会变得陡峭,可能引起低偏差、高方差,适用于偏差、方差调整。(在“高斯核函数”小节中有函数示意图)

SVM 实践

使用 SVM

熟悉使用 SVM 软件包 liblinear/libsvm 去求解参数 θ,是非常有利于工作的,liblinear 可以从这里下载到,libsvm 可以从这里下载到。

当然,我们必需学习一些如何使用软件包的知识:

  1. 选择参数 c
  2. 选择核函数(可称作相似度函数),核函数包括无核(线性核,Linear Kernel,θTx)、高斯核(标记点的选择,参数 σ2)等的函数。无核函数适用于 n 很大,m 很小的情况;高斯核函数,适用于 n 很小,m 很大的情况。
1 核(相似度)函数
function f = kernel(x1, x2)    f = exp(-||x1 - x2||/(2 ))return

注意:在使用高斯核前,有必要对特征进行归一化,防止大数特征“吃了”小数特征。

2 其它的核函数

任何一个相似度函数作为一个有效的核函数,必须满足默塞尔定理(Mercer’s Theorem)。这是为了保证 SVM 的软件包能够利用内部的数值计算的优化方法进行有效的求解。

适用的核函数包含:

  1. 多项式核函数 Polynomial kernel:K(x,l)=(xTl+c)d
  2. 字符串核函数 String kernel:文本分类,两字符串的相似度
  3. 卡方核函数 Chi-square
  4. 直方图交叉核函数 Histogram intersection kernel
3 多类别分类器

y{1,2,3,,k}

SVM 软件包内置多类别的分类器。另外,一对多分类方法(One-vs.-all Method)进行多类别分类,需要训练 01k 次。

多类别

4 逻辑回归 vs. SVMs + 神经网络

n 为特征数(xRn+1),m 为训练集样本数。

n 很大,近似等于 m
使用逻辑回归或者无核的 SVM(“Linear kernel”)。
n 很小,m 数量中等
使用高斯核的 SVM,或者可以尝试神经网络。
n 很小,m 很大
定值/增加更多多特征数,然后采用逻辑回归或者无核的 SVM。

注意:SVM 中的优化问题是凸优化,采用优化方法可获得全局最优;神经网络中的优化也许是能求得局部最优,虽然不差,对结果影响不大,但它仍是局部最优。
神经网络的运行效率可能没有 SVM 高。


我的 QQ 1026163725 欢迎大家一起和我交流关于机器学习的问题。

2 0
原创粉丝点击