机器学习笔记6:SVM基本原理

article/2025/10/1 3:28:14

SVM的基本原理:
1、最大间隔原则
2、对偶表示
3、KKT条件

SVM(Support Vector Machine),又称支持向量机,在分类问题上,除了logistic分类回归外,还有另一种实现方式,那就是使用SVM原则。那么什么是SVM 呢。
1、最大间隔原则
首先,我们定义最大间隔原则:最大化两个类最近点之间的距离。如何理解呢。我们先从简单的二维平面着手,看下图(在此之前,我们假设分类器是线性可分的):
     在这里插入图片描述
图中有两组平行线,每组都是黑、红、蓝组成的,分别是a组合b组。根据最大间隔原则,只有a组才符合最大化两个类最近点的距离;那么这距离称为间隔(margin),黑色或者红线上面的点被称为支持向量(Support Vector)。这个符合我们的直觉,如果两个物体之间分得越开就越容易能够分别出来,而非“密不可分”
那么这个间隔如何得出呢,为了能够非常直观的得出结论,我们要在三维坐标上来演示,如下图:
         在这里插入图片描述
在此图中,假设我们的线性分类面 f ( x ) = w T x + x 0 f(\textbf{x})=\textbf{w}^{T}\textbf{x}+x_{0} f(x)=wTx+x0,则 x = x p + r w ∣ ∣ w ∣ ∣ \textbf{x}=\textbf{x}_{p}+r\frac{\textbf{w}}{||\textbf{w}||} x=xp+rww,其中 x \textbf{x} x到分类面的距离为 r r r
因为: f ( x p ) = w T x p + w 0 = 0 f(\textbf{x}_{p})=\textbf{w}^{T}\textbf{x}_{p}+w_{0}=0 f(xp)=wTxp+w0=0 w T w = ∣ ∣ w ∣ ∣ 2 \textbf{w}^{T}\textbf{w}=||\textbf{w}||^{2} wTw=w2
所以:
   在这里插入图片描述
当x=0时,原点到分类面的距离为: r 0 = f ( 0 ) ∣ ∣ w ∣ ∣ = w 0 ∣ ∣ w ∣ ∣ r_{0}=\frac{f(0)}{||\textbf{w}||}=\frac{w_{0}}{||\textbf{w}||} r0=wf(0)=ww0
线性判别函数:线性判别函数利用超平面把特征空间分隔成两个区域,超平面的法向量方向是由 w \textbf{w} w决定的,而它的位置由 w 0 w_{0} w0确定。判别函数 f ( x ) f(\textbf{x}) f(x)正比于 x \textbf{x} x到超平面的代数距离(带正负号)。当 x \textbf{x} x在超平面的正侧时, f ( x ) &gt; 0 f(\textbf{x})&gt;0 f(x)>0;当 x \textbf{x} x在超平面的负侧时, f ( x ) &lt; 0 f(\textbf{x})&lt;0 f(x)<0; x \textbf{x} x到超平面的距离 r y i = y i f ( x ) ∣ ∣ w ∣ ∣ ry_{i}=\frac{y_{i}f(\textbf{x})}{||\textbf{w}||} ryi=wyif(x), y i ∈ { 1 , − 1 } y_{i}\in \{1,-1\} yi{1,1};可视为对 x \textbf{x} x判别的置信度。
间隔(margin)计算:
             在这里插入图片描述
根据上图,间隔是两个向量相减得出的,即间隔= ∣ x + − x − ∣ |\textbf{x}_{+}-\textbf{x}_{-}| x+x,因为 x + = x − + λ w \textbf{x}_{+}=\textbf{x}_{-}+\lambda\textbf{w} x+=x+λw,且 w 0 + w T x + = 1 w 0 + w T x − = − 1 } ⇒ w T ( x + − x − ) = 2 ⇒ λ = 2 ∣ ∣ w ∣ ∣ 2 \left.\begin{matrix} w_{0}+\textbf{w}^{T}\textbf{x}_{+}=1\\ w_{0}+\textbf{w}^{T}\textbf{x}_{-}=-1 \end{matrix}\right\}\Rightarrow \textbf{w}^{T}(\textbf{x}_{+}-\textbf{x}_{-})=2\Rightarrow \lambda =\frac{2}{||\textbf{w}||^{2}} w0+wTx+=1w0+wTx=1}wT(x+x)=2λ=w22
所以最终,间隔= ∣ x + − x − ∣ = 2 ∣ ∣ w ∣ ∣ |\textbf{x}_{+}-\textbf{x}_{-}|=\frac{2}{||\textbf{w}||} x+x=w2
所以SVM最大化间隔的超平面为:
       在这里插入图片描述
