机器学习之支持向量机(手推公式版)

2023-11-05 08:30

本文主要是介绍机器学习之支持向量机(手推公式版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • 1. 间隔与支持向量
    • 2. 函数方程描述
    • 3. 参数求解
      • 3.1 拉格朗日乘数
      • 3.2 拉格朗日对偶函数

前言

  支持向量机 ( S u p p o r t (Support (Support V e c t o r Vector Vector M a c h i n e , S V M ) Machine,SVM) Machine,SVM)源于统计学习理论,是一种二分类模型,是机器学习中获得关注最多的算法,没错,是“最”,没有之一。

1. 间隔与支持向量

  支持向量机分类方法的核心思想就是在特征空间中找出一个超平面作为决策边界,来将样本划分为正类和负类,并使模型在未知数据集上的泛化误差尽可能的小。

  超平面:在几何中,超平面是一个空间的子空间,它是维度比所在空间小一维的空间。 如果数据空间本身是三维的,则其超平面是二维平面,而如果数据空间本身是二维的,则其超平面是一维的直线。

在这里插入图片描述

  比如上面这组数据,我们很容易就可以画出一条线将上面的数据划分为两个类别,而且其误差为零。对于一个数据集来说,这样误差为0的超平面可能有很多个,比如下面这样:

在这里插入图片描述
  但这样的模型不能保证泛化性能很好,即无法保证这个超平面在未知数据集上也表现很优秀。因此我们引入了一个名词------间隔 ( m a r g i n ) (margin) (margin),就是将我们找到的超平面向两边进行平移,直到碰到离这个超平面最近的样本点后停下,形成两个新的超平面,这两个超平面的距离就叫“间隔”,超平面处于这个“间隔”的中间位置,即我们选择的超平面到平移后的两个新的超平面之间的距离相等。而距离超平面最近的几个样本点称为支持向量 ( s u p p o r t (support (support v e c t o r ) vector) vector)

在这里插入图片描述
在这里插入图片描述
  比较一下上面两个图,直观上来看,都能够将样本换分为了两类,但如果再往里面加入一些噪声呢,很明显,蓝色的那个超平面对局部扰动的容忍性最好,因为它“够宽”,如果想象不出来,看下面这个例子:
在这里插入图片描述
  很明显,引入了一些新的数据样本后, B 1 B_1 B1这个超平面误差依旧为0,分类结果是最鲁棒的, B 2 B_2 B2这个超平面因为间隔较小,所以出现了分类误差。因此我们在寻找超平面时,希望间隔越大越好。
  以上就是支持向量机,即通过找出间隔最大的超平面,来对数据进行分类的分类器。
  支持向量机的模型由简至繁可以分为下面三种:
   ∙ \bullet 线性可分支持向量机
   ∙ \bullet 线性支持向量机
   ∙ \bullet 非线性支持向量机
  当训练数据线性可分时,通过硬间隔最大化 ( h a r d (hard (hard m a r g i n margin margin m a x i m i z a t i o n ) maximization) maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据集近似线性可分时,通过软间隔最大化 ( s o f t (soft (soft m a r g i n margin margin m a x i m i z a t i o n ) maximization) maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据集线性不可分时,通过使用核技巧 ( k e r n e l (kernel (kernel t r i c k ) trick) trick)及软间隔最大化,学习非线性支持向量机。

  简单是复杂的基础,也是复杂的特殊情况嘛

2. 函数方程描述

在这里插入图片描述

  假设给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) } , y i ∈ { − 1 , + 1 } D=\{(x_1,y_1),(x_2,y_2),\dots,(x_n,y_n)\},y_i \in \{-1,+1\} D={(x1,y1),(x2,y2),,(xn,yn)},yi{1,+1},在上述在样本空间中,任意一条线都可以表示为: w T x + b = 0 \bm w^T\bm x+b=0 wTx+b=0  其中 w = ( w 1 , w 2 , … , w d ) T \bm w=(w_1, w_2,\dots,w_d)^T w=(w1,w2,,wd)T为法向量,决定了超平面的方向; b b b为位移项,决定了超平面与原点之间的距离。很显然,超平面也可以被法向量 w \bm w w和位移 b b b确定。
  为了推导和计算简便,我们做出以下规定:
  在超平面以上的点都标记为正,超平面以下的点都标记为负,即对于 ( x i , y i ) ∈ D (x_i,y_i)\in D (xi,yi)D,若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 \bm w^T\bm x_i+b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=1,则有 w T x i + b < 0 \bm w^T\bm x_i+b<0 wTxi+b<0,表达式如下: { w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1 \begin{cases} \bm w^T\bm x_i+b\geq+1, & y_i=+1\\ \\ \bm w^T\bm x_i+b\leq-1, & y_i=-1 \end{cases} wTxi+b+1,wTxi+b1,yi=+1yi=1  其中,+1和-1表示两条平行于超平面的虚线到超平面的相对距离
  那么,样本空间中任意点 x \bm x x到超平面的距离可以写为: r = ∣ w T + b ∣ ∣ ∣ w ∣ ∣ r=\frac {|\bm w^T+b|} {||\bm w||} r=∣∣w∣∣wT+b  由此也可以求得两个不同标签的支持向量到超平面的距离之和,也就是间隔,可以表示为: γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac {2} {||\bm w||} γ=∣∣w∣∣2  我们的目标就是找到最大间隔的超平面,也就是要满足如下约束的参数 w \bm w w b b b,使得 γ \gamma γ最大,即 m a x w , b 2 ∣ ∣ w ∣ ∣ s u b j e c t t o y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , n \underset {\bm w,b} {max} \frac {2} {||\bm w||} \\[3pt] subject\ to \ y_i(\bm w^T\bm x_i+b)\geq1,i=1,2,\dots,n w,bmax∣∣w∣∣2subject to yi(wTxi+b)1,i=1,2,,n  很显然,最大化间隔 γ \gamma γ只需要最小化 ∣ ∣ w ∣ ∣ ||\bm w|| ∣∣w∣∣即可,所以约束变成如下: m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s u b j e c t t o y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , n \underset {\bm w,b} {min} \frac {1} {2}||\bm w||^2 \\[3pt] subject\ to \ y_i(\bm w^T\bm x_i+b)\geq1,i=1,2,\dots,n w,bmin21∣∣w2subject to yi(wTxi+b)1,i=1,2,,n

  实际上就是取一下倒数,那为啥又加上平方了呢,前面其实说过了, L 2 L_2 L2范式嘛,加个平方是为了消除开平方的操作,简化计算过程。

3. 参数求解

  求解带有约束的最优化问题,一般常用的就是引入拉格朗日乘子 λ \lambda λ构造拉格朗日函数。其实这属于多元函数的条件极值问题,可参考高数下册书中多元函数的条件极值与拉格朗日乘数法 ( s t a n d a r d L a g r a n g e m u l t i p l i e r m e t h o d ) (standard\ Lagrange\ multiplier\ method) (standard Lagrange multiplier method),下面简单回顾一下。

3.1 拉格朗日乘数

  要找函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在附加条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下的可能极值点,可以先作拉格朗日函数 L ( x , y ) = f ( x , y ) + λ φ ( x , y ) L(x,y)=f(x,y)+\lambda \varphi(x,y) L(x,y)=f(x,y)+λφ(x,y)  其中, λ \lambda λ为参数,求其对 x x x y y y λ \lambda λ的一阶偏导数,并使之为零,然后联立方程: { f x ( x , y ) + λ φ x ( x , y ) = 0 f y ( x , y ) + λ φ y ( x , y ) = 0 φ ( x , y ) = 0 \begin{cases} f_x(x,y)+\lambda \varphi_x(x,y)=0\\ \\ f_y(x,y)+\lambda \varphi_y(x,y)=0\\ \\ \varphi(x,y)=0\\ \end{cases} fx(x,y)+λφx(x,y)=0fy(x,y)+λφy(x,y)=0φ(x,y)=0  有这个方程组解出 x x x y y y λ \lambda λ,这样求得的 ( x , y ) (x,y) (x,y)就是函数 f ( x , y ) f(x,y) f(x,y)在附加条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下的可能极值点。
  如果函数的自变量多于两个,且附加条件多于一个,比如,要求函数 u = f ( x , y , z , t ) u=f(x,y,z,t) u=f(x,y,z,t)在附加条件 φ ( x , y , z , t ) = 0 ψ ( x , y , z , t ) = 0 \varphi (x,y,z,t)=0 \\[3pt] \psi (x,y,z,t)=0 φ(x,y,z,t)=0ψ(x,y,z,t)=0下的极值,可以先作拉格朗日函数 L ( x , y , z , t ) = f ( x , y , z , t ) + λ f ( x , y , z , t ) + μ f ( x , y , z , t ) L(x,y,z,t)=f(x,y,z,t)+\lambda f(x,y,z,t)+\mu f(x,y,z,t) L(x,y,z,t)=f(x,y,z,t)+λf(x,y,z,t)+μf(x,y,z,t)  其中, λ , μ \lambda,\mu λ,μ为参数,求其对 x x x y y y z z z t t t λ \lambda λ μ \mu μ的一阶偏导数,并使之为零,然后联立方程求解出 ( x , y , z , t ) (x,y,z,t) (x,y,z,t)

  来,看一个小题:
  求函数 u = x 2 + y 2 + z 2 u=x^2+y^2+z^2 u=x2+y2+z2在约束条件 z = x 2 + y 2 z=x^2+y^2 z=x2+y2 x + y + z = 4 x+y+z=4 x+y+z=4下的最大值与最小值。
在这里插入图片描述

3.2 拉格朗日对偶函数

  凸优化问题:函数本身是二次的 ( q u a d r a t i c ) (quadratic) (quadratic),函数的约束条件在其参数下是线性的,这样的函数称为凸优化问题。

  首先构造支持向量机的拉格朗日函数,也就是损失函数: L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) ( α i ≥ 0 ) L(\bm w,b,\bm \alpha)=\frac {1} {2}||\bm w||^2+\sum_{i=1}^m\alpha_i\bigg(1-y_i\big(\bm w^T\bm x_i+b\big)\bigg)\ (\alpha_i \geq0) L(w,b,α)=21∣∣w2+i=1mαi(1yi(wTxi+b)) (αi0)   其中, α = ( α 1 , α 2 , … , α n ) T \alpha=(\alpha_1,\alpha_2,\dots,\alpha_n)^T α=(α1,α2,,αn)T
  可以看出,拉格朗日函数分为两部分:第一部分和我们原始的损失函数一样,第二部分表达的是我们的约束条件。我们希望,构造的损失函数不仅能够代表我们原有的损失函数和约束条件,最好还能够表示我们想要最小化损失函数来求解 w \bm w w b b b的意图,所以我们要先以 α \alpha α为参数,求解 L ( w , b , α ) L(\bm w,b,\alpha) L(w,b,α)的最大值,再以 w \bm w w b b b为参数,求解 L ( w , b , α ) L(\bm w,b,\alpha) L(w,b,α)的最小值。因此,我们的目标可以写作如下形式: m i n w , b m a x α i ≥ 0 L ( w , b , α ) ( α i ≥ 0 ) \underset {\bm w,b} {min}\ \underset {\alpha_i \geq0} {max} \ L(\bm w,b,\alpha)\ (\alpha_i \geq0) w,bmin αi0max L(w,b,α) (αi0)

这篇关于机器学习之支持向量机(手推公式版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348637

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +