机器学习之支持向量机(SVM)

本文深入探讨支持向量机(SVM)的原理,包括其与神经网络的区别,如代价函数的转换和C参数的引入,以及如何实现大间距分类。介绍了核函数的概念,特别是高斯核函数的作用,用于解决非线性分类问题。此外,讨论了参数选择对模型性能的影响,如C和σ的选择,并提供了不同场景下选择SVM或逻辑回归的指导。最后,SVM在多类分类问题中的应用以及如何确定合适的参数也被提及。

支持向量机(SVM)

假设函数:

形式

在这里插入图片描述

与神经网络的两点区别:

1.代价函数
在这里插入图片描述

可以从这个对比上看出原来的神经网络是对数形式的sigmoid函数我们将其替换为cost1和cost0,分别意味着预测结果距离1的代价和距离0的代价。

在这里插入图片描述

新代价函数图形,当距离足够远时直接令Z=0;

2.C的引入

正则化项前不再拥有参数λλλ,反而是预测项拥有了系数C,我们这里可以把C理解为1/λ1/λ1/λ

大间距分类器

在这里插入图片描述

如图的一组正负样本,SVM所做的正式那条黑色的直线,尽力以最大的间距将两组数据分割开来(可以理解为到蓝色的直线的距离)

数学理解

在这里插入图片描述

为何能进行大间距分类?

我们将θT∗Xθ^T*XθTX看成向量内积的形式,那么其也可以写成P×∣∣θ∣∣P×||θ||P×θ的形式,其中P为X在θ方向上的投影,因为我们想要我们的代价函数取最小值,所以我们会令P×∣∣θ∣∣P×||θ||P×θ的绝对值尽量大,在θ不变的情况下,即令P的值尽量大

在这个示例里我们会让θ尽量贴近于坐标轴,而分割线则会垂直于坐标轴。

核函数(kernel)

引入

为了解决复杂的非线性分类问题

在这里插入图片描述

如图所示,如果想要解决这种问题,用神经网络的方法是将原来的特征进行排列组合,引入大量的多项式比如x12,x2x3x_1^2,x_2x_3x12,x2x3作为新的特征,但是这样会拖慢计算机的运行速度。

在SVM中我们引入了新的构造特征值的方法,即利用核函数。

也可理解为相似函数

给定一个训练样本x,我们利用x的各个特征与我们预先选定的地标(landmarks)l1,l2,l3l_1,l_2,l_3l1,l2,l3的近似程度来选取新的特征。

高斯核函数:

在这里插入图片描述

当x与l1l_1l1靠近时,f1f_1f1的值趋近于1

当x与l1l_1l1远离时,f1f_1f1的值趋近于0

实例

在这里插入图片描述

对于如图的模型,假设我们训练出的参数如上,那最终我们会形成这样的分类效果。

特征点的选取

若训练集有m个样本,则选取m个特征点

对每一个样本都对其他所有点取高斯核函数,那么每一个点都可以形成一个这样的m维特征向量

在这里插入图片描述

方程进化

我们的代价函数也会相应地变成这样:

在这里插入图片描述

这时我们的判断就是当θTf(i)>0θ^Tf^{(i)}>0θTf(i)>0时,predict y=1

θTf(i)<0θ^Tf^{(i)}<0θTf(i)<0时,predict y=0

有时我们也会用θT∗M∗θθ^T*M*θθTMθ来代替θ2θ^2θ2,其中M的值取决于核函数

这样做的目的是简化计算,提高运行时的速度

参数选择

因为C=1/λC=1/λC=1/λ

所以C过大,意味着λ偏小,可能导致高方差,过拟合

所以C过大,意味着λ偏大,可能导致高偏差,欠拟合

在这里插入图片描述

σ的大小和核函数的平滑程度有关

而σ过大,意味着高偏差,欠拟合

而σ过小,意味着高方差,过拟合

参考正态分布图像

线性核函数

即不适用核函数的情况‘

因为它的作用是仅仅提供一个线性分类器,因此得名

适用于有大量特征值和很少数据集的情况

应用

多类分类问题

可以应用one vs all的方法,也可以直接调用SVM软件库里的多分类器(一般会有)

需要做的事

  1. 确定参数C
  2. 选择恰当的核函数(一般是高斯或线性)

算法选择

n为特征数,m为训练样本数。

SVM的速度主要取决于m的大小,逻辑回归速度取决于n的大小

  1. n>>m,即训练集数据量不够支持我们训练一个复杂的非线性模型

    我们选用逻辑回归模型或者不带核函数的支持向量机。

  2. 如果n较小,而且m大小中等

    例如n在 1-1000 之间,而m在10-10000之间

    使用高斯核函数的支持向量机。

  3. 如果n较小,而m较大,例如n在1-1000之间,而m大于50000

    则使用支持向量机会非常慢,解决方案是创造、增加更多的特征

    然后使用逻辑回归或不带核函数的支持向量机。

另这些情况使用训练得当的神经网络都会得到恰当的结果

但是比如上面第二种种情况SVM的速度会远快于神经网络

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值