假定数据集\(T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},x_n \in R_k, y_n \in \{1,-1\}\)线性可分,SVM的优化目标是:

优化一个超平面的参数,使得这个超平面,能够正确划分两类数据,并且,距离(动词),两类数据最近的那个点,的距离最大。

tip: 优化一个超平面的参数指的是:调整超平面的参数值。

写成数学公式为:

使得这个超平面,能够正确划分两类数据[1]

\[y(w·x+b) > 0 \tag{1} \label{1}
\]

距离(动词),两类数据最近的那个点,的距离最大。[2]

\[max(min(y\frac{w·x+b}{||w||})) \tag{2} \label{2}
\]

假设在所有\((w,b) \in \{(w_1,b_1),(w_2,b_2),\cdots\}\)中,最优解为\((w^*,b^*)\),该最优解对应的,离这个超平面最近的点为\((w_k,y_k)\),我们现在改写\(\eqref{2}\),但是毕竟是需要优化的,我们就不把最优解放到里面去,那么\(\eqref{2}\)可以改写为:

\[max(y_k\frac{w·x_k+b}{||w||})
\]

如果要写进去,那么就可以写成:

\[max(y_k\frac{w·x_k+b}{||w||}) = y_k\frac{w^*·x_k+b^*}{||w^*||}
\]

我们继续在上面的假设内,我们看到离超平面\((w^*,b^*)\)最近的点,到该超平面的距离为\(y_k\frac{w^*·x_k+b^*}{||w^*||}\),那么公式\(\eqref{1}\)可以改写为:

\[\frac{y(w^*·x+b^*)}{||w^*||} \geq \frac{y_k(w^*·x_k+b^*)}{||w^*||}
\]

现在让我们假设(注意,我现在已经在上面的假设上又假设了一次,相当于if语句里面又来了个if语句,我现在还没有说明对应的两个else语句,只有说明了两个else语句,所有情况才算全部讨论到),我们找到了\((w^*,b^*)\),但是让我们来看看这个解\((2w^*,2b^*)\)。首先,其满足\(\eqref{2}\),另外:

\[max(y_k\frac{w·x_k+b}{||w||}) = y_k\frac{w^*·x_k+b^*}{||w^*||}=y_k\frac{2w^*·x_k+2b^*}{||2w^*||},\\
||2w^*||=\sqrt{(\sum{(2w_i)^2})}=\sqrt{(4\sum{w_i^2})}=2\sqrt{(\sum{w_i^2})}=2||w^*||
\]

我们再来看更一般的:

\[max(min(y\frac{w·x+b}{||w||})) =max(min(y\frac{kw·x+kb}{||kw||})),k \neq 0
\]

tip: 我这里假设了\(k \neq 0\),其实这不是假设,而是必然的结果,因为如果\(k=0\),那么超平面\((kw^*,kb^*)=(0,0)\),这是不满足\(\eqref{1}\)的(把\(w\)和\(b\)均设为0,然后看看左边是否都大于0),既然不满足\(\eqref{1}\),\((0,0)\)就不是解,那么\(k=0\)就不在我们的讨论范围内,所以\(k \neq 0\)。\(k \neq 0\)的原因是其不在我们的讨论范围内,而不是简单的,听到已经麻木了的"分母不能为0,所以\(k \neq 0\)"。另外,通过穷举可以看出$ k \in R \space \and \neq 0$。

从上面的一个式子可以看出,就算我们找到了一个最优解\((w^*,b^*)\)(或者我们找到的是\((2w^*,2b^*)\),但是我们可以把\((kw^*,kb^*)\)记作\((w^*,b^*)\)),我们可以通过给予\(w\)和\(b\)一个非零参数\(k\),诞生出另一个解,但实际上集合\(\{(w^*,b^*),(2.2w^*,2.2b^*),(3w^*,3b^*),...\}\)都是同一个向量(如果\(w\)是一个n维向量,那么\((w,b)\),可以看作一个n+1维向量。),另外,因为\(k \in R \space \and \neq 0\),\(y(w·x+b) > 0\)(因为\(y\frac{w·x+b}{||w||}\)为点\((x,y)\)到超平面\((w,b)\)的距离,数据集T是线性可分的,那么该距离大于0,从而分子大于0),所以

\[y(kw·x+kb) > 0
\]

那么优化目标可以改写为[3]

\[max(min(y\frac{w·x+b}{||w||})) =max(min(y\frac{kw·x+kb}{||kw||}))=max(y_k\frac{kw·x_k+kb}{||kw||})=max(\frac{1}{||k_1w||})=max(\frac{1}{||w||}), \\
s.t: \frac{y(w·x+b)}{||w||} \geq \frac{y_k(w·x_k+b)}{||w||}=\frac{1}{||k_1w||}=\frac{1}{||w||},\\k \neq 0
\]

