SVM以及核函数

对于监督学习分类算法,我们还有一个区别于逻辑回归的方法,即支持向量机SVM。

SVM与逻辑回归的本质区别就是损失函数的区别。

支持向量机SVM

支持向量机(support vector machines,SVM)是一种二分类模型,基本模型是定义在特征空间上的间隔最大的线性分类器

简单来说,就是用来做分类用的,类比一下之前提到过的逻辑回归。

它相较于之前的逻辑回归,使用了向量表示法,效果我们下面分析。

逻辑回归

回到之前我们的逻辑回归分类,我们将逻辑回归问题,转化为了概率问题,并且计算得出对应的概率函数hθ(x)。

我们要做的就是让这个拟合函数hθ(x)尽可能精确,趋近于我们的训练集。
对 于 我 们 一 开 始 的 拟 合 函 数 h θ ( x ) = 1 1 + e − θ T x 我 们 设 z = θ T x 既 有 h θ ( x ) = 1 1 + e − z , 将 该 函 数 做 出 关 于 z 的 图 像 \begin{aligned} & 对于我们一开始的拟合函数 h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}\\ & 我们设 z=\theta^Tx\\ & 既有 h_\theta(x)=\frac{1}{1+e^{-z}},将该函数做出关于z的图像\\ \end{aligned} hθ(x)=1+eθTx1z=θTxhθ(x)=1+ez1z
在这里插入图片描述

这是一个[0,1]之间的单调曲线。可以看出:

  • 当 z>>0时,h(z)≈1
  • 当 z<<0时,h(z)≈0

对于这样一个函数,我们如何拟合?回归我们的代价函数:
C o s t = − ( y log ⁡ h θ ( x ) + ( 1 − y ) log ⁡ ( 1 − h θ ( x ) ) ) = − y log ⁡ 1 1 + e − θ T x − ( 1 − y ) log ⁡ ( 1 − 1 1 + e θ T x ) Cost=-(y\log h_\theta(x)+(1-y)\log(1-h_\theta(x)))\\ =-y\log\frac{1}{1+e^{-\theta^Tx}}-(1-y)\log(1-\frac{1}{1+e^{\theta^Tx}})\\ Cost=(yloghθ(x)+(1y)log(1hθ(x)))=ylog1+eθTx1(1y)log(11+eθTx1)

分别讨论y=0时和y=1时的情况。

  • 当y=1的时候,代价函数如下图所示
  • 在这里插入图片描述

我们要最小化代价函数,对于每一个训练集中的(x,y=1)的样本。期望是代价为0,即Cost=0。

即调整θ,期望θx >> 0.

为了简化运算:该函数在z << 0时,趋向于一次函数,z >> 0时,趋向于0.因此我们可以用一个折线(CAB)来近似,方便计算。

至于为何能够用直线来近似,这个简单的处理一下代价函数就可以看出来。log和e^z相抵消,剩下一个z。

这里的折线代价函数,我们使用Cost1()表示,表示y=1时的近似代价函数。

同理

  • 当y=0的时候,代价函数如下图所示
  • 在这里插入图片描述

我们要最小化代价函数,对于每一个训练集中的(x,y=0)的样本。期望是代价为0,即Cost=0。

即调整θ,期望θx << 0.

为了简化运算:该函数在z >> 0时,趋向于一次函数,z >> 0时,趋向于0.因此我们可以用一个折线(BAC)来近似,方便计算。

这里的折线代价函数,我们使用Cost0()表示,表示y=0时的近似代价函数。

线性SVM

在之前逻辑回归的基础上,提出了支持向量机。

比较逻辑回归的代价函数支持向量机的代价函数

