SVM-2

1. SVM算法特性(优点):

线型svm

1.1 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting
1.2 SVM训练出来的模型完全依赖于支持向量(Support Vectors), 即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。
1.3 一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。(如果support vectors都在边际线上,针对这个例子训练的比较好,但是overfiting能力就很弱。)

2. 线性不可分的情况 (linearly inseparable case)线型不可分svm

2.1 数据集在空间中对应的向量不可被一个超平面区分开
2.2 两个步骤来解决:

2.2.1 利用一个非线性的映射把原数据集中的向量点转化到一个更高维度的空间中
2.2.2 在这个高维度的空间中找一个线性的超平面来根据线性可分的情况处理在这里插入图片描述
在这里插入图片描述
2.2.3 视觉化演示 https://www.youtube.com/watch?v=3liCbRZPrZA

2.3 如何利用非线性映射把原始数据转化到高维中?

2.3.1 例子:
3维输入向量:
在这里插入图片描述
转化到6维空间 Z 中去:在这里插入图片描述在这里插入图片描述
新的决策超平面:
在这里插入图片描述
其中W和Z是向量,这个超平面是线性的
解出W和b之后,并且带入回原方程:
在这里插入图片描述
2.3.2 思考问题:
2.3.2.1: 如何选择合理的非线性转化把数据转到高纬度中?
2.3.2.2: 如何解决计算内积时算法复杂度非常高的问题?
2.3.3 使用核方法(kernel trick)

3. 核方法(kernel trick)

3.1 动机

在线性SVM中转化为最优化问题时求解的公式计算都是以内积(dot product)的形式出现的
在这里插入图片描述
,其中
在这里插入图片描述
是把训练集中的向量点转化到高维的非线性映射函数,因为内积的算法复杂度非常大,所以我们利用核函数来取代计算非线性映射函数的内积。

3.1 以下核函数和非线性映射函数的内积等同在这里插入图片描述
3.2 常用的核函数(kernel functions)

h度多项式核函数(polynomial kernel of degree h):
在这里插入图片描述
高斯径向基核函数(Gaussian radial basis function kernel):
在这里插入图片描述
S型核函数(Sigmoid function kernel):
在这里插入图片描述
如何选择使用哪个kernel?
根据先验知识,比如图像分类,通常使用RBF,文字不使用RBF
尝试不同的kernel,根据结果准确度而定

3.3 核函数举例:

假设定义两个向量: x = (x1, x2, x3); y = (y1, y2, y3)
定义方程:f(x) = (x1x1, x1x2, x1x3, x2x1, x2x2, x2x3, x3x1, x3x2, x3x3)
K(x, y ) = (<x, y>)^2
假设x = (1, 2, 3); y = (4, 5, 6).
f(x) = (1, 2, 3, 2, 4, 6, 3, 6, 9)
f(y) = (16, 20, 24, 20, 25, 36, 24, 30, 36)
<f(x), f(y)> = 16 + 40 + 72 + 40 + 100+ 180 + 72 + 180 + 324 = 1024

K(x, y) = (4 + 10 + 18 ) ^2 = 32^2 = 1024

同样的结果,使用kernel方法计算容易很多(算法复杂度减少很多)

4. SVM扩展可解决多个类别分类问题

对于每个类,有一个当前类和其他类的二类分类器(one-vs-rest)
(设置多个分类器的方法,现实生活中有很多类不止是两类)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值