注意:

\[max(\frac{1}{||w^*||}) \iff min(||w^*||) \iff min(\frac{1}{2}||w^*||^2)
\]

所以最终优化目标为(在上面的两个假设内):

\[min(\frac{1}{2}||w||^2),\\
s.t \space\space y(w·x+b) \geq 1
\]

到这里为止,SVM的推导其实还未完,因为我们是做了两个假设才推出SVM的优化公式的,那万一假设不满足呢?

我们一共做了两个假设:

假设在所有\((w,b) \in \{(w_1,b_1),(w_2,b_2),\cdots\}\)中,最优解为\((w^*,b^*)\)

现在让我们假设,(xxx),我们找到了\((w^*,b^*)\)

现在让我们讨论另外的情况:

  • 对应于假设”现在让我们假设,(xxx),我们找到了\((w^*,b^*)\)“,如果找不到\((w^*,b^*)\)怎么办,那就继续找嘛,因为大假设里面保证了最优解存在,所以\((w^*,b^*)\)是一定能找到的。所以,第二个if对应的else语句就是continue,即一直找。(应该是的,既然存在,那么就可以找到)
  • 对应于假设”假设在所有\((w,b) \in \{(w_1,b_1),(w_2,b_2),\cdots\}\)中,最优解为\((w^*,b^*)\)“,如果\((w,b) \in \{\}\)怎么办?因为数据集线性可分,那么就存在\((w,b)\)能够正确划分数据集,所以\((w,b) \in \{\}\)不成立,那么\((w,b) \in \{(w_1,b_1),(w_2,b_2),\cdots\}\)一定成立,那么如果没有最优解怎么办?从最终的优化目标中可以看出,优化目标有下界(即值的变化范围存在一个最小值),那么最优解一定是存在的。所以,第一个if对应的else不用写,因为不会走else语句。

至此,SVM的推导才算真正完成。

注释:

线性可分:对于数据集\(S\),若存在一个超平面\((w,b)\),能够正确划分数据集,即对于任意样本\((x,y)\),如果\(y=1\),那么\(w·x+b>0\),否则\(w·x+b<0\),则(这个字对应前面的‘若’),超平面\((w,b)\)可分数据集\(S\),数据集\(S\)线性可分。

超平面:满足某个等式(如\(w·x-y+b=0\))的高维度(即\(x \in R_k,k>2\))点\((x,y)\)(这里的\(x\)和\(y\)对应前面一个括号里面的\(x\)和\(y\)),的集合。【另外可以看这里】

[1]:公式\(\eqref{1}\)的解释,见线性可分,运算符号‘\(·\)’为向量的点积运算.

[2]:公式\(\eqref{2}\)最里面的公式为点到超平面的距离,见文章:高维空间中,点的超平面的距离.

[3]:

  • \(max(min(y\frac{kw·x+kb}{||kw||}))=max(y_k\frac{kw·x_k+kb}{||kw||})\)的解释:

    对于任意一个超平面\((w,b)\)可行解,都存在一个点\((x_k,y_k)\)(自己在三维空间中想一下,对于某个能完全正确划分数据集的平面\((w,b)\),都会有一个离其最近的点\((x_k,y_k)\)),使得\(min(y\frac{kw·x+kb}{||kw||})\)=\(y_k\frac{kw·x_k+kb}{||kw||}\).

  • \(max(y_k\frac{kw·x_k+kb}{||kw||})=max(\frac{1}{||k_1w||})\)的解释:

    因为\(y(kw·x+kb)>0\)取任何值,都会有分母对应其值,使其回到原来的值。另外可以这样理解:不管\(y(w·x+b)>0\)取什么值,都存在一个值\(k_1\)使得\(y(k_1w·x+k_1b)=1\),所以我们可以把\(y(w·x+b)\)的值限制为1,至于为什么要这么做,应该是为了简化表达式,但是这样子\(b\)就没法优化了,后面的优化还没看。

可行解: 对于某个问题,如果某个结果满足其约束条件,那么该结果就是该问题的可行解。比如:

有以下问题:

\[min \space y,\\
s.t:\space y>= 1
\]

那么\(y=4\)就是可行解,因为其满足约束条件。