逻辑回归:
min ⁡ θ 1 m [ ∑ i − 1 m y ( i ) ( − log ⁡ h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) ( − log ⁡ ( 1 − h θ ( x ( i ) ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 \min_\theta\frac{1}{m}[\sum_{i-1}^m y^{(i)}(-\log h_\theta(x^{(i)}))+(1-y^{(i)})(-\log(1-h_\theta(x^{(i)})))]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2 θminm1[i1my(i)(loghθ(x(i)))+(1y(i))(log(1hθ(x(i))))]+2mλj=1nθj2
支持向量机(将向量点积作为自变量):
min ⁡ θ C ∑ i − 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + λ 2 ∑ j = 1 n θ j 2 \min_\theta C\sum_{i-1}^m [y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})]+\frac{\lambda}{2}\sum_{j=1}^n\theta_j^2 θminCi1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2λj=1nθj2
这里我们用了近似代价函数来代替了逻辑回归代价函数,简化了运算。

同时,对于常数项,我们进行了简化,不过意思仍然与之前一样。
对 于 y = 1 的 样 本 , 期 望 θ T x > = − 0.5 对 于 y = 0 的 样 本 , 期 望 θ T x < = 0.5 \begin{aligned} & 对于y=1的样本,期望\theta^Tx>=-0.5\\ & 对于y=0的样本,期望\theta^Tx<=0.5\\ \end{aligned} y=1θTx>=0.5y=0θTx<=0.5
当然也可以更精确一些,如:
对 于 y = 1 的 样 本 , 期 望 θ T x > = 1 对 于 y = 0 的 样 本 , 期 望 θ T x < = − 1 \begin{aligned} & 对于y=1的样本,期望\theta^Tx>=1\\ & 对于y=0的样本,期望\theta^Tx<=-1\\ \end{aligned} y=1θTx>=1y=0θTx<=1
取决于折现如何画,如何近似了。

这样来看,支持向量机相对于逻辑回归,似乎只简化了计算。

但我们画出来图后,发现它对逻辑回归的分割,是间隔最大的线性分类

如下图所示:

在这里插入图片描述

对于红蓝两种分类,SVM得出的分类是中间的绿色直线,而不是两边的蓝色直线。

这里的不同直线,就是不同θ所表示的向量的法线

为何取向量的法线为决策边界?这和我们的决策函数相关。

当样本点(红点)在法线内时,点与向量θ的内积是正值,只是大小的区别,所得的代价函数较小。

但如果红点在法线外,内积负值,代价就较大(此时该点按照预测应该是蓝点,但事实上它是红点,需要调整θ)

所以我们取θ的法线作为决策边界。

间隔最大解释

观察我们的线性SVM公式
min ⁡ θ C ∑ i − 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + λ 2 ∑ j = 1 n θ j 2 当 y ( i ) = 1 时 , 要 调 整 θ 使 得 θ T x ( i ) > = 1 当 y ( i ) = 0 时 , 要 调 整 θ 使 得 θ T x ( i ) < = − 1 \min_\theta C\sum_{i-1}^m [y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})]+\frac{\lambda}{2}\sum_{j=1}^n\theta_j^2\\ 当y^{(i)}=1时,要调整\theta使得\theta^Tx^{(i)}>=1\\ 当y^{(i)}=0时,要调整\theta使得\theta^Tx^{(i)}<=-1 θminCi1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2λj=1nθj2y(i)=1θ使θTx(i)>=1y(i)=0θ使θTx(i)<=1
我们思考一下向量内积的含义:
θ T x = ∣ θ T ∣ ∣ x ∣ cos ⁡ α 相 当 于 θ 的 长 度 ⋅ x ( i ) 在 θ 上 的 投 影 p ( i ) 。 \theta^Tx=|\theta^T||x|\cos\alpha\\ 相当于\theta的长度\cdot x^{(i)}在\theta上的投影p^{(i)}。 θTx=θTxcosαθx(i)θp(i)
带入上式
满 足 min ⁡ θ λ 2 ∑ j = 1 n θ j 2 = λ 2 ∣ ∣ θ ∣ ∣ 2 当 y ( i ) = 1 时 , 要 调 整 θ 使 得 p ( i ) ⋅ ∣ ∣ θ ∣ ∣ > = 1 当 y ( i ) = 0 时 , 要 调 整 θ 使 得 p ( i ) ⋅ ∣ ∣ θ ∣ ∣ < = − 1 满足\min_\theta\frac{\lambda}{2}\sum_{j=1}^n\theta_j^2=\frac{\lambda}{2}||\theta||^2\\ 当y^{(i)}=1时,要调整\theta使得p^{(i)}\cdot||\theta||>=1\\ 当y^{(i)}=0时,要调整\theta使得p^{(i)}\cdot||\theta||<=-1\\ θmin2λj=1nθj2=2λθ2y(i)=1θ使p(i)θ>=1y(i)=0θ使p(i)θ<=1
当然,结果肯定是离得越远越好,因为离得越远精度越高。

因此当我们的θ向量长度不变时,样本在θ上的投影越大越好。

这样,我们的svm分类器会自动按最大间隔来进行分类。

