【西瓜书】支持向量机(SVM)

server/2024/12/2 7:31:43/

超平面

  • 分类学习最基本的想法就是基于训练集合D在样本空间中找到一个划分超平面,将不同类别的样本分开。

  • 但能将训练样本分开的划分超平面可能有很多,应该努力去找到哪一个呢?直观上看应该去找位于两类训练样本正中间的划分超平面,因为该划分超平面对训练样本局部扰动的“容忍”性最好。这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。

  • 西瓜书

  • 在样本空间中划分超平面可通过如下线性方程来描述:
    w T x + b = 0 w^Tx+b=0 wTx+b=0其中: w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)为法向量,决定了超平面的方向;
    b b b 为位移项,决定了超平米与原点之间的距离。

  • 划分超平面可以被法向量 w w w 和位移 b b b 确定,记为 ( w , b ) (w, b) (w,b) 。样本空间中人一点 x x x 到超平面 ( w , b ) (w, b) (w,b) 的距离可写为:
    r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣wTx+b

  • 超平面具有以下性质:

    1. 法向量 w w w 和位移项 b b b 确定一个唯一超平面;
    2. 超平面方程不唯一,因为当等倍缩放 w w w b b b 时(假设缩放倍数为 α),所得的新超平面方程 α w T x + α b = 0 αw^Tx + αb = 0 αwTx+αb=0 w T x + b = 0 w^Tx + b = 0 wTx+b=0 的解完全相同,因此超平面不变,仅超平面方程有变;
    3. 法向量 w w w 垂直于超平面;
    4. 超平面将 n 维空间切割为两半,其中法向量 w w w 指向的那一半空间称为正空间,另一半称为负空间,正空间中的点 x + x^+ x+ 代入进方程 w T x + + b wTx+ + b wTx++b 其计算结果大于 0,反之负空间中的点代入进方程其计算结果小于 0;
    5. n 维空间中的任意点 x 到超平面的距离公式为 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣wTx+b,其中 ∥ w ∥ ∥w∥ w 表示向量 w 的模。

SVM_22">支持向量机SVM

  • 支持向量机所要求的超平面需要满足三个条件:
    1. 能正确划分正负样本,
    2. 要位于正负样本正中间,
    3. 离正负样本都尽可能远。
  • 距离超平面最近的这几个训练样本点使得上式的等号成立,它们被称为“支持向量 ” (support vector),两个异类支持向量到超平面的距离之和为:
    γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac{2}{||w||} γ=∣∣w∣∣2它被称为“间隔”(margin)。
  • 要找到具有“最大间隔”(maximum margin)的划分超平面,也就是要找到满足中约束的参数w和b,使得γ最大,即:
    max ⁡ w , b 2 ∥ w ∥ s . t . y i ( w T x + b ) ⩾ 1 , i = 1 , 2 , . . . , m . \begin{align*} &\max_{w,b} \frac{2}{\|w\|} \\&s.t. \,\, y_i(w^Tx+b)\geqslant 1, \,\, i=1,2,...,m. \end{align*} w,bmaxw2s.t.yi(wTx+b)1,i=1,2,...,m.
  • 为了最大化间隔,仅需最大化||w||(-1),则等价于最小化||w||2,于是上式可重写为:
    min ⁡ w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x + b ) ⩾ 1 , i = 1 , 2 , . . . , m . \begin{align*} &\min_{w,b} \frac{1}{2}{\|w\|}^2 \\&s.t. \,\, y_i(w^Tx+b)\geqslant 1, \,\, i=1,2,...,m. \end{align*} w,bmin21w2s.t.yi(wTx+b)1,i=1,2,...,m.
    这就是支持向量机的基本型。

支持向量机求解

  • 求解下式来得到大间隔划分超平面对应的模型:
    f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b其中w和b是模型参数,注意这个式子本身是一个凸二次规划(convex quadratic programming)问题,能直接用现成的优化计算包来求解。
  • 针对这个问题,SVM提出了很多更高效的办法。
  • 对偶问题:针对上式,使用拉格朗日乘子法可以得到“对偶问题”(dual problem)。
  • SVM的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。支持向量机这个名字强调了此类学习器的关键是如何从支持向量构建出解;同时也暗示着其复杂度主要与支持向量的数目有关。
  • 为了避免在二次规划中,问题的规模正比于训练样本数造成的巨大开销,利用问题本身的特性提出了很多优化算法,SMO(Sequential Minimal Optimization)是著名的代表。