SVM公式详尽推导,没有思维跳跃。的更多相关文章

  1. 机器学习:SVM(目标函数推导:Hard Margin SVM、Soft Margin SVM)

    一.Hard Margin SVM SVM 的思想,最终用数学表达出来,就是在优化一个有条件的目标函数: 此为 Hard Margin SVM,一切的前提都是样本类型线性可分: 1)思想 SVM 算法 ...

  2. kalman滤波器公式的推导

    卡尔曼滤波的使用范围: 该系统要有如下关系: 计算步骤: PART0:INI PART1:Time update 迭代的目标:从X(K-1)+ 求得X(K) + 因此,先有X(K-1)+,已知F,G. ...

  3. 【知识总结】卡特兰数 (Catalan Number) 公式的推导

    卡特兰数的英文维基讲得非常全面,强烈建议阅读! Catalan number - Wikipedia (本文中图片也来源于这个页面) 由于本人太菜,这里只选取其中两个公式进行总结. (似乎就是这两个比 ...

  4. Batch Normalization 反向传播(backpropagation )公式的推导

    What does the gradient flowing through batch normalization looks like ? 反向传播梯度下降权值参数更新公式的推导全依赖于复合函数求 ...

  5. 蔡勒(Zeller)公式及其推导:快速将任意日期转换为星期数

    0. 本文的初衷及蔡勒公式的用处 前一段时间,我在准备北邮计算机考研复试的时候,做了几道与日期计算相关的题目,在这个过程中我接触到了蔡勒公式.先简单的介绍一下蔡勒公式是干什么用的. 我们有时候会遇到这 ...

  6. 跟我学算法-svm支持向量机算法推导

    Svm算法又称为支持向量机,是一种有监督的学习分类算法,目的是为了找到两个支持点,用来使得平面到达这两个支持点的距离最近. 通俗的说:找到一条直线,使得离该线最近的点与该线的距离最远. 我使用手写进行 ...

  7. SVM数学原理推导&鸢尾花实例

    //看了多少遍SVM的数学原理讲解,就是不懂,对偶形式推导也是不懂,看来我真的是不太适合学数学啊,这是面试前最后一次认真的看,并且使用了sklearn包中的SVM来进行实现了一个鸢尾花分类的实例,进行 ...

  8. SVM数学原理推导

    //2019.08.17 #支撑向量机SVM(Support Vector Machine)1.支撑向量机SVM是一种非常重要和广泛的机器学习算法,它的算法出发点是尽可能找到最优的决策边界,使得模型的 ...

  9. 回顾Games101图形学(一)几何变换中一些公式的推导

    回顾Games101 chatper1 - 6 前言 本文只写回顾后重新加深认识的知识 透视除法的意义 经过MVP矩阵之后,将模型空间下某点的坐标,转换成了裁剪空间下的坐标,此时因为裁剪空间的范围是x ...

随机推荐

  1. mybatis-拦截器实际应用-替换表名-2022新项目

    一.业务场景 考虑到新项目中部分与业务数据相关的表在后期数据量会比较大,架构师在最开始设计项目中与业务数据相关的表时,就已经考虑使用分表来 进行处理,给业务数据相关的每张表都添加统一批次的后缀,查询这 ...

  2. 05 MySQL_主键约束

    主键约束 主键: 用于表示数据唯一性的字段称为主键: 约束:就是对表字段添加限制条件 主键约束:保证主键字段的值唯一且非空: - 格式 : create table t1(id int primary ...

  3. C++学习记录1

    代码1:转义字符 点击查看代码 #include<iostream> using namespace std; void test01()//换行 { cout << &quo ...

  4. 【Kaggle】如何有效避免OOM(out of memory)和漫长的炼丹过程

    本文介绍一些避免transformers的OOM以及训练等流程太漫长的方法,主要参考了kaggle notebook Optimization approaches for Transformers ...

  5. win10系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_149 2020年,这年头如果出去面试和面试官不聊几句Docker,都不好意思说自己是搞开发的.之前玩儿Docker都是在Mac系统 ...

  6. 暑期 2021 参与社区:新一代工作流调度——Apache DolphinScheduler

    在众多企业都在进行数字化转型的大背景下,大数据.人工智能等行业有着十分广阔的前景,其发展也可谓如火如荼.发展过程中这其中当然离不开数据采集.数据流通和数据价值挖掘等各种环节,而各环节的打通需要一个坚实 ...

  7. 使用SSH连接解决git报错:fatal: unable to access 'https://github.com/xxx/xxx.github.io.git/': Proxy CONNECT aborted

    TL;DRs 这个错误的原因和HTTPS的代理配置有关,使用SSH方式连接可以避免这一问题 最近git pull和push的时候总是报错 fatal: unable to access 'https: ...

  8. Rust 从入门到精通05-数据类型

    Rust 是 静态类型(statically typed)语言,也就是说在编译时就必须知道所有变量的类型. 在 Rust 中,每一个值都属于某一个 数据类型(data type),分为两大类: ①.标 ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目部署:2、让Kestrel支持绑定多个域名转发,替代Ngnix使用。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  10. SpringBoot 注解简介(持续更新)

    虽然工作中交替会使用spring mvc 和spring boot 框架,但实际对spring中的很多注解并不是很了解,本篇将持续更新学习到的spring 注解. Spring 主入口类上的注解 Sp ...