IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 周志华西瓜书学习笔记(六) -> 正文阅读

[数据结构与算法]周志华西瓜书学习笔记(六)

周志华西瓜书学习笔记(六)

支持向量机

6.1间隔与支持向量

1.线性可分

在这里插入图片描述

如图所示,要将两类点分开,有很多直线都能做到。但是,如果希望训练出一条直线在测试集上也有很好的表现,应该找位于两类训练样本“正中间”的直线,也称划分超平面。这个划分超平面所产生的分类结果是最鲁棒的,为未见示例泛化能力越强。

名词介绍

鲁棒性:鲁棒是Robust的音译,也就是健壮和强壮的意思。它也是在异常和危险情况下系统生存的能力。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。

2.支持向量

划分超平面的线性方程式: w T x + b = 0 w^Tx+b=0 wTx+b=0

对一个划分平面,每个分类点到划分平面的距离是 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=wwTx+b??
在这里插入图片描述

如图所示,距离超平面最近的这几个训练样本点称为“支持向量”。

超平面参数成倍数变化,表示的是同一条直线。如 2 x 1 + 4 x 2 ? 8 = 0 2x_1+4x_2-8=0 2x1?+4x2??8=0??与 x 1 + 2 x 2 ? 4 = 0 x_1+2x_2-4=0 x1?+2x2??4=0?表示的是同一个划分超平面,所以可以通过对参数的调整,使得支持向量机到划分超平面的距离为1。即 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ = 1 ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||}=\frac{1}{||w||} r=wwTx+b?=w1?,也就是说两个异类支持向量机到超平面的距离之和为 γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac{2}{||w||} γ=w2??

我们要做的优化就是在满足划分正确的前提下,使这个距离 γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac{2}{||w||} γ=w2??最大化

SVM基本型
m i n w , b ?? 1 2 ∣ ∣ w ∣ ∣ 2 s . t . ?? y i ( w T x i + b ) ≥ 1 , i = 1 , 2 … … , m min_{w,b}\ \ \frac{1}{2}||w||^2\\ s.t.\ \ y_i(w^Tx_i+b)≥1,i=1,2……,m minw,b???21?w2s.t.??yi?(wTxi?+b)1,i=1,2,m

6.2对偶问题

1.拉格朗日乘数法

在这里插入图片描述
在这里插入图片描述

推导:

在这里插入图片描述

由上式(6.11)对偶形式可知,
{ α i ≥ 0 ; y i f ( x i ) ? 1 ≥ 0 ; α i ( y i f ( x i ) ? 1 ) = 0. \left\{ \begin{array}{c} \alpha_i≥0;\\ y_if(x_i)-1≥0;\\ \alpha_i(y_if(x_i)-1)=0. \end{array} \right. ????αi?0;yi?f(xi?)?10;αi?(yi?f(xi?)?1)=0.?
上便是不等式约束优化优化问题的 KKT(Karush-Kuhn-Tucker) 条件 α \alpha α???称为 KKT 乘子。第一个约束是拉格朗日乘数法自身约束,第二个约束是SVM基本型自带的约束,第三个约束说明:对任意训练样本 ( x i ; y i ) (x_i;y_i) (xi?;yi?)???, 必有 α = 0 \alpha=0 α=0??或 y i f ( x i ) = 1 y_if(x_i)=1 yi?f(xi?)=1??.若 α _ i = 0 \alpha\_i=0 α_i=0??,则该样本将不会在式(6.12)的求和中出现,也就不会对f(x)有任何影响;若 α i > 0 \alpha_i>0 αi?0?,则必有 y i f ( x i ) = 1 y_if(x_i)=1 yi?f(xi?)=1?,所对应的样本点位于最大间隔边界.上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。

2.SMO算法求解

SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。

  • 选择两个需要更新的参数 α i \alpha_i αi??和 α j \alpha_j αj??,固定其他参数。

    SMO的思路是每次更新一个参数,为什么要选取两个参数?

    因为我们的优化目标有约束条件: ∑ i = 1 n α i y i = 0 \sum_{i=1}^n\alpha_iy_i=0 i=1n?αi?yi?=0(见式6.10),所以我们一次需要选择两个参数

    于是我们有以下约束:

    α i y i + α j y j = c ??? λ i ≥ 0 ; λ j ≥ 0 \alpha_iy_i+\alpha_jy_j=c\ \ \ \lambda_i≥0;\lambda_j≥0 αi?yi?+αj?yj?=c???λi?0λj?0?。其中 c = ? ∑ k ≠ i , j α k y k c=-\sum_{k≠i,j}\alpha_ky_k c=?k?=i,j?αk?yk?

    由此也可以推导出 α j = c ? α i y i y j \alpha_j=\frac{c-\alpha_iy_i}{y_j} αj?=yj?c?αi?yi??,即我们可以用 α i \alpha_i αi?来表示 α j \alpha_j αj?。这样就相当于把目标问题转化成了仅有一个约束条件的最优化问题,仅有的约束是 α i ≥ 0 \alpha_i≥0 αi?0

  • 固定除 α i \alpha_i αi? α j \alpha_j αj?以外的参数,求解 α i \alpha_i αi? α j \alpha_j αj?。即将 α i \alpha_i αi? α j \alpha_j αj?代入优化目标6.11式,对于仅有一个约束条件的最优化问题,可以对优化目标求偏导,令导数为零,从而求解。

  • 选取其他参数,迭代更新直至收敛。

  • 我们求偏导数时得 w = ∑ i = 1 m α i y i x i w=\sum_{i=1}^m\alpha_iy_ix_i w=i=1m?αi?yi?xi?,由此可以求得w。

  • 找一个支持向量 ( x s , y s ) (x_s,y_s) (xs?,ys?),对支持向量而言,此时 α s > 0 \alpha_s>0 αs?0?,所以有 y s ( w x S + b ) = 1 y_s(wx_S+b)=1 ys?(wxS?+b)=1

    两边各乘以 y s y_s ys?,得 y s 2 ( w x S + b ) = y s y_s^2(wx_S+b)=y_s ys2?(wxS?+b)=ys?。因为 y S 2 = 1 y_S^2=1 yS2?=1。所以 b = y s ? w x s b=y_s-wx_s b=ys??wxs?

    为了更具鲁棒性,可以使用所有支持向量求解的平均值: b = 1 ∣ S ∣ ∑ s ∈ S ( y s ? w x s ) = 1 ∣ S ∣ ∑ s ∈ S ( 1 y s ? ∑ i ∈ S α i y i x i T x s ) b=\frac{1}{|S|}\sum_{s\in S}(y_s-wx_s)=\frac{1}{|S|}\sum_{s\in S}(\frac{1}{y_s}-\sum_{i\in S}\alpha_iy_ix_i^Tx_s) b=S1?sS?(ys??wxs?)=S1?sS?(ys?1??iS?αi?yi?xiT?xs?)?

6.3软间隔与正则化

1.软间隔

对于一些线性不可分的情况,我们允许部分样本点不满足约束条件: 1 ? y i ( w T x i + b ) ≤ 0 1-y_i(w^Tx_i+b)\leq0 1?yi?(wTxi?+b)0
在这里插入图片描述

为了度量这个间隔软到何种程度,我们为每个样本引入一个松弛变量,因此优化目标可以写为:

m i n w , b , ξ i ?? 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i min_{w,b,\xi_i}\ \ \frac{1}{2}\Vert w \Vert^2+ C\sum_{i=1}^m\xi_i minw,b,ξi????21?w2+Ci=1m?ξi?,其中 ξ i ≥ 0 \xi_i \geq0 ξi?0为松弛变量,也代表了一种损失函数。而损失函数的具体形式有多种,
在这里插入图片描述

因此,可以得到软支持向量机的基本形式:
{ m i n w , b , ξ i ?? 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i s . t . ?? y i ( w T x i + b ) ≥ 1 ? ξ i ξ i ≥ 0 , i = 1 , 2 … , m \left\{ \begin{array}{c} min_{w,b,\xi_i}\ \ \frac{1}{2}\Vert w\Vert^2+C\sum_{i=1}^m\xi_i\\ s.t.\ \ y_i(w^Tx_i+b)\ge1-\xi_i\\ \xi_i\ge0,i=1,2…,m \end{array} \right. ????minw,b,ξi????21?w2+Ci=1m?ξi?s.t.??yi?(wTxi?+b)1?ξi?ξi?0,i=1,2,m?

2.优化目标及求解

通过拉格朗日乘子法求解,得
在这里插入图片描述

将各片偏导结果代入拉格朗日函数中,得到
在这里插入图片描述

我们可以看到软间隔和硬间隔形式一样,两者唯一的区别就在于对偶变量的约束不同:前者是 0 ≤ α i ≤ C 0\le\alpha_i\le C 0αi?C,后者是 0 ≤ α i 0\le \alpha_i 0αi?,于是可以采取同样的SMO算法求解。

在这里对软支持向量机,有如下KKT条件要求在这里插入图片描述

于是,对任意训练样本 ( x i , y i ) (x_i,y_i) (xi?,yi?)????,总有 α i = 0 \alpha_i=0 αi?=0????或 y i f ( x i ) = 1 ? ξ i y_if(x_i)=1-ξ_i yi?f(xi?)=1?ξi?????。若 α i = 0 \alpha_i=0 αi?=0????,则该样本不会对f(x)有任何影响;若 y i f ( x i ) = 1 ? ξ i y_if(x_i)=1-ξ_i yi?f(xi?)=1?ξi?????,即该样本是支持向量:由式(6.39)可知,若 α i < C \alpha_i < C αi?<C??,则 μ i > 0 μ_i> 0 μi?>0??,进而有 ξ i = 0 \xi_i=0 ξi?=0??,即该样本恰在最大间隔边界上;若 α i = C \alpha_i=C αi?=C??,则有 μ i = 0 μ_i=0 μi?=0??,此时若 ξ i ≤ 1 \xi_i\le1 ξi?1??则该样本落在最大间隔内部,若 ξ i > 1 \xi_i> 1 ξi?>1?则该样本被错误分类。由此可看出,软间隔支持向量机的最终模型仅与支持向量有关,即通过采用hinge损失函数仍保持了稀疏性。

使用SMO算法继续求解得:
{ w = ∑ i = 1 m α i y i x i b = 1 ∣ S ∣ ∑ s ∈ S ( y s ? w x s ) \left\{ \begin{array}{c} w=\sum_{i=1}^m\alpha_iy_ix_i\\ b=\frac{1}{|S|}\sum_{s\in S}(y_s-wx_s) \end{array} \right. {w=i=1m?αi?yi?xi?b=S1?sS?(ys??wxs?)?
由此确定划分超平面。由求w的那个式子可看出,只要 α i > 0 \alpha_i>0 αi?>0的点都能够影响我们的超平面,因此都是支持向量。

3.正则化

对于软间隔有更一般的写法,主要考虑模型自身的表现以及衡量模型复杂度避免过拟合。在这里插入图片描述

参考:

【机器学习】支持向量机 SVM

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:59:14  更:2021-07-30 13:01:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 19:05:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码