SVM从入门到精通(一)

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_32502811/article/details/80946889 我是标题党【doge】······ 最近在看SVM算法的原理,之前只知道用,但是对理论推导并不是很明白,这次算是复习一下,加深理解。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_32502811/article/details/80946889

我是标题党【doge】······
最近在看SVM算法的原理,之前只知道用,但是对理论推导并不是很明白,这次算是复习一下,加深理解。

从感知机说起

要深入理解SVM,首先要从感知机说起。
什么是感知机呢?

感知机(perceptron)是二类分类的线性分类模型。
假设输入空间为χRnχ⊆Rn,输出空间是y=1,+1y=−1,+1.由输入空间到输出空间的如下函数f(x)=sign(ωx+b)f(x)=sign(ω⋅x+b)称为感知机。

也就是说,我的ωω参数和bb参数,确定了一个分离超平面,将训练数据集划分为两个部分,分别为正类和负类。因此,我们需要知道ωω和b的值,确定这个超平面,那么来了一个新的数据,通过计算和这个超平面的距离,就知道它属于哪个类别了。

因此,我们的任务就变成了求ωωbb的值是什么,从而确定分离超平面。
在这里,我们有一个前提条件,就是数据集是线性可分的

那么如何求这两个参数呢?我们需要确定一个学习策略,即定义经验损失函数并将其极小化。也就是我们常说的loss.

在感知机中,我们选择的loss为误分类点到超平面的总距离,让这个总距离最小,这就是我们的优化目标。特征空间中任意一点x0x0到超平面的距离为:

1ω|ωx0+b|1‖ω‖|ω⋅x0+b|

对于误分类的数据 (xi,yi)(xi,yi)来说, yi(ωx+b)<0yi(ω⋅x+b)<0.因此,误分类点到分类超平面的距离就是 1ωyi|ωx+b|−1‖ω‖yi|ω⋅x+b|
因此,所有误分类点到分类超平面的距离就是:
1ωxiMyi(ωx+b)−1‖ω‖∑xi∈Myi(ω⋅x+b)

由于 1ω1‖ω‖为常数,因此不考虑它。于是,我们得到了感知机的损失函数:
L(ω,b)=xiMyi(ωxi+b)L(ω,b)=−∑xi∈Myi(ω⋅xi+b)

且该损失函数关于 ωω和b连续可导。

有了学习策略,也就是我们的经验函数,接下来就是学习算法了。我们将学习问题转化为了优化问题,解决方法就是随机梯度下降(SGD),这里不展开说了。
对于感知机,学习算法有原始形式对偶形式

  • 原始形式:
    1. 选取ω0,b0ω0,b0的初值,可以随机给。
    2. 在训练集中选取数据(xi,yi)(xi,yi)
    3. 如果yi(ωxi+b)<0yi(ωxi+b)<0(说明被分错了):
      ωω+ηyixiω←ω+ηyixi
      bb+ηyib←b+ηyi
    4. 回到2,直至没有错分的点。

  • 对偶形式
    对偶形式的基本想法是,将ωω和b 表示为实例xixi和label yiyi的线性组合形式,通过求解其系数,求得ωω和b。
    按照上面的参数更新过程,我们设初始值都为0,那么经过n次迭代以后,ωω和b关于(xi,yi)(xi,yi)的增量为αiyixiαiyixiαiyiαiyi,其中αiηαiη。因此,最后学习到的参数值分别可以表示为:
    ω=i=1Nαiyixiω=∑i=1Nαiyixi
    b=i=1Nαiyib=∑i=1Nαiyi

    基于此,感知机的模型就可以表示为f(x)=sign(Nj=1αjyjxjx+b)f(x)=sign(∑j=1Nαjyjxj⋅x+b)
    实例点更新的次数越多,意味着它与分离超平面越近,越不好分。也就是说,这样的实例对学习的结果影响最大。

那么,对偶形式就可以如下表示了:
1. 参数为αα,b,赋初值为0.
2. 在训练集中选取数据(xi,yi)(xi,yi)
3. 如果(Nj=1αjyjxjx+b)<=0(∑j=1Nαjyjxj⋅x+b)<=0:

αiαi+ηαi←αi+η
bb+ηyib←b+ηyi

4. 转2,直到没有误分类的点。

对偶形式中,训练集仅以内积的形式出现,为了方便,可以预先算出来存储下来,这个矩阵就是Gram矩阵

G=[xixj]N×NG=[xi⋅xj]N×N

总结

  1. 首先,感知机应用场景为,数据集是线性可分的,这是前提。
  2. 感知机的经验损失函数为误分类点到分离超平面的距离和,让这个距离和达到最小。
  3. 感知机学习得到的分离超平面并不唯一,有无穷多解。解由于初值不同或者迭代顺序不同而可能有所不同。
  4. 学习算法为随机梯度下降.有原始形式和对偶形式。
目录
相关文章
|
1天前
|
机器学习/深度学习 数据采集 自然语言处理
机器学习之sklearn基础教程
机器学习之sklearn基础教程
|
1月前
|
数据可视化 算法
【R语言实战】——kNN和朴素贝叶斯方法实战
【R语言实战】——kNN和朴素贝叶斯方法实战
|
1月前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习中的Bagging与Boosting
【4月更文挑战第30天】本文介绍了集成学习中的两种主要策略:Bagging和Boosting。Bagging通过自助采样构建多个基学习器并以投票或平均法集成,降低模型方差,增强稳定性。在Python中可使用`BaggingClassifier`实现。而Boosting是串行学习,不断调整基学习器权重以优化拟合,适合弱学习器。Python中可利用`AdaBoostClassifier`等实现。示例代码展示了如何在实践中运用这两种方法。
|
机器学习/深度学习 算法
|
机器学习/深度学习 算法
SVM学习笔记
SVM学习笔记
100 0
|
机器学习/深度学习 算法 PyTorch
从零开始学Pytorch(二)之线性回归
从零开始学Pytorch(二)之线性回归
从零开始学Pytorch(二)之线性回归
|
机器学习/深度学习 算法 开发者
Svm 介绍| 学习笔记
快速学习 Svm 介绍。
87 0
Svm 介绍| 学习笔记
|
机器学习/深度学习 算法
GBDT入门学习
决策树A decision tree is a machine learning model that builds upon iteratively asking questions to partition data and reach a solution.结点:feature分支:决策叶子:结果痛点:过拟合     即在validation dataset 上表现好,但在test data
GBDT入门学习
|
机器学习/深度学习 数据可视化 PyTorch
【PyTorch基础教程1】线性模型(学不会来打我啊)
不要小看简单线性模型哈哈,虽然这讲我们还没正式用到pytorch,但是用到的前向传播、损失函数、两种绘loss图等方法在后面是很常用的。
98 0
【PyTorch基础教程1】线性模型(学不会来打我啊)
|
机器学习/深度学习 算法 数据可视化
斯坦福tensorflow教程(三) 线性和逻辑回归
斯坦福tensorflow教程(三) 线性和逻辑回归
143 0
斯坦福tensorflow教程(三) 线性和逻辑回归