非线性SVM

类比非线性逻辑回归。非线性SVM与之类似。

举一个只有两个参数的非线性SVM和逻辑回归。

在这里插入图片描述

比较效果,SVM和逻辑回归最后都可以训练出上述效果图。但是实现方式有所区别

关于逻辑回归,之前已经做过了学习,这里就不多赘述。

关于SVM,这里我们将(x,y=1)的样本,设为θx >= 0的情况。可以看成对其进行了z轴(高)上的分类。

  • θx >= 0的,输出为1.
  • 否则输出为0.

我们采取中间增加一个z=0的平面的方式,将训练集按高度z轴分为两层,于是可以得到一个3维的线性分割面,转化成了线性分割问题。

同理,对于更多维的情况,我们只需要增加1维,即可实现在n+1维上的线性分割。

核函数

下面介绍一下如何利用核函数实现增加1维来对样本进行高纬度的线性分割。

为了方便,我们仍采用上面的二维x1,x2来做一下样例。

给出一个x,我们根据其参数,计算得出它的特征值,然后判断特征值的大小。
f 1 = s i m i l a r i t y ( x , l ( 1 ) ) = exp ⁡ ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 2 σ 2 ) f 2 = s i m i l a r i t y ( x , l ( 2 ) ) = exp ⁡ ( − ∣ ∣ x − l ( 2 ) ∣ ∣ 2 2 σ 2 ) f 3 = s i m i l a r i t y ( x , l ( 3 ) ) = exp ⁡ ( − ∣ ∣ x − l ( 3 ) ∣ ∣ 2 2 σ 2 ) . . . f_1=similarity(x,l^{(1)})=\exp(-\frac{||x-l^{(1)}||^2}{2\sigma^2})\\ f_2=similarity(x,l^{(2)})=\exp(-\frac{||x-l^{(2)}||^2}{2\sigma^2})\\ f_3=similarity(x,l^{(3)})=\exp(-\frac{||x-l^{(3)}||^2}{2\sigma^2})\\ ... f1=similarity(x,l(1))=exp(2σ2xl(1)2)f2=similarity(x,l(2))=exp(2σ2xl(2)2)f3=similarity(x,l(3))=exp(2σ2xl(3)2)...

  • 这里的f就是x得出的相似度值。放在一起可以表示为一个向量f=[f1,f2,f3…]。

  • 这里的sim()函数就是核函数。

  • 这里的l(i)可以是作为训练的样本。

i f x ≈ l ( 1 ) : f 1 ≈ exp ⁡ ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 2 σ 2 ) ≈ 1 i f x 距 离 l ( 1 ) 较 远 : f 1 ≈ exp ⁡ ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 2 σ 2 ) ≈ 0 if\quad x\approx l^{(1)}:f_1\approx\exp(-\frac{||x-l^{(1)}||^2}{2\sigma^2})\approx1 if\quad x距离l^{(1)}较远:f_1\approx\exp(-\frac{||x-l^{(1)}||^2}{2\sigma^2})\approx0 ifxl(1)f1exp(2σ2xl(1)2)1ifxl(1)f1exp(2σ2xl(1)2)0

这里的σ作为一个调整平衡度的参数来对该函数起到陡峭或平缓的作用。如图

在这里插入图片描述

这 里 的 σ 是 作 为 特 征 值 缩 放 而 存 在 的 参 数 当 σ 2 = 1 时 , 所 得 图 形 如 上 图 所 示 。 当 σ 2 = 0.5 时 , 斜 坡 更 陡 峭 一 些 , 体 现 在 训 练 结 果 中 就 是 , 低 偏 差 , 方 差 大 当 σ 2 = 3 时 , 斜 坡 更 平 缓 一 点 , 体 现 在 样 本 的 训 练 结 果 中 , 高 偏 差 , 方 差 小 \begin{aligned} & 这里的\sigma是作为特征值缩放而存在的参数\\ & 当\sigma^2=1时,所得图形如上图所示。\\ & 当\sigma^2=0.5时,斜坡更陡峭一些,体现在训练结果中就是,低偏差,方差大\\ & 当\sigma^2=3时,斜坡更平缓一点,体现在样本的训练结果中,高偏差,方差小 \end{aligned} σσ2=1,σ2=0.5σ2=3

非线性svm及核函数计算

