第6章 支持向量机_第1页
第6章 支持向量机_第2页
第6章 支持向量机_第3页
第6章 支持向量机_第4页
第6章 支持向量机_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章支持向量机简介

支持向量机是一种功能强大的机器学习算法。典型的支持向量机是一种二分类算法,其基本思想是:对于空间中的样本点集合,可用一个超平面将样本点分成两部分,一部分属于正类,一部分属于负类。支持向量机的优化目标就是找到这样一个超平面,使得空间中距离超平面最近的点到超平面的几何间隔尽可能大,这些点称为支持向量。本章要点6.1最大间隔及超平面6.2线性可分支持向量机6.3线性支持向量机6.4合页损失函数6.5核技巧6.6二分类问题与多分类问题6.7实例:基于支持向量机实现葡萄酒分类6.1

最大间隔及超平面

6.1

最大间隔及超平面

6.2线性可分支持向量机

将距离超平面最近的点与超平面之间的距离记为最优化问题可写做

6.2线性可分支持向量机

6.2线性可分支持向量机

6.2线性可分支持向量机图6‑1线性可分支持向量机

在感知机模型中,优化的目标是:在满足模型能够正确分类的约束条件下,使得样本集合中的所有点到分割超平面的距离最小,这样的超平面可能存在无数个。一个简单的例子,假如二维空间中样本集合中正负样本个数点均为一个,那么垂直于两者所连直线,且位于两者之间的所有直线都将是符合条件的解。由于优化目标不同,造成解的个数不同,这是支持向量机与感知机模型很大的一个不同。6.2线性可分支持向量机图6‑1线性可分支持向量机对于以上提到的优化问题(上式),可使用拉格朗日乘子法进行求解,拉格朗日函数为:其中,,表示拉格朗日乘子。令对和的偏导为06.2线性可分支持向量机解得:代入得到:求对的极大,等价于求对的极小,因此原式的对偶问题为6.2线性可分支持向量机

求解上式(对偶问题)的优化问题,即可得到:,根据KKT(Karush-Kuhn-Tucker)条件,是原始问题的最优解,且是对偶问题的最优解的充要条件是:,满足KKT条件,即:由考察KKT条件的第三条,可以发现或

因此假设,则必有,于是,由此得到分割超平面6.2线性可分支持向量机

6.2线性可分支持向量机

6.3线性支持向量机

6.3线性支持向量机

6.3线性支持向量机类似于线性可分支持向量机中的求解过程,上式的拉格朗日函数可写作是拉格朗日乘子.令对的导数为0,可解得6.3线性支持向量机代入:求对的极大,等价于求对的极小.因此,此问题的对偶问题为6.3线性支持向量机

6.3线性支持向量机线性可分支持向量机线性支持向量机

6.3线性支持向量机类似线性可分支持向量机,可得由此得到分割超平面通过分析

的值,可以确定样本相对分割超平面的位置6.3线性支持向量机

6.3线性支持向量机

6.3线性支持向量机图6‑2线性可分支持向量机对于变量x,合页损失函数的定义为:对于线性支持向量机,以下左侧的最优化问题,等价于以下右侧优化式中的问题其中是合页损失的形式6.4合页损失函数合页损失形式:令,则6.4合页损失函数可写作:令则有可见在线性支持向量机中,以下两式等价:图6‑3合页损失函数

上面讨论的线性可分支持向量机和线性支持向量机都假设数据是线性可分的(线性支持向量机可以认为是为了解决线性可分样本集合中的噪声问题)。而实际场景中我们经常会遇到数据线性不可分的情况。此时,就可以通过本节介绍的核方法将输入空间线性不可分的数据转化为特征空间线性可分的数据,在特征空间求解支持向量机的超平面。6.5核技巧

6.5核技巧图6‑4-1原始数据图6‑4-2多项式核函数

6.5核技巧此时向量机的决策函数为:

6.5核技巧相应的决策函数为:6.5核技巧

6.5核技巧

6.6 二分类问题与多分类问题

6.6.1一对一

6.6.2一对多

6.6.3多对多6.7 实例:基于支持向量机实现葡萄酒分类本节以葡萄酒数据集分类为例介绍SVM模型。完整代码如代码清单6-1所示。fromsklearn.datasets

importload_winefromsklearn.model_selection

importtrain_test_splitfromsklearn.svm

importSVCif__name__==

'__main__':wine=load_wine()x_train,x_test,y_train,y_test=train_test_split(wine.data,wine.target)model=SVC(kernel='linear')model.fit(x_train,y_train)

train_score=model.score(x_train,y_train)test_score=model.score(x_test,y_test)

print("trainscore:",train_score)

print("testscore:",test_score)代码清单

6‑1SVM葡萄酒数据集分类项目中选用的模型是sklearn提供的SVC,其构造函数的kernel参数可以选择linear:线性核函数poly:多项式核函数rbf:径向基核函数/高斯核sigmod:sigmod核函数precomputed:提前计算好核函数矩阵

这里使用的是最简单的线性核函数。经过测试,模型在训练集的准确率达到0.993,在测试集的准确率达到0.972。如果使用默认的高斯核函数,模型在训练集的准确率可以达到1,但是在测试集的准确率却跌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论