等价于:
       在这里插入图片描述
由此我们求解的就是二次规划问题(目标函数为二次函数,约束项为线性约束),当变量个数为 D + 1 D+1 D+1,则约束项的数目为 N N N

2、对偶表示
凸优化理论告诉我们该优化问题可以等价的写成其对偶形式(dual formulation),根据拉格朗日函数:
       L ( α , w 0 , w ) = 1 2 w T w − ∑ i = 1 N α i ( y i ( w 0 + w T x ) − 1 ) , α i &gt; 0 L(\mathbf{\alpha},w_{0},\textbf{w})=\frac{1}{2}\textbf{w}^{T}\textbf{w}-\sum_{i=1}^{N}\alpha_{i}(y_{i}(w_{0}+\textbf{w}^{T}\textbf{x})-1),\alpha_{i} &gt;0 L(α,w0,w)=21wTwi=1Nαi(yi(w0+wTx)1),αi>0
那么是的目标函数最小的 w 0 , w w_{0},\textbf{w} w0,w为:
       ∂ L ∂ w = 0 ⇒ w = ∑ i = 1 N α i y i x i \frac{\partial L}{\partial \textbf{w}}=0\Rightarrow \textbf{w}=\sum_{i=1}^{N}\alpha_{i}y_{i}\textbf{x}_{i} wL=0w=i=1Nαiyixi
       ∂ L ∂ w 0 = 0 ⇒ ∑ i = 1 N α i y i = 0 \frac{\partial L}{\partial w_{0}}=0\Rightarrow \sum_{i=1}^{N}\alpha_{i}y_{i}=0 w0L=0i=1Nαiyi=0
在这里插入图片描述
那么解对偶问题就在于寻找 { α i } i = 1 N \{\alpha_{i}\}_{i=1}^{N} {αi}i=1N,最大化目标函数:
      在这里插入图片描述
