彻底理解支持向量机(一)_支持向量机几何间隔和函数间隔的意义-程序员宅基地

技术标签: 机器学习  

线性可分支持向量机

SVM学习的思想是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。

两类样本的情况,离分类面最近的样本到分类面的距离称为分类间隔,最优超平面又叫最大间隔超平面

支持向量就是决定最大间隔超平面的数据点。

一、函数间隔和几何间隔

超平面wx+b=0 完全由(w,b)决定。
线性可分支持向量机利用间隔最大化求最优分离超平面,这时解是唯一的。

1.1, 函数间隔

在超平面wx+b=0确定的情况下,|wx+b|能够表示点x到距离超平面的远近,而通过观察 wx+b 的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用*( y(wx+b) )*的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。

函数间隔: 定义超平面(w, b)关于样本点 ( x i , y i ) (x_i, y_i) (xi,yi)的函数间隔为:
     γ i ^ = y i ( ω ⋅ x i + b ) \hat{\gamma_i} = y_i(\omega \cdot x_i + b) γi^=yi(ωxi+b)
注意到:
选择分离超平面时,只要成比例地改变w和b, 例如将它们改为cw和cb(c是常数),超平面并没有改变,但函数间隔却成为原来的c倍。

要选择最大间隔的超平面,还需要对法向量 ω \omega ω加上某些约束,比如规范化,使得间隔是确定的。
这时函数间隔成为几何间隔(geometric margin)
此时,上述常数 c = 1 ∣ ∣ ω ∣ ∣ c = \frac {1}{||\omega||} c=ω1

怎样才能使分类间隔最大呢?先计算分类间隔,然后优化求解。

1.2 如何计算几何间隔呢?

先看一个点到超平面的间隔(也就是距离)。

第一种视角:

考虑二维空间中点到直线的“间隔”:
点(x0, y0)到直线 ax + by + c = 0的距离公式:
d = ∣ a x 0 + b y 0 + c ∣ a 2 + b 2 d = \dfrac{|ax_0 + by_0 + c|}{\sqrt{a^2 + b^2}} d=a2+b2 ax0+by0+c
扩展到 n 维空间中:
d n = ∣ a 1 x 1 + a 2 x 2 + . . . + a n x n + c ∣ a 1 2 + a 2 2 + . . . + a n 2 d^n = \dfrac{|a_1x_1 + a_2x_2 + ... + a_nx_n + c|}{\sqrt{a_1^2 + a_2^2 +...+ a_n^2}} dn=a12+a22+...+an2 a1x1+a2x2+...+anxn+c
然后表示成向量形式:
D = 1 ∣ ∣ ω ∣ ∣ ∣ ω ⋅ x + b ∣ D = \dfrac{1}{||\omega||}|\omega \cdot x + b| D=ω1ωx+b
其中, ∣ ∣ ω ∣ ∣ ||\omega|| ω 是向量w的二范数,w = {w1,w2,w3,…,wn}。

第二种视角:
https://blog.csdn.net/yjn03151111/article/details/46746839

向量知识: ω T ω = ∣ ∣ ω ∣ ∣ 2 \omega^T\omega = ||\omega||^2 ωTω=ω2

假设任意一个样本x,在分类超平面 ω T x + b = 0 \omega^T x + b = 0 ωTx+b=0上的投影记为 x 0 x_0 x0,x到分类平面的距离记为d(d >= 0)。
w是垂直于超平面的法向量,法向量的方向(单位向量)是法向量除以它的模长: ω ∣ ∣ ω ∣ ∣ \frac {\omega}{||\omega||} ωω,可以得到:
   x − x 0 = d ⋅ ω ∣ ∣ ω ∣ ∣ ⇒ x = x 0 + d ⋅ ω ∣ ∣ ω ∣ ∣ x - x_0 = d \cdot {\dfrac {\omega}{||\omega||}} \quad \Rightarrow x = x_0 + d\cdot {\dfrac {\omega}{||\omega||}} xx0=dωωx=x0+dωω
