lxinghua

博客园 首页 新随笔 联系 订阅 管理

一、什么是SVM

支持向量机(Support Vector Machine,SVM)是用于分类的一种算法,也属于有监督学习的范畴。

当一个分类问题,数据是线性可分(linearly separable)的,也就是用一根棍就可以将两种小球分开的时候,我们只要将棍的位置放在让小球距离棍的距离最大化的位置即可,寻找这个最大间隔的过程,就叫做最优化。但是,现实往往是很残酷的,一般的数据是线性不可分的,也就是找不到一个棍将两种小球很好的分类。这个时候,我们就需要球模拟成三维空间,然后找到将球分类的平面。而将球模拟成三维空间的这个东西就是核函数(kernel),用于切分小球的平面就是超平面(hyperplane)。如果数据集是N维的,那么超平面即使N-1维的。

把一个数据集正确分开的超平面可能有多个(如下图),而那个具有“最大间隔”的超平面就是SVM要寻找的最优解。而这个正则的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为“支持向量(support vector)”。支持向量到超平面的距离被称为间隔(margin)。

 

二、线性SVM

1. 概述

一个最优化问题通常有两个最基本的因素:

① 目标函数,也就是你希望什么东西的什么指标大到最好;

② 优化对象,你期望通过改变哪些因素来使你的目标函数达到最优。

在线性SVM算法中,目标函数显然就是那个“间隔”, 而优化对象则是超平面。

我们以线性可分的二分类问题为例

2. 间隔的计算公式

“间隔”其实就是点到直线的距离,这里采用向量法:

3. 约束条件

虽然找到了目标函数,但是:

① 我们如何判断一条直线能够将所有的样本点都正确分类?

② 超平面的位置应该是在间隔区域的中轴线上,所以确定超平面位置的b参数也不能随意的取值。

③ 对于一个给定的超平面,我们如何找到对应的支持向量,来计算距离d?

上述三个问题就是“约束条件”,也就是说,我们要优化的变量的取值方位受到了约束和限制。既然乐手确定存在,那么就不得不用数学语言对它们进行描述。这里需要说明的是SVM可以通过一些小技巧,将这些约束条件糅合成一个不等式。

以下图为例,演示以下糅合过程:在平面空间中有红蓝两种点,对其分别标记为:红色为正样本,标记为+1,;蓝色为负样本,标记-1。

 

 

4. 线性SVM优化问题基本描述

 

5. 最优化问题的求解

 

6. 对偶问题求解

三、SMO算法

1. 概述

2. SMO算法流程

3. 简化版SMO算法

3.1 SMO算法的伪代码

3.2 构建辅助函数

3.3 简化版SMO算法

3.4 支持向量的可视化

4. 完整版SMO算法

4.1概述

4.2 虚招决策边界的优化例程

4.3 构建完整版SMO算法

5. 核函数

5.1 Sigmoid核函数

五、非线性SVM

1. 构建核转换函数

2. 更新辅助函数

3. 非线性SVM算法

4. 利用核函数进行分类

六、SVM之手写数字识别

1. 导入数据集

2. 手写数字的测试函数

3. 不同核函数及参数运行结果

七、算法总结

1. 优点

2. 缺点

posted on 2023-06-05 19:55  興華  阅读(58)  评论(0编辑  收藏  举报