《机器学习实战》学习笔记(五)之支持向量机(上)基础理论及算法推导

转载请注明作者和出处:http://blog.csdn.net/john_bh/
运行平台: Windows
Python版本: Python3.6
IDE: Sublime text3

一、什么是SVM

支持向量机(support vector machines)是一种二分类模型,它的基本模型是定义在特征空间上的最大间隔的线性分类器,间隔最大化是他有别于感知机(旨在求出将训练数据进行划分的分离超平面,采用的是误分类最小策略),从而将数据分开。

1.1 SVM学习方法模型

线性可分SVM:当训练数据线性可分时,通过硬间隔最大化(所有样本都必须划分正确),学习一个线性分类器,即线性可分支持向量机,又称为硬间隔支持向量机。
线性SVM:当训练数据近似线性可分时,通过软间隔最大化(允许一些样本不满足条件,即允许错分),学习一个线性分类器,即线性支持向量机,又称为软间隔支持向量机。
非线性SVM:当训练数据线性不可分时,通过使用核技巧和软间隔最大化,学习一个线性分类器,即非线性支持向量机。

1.2 相关概念

支持向量机学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的类。定义分离超平面目标函数为:

f(x)=wTx+b

其中  w=wi,w2,...,wd 为法向量,决定了超平面的方向; b 为位移项,决定了超平面与原点之间的距离。
样本空间中任意一点 x 到超平面 (w,b) 的距离可以写作
γ=|wTx+b|||w||

1.2.1 函数间隔和几何间隔

1.2.2 间隔最大化

svm为什么采用间隔最大化?
当训练数据线性可分时,存在无穷多个分离超平面可以将两类数据正确分开,感知机利用的是误分类最小策略求得分离超平面,不过此时的解有无穷多个,而线性可分SVM,利用间隔最大化求得的最有超平面有且只有一个,另外,此时的分割超平面所产生的分类效果也是最鲁棒的,对未知实例的泛化能力最强。

1.2.3 对偶算法及拉格朗日乘子法

1.2.4 KKT条件

1.2.5 SMO算法

序列最小最优化(sequential minimal optimization,SMO)算法是一种启发式算法。基本思路是:
如果所有变量都满足次最优化问题的KKT条件(Karush-Kuhn-Tucker conditions),那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件,,否则选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个
先固定 αi 之外的所有参数,然后求 αi 上的极值。

1.2.6 核函数

二、SVM算法推导

2.1 线性可分SVM算法推导

2.2 线性SVM算法推导

2.3 非线性SVM算法推导

三、总结

3.1 SVM的优缺点

优点:泛化错误率低,计算开销不大,结果容易解释
缺点:对参数的调节和核函数的选择敏感,演示分类器不加修改仅适用于处理二类问题。
适用数据类型:数值型和标称型数据

3.2 SVM应用的一般框架

SVM的一般流程

  1. 收集数据:可以使用任意方法
  2. 准备数据:需要数值型数据
  3. 分析数据:有助于可视化分割超平面
  4. 训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优
  5. 测试算法:十分简单的计算过程就可以实现
  6. 使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类分类器,对多类问题应用SVM需要对代码做一些修改。

猜你喜欢

转载自blog.csdn.net/john_bh/article/details/78889165
今日推荐