两边同时左乘 ω T \omega^T ωT
ω T x − ω T x 0 = d ⋅ ω T ω ∣ ∣ ω ∣ ∣ = d   ∣ ∣ ω ∣ ∣ d   ∣ ∣ ω ∣ ∣ = ω T x − ω T x 0 − b + b = ω T x − ( ω T x 0 + b ) + b \omega^T x - \omega^T x_0 = d\cdot {\dfrac {\omega^T\omega}{||\omega||}} = d\,||\omega|| \\ d\,||\omega|| = \omega^T x - \omega^T x_0 - b + b = \omega^T x - (\omega^T x_0 + b) + b ωTxωTx0=dωωTω=dωdω=ωTxωTx0b+b=ωTx(ωTx0+b)+b

又由于x0在超平面 ω T x 0 + b = 0 \omega^T x_0 + b = 0 ωTx0+b=0上,代入得
d = ∣ ω T x + b ∣ ∣ ∣ ω ∣ ∣ d = \dfrac{|\omega^T x + b|}{||\omega||} d=ωωTx+b (d >= 0)

第三种视角:
https://www.jianshu.com/p/097ab4f0d4d4

设X1是决策边界上的一点,那么任意点X到决策边界的距离D,是向量X X1长度在垂直于决策边界方向上的投影,既 d i s t = X − X 1 = ∣ ∣ X − X 1 ∣ ∣ c o s ( α ) dist = X - X_1 = ||X - X_1||cos(\alpha) dist=XX1=XX1cos(α),alpha为向量X X1与垂直于决策边界方向的夹角。

两个向量相乘等于向量长度的乘积再与向量夹角余弦值的乘积,由于w是决策边界的法向量,
所以w与X - X_1 的夹角就是上式中的alpha,于是:
ω ( X − X 1 ) = ∣ ∣ ω ∣ ∣ ∗ ∣ ∣ X − X 1 ∣ ∣ c o s ( α ) ω ∣ ∣ ω ∣ ∣ ( X − X 1 ) = ∣ X − X 1 ∣ ∣ ∗ c o s ( α ) = d i s t \omega(X - X_1) = ||\omega|| * ||X - X_1||cos(\alpha) \\ \dfrac {\omega}{||\omega||}(X - X_1) = |X - X_1|| * cos(\alpha) = dist ω(XX1)=ωXX1cos(α)ωω(XX1)=XX1cos(α)=dist

所以 d i s t = ω ∣ ∣ ω ∣ ∣ ( X − X 1 ) = ω T X − ω T X 1 ∣ ∣ ω ∣ ∣ dist = \dfrac {\omega}{||\omega||}(X - X_1) = \dfrac {\omega^T X - \omega^T X_1}{||\omega||} dist=ωω(XX1)=ωωTXωTX1

又由于X1在超平面 ω T X 1 + b = 0 \omega^T X_1 + b = 0 ωTX1+b=0,代入得
d i s t = 1 ∣ ∣ ω ∣ ∣ ( ω T X + b ) dist = \dfrac {1}{||\omega||} (\omega^T X + b) dist=ω1(ωTX+b)

为了确保距离非负,我们在 ω T X + b \omega^T X + b ωTX+b外面加一个绝对值符号。

1.3 几何间隔和函数间隔的关系

记 y∈{−1,1} 为分类标签,间隔公式乘以类别标签,所以 ∣ w T x + b ∣ = y i ( w T x + b ) |w^Tx+b| = y_i (w^Tx+b) wTx+b=yi(wTx+b),我们可以以此消去上式的绝对值。于是
N 个样本 Xi 和分类超平面的几何间隔的表达式:
   γ = y i ( w T x i + b ) ∥ ω ∥ ,   i = 1 , 2 , . . . , N \gamma = \dfrac {y_i(w^Tx_i+b)}{\|\omega\|}, \ i=1,2,...,N γ=ωyi(wTxi+b), i=1,2,...,N