核函数

  • 前面都是假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类,然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对于这样的问题可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

  • 如果原始空间是有限维,即属性数有限,那么一定存在一个高位特征空间使样本可分。

  • x i x_i xi x j x_j xj在特征空间的内积等于它们在原始样本空间中通过函数 κ ( . , . ) κ(., .) κ(.,.) 计算的结果。
    κ ( x i , y i ) = 〈 ϕ ( x i ) , ϕ ( x j ) 〉 = ϕ ( x i ) T ϕ ( x j ) \kappa (x_i, y_i)=〈\phi (x_i),\phi (x_j)〉=\phi (x_i)^T\phi (x_j) κ(xi,yi)=ϕ(xi),ϕ(xj)=ϕ(xi)Tϕ(xj)

  • 将样本映射到特征空间之后的内积,这里的映射函数κ就是“核函数”(Kernel function)。

  • 模型最优解可通过训练样本的核函数展开,这一展式也叫“支持向量展示”(support vector expansion)。

硬间隔、软间隔

  • 之前假设训练样本在样本空间或特征空间中是线性可分的,然而在现实当中往往很难确定合适的核函数使训练样本在特征空间中可分。
  • 缓解该问题的一个办法是允许支持向量机在一些样本上出错,因此引入了“软间隔”(soft margin)的概念。
  • 所有样本都必须划分正确,这称为“硬间隔”(hard margin)。“软间隔”则是允许某些样本不满足约束。
  • 在这里插入图片描述

支持向量回归

  • 在回归问题中,对于给定样本,传统回归模型通常直接基于模型的输出与真实输出之间的差别来计算损失,仅当真实输出与模型输出完全相同时,损失才为0。
  • “支持向量回归”(support vector regression,简称SVR)假设我们容忍真实输出与模型输入之间最多有 ε 的偏差,即仅当两者之间的差别绝对值大于 ε 时才计算损失。

核方法

  • 人们发展出一系列基于核函数的学习方法,统称为“核方法”(kernel methods)。最常见的是通过“核化”(即引入核函数)来将线性学习器扩展为非线性学习器。

相关阅读

【西瓜书】决策树
【西瓜书】神经网络-MP神经元、感知机和多层网络
【西瓜书】神经网络-BP算法(反向传播算法

资料参考


http://www.ppmy.cn/server/146650.html

相关文章

当新能源遇见低空经济:无人机在光伏领域的创新应用

随着全球能源结构的转型和技术的不断进步,新能源行业已成为推动经济社会发展的重要力量。其中,低空经济作为新兴的战略性产业,正深刻改变着人类社会的出行方式和产业链格局。在这一背景下,无人机与光伏产业的结合,不仅…

.net core 创建linux服务,并实现服务的自我更新

目录 创建服务创建另一个服务,用于执行更新操作给你的用户配置一些systemctl命令权限 创建服务 /etc/systemd/system下新建服务配置文件:yourapp.service,内容如下: [Unit] Descriptionyourapp Afternetwork.target[Service] Ty…

Spring Boot优雅读取配置信息 @EnableConfigurationProperties

很多时候我们需要将一些常用的配置信息比如oss等相关配置信息放到配置文件中。常用的有以下几种,相信大家比较熟悉: 1、Value(“${property}”) 读取比较简单的配置信息: 2、ConfigurationProperties(prefix “property”)读取配置信息并与 …

嵌入式Linux中常用的文件系统类型

嵌入式Linux系统中使用的文件系统类型多种多样,每种都有其特点和适用场景。以下是几种常见的嵌入式Linux文件系统类型及其特性: 只读压缩文件系统 SquashFS:一种高度压缩的只读文件系统,适合用于固件映像,它能够提供高…

使用Gradle编译前端的项目

使用Gradle编译前端的项目 前言项目结构根项目(parent-project)的 settings.gradle.kts后端项目(backend)的 build.gradle.kts前端项目(frontend)的 build.gradle.kts打包bootJar 前言 最近的项目都是使用…

猴子吃桃问题

题目描述 猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个…

155. TWEEN.JS点按钮,相机飞行靠近观察设备

实际开发的的时候&#xff0c;一个较大的三维场景&#xff0c;有很多不同的设备或物品&#xff0c;你可能希望通过UI按钮点击切换到不同视角&#xff0c;观察某个区域&#xff0c;或者说放大观察某个特定的物品或设备。 按钮 切换相机位置和视角的按钮 <div class"p…

queue 和 Stack

import scala.collection.mutable //queue:队列.排队打饭.... //特点&#xff1a;先进先出 //Stack:栈 //特点&#xff1a;先进后出 class ob5 { def main(args: Array[String]): Unit { val q1 mutable.Queue(1) q1.enqueue(2)//入队 q1.enqueue(3)//入队 q1.enqueue(4)…