当前位置: 首页 > news >正文

第六章:支持向量机

目录

6.1 间隔与支持向量

6.2 对偶问题

6.3 核函数

6.4 软间隔与正则化

6.4.1 软间隔

6.4.2 正则化

6.5 支持向量回归

6.6 核方法

6.1 间隔与支持向量

分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开.但能将训练样本分开的划分超平面可能有很多,如下图所示

图6.1 划分超平面

“正中间”的:鲁棒性最好,泛化能力最强

超平面方程:

w^Tx+b=0

样本空间中任意点到超平面(w,b)的距离可写为:

r=\frac{|w^T+b|}{||w||}

如图6..1.2所示,距离超平面最近的这几个训练样本点点到超平面的距离为1,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为:

\gamma =\frac{2}{||w||}

图6.1.2 支持向量与间隔

 现在我们需要找到最大间隔的划分超平面,使y最大

6.2 对偶问题

支持向量机本身是一个二次规划问题,能用优化计算包求解,但可以有更高效的办法

拉格朗日乘子法:

  • 第一步:引入拉格朗日乘子法\alpha _i\geq0得到拉格朗日函数:

L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}a_i(1-y_i(w^Tx_i+b))

  • 第二步:令L(w,b,a)对w和b的偏导为零可得:

w=\sum_{i=1}^{m}a_iy_ix_i,0=\sum_{i=1}^{m}a_iy_i

  • 第三步:回代可得:

最终模型:

f(x)=w^T+b=\sum_{i=1}^{m}a_iy_ix_i^Tx+b 

需要满足KKT条件:

\left\{\begin{matrix} a_i\geq 0\\ 1-y_if(x_i)\leq 0\\ a_i(1-y_if(x_i))=0 \end{matrix}\right.

必有a_i=0y_if(x_i)=1

  • 解的稀疏性:

训练完成后,最终模型仅与支持向量有关

这个解法还不够方便,还有更容易的方法:

  • SMO:

基本思路:不断执行如下两个步骤直至收敛

  • 第一步: 选取一对需更新的变量a_ia_j
  • 第二步: 固定a_ia_j以外的参数,求解对偶问题更新a_ia_j

仅考虑a_ia_j时,对偶问题的约束0=\sum_{i=1}^{m}a_iy_i变为

 用a_i表示a_j,代入对偶问题,这样就有闭式解。

对任意支持向量(x_s,y_s)y_sf(x_s)=1,可以解出b

但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值

b=\frac{1}{|S|}\sum_{s\in S}^{}(\frac{1}{y_s}-\sum_{i\in S}^{}a_iy_ix_i^Tx_s)

6.3 核函数

若不存在一个能正确划分两类样本的超平面,怎么办?

将样本从原始空间映射到一个更高维的特征空间,使样本在这个特征空间内线性可分

图6.3.1 异或问题与非线性性映射

如果原始空间是有限维(属性数有限),那么—定存在一个高维特征空间使样本线性可分

  • 原始问题:

  • 对偶问题:

  • 预测:

 计算高维的内积非常困难,所以我们设想了一个函数(核函数):

k(x_i,x_j)=\phi (x_i)^T\phi (x_j)

绕过显式考虑特征映射、以及计算高维内积的困难

Mercer定理: 若一个对称函数所对应的核矩阵半正定,则它就能作为核函数来使用

任何一个核函数,都隐式地定义了一个RKHS(Reproducing Kernel HilbertSpace,再生核希尔伯特空间)
“核函数选择”成为决定支持向量机性能的关键!

6.4 软间隔与正则化

6.4.1 软间隔

现实中很难确定合适的核函数。使训练样本在特征空间中线性可分,即便貌似线性可分,也很难断定是否是因过拟合造成的
引入软间隔(Soft Margin),允许在一些样本上不满足约束

图6.4.1 软间隔示意图,红色为不满足约束

 基本思路: 最大化间隔的同时,让不满足约束y_i(w^Tx_i+b)≥1的样本尽可能少

 

 障碍:0/1损失函数非凸、非连续、不易优化!

图6.4.2 三种替代损失函数
  • 采用替代损失函数,是在解决困难问题时的常见技巧
  • 求解替代函数得到的解是否仍是原问题的解?理论上称为替代损失的“—致性”(Consistency)问题

 软间隔支持向量机:

  • 原始问题:

  • 引入”松弛量“:

  • 对偶问题:

根据KKT条件可知,最终模型仅与支持向量有关,也即采用hinge损失函数后仍保持了sVM解的稀疏性

6.4.2 正则化

统计学习模型的更一般形式:

min_f\Omega (f)+C\sum_{i=1}^{m}l(f(x_i),y_i)

 \Omega (f)是结构风险(也被称为正则化项),描述模型本身的某些性质,l(f(x_i),y_i)是经验风险,描述模型与训练数据的契合程度

  • 正则化可理解为“罚函数法”
  • 通过对不希望的结果施以惩罚,使得优化过程趋向于希望目标从贝叶斯估计的角度,则可认为是提供了模型的先验概率

6.5 支持向量回归

基本思路:允许模型输出与实际输出间存在2\varepsilon的差别

标题

 落入2\varepsilon间隔带的样本不计算损失

  • 原始问题:

  • 对偶问题:

  • 预测:

6.6 核方法

  • 表示定理:

令H为核函数k对应的再生核希尔伯特空间,优化问题:

解为:

h^*(x)=\sum_{i=1}^{m}a_ik(x,x_i)

对于一般的损失函数和正则化项,优化问题的最优解h*(z)都可表示为核函数的线性组合

核方法:核函数的学习方法

  • 核化:

将线性学习器拓展为非线性学习器,从而得到“核线性判别分析”

通过某种映射将样本映射到一个特征空间,然后进行线性判别分析,求得:

h(x)=w^T\phi (x)

 KLDA学习目标:

用核函数来替代高维的内积,

h(x)=\sum_{i=1}^{m}a_ik(x,x_i)

可得:

w=\sum_{i=1}^{m}a_i\phi (x_i)

最后KLDA学习目标可等价为:

相关文章:

  • 国科大作业考试资料-人工智能原理与算法-2024新编-第十二次作业整理
  • opencv 按键开启连续截图,并加载提示图片
  • 论文写作之latex配置(VSCODE+TEXT LIVE)
  • THS配置keepalive(yjm)
  • JAVA用TreeMap实现JSON按字母升序排序
  • MySQL中的DQL
  • 配置sublime的中的C++编译器(.sublime-build),实现C++20
  • C#初级——结构体
  • Linux中的三类读写函数
  • Cannot perform upm operation: connect ETIMEDOUT 34.36.199.114:443 [NotFound]
  • Android 13 大屏显示时关于SystemUI和Launcher3问题
  • 记录unraid docker更新的域名
  • 万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”
  • Elasticsearch:Golang ECS 日志记录 - zap
  • Sokit(TCP/UDP调试工具)
  • [译]前端离线指南(上)
  • 30天自制操作系统-2
  • Android Volley源码解析
  • echarts花样作死的坑
  • java2019面试题北京
  • JavaScript的使用你知道几种?(上)
  • Rancher-k8s加速安装文档
  • Solarized Scheme
  • Spring Boot MyBatis配置多种数据库
  • uva 10370 Above Average
  • webpack入门学习手记(二)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 原生 js 实现移动端 Touch 滑动反弹
  • 转载:[译] 内容加速黑科技趣谈
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #pragma data_seg 共享数据区(转)
  • #stm32整理(一)flash读写
  • #图像处理
  • (+4)2.2UML建模图
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (篇九)MySQL常用内置函数
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 读取 JSON格式的数据
  • .NET 解决重复提交问题
  • .NET的微型Web框架 Nancy
  • .net专家(高海东的专栏)
  • @RequestBody与@ModelAttribute
  • @RequestBody与@RequestParam
  • [AIGC] 广度优先搜索(Breadth-First Search,BFS)详解
  • [Apio2012]dispatching 左偏树
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • [Git 1]基本操作与协同开发
  • [ndss 2023]确保联邦敏感主题分类免受中毒攻击
  • [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
  • [nowCoder] 两个不等长数组求第K大数