由函数间隔的表达式: γ ^ = y i ( ω ⋅ x i + b ) \hat{\gamma} = y_i(\omega \cdot x_i + b) γ^=yi(ωxi+b) 可知,
     γ = y f ( x ) ∥ ω ∥ = γ ^ ∥ ω ∥ \gamma = \dfrac {yf(x)}{\|\omega\|} = \dfrac { \hat{\gamma} }{ \|\omega\| } γ=ωyf(x)=ωγ^

几何间隔就是函数间隔除以||w||

二、最大化分类间隔

这里要解释 m a r g i n = m i n   1 2 ∥ ω ∥ 2 margin = min \, \dfrac {1}{2} \| \omega \|^2 margin=min21ω2 是怎么来的。

第一种视角:

根据上面的几何间隔公式,求解能使间隔最大化的参数w和b,即求解以下优化函数:
max ⁡ w , b   γ = m a x { y i ( w T x i + b ) ∥ w ∥ ∣   i = 1 , 2 , . . . , n } \max_{w,b}\ \gamma = max\left\{\frac{y_i(w^Tx_i+b)}{\|w\|}\big|\ i=1,2,...,n\right\} maxw,b γ=max{ wyi(wTxi+b) i=1,2,...,n}
最大分类间隔的目标函数写成:
   { max ⁡ w , b   y 0 ( w T x 0 + b ) ∥ w ∥ s . t . y i ( w T x i + b ) ≥ y 0 ( w T x 0 + b ) ,   i = 1 , 2 , . . . , N \left\{ \begin{aligned} & \max_{w,b}\ \frac{y_0(w^Tx_0+b)}{\|w\|} \\ & s.t.\quad y_i(w^Tx_i+b)\geq y_0(w^Tx_0+b), \ i=1,2,...,N \end{aligned} \right. w,bmax wy0(wTx0+b)s.t.yi(wTxi+b)y0(wTx0+b), i=1,2,...,N

我们令 w ^ = w   /   y 0 ( w T x 0 + b ) ,   b ^ = b   /   y 0 ( w T x 0 + b ) \bm{\hat{w}={w}\ /\ {y_0(w^Tx_0+b)}, \, \hat{b}={b}\ /\ {y_0(w^Tx_0+b)}} w^=w / y0(wTx0+b),b^=b / y0(wTx0+b) ;
则优化函数可写成:
   1   /   ∥ w ^ ∥ s . t .     y i ( w T x i + b ) ≥ 1 ,   i = 1 , 2 , . . . , N {1}\ /\ {\|\hat{w}\|} \quad s.t. \, \ y_i(w^Tx_i+b)\geq1, \ i=1,2,...,N 1 / w^s.t. yi(wTxi+b)1, i=1,2,...,N
再用w替换 ω ^ \hat{\omega} ω^,并且利用 max ⁡ w 1   /   ∥ w ∥ a n d max ⁡ w 1   /   ∥ w ∥ 2 \max_{w}{1}\ /\ {\|w\|} \quad and \quad \max_{w}{1}\ /\ {\|w\|^2} maxw1 / wandmaxw1 / w2 等价的原理,可以得到以下下等价的优化问题:
   { max ⁡ w , b   1 ∥ w ∥ 2 s . t .   y i ( w T x i + b ) ≥ 1 ,   i = 1 , 2 , . . . , N \left\{ \begin{aligned} & \max_{w,b}\ \frac{1}{\|w\|^2} \\ & s.t. \ y_i(w^Tx_i+b)\geq 1, \ i=1,2,...,N \end{aligned} \right. w,bmax w21s.t. yi(wTxi+b)1, i=1,2,...,N

第二种视角:

对一个数据点进行分类,当这个点和超平面之间的间隔越大的时候,分类正确的把握越大。对于一个包含n个点的数据集,我们可以很自然地定义它的间隔为所有这n个点的间隔中最小的那个。
要正确划分训练数据集{x1,x2,…xn},满足y=1时,所有点的间隔 γ > = d m i n \gamma>=d_{min} γ>=dmin,y=-1时,所有点的间隔 γ < = d m i n \gamma<=d_{min} γ<=dmin ,写成下面的公式:

   { ( ω T x i + b ) / ∣ ∣ ω ∣ ∣ ≥ d m i n ∀   y i = 1 ( ω T x i + b ) / ∣ ∣ ω ∣ ∣ ≤ − d m i n ∀   y i = − 1 \left\{\begin{array}{ll} (\boldsymbol{\omega}^T\boldsymbol{x}_i+b)/||\boldsymbol{\omega}||\geq d_{min}& \forall~ y_i=1\\(\boldsymbol{\omega}^T\boldsymbol{x}_i+b)/||\boldsymbol{\omega}||\leq -d_{min} & \forall~y_i=-1\end{array}\right. { (ωTxi+b)/ωdmin(ωTxi+b)/ωdmin yi=1 yi=1

两边先除以d, 然后w和b都成比例缩放,令 ω ′ = ω d m i n ∣ ∣ ω ∣ ∣ , b ′ = b d m i n ∣ ∣ ω ∣ ∣ \omega' = \dfrac {\omega}{d_{min} ||{\omega}||}, b' = \dfrac {b}{d_{min} ||{\omega}||} ω=dminωω,b=dminωb 得到:

   { ( ω ′ T x i + b ′ ) ≥ 1 ∀   y i = 1 ( ω ′ T x i + b ′ ) ≤ − 1 ∀   y i = − 1 \left\{\begin{array}{ll} (\boldsymbol{\omega'}^T \boldsymbol{x_i}+b') \geq 1& \forall~ y_i=1\\(\boldsymbol{\omega'}^T\boldsymbol{x}_i+b') \leq -1 & \forall~y_i=-1\end{array}\right. { (ωTxi+b)1(ωTxi+b)1 yi=1 yi=1

只有当 x i x_i xi是决策面 ω T x + b = 0 \omega^T x + b = 0 ωTx+b=0 所对应的支持向量时,等于1或-1的情况才会出现。
此时有 y i ( ω T x i + b ) = 1 y_i(\omega^T x_i + b) = 1 yi(ωTxi+b)=1

代入之前 1.3 中的间隔公式 γ = y i ( w T x i + b ) ∥ ω ∥ \gamma = \dfrac {y_i(w^Tx_i+b)}{\|\omega\|} γ=ωyi(wTxi+b),得到:
支持向量到超平面的距离 1 ∣ ∣ ω ∣ ∣ \dfrac {1}{|| \boldsymbol{\omega} ||} ω1,两侧的距离加起来就是 2 ∥ ω ∥ \dfrac {2}{\Vert \omega \Vert} ω2

我们希望距离越大越好,也就是说 1 ∥ ω ∥ \dfrac {1}{\|\omega\|} ω1越大越好,同时对于数据集中数据的分布满足 y ( ω T x + b ) ≥ 1 y(\omega^T x + b) \geq 1 y(ωTx+b)1。因此,我们得到了如下的优化问题:
     { max ⁡   1 ∥ ω ∥ s . t . y i ( ω T x i + b ) ⩾ 1 , i = 1 , 2 , . . . , n \left \{ \begin{matrix} \begin{aligned} & \max \, \frac{1}{\Vert \omega \Vert} \\ & s.t. \quad y_i(\omega^T x_i + b) \geqslant 1 ,\quad i=1,2,...,n \end{aligned} \end{matrix} \right. maxω1s.t.yi(ωTxi+b)1,i=1,2,...,n

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rover2002/article/details/105719877

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf