支持向量机(二)

本文深入探讨了核函数在支持向量机(SVM)中的应用,解释了如何通过映射到高维空间解决非线性可分问题,并介绍了几种常用的核函数,包括线性核、多项式核、高斯核和Sigmoid核。

核函数

在这里插入图片描述

异或问题不是线性可分的,对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分

ϕ(x)\phi(x)ϕ(x) 表示将 xxx 映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为

f(x)=wTϕ(x)+bf(x)=w^T \phi(x) + bf(x)=wTϕ(x)+b

类似上篇博客提到的对偶问题,映射后的公式如下:

maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjϕ(xi)Tϕ(xj)max_{\alpha} \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_i y_j \phi(x_i)^T \phi(x_j)maxαi=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj) 公式(1)

s.t.∑i=1mαiyi=0,αi≥0s.t. \quad \sum_{i=1}^m \alpha_i y_i =0 , \alpha_i \ge 0s.t.i=1mαiyi=0,αi0

求解公式(1)涉及到 ϕ(xi)Tϕ(xj)\phi(x_i)^T \phi(x_j)ϕ(xi)Tϕ(xj) 的内积运算,这是样本在映射到特征空间之后的内积。如果维数很大,计算是很困难的。可以设想这样一个函数(称为核技巧):

κ(xi,xj)=ϕ(xi)Tϕ(xj)\kappa(x_i, x_j) = \phi(x_i)^T \phi(x_j)κ(xi,xj)=ϕ(xi)Tϕ(xj)

xix_ixixjx_jxj 在特征空间的内积等于它们在原始样本空间中通过函数 κ(.,.)\kappa(.,.)κ(.,.) 计算的结果。有这样的函数,上式可重写为:

maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjκ(xi,xj)max_{\alpha} \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_i y_j \kappa(x_i, x_j)maxαi=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj) 公式(2)

s.t.∑i=1mαiyi=0,αi≥0s.t. \quad \sum_{i=1}^m \alpha_i y_i =0 , \alpha_i \ge 0s.t.i=1mαiyi=0,αi0

求解后可得到:

f(x)=wT+b=∑i=1mαiyiϕ(xi)Tϕ(xj)+b=∑i=1mαiyiκ(xi,xj)+bf(x)=w^T+b=\sum_{i=1}^m \alpha_i y_i \phi(x_i)^T \phi(x_j) +b=\sum_{i=1}^m \alpha_i y_i \kappa(x_i, x_j) + bf(x)=wT+b=i=1mαiyiϕ(xi)Tϕ(xj)+b=i=1mαiyiκ(xi,xj)+b 公式(3)

这里的函数 κ(.,.)\kappa(.,.)κ(.,.) 就是核函数,公式(3)表示模型最优解可通过训练样本的核函数展开,这一展式也称支持向量展式

如果知道 ϕ(.)\phi(.)ϕ(.) 的具体形式,则可以写出核函数 κ(.,.)\kappa(.,.)κ(.,.) ,但现实任务中通常不知道 ϕ\phiϕ 是什么形式,那么合适的核函数是否一定存在?什么样的函数适合做核函数?

定理:核函数

χ\chiχ 为输入空间,κ(.,.)\kappa(.,.)κ(.,.) 是定义在 χ×χ\chi \times \chiχ×χ 上的对称函数,则 κ\kappaκ 是核函数当且仅当对于任意数据 D=x1,x2,...,xmD = {x_1,x_2,...,x_m}D=x1,x2,...,xm ,核矩阵 K 总是半正定的:

在这里插入图片描述

上述定理表明,只要一个对称函数所对应的核矩阵半正定,就能作为核函数。任何一个核函数都隐式地定义了一个称为“再生核希尔伯特空间(RKHS)”的特征空间。

自己去找一个核函数还是很难的,怎么办呢?还好牛人们已经帮我们找到了很多的核函数,而常用的核函数也仅仅只有那么几个。下面我们来看看常见的核函数, 选择这几个核函数介绍是因为scikit-learn中默认可选的就是下面几个核函数。

名称表达式参数
线性核κ(xi,xj)=xiTxj\kappa(x_i,x_j)=x_i^T x_jκ(xi,xj)=xiTxj
多项式核κ(xi,xj)=(xiTxj)d\kappa(x_i,x_j)=(x_i^T x_j)^dκ(xi,xj)=(xiTxj)dd≥1d \ge 1d1是多项式的次数
高斯核$\kappa(x_i,x_j)=exp(-\frac{
Sigmoid核κ(xi,xj)=tanh(βxiTxj+θ)\kappa(x_i,x_j)=tanh(\beta x_i^T x_j + \theta)κ(xi,xj)=tanh(βxiTxj+θ)tanhtanhtanh为双曲正切函数(β>0,θ<0\beta \gt 0,\theta \lt 0β>0,θ<0)

线性可分SVM我们可以和线性不可分SVM归为一类,区别仅仅在于线性可分SVM用的是线性核函数。

高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是非线性分类SVM最主流的核函数。libsvm默认的核函数就是它。

对文本分类通常采用线性核,情况不明时,可以尝试高斯核。

此外,核函数还可以通过组合得到,如κ1\kappa_1κ1κ2\kappa_2κ2 是核函数,那么下面的组合也是核函数

γ1κ1+γ2κ2\gamma_1 \kappa_1 + \gamma_2 \kappa_2γ1κ1+γ2κ2

κ1⨂κ2(x,z)=κ1(x,z)κ2(x,z)\kappa_1 \bigotimes \kappa_2(x,z)=\kappa_1(x,z) \kappa_2(x,z)κ1κ2(x,z)=κ1(x,z)κ2(x,z)

κ(x,z)=g(x)κ1(x,z)g(z)\kappa(x,z) =g(x) \kappa_1(x,z) g(z)κ(x,z)=g(x)κ1(x,z)g(z)

参考

周志华《机器学习》

https://www.cnblogs.com/pinard/p/6103615.html

李航《统计学习方法》

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值