支持向量机(SVM)与案列讲解(Python 实现案列)

1. SVM算法简介1.1 SVM 算法导入在很久以前的情⼈节, ⼤侠要去救他的爱⼈, 但魔⻤和他玩了⼀个游戏。魔⻤在桌⼦上似乎有规律放了两种颜⾊的球, 说:“你⽤⼀根棍分开它们? 要求: 尽量在放更多球之后, 仍然适⽤。 ”于是⼤侠这样放, ⼲的不错?然后魔⻤, ⼜在桌上放了更多的球, 似乎有⼀个球站错了阵营。怎么办? ?把分解的⼩棍⼉变粗。SVM就是试图把棍放在最佳位置, 好让在棍的两边有尽可能⼤的间隙。现在即使魔⻤放了更多的球, 棍仍然是⼀个好的分界线然后, 在S
摘要由CSDN通过智能技术生成

 

目录

1. SVM算法简介

1.1 SVM 算法导入

2 SVM算法定义

2.1 定义

2.2 超平面最大间隔介绍

2.3 硬间隔和软间隔

2.3.1 硬间隔

2.3.2 软间隔分类

2.4 小结

3 SVM算法原理

3.1 定义输入数据

3.2 线性可分支持向量机

3.3 SVM的计算过程与算法步骤

3.3.1 推导目标函数

3.4 目标函数的求解

3.4.1 拉格朗日乘子法

3.4.2 对偶问题

4 举例

5 SVM的损失函数

6 SVM的核方法

6. 1 什么是核函数

6.1.1 核函数概念

6.2 核函数举例

6.2.1 核方法举例1:

6.1.2 核方法举例2 :

6.2 常见核函数

7 SVM回归

8 SVM算法api介绍

8.1 SVM算法api综述

8.2 SVC 

8.3 NuSVC

8.4 LinearSVC

9 案例:数字识别器

9.1 案例背景介绍

9.2 数据介绍

9.2 案例实现

10 SVM总结

10.1 SVM 基本综述

10.2 SVM优缺点



1. SVM算法简介

1.1 SVM 算法导入

在很久以前的情⼈节, ⼤侠要去救他的爱⼈, 但魔⻤和他玩了⼀个游戏。
魔⻤在桌⼦上似乎有规律放了两种颜⾊的球, 说:
“你⽤⼀根棍分开它们? 要求: 尽量在放更多球之后, 仍然适⽤。 ”

于是⼤侠这样放, ⼲的不错?

然后魔⻤, ⼜在桌上放了更多的球, 似乎有⼀个球站错了阵营。

怎么办? ?
把分解的⼩棍⼉变粗。
SVM就是试图把棍放在最佳位置, 好让在棍的两边有尽可能⼤的间隙。

现在即使魔⻤放了更多的球, 棍仍然是⼀个好的分界线

然后, 在SVM ⼯具箱中有另⼀个更加重要的技巧( trick) 。 魔⻤看到⼤侠已经学会了⼀个trick, 于是魔⻤给了⼤侠⼀个新的挑战。

现在, ⼤侠没有棍可以很好帮他分开两种球了, 现在怎么办呢?当然像所有武侠⽚中⼀样⼤侠桌⼦⼀拍, 球⻜到空中。 然后, 凭借⼤侠的轻功, ⼤侠抓起⼀张纸, 插到了两种球的中
间。

现在, 从魔⻤的⻆度看这些球, 这些球看起来像是被⼀条曲线分开了。

球—— 「data」 数据
棍⼦—— 「classifier」 分类
最⼤间隙——「optimization」 最优化
拍桌⼦——「kernelling」 核⽅法
纸——「hyperplane」 超平⾯
案例来源: http://bytesizebio.net/2014/02/05/support-vector-machines-explained-well/


2 SVM算法定义

2.1 定义

SVM: SVM全称是supported vector machine(⽀持向量机) , 即寻找到⼀个超平⾯使样本分成两类, 并且间隔最⼤。
SVM能够执⾏线性或⾮线性分类、 回归, 甚⾄是异常值检测任务。 它是机器学习领域最受欢迎的模型之⼀。 SVM特别适⽤于中⼩型复杂数据集的分类。