获 得 一 组 训 练 集 : ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) 设 置 l ( i ) = x ( i ) 对 于 给 定 的 一 个 目 标 预 测 变 量 x : f i = s i m i l a r i t y ( x , l ( i ) ) 对 于 训 练 集 ( x ( i ) , y ( i ) ) , 将 x ( i ) 转 换 成 f ( i ) f j ( i ) = s i m ( x ( i ) , l ( j ) ) 另 注 意 : 当 j = i 时 , 即 f i ( i ) = s i m ( x ( i ) , l ( i ) = x ( i ) ) = exp ⁡ ( − 0 2 σ 2 ) = 1 合 并 起 来 f ( i ) = [ f 0 ( i ) f 1 ( i ) . . . f m ( i ) ] 判 断 θ T f > = 0 。 这 里 f 是 固 定 的 , 所 以 要 优 化 θ 来 确 保 下 面 代 价 函 数 最 小 训 练 min ⁡ θ C ∑ i − 1 m [ y ( i ) c o s t 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T f ( i ) ) ] + λ 2 ∑ j = 1 n θ j 2 \begin{aligned} & 获得一组训练集:(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\\ & 设置l^{(i)}=x^{(i)}\\ & 对于给定的一个目标预测变量x:\\ & \qquad f_i=similarity(x,l^{(i)})\\ & 对于训练集(x^{(i)},y^{(i)}),将x^{(i)}转换成f^{(i)}\\ & \qquad f_j^{(i)}=sim(x^{(i)},l^{(j)})\\ & \qquad 另注意:当j=i时,即f_i^{(i)}=sim(x^{(i)},l^{(i)}=x^{(i)})=\exp(-\frac{0}{2\sigma^2})=1\\ & \qquad 合并起来f^{(i)}=\begin{bmatrix} f_0^{(i)}\\f_1^{(i)}\\...\\f_m^{(i)} \end{bmatrix}\\ & 判断\theta^Tf>=0。这里f是固定的,所以要优化\theta来确保下面代价函数最小\\ & 训练\min_\theta C\sum_{i-1}^m [y^{(i)}cost_1(\theta^Tf^{(i)})+(1-y^{(i)})cost_0(\theta^Tf^{(i)})]+\frac{\lambda}{2}\sum_{j=1}^n\theta_j^2 \end{aligned} (x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))l(i)=x(i)xfi=similarity(x,l(i))(x(i),y(i))x(i)f(i)fj(i)=sim(x(i),l(j))j=ifi(i)=sim(x(i),l(i)=x(i))=exp(2σ20)=1f(i)=f0(i)f1(i)...fm(i)θTf>=0fθθminCi1m[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+2λj=1nθj2

上述过程大致分为两部分。

  • 根据训练集确定核,后计算得出训练集中不同样本点x的位置与核的距离,将xi变为得到的fi,之后使用后fi可以兼顾到所有的核。
  • 调整Θf,使得其代价函数尽可能小,这里就是确定Θ向量了,决策边界同样是Θ的法向量。

多层svm分类。

当样本不止y=0或y=1两种情况时。我们仍可以通过svm进行分类。

对于y={0,1,2,…,k}时。

可以通过单独训练01分类法,最后合并起来,得出结果。
对 于 ( x , y = i ) 样 本 。 训 练 出 相 应 的 θ ( i ) 使 用 ( θ ( i ) ) T f 来 进 行 判 断 对于(x,y=i)样本。\\ 训练出相应的\theta^{(i)}\\ 使用(\theta^{(i)})^Tf来进行判断 (x,y=i)θ(i)使(θ(i))Tf

使用svm库函数

现在网络上已经有成熟的svm库可以调用了,并且内部提供了更为完整和高校的优化方法策略。

因此我们不用手动重复造轮子了。只需要在使用的时候调用即可。

一般库函数中,允许我们自行调整的参数一般有以下几种:

  • 选择常数C,用来体现正则项,确定过拟合和欠拟合。
  • 选择核函数,有多种核函数可供选择,上面距离的是一种常用核函数(高斯核函数)。
    • 之后能够自行确定变量,如σ等。

补充

另外,对于逻辑回归,svm,核函数的使用情况。

  • 当样本数大的时候,建议使用逻辑回归。
  • 当样本数小的时候
    • m适中,可以使用svm+高斯核函数。
    • m很大,有了很多的特征,可以使用逻辑回归 或 不带核函数的svm。

参考资料:

B站吴恩达视频:https://www.bilibili.com/video/BV164411b7dx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值