需要满足条件: { ∑ i = 1 N α i y i α i ≥ 0 \left\{\begin{matrix} \sum_{i=1}^{N}\alpha _{i}y_{i}\\ \alpha _{i}\geq 0 \end{matrix}\right. {i=1Nαiyiαi0
但是任然有一个问题,那就是当变量数为 N N N,约束项的数目为 N + 1 N+1 N+1时,如果 N N N比较大时,对偶问题的复杂度可能比原问题更高;这是我们可以利用对偶问题的kernel trick和核方法结合方法来解决,对此,该问题的高效优化算法为:SMO(Sequential Minimal Optimization),它的主要两个思想是:一是坐标轴下降法,二是在SVM中, △ L w 0 = 0 ⇒ α ∗ y 1 = 0 \triangle L_{w_{0}}=0\Rightarrow \mathbf{\alpha}^{*} y\textbf{1}=0 Lw0=0αy1=0,所以不能够单独改变一个 α \alpha α,而是每次每次选取一对 α i , α j \alpha_{i},\alpha_{j} αi,αj做优化
求解出 α i \alpha_{i} αi后,在求出 w = ∑ i = 1 N α i y i x i \textbf{w}=\sum_{i=1}^{N}\alpha_{i}y_{i}\textbf{x}_{i} w=i=1Nαiyixi w 0 w_{0} w0,可以得到判别函数: f ( x ) = w 0 + w T x = w 0 + ∑ i α i y i x i T x = w 0 + ∑ i α i y i ⟨ x , x i ⟩ f(x)=w_{0}+\textbf{w}^{T}\textbf{x}=w_{0}+\sum_{i}\alpha_{i}y_{i}\textbf{x}_{i}^{T}\textbf{x}=w_{0}+\sum_{i}\alpha_{i}y_{i}\left \langle \textbf{x},\textbf{x}_{i} \right \rangle f(x)=w0+wTx=w0+iαiyixiTx=w0+iαiyix,xi
这就可以得到SVM模型了,当一个新 x \textbf{x} x进行预测是,分类器 y ^ = s g n ( f ( x ) ) \hat{y}=sgn(f(\textbf{x})) y^=sgn(f(x))

3、KKT条件
在二次规划问题上的求解时,根据优化理论,一个点 x \textbf{x} x称为全局最小值的必要条件是满足Karush-Kuhn-Tucker条件(KKT),当 f ( x ) f(\textbf{x}) f(x)是凸函数时,KKT条件也是充分条件。
对于二次规划问题的求解。我们知道其对偶性质
原问题: P = m i n x f 0 ( x ) P=\underset{\textbf{x}}{min}f_0(\textbf{x}) P=xminf0(x)
    s.t. f i ( x ) ≤ 0 , 1 ≤ i ≤ N f_{i}(\textbf{x})\leq 0,1\leq i\leq N fi(x)0,1iN
       h j ( x ) = 0 , 1 ≤ j ≤ M h_{j}(\textbf{x})= 0,1\leq j\leq M hj(x)=0,1jM
      
拉格朗日函数: L ( x , λ , μ ) = f 0 ( x ) + ∑ i λ i f i ( x ) + ∑ j μ j h j ( x ) L(\textbf{x},\mathbf{\lambda},\mathbf{\mu})=f_{0}(\textbf{x})+\sum_{i}\lambda_{i}f_{i}(\textbf{x})+\sum_{j}\mu_{j}h_{j}(\textbf{x}) L(x,λ,μ)=f0(x)+iλifi(x)+jμjhj(x)

对偶问题: D = m a x λ , μ L ( x , λ , μ ) D=\underset{\mathbf{\lambda},\mathbf{\mu}}{max}L(\textbf{x},\mathbf{\lambda},\mathbf{\mu}) D=λ,μmaxL(x,λ,μ)
     s.t. λ i ≥ 0 \lambda_i \geq 0 λi0
P ≥ D P\geq D PD时,为弱对偶性;当 P = D P=D P=D时,为强对偶性

待续。。。。


http://chatgpt.dhexx.cn/article/5hMBMuoF.shtml

相关文章

SVM原理

我们先认识一下SVM&#xff1a; &#xff08;1&#xff09;支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种对数据进行二分类的广义线性分类器&#xff0c;其分类边界是对学习样本求解的最大间隔超平面。 &#xff08;2&#xff09;SVM使用铰链损失函数…

通俗易懂SVM原理介绍,适合小白食用

目录 1、SVM概念描述 2、SVM数学表达及相关计算 3、SVM优化问题定义 附&#xff1a;证明区 【证明1】 【计算1】 1、SVM概念描述 如图一所示&#xff0c;存在两个数据集&#xff0c;我们希望通过一个超平面将两个数据集分割开&#xff0c;并且我们希望这个超平面离两个数…

01-Hive创建表

声明&#xff1a;本实验环境是Apache hadoop-2.2.0&#xff0c;zookeeper-3.4.5&#xff0c;mysql Server version: 5.1.73作为元数据库&#xff0c;hive版本是apache-hive-0.9.0-bin&#xff0c;都是apache&#xff0c;不是CDH和其他。本实验集群3台&#xff0c;一个主节点(ha…

hive 中创建表的三种方式

官网地址&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualDDL 通常我们所使用的创建hive表有三种方式 1.create table 首先我们找到官网对创建表的描述如下&#xff1a; ’[]’ 表示可选&#xff0c;’|’ 表示几选一 CREATE [TEMPORARY] [EXT…

hive创建新表——基础

创建基础表 1、创建表&#xff1a; create table if not exists orders 创建一个名叫“orders”的表&#xff0c;“if not exists”可以写可不写&#xff0c;如果相同名字的表已经存在&#xff0c;则抛出异常&#xff0c;可以用 IF NOT EXIST 选项来忽略这个异常。 2、定义表…

HIVE的常用操作-建库和表-插入数据

hive的安装&#xff08;远程模式&#xff09; 点击打开链接 使用hive----------------------- 启动hadoop 启动hive 创建数据库&#xff1a; create database myhive; 查看数据库&#xff1a; hive (default)> show databases; OK database_name default myhive 数…

Hive三种建表语句详解

转载自&#xff1a;https://blog.csdn.net/qq_36743482/article/details/78383964 注&#xff1a;hive其他语法在hive官网有说明&#xff0c;建议初学者&#xff0c;去官网学习一手的资料&#xff0c; 官网&#xff1a;https://cwiki.apache.org/confluence/display/Hive/Home#…

关于hive建表查询语句小记

库相关操作 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)]; IF NOT EXISTS 也就是没有重复库就创建&#xff0c;有重复就不执行建库 保证了建库…

hive、pg库,建表语句及查询表结构语句

1、hive hive 建表语句 DROP TABLE IF EXISTS tmp_001; CREATE TABLE tmp_001 (etl_time timestamp comment , day_id double comment , subs_id string comment , msisdn int comment ) comment partitioned by…

3、Hive数据仓库——建表语句

文章目录 Hive基本操作Hive查看SQL解析计划Hive建表建表1&#xff1a;全部使用默认建表方式 Hive 内部表 &#xff08;Managed tables&#xff09;指定location (这种方式也比较常用)formatted 查看该表的结构化数据&#xff0c;但并不列出表中的数据将本地数据上传到HDfS上 Hi…

HIVE的三种建表方式

目录 一、直接建表二、as &#xff08;直接使用查询结果插入到一张新表&#xff09;三、like&#xff08;复制表结构&#xff09; 一、直接建表 中括号里面的均为可选项 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name[(col_name data_type [COMMENT col_comment], ...…

Hive学习3:Hive三种建表语句详解

注&#xff1a;hive其他语法在hive官网有说明&#xff0c;建议初学者&#xff0c;去官网学习一手的资料&#xff0c; 官网&#xff1a;https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation Create Table 官网说明 Hive建表方式共有三种&#xff…

Hive_ Hive 建表语句详解

参考文章&#xff1a; https://blog.csdn.net/qq_36743482/article/details/78383964 最近博主在编写一个每天定时创建Hive 分区的脚本&#xff0c;其中需要创建Hive表&#xff0c; 开始的时候我以为创建Hive 表的语句顺序是比较宽松的&#xff0c;经过测试发现不然&#xf…

Hive建表语句详解--CREATE TABLE

创建表的三种方法 Hive创建表的方式&#xff08;默认路径/user/hive/warehouse&#xff0c;也可以location指定&#xff0c;主要针对external表&#xff09; 1、使用create命令创建一个新表,带分区 CREATE TABLE mydb.dept( dept_no int, addr string, tel string) par…

【Hive】Hive 创建表

学习笔记—Hive创建表 1. Hive语句的特点 HQL 语言大小写不敏感&#xff0c;但内容分大小写&#xff08;where ,if/ case when&#xff0c;如&#xff1a;数据表内容某人名叫Tom&#xff0c;则条件后不能写tom&#xff0c;HDFS 路径名&#xff08;NameNode&#xff09;分大小写…

hive建表语句

目录 一、建表语句1、创建内部表2、创建外部表3、建表高阶语句 CTAS 和 WITH4、向临时表中插入原表中的数据5、创建分区表 一、建表语句 1、创建内部表 建表&#xff1a; CREATE TABLE phone_info(id int,name String,storage String,price double) ROW FORMAT DELIMITED //…

c语言void* arg,void * arg什么意思

许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据…

什么是arguments

什么是arguments 形参&#xff1a;函数定义的参数实参&#xff1a;函数调用时实际传递的参数。参数匹配是从左向右进行匹配。如果实参个数少于形参&#xff0c;后面的参数对应赋值undefined。实参的个数如果多于形参的个数&#xff0c;可以通过arguments访问。【案例】模拟封装…

python函数参数*arg和**args的用法

import numpy as np """ 做饭函数&#xff0c;表示午饭有什么,foods表示一个元组 """ def make_meals(*foods):for item in foods:print(今天午饭有,item)def dictionary(**dic):for key,value in dic.items():print(英文名(key) , key , &…

什么是:arguments

在调用函数时&#xff0c;浏览器每次都会传递进两个隐含的参数: 1.函数的上下文对象this 2.封装实参的对象arguments 什么是&#xff1a;arguments 1.arguments是一个类数组对象,它也可以通过索引来操作数据&#xff0c;也可以获取长度 在调用函数时&#xff0c;我们所传递的实…