2.2 超平面最大间隔介绍

上左图显示了三种可能的线性分类器的决策边界:
虚线所代表的模型表现⾮常糟糕, 甚⾄都⽆法正确实现分类。 其余两个模型在这个训练集上表现堪称完美, 但是它们的
决策边界与实例过于接近, 导致在⾯对新实例时, 表现可能不会太好。

右图中的实线代表SVM分类器的决策边界, 不仅分离了两个类别, 且尽可能远离最近的训练实例

2.3 硬间隔和软间隔

2.3.1 硬间隔

在上⾯我们使⽤超平⾯进⾏分割数据的过程中, 如果我们严格地让所有实例都不在最⼤间隔之间, 并且位于正确的⼀边, 这就是硬间隔分类。
硬间隔分类有两个问题, ⾸先, 它只在数据是线性可分离的时候才有效; 其次, 它对异常值⾮常敏感。
当有⼀个额外异常值的鸢尾花数据: 左图的数据根本找不出硬间隔, ⽽右图最终显示的决策边界与我们之前所看到的⽆异常值时的决策边界也⼤不相同, 可能⽆法很好地泛化。

2.3.2 软间隔分类

要避免这些问题, 最好使⽤更灵活的模型。 ⽬标是尽可能在保持最⼤间隔宽阔和限制间隔违例(即位于最⼤间隔之上,甚⾄在错误的⼀边的实例) 之间找到良好的平衡, 这就是软间隔类。。

在Scikit-Learn的SVM类中, 可以通过超参数C来控制这个平衡: C值越⼩, 则间隔越宽, 但是间隔违例也会越多。 上图显示了在⼀个⾮线性可分离数据集上, 两个软间隔SVM分类器各⾃的决策边界和间隔。
左边使⽤了⾼C值, 分类器的错误样本(间隔违例) 较少, 但是间隔也较⼩。
右边使⽤了低C值, 间隔⼤了很多, 但是位于间隔上的实例也更多。 看起来第⼆个分类器的泛化效果更好, 因为⼤多数间隔违例实际上都位于决策边界正确的⼀边, 所以即便是在该训练集上, 它做出的错误预测也会更少。
 

2.4 小结

  • SVM算法定义

     寻找到一个超平面使样本分成两类,并且间隔最大

  • 硬间隔和软间隔

      硬间隔

     1.只有在数据使线性可分离的时候才有效

     2. 对异常值非常敏感

    软间隔

    尽可能在保持最大间隔宽阔和间隔违例之间找到良好的平衡

3 SVM算法原理

3.1 定义输入数据

假设给定⼀个特征空间上的训练集为:

⾄于为什么正负⽤(-1, 1) 表示呢?
其实这⾥没有太多原理, 就是⼀个标记, 你也可以⽤(2, -3)来标记。 只是为了⽅便, 的过程中刚好可以相等, 便于之后的计算。 )

3.2 线性可分支持向量机

给定了上⾯提出的线性可分训练数据集, 通过间隔最⼤化得到分离超平⾯为 :

相应的分类决策函数为:

以上决策函数就称为线性可分⽀持向量机。
这⾥解释⼀下这个东东。
这是某个确定的特征空间转换函数, 它的作⽤是将x映射到更⾼的维度, 它有⼀个以后我们经常会见到的专有称号”核函数“

以上就是线性可分⽀持向量机的模型表达式。 我们要去求出这样⼀个模型, 或者说这样⼀个超平⾯y(x),它能够最优地分离两个集合
其实也就是我们要去求⼀组参数(w,b),使其构建的超平⾯函数能够最优地分离两个集合。
如下就是⼀个最优超平⾯:                                                                   又比如说这样:阴影部分是⼀个“过渡带”, “过渡带”的边界是集合中离超平⾯最近的样本点落在的地⽅。

                

3.3 SVM的计算过程与算法步骤

3.3.1 推导目标函数

我们知道了⽀持向量机是个什么东⻄了。 现在我们要去寻找这个⽀持向量机, 也就是寻找⼀个最优的超平⾯。于是我们要建⽴⼀个⽬标函数。 那么如何建⽴呢?
再来看⼀下我们的超平⾯表达式:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值