机器学习 算法基础 八 SVM

news/2024/7/4 9:09:36

支撑向量机(Support Vector Machines): 在19世纪末火爆十年分类模型

学习内容:目标函数计算过程和算法步骤线性SVM,增加软间隔达到线性可分的SVM(分类效果更好),核函数,参数的计算方法SMO

文章目录

  • 各种概念
  • 使用核解决线性不可分
  • 线性分类问题
  • 建立目标函数
  • 举例
  • 线性支持向量机
  • 损失函数
  • 核函数

各种概念

  1. 线性可分SVM:数据集存在一条抽象的线可以完全将数据分成两类。
    在这里插入图片描述
  2. 线性SVM:允许一定错误率的前提下,才满足第1条。
    在这里插入图片描述
  3. 非线性SVM:核函数。线性可分SVM和线性SVM都可以通过增加核函数达到非线性的效果。

在中学数学知识中,下图中直线 L L L函数的方差为 y = 1 2 x + 1 y=\frac{1}{2}x+1 y=21x+1
在这里插入图片描述
我们用线代的知识对函数做个变形:
y = 1 2 x + 1 y=\frac{1}{2}x+1 y=21x+1
− x + 2 y + 1 = 0 -x+2y+1=0 x+2y+1=0
抽取参数后:
( − 1 , 2 ) ( x y ) + 1 = 0 (-1,2)\begin{pmatrix} x \\ y \\ \end{pmatrix}+1 =0 (1,2)(xy)+1=0
( − 1 , 2 ) (-1, 2) (1,2) 这个向量我们可以看出是直线 L L L的一条法线(垂直于 L L L)将这个向量记为 w ⃗ \vec{w} w ,将参数向量记为 x ⃗ \vec{x} x ,将截距项(常亮)记为b,于是有:
f ( x ⃗ ) = w ⃗ T ⋅ x ⃗ + b f(\vec{x})=\vec{w}^T\cdot\vec{x}+b f(x )=w Tx +b
如果参数 x ⃗ \vec{x} x 是n维的,则 w ⃗ \vec{w} w 也是n维的,b是一维的。
若将样本点 x 0 x_0 x0带入 w ⃗ T ⋅ x 0 ⃗ + b > 0 \vec{w}^T\cdot\vec{x_0}+b>0 w Tx0 +b>0,则表示此点在法线同方向,同理小于0在法线逆方向。

使用核解决线性不可分

涉及核函数内容后面讲;
在这里插入图片描述
在这里插入图片描述

线性分类问题

实际上我们的痛苦不是分不出来,而是分割方式太多如何选择?
在这里插入图片描述

回顾中学计算点到直线距离的方式:
直线方程为 A x + B y + C = 0 Ax+By+C = 0 Ax+By+C=0求点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)到直线的距离
直接套公式: d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 d=\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}} d=A2+B2 Ax0+By0+C
由上文可知符号表方向,所以我们在此不考虑绝对值。 d = A x 0 + B y 0 + C A 2 + B 2 d=\frac{Ax_0+By_0+C}{\sqrt{A^2+B^2}} d=A2+B2 Ax0+By0+C
变形: d = A A 2 + B 2 x 0 + B A 2 + B 2 y 0 + C A 2 + B 2 d=\frac{A}{\sqrt{A^2+B^2}}x_0+\frac{B}{\sqrt{A^2+B^2}}y_0+\frac{C}{\sqrt{A^2+B^2}} d=A2+B2 Ax0+A2+B2 By0+A2+B2 C
简写一下,满足 A ′ , B ′ A',B' AB平方和为1即可: A ′ x 0 + B ′ y 0 + C ′ A'x_0+B'y_0+C' Ax0+By0+C
如上文也可以视为: w ⃗ ⋅ x ⃗ + b \vec{w}\cdot\vec{x}+b w x +b

对于 A 2 + B 2 \sqrt{A^2+B^2} A2+B2 ,可以理解为 ( w 1 , w 2 , . . . ) ( w 1 w 2 . . . ) = w 1 2 + w 2 2 + . . . \sqrt{(w_1,w_2,...)\begin{pmatrix} w_1 \\ w_2 \\ ... \end{pmatrix}}=\sqrt{w_1^2+w_2^2+...} (w1,w2,...)w1w2... =w12+w22+...
定义二范式: ∣ ∣ w ⃗ ∣ ∣ = ( w 1 , w 2 , . . . ) ( w 1 w 2 . . . ) ||\vec{w}|| = (w_1,w_2,...)\begin{pmatrix} w_1 \\ w_2 \\ ... \end{pmatrix} w =(w1,w2,...)w1w2...
则二范式的平方为 ∣ ∣ w ⃗ ∣ ∣ 2 = w ⃗ T ⋅ w ⃗ ||\vec{w}||^2=\vec{w}^T\cdot \vec{w} w 2=w Tw
所以n维的点到直线的距离可以写成:
d ( x 0 , l ) = w ⃗ ⋅ x ⃗ + b ∣ ∣ w ⃗ ∣ ∣ d(x_0,l)=\frac{\vec{w}\cdot\vec{x}+b}{||\vec{w}||} d(x0,l)=w w x +b

在推导如何计算点到直线距离的时候我们忽略了绝对值(前面解释过是因为符号代表相对于法线的方向),但是样本中会有一个y值(定义负例为-1,正例为1)来标定这个样本的类别。那么我们可以将这个y值也放到公式中抵消符号:
d ( x 0 , l ) = ( w ⃗ ⋅ x ⃗ + b ) y i ∣ ∣ w ⃗ ∣ ∣ d(x_0,l)=\frac{(\vec{w}\cdot\vec{x}+b)y^i}{||\vec{w}||} d(x0,l)=w (w x +b)yi
接下来我们找到距离直线最近的样本点 i i i
min ⁡ i = 1 , 2 , . . . ( f ( x i ; w , b ) ) \min_{i=1,2,...}(f(x^i;w,b)) i=1,2,...min(f(xi;w,b))
再比较每一条直线 j j j对应最近的点,找到距离最近点最远的直线。
max ⁡ j = 1 , 2 , . . . ( min ⁡ i = 1 , 2 , . . . ( f ( x i ; w , b ) ) ) \max_{j=1,2,...}(\min_{i=1,2,...}(f(x^i;w,b))) j=1,2,...max(i=1,2,...min(f(xi;w,b)))


一不小心就推到了目标函数
我们总是想要找到使得 w j , b j w_j,b_j wj,bj在这个目标函数取最大。最小距离取最大
w ∗ , b ∗ ⟹ arg max ⁡ j = 1 , 2 , . . . ( min ⁡ i = 1 , 2 , . . . ( ( w ⋅ x ( i ) + b ) ⋅ y ( i ) ∣ ∣ w ∣ ∣ ) ) w^*,b^*\Longrightarrow \argmax_{j=1,2,...}(\min_{i=1,2,...}(\frac{(w\cdot x^{(i)}+b)\cdot y^{(i)}}{||w||})) w,bj=1,2,...argmax(i=1,2,...min(w(wx(i)+b)y(i)))


在这里插入图片描述
arg max ⁡ w , b { 1 ∣ ∣ w ∣ ∣ min ⁡ i [ y i ⋅ ( w T ⋅ Φ ( x i ) + b ) ] } \argmax_{w,b}\{\frac{1}{||w||}\min_i[y_i \cdot (w^T \cdot \Phi(x_i)+b)]\} w,bargmax{w1imin[yi(wTΦ(xi)+b)]}

这个目标函数太复杂了,还能不能简化呢?
函数中有很大一部分是表示距离的,假设我们让他除以一个系数(这个系数就是最近点到直线的距离,也就是将最小距离视为单位1),这样表示距离的公式部分就可以知己省略。

  • 新目标函数:
    arg max ⁡ w , b 1 ∣ ∣ w ∣ ∣ \argmax_{w,b}\frac{1}{||w||} w,bargmaxw1

建立目标函数

max ⁡ w , b 1 ∣ ∣ w ∣ ∣ ⇒ min ⁡ w , b ∣ ∣ w ∣ ∣ ⇒ min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 \max_{w,b}\frac{1}{||w||} \Rightarrow \min_{w,b}{||w||} \Rightarrow \min_{w,b}\frac{1}{2}{||w||^2} w,bmaxw1w,bminww,bmin21w2
s . t . y i ( w T ⋅ Φ ( x i ) + b ) ≥ 1 , i = 1 , 2 , ⋅ ⋅ ⋅ , n ( n 样 本 个 数 , n 个 约 束 条 件 ) s.t. y_i(w^T \cdot \Phi(x_i) + b) \ge1 ,i=1,2,···,n (n样本个数,n个约束条件) s.t.yi(wTΦ(xi)+b)1i=1,2,,n(nn)

插入知识点,凸优化可以将最大最小问题转化为最小最大问题
拉格朗日乘子法
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( w T ⋅ Φ ( x i ) + b ) − 1 ) L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^n\alpha_i(y_i(w^T\cdot \Phi(x_i)+b)-1) L(w,b,α)=21w2i=1nαi(yi(wTΦ(xi)+b)1)
注:实际上还包含不等式约束。

  • 分别对w,b求偏导并令其为0:
    ∂ L ∂ w = 0 ⇒ w = ∑ i = 1 n α i y i Φ ( x n ) \frac{\partial L}{\partial w} = 0 \Rightarrow w=\sum_{i=1}^n \alpha_iy_i\Phi(x_n) wL=0w=i=1nαiyiΦ(xn)
    ∂ L ∂ b = 0 ⇒ 0 = ∑ i = 1 n α i y i \frac{\partial L}{\partial b}=0 \Rightarrow 0=\sum_{i=1}^n\alpha_iy_i bL=00=i=1nαiyi
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

举例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

线性支持向量机

为了得到最宽的分隔带,未必完全正确的分隔所以样本。
在这里插入图片描述
在这里插入图片描述


接下来求解线性SVM目标函数
min ⁡ w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , ⋅ ⋅ ⋅ , n ξ i ≥ 0 , i = 1 , 2 , ⋅ ⋅ ⋅ , n \min_{w,b,\xi}\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i \\ s.t.\quad y_i(w\cdot x_i+b)\ge1-\xi_i,\quad i=1,2,···,n \\ \xi_i\ge0,i=1,2,···,n w,b,ξmin21w2+Ci=1Nξis.t.yi(wxi+b)1ξi,i=1,2,,nξi0,i=1,2,,n

条 件 项 : y i ( w ⋅ x i + b ) − 1 + ξ i ≥ 0 每 项 乘 α i ( 1 , 2 , . . . , n ) α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) 每 项 乘 μ i ( 1 , 2 , . . . , n ) μ i ξ i 条件项:y_i(w\cdot x_i+b)-1+\xi_i\ge 0 \\ 每项乘 \alpha_i(1,2,...,n) \quad \alpha_i(y_i(w\cdot x_i+b)-1+\xi_i) \\ 每项乘\mu_i(1,2,...,n) \quad \mu_i\xi_i yi(wxi+b)1+ξi0αi(1,2,...,n)αi(yi(wxi+b)1+ξi)μi(1,2,...,n)μiξi

拉格朗日函数:
L ( w , b , ξ , α , μ ) ≡ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i − ∑ i = 1 n α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 n μ i ξ i L(w,b,\xi,\alpha,\mu)\equiv\frac{1}{2}||w||^2+C\sum_{i=1}^n\xi_i-\sum_{i=1}^n\alpha_i(y_i(w\cdot x _i+b)-1+\xi_i)-\sum_{i=1}^n \mu_i\xi_i L(w,b,ξ,α,μ)21w2+Ci=1nξii=1nαi(yi(wxi+b)1+ξi)i=1nμiξi

w , b , ξ w,b,\xi w,b,ξ求偏导:
∂ L ∂ w = 0 ⇒ w = ∑ i = 1 n a i y i ϕ ( x n ) ∂ L ∂ b = 0 ⇒ 0 = ∑ i = 1 n a i y i ∂ L ∂ ξ i = 0 ⇒ C − a i − μ i = 0 \frac{\partial L}{\partial w}=0 \Rightarrow w=\sum_{i=1}^n a_iy_i\phi(x_n)\\ \frac{\partial L}{\partial b}=0\Rightarrow 0=\sum_{i=1}^n a_iy_i\\ \frac{\partial L}{\partial \xi_i}=0\Rightarrow C-a_i-\mu_i=0 wL=0w=i=1naiyiϕ(xn)bL=00=i=1naiyiξiL=0Caiμi=0
回带这三个式子:
在这里插入图片描述

损失函数

就是所有样本的损失(点到支撑线的距离)之和: C ∑ i = 1 n ξ i C\sum_{i=1}^n\xi_i Ci=1nξi
在这里插入图片描述

核函数

数据不总是线性可分的,对于非线性的数据处理的一种手段。

核技巧(kernel trick):

  1. 使用一个变换,将原空间的数据映射到新空间
  2. 在新空间例用线性分类学习方法训练数据中学习分类模型。

在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/3927168.html

相关文章

变成机器人 尼尔机械纪元_PA改《尼尔:机械纪元》2B小姐姐:豪华版还有高开叉紧身衣造型!...

Square Enix的9寸可动PLAY ARTS改系列推出了一款《尼尔:机械纪元》中的2B小姐姐可动人偶,分为普通与豪华版两款,豪华版配有多样化的武器, Pod042,两枚替换头雕与高开叉造型替换件这款PLAY ARTS改系列2B小姐姐高25.5厘米…

蓝桥杯单片机数码管动态显示_蓝桥杯单片机开发板 CT107D开发板矩阵按键 数码管显示(含定时器)...

蓝桥杯单片机开发板 CT107D开发板矩阵按键 数码管显示,含定时器源码,J5跳线 接12关键 ,J13接23#include #include #define uchar unsigned char#define Y4 P2 0X9F & (P2 | 0XE0); //打开y4 可以控制led#d…

su灯光插件_V-Ray for SketchUp渲染外部照明快速入门

本教程介绍了在SketchUp中使用V-Ray照亮外部场景的基础知识。它将包括使用各种V-Ray灯进行日夜渲染。最后,您将了解SketchUp中外部的一般照明工作流程。要学习本教程,您需要安装V-Ray for SketchUp插件。教程步骤打开示例场景首先启动SketchUp。打开项目…

机器学习 算法基础 九 SVM实践

SVM代码实践 这里写自定义目录标题练习1:鸢尾花分类练习2:SVM实现一个多分类器练习3:SVM选用不同核参数练习4:手写数字识别练习1:鸢尾花分类 #!/usr/bin/python # -*- coding:utf-8 -*-import numpy as np import pan…

2020年书法落款_2020年中国书法家协会书法考级天津考区的评审工作顺利完成

2020年中国书法家协会书法考级天津考区的评审工作顺利完成杨健君、郝金宝、朱立、高秀红在评审现场。心墨艺术网讯 11月12日,2020年中国书法家协会书法考级天津考区的评审工作顺利完成。天津市书法家协会秘书长杨健君,天津市书法家协会隶书委员会副主任、…

自适应网页设计(Responsive Web Design

http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html

机器学习 算法基础 十 聚类

聚类 聚类是针对给定的样本,依据他们特征的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。在某些场景下聚类和降维是一个意思。聚类算法只作为pipline上对特征降维使用。 相似度/计算方法 当 μxμy0\mu_x \mu_y 0μx​μy​0 时二者相…

golang 获取 utc 时间戳_多传感器融合中的时间同步2-论文阅读

前言阅读硕士论文《GPS/INS组合导航系统研究及实现》,该论文第5章为时间同步系统设计,为GPS/INS系统设计的时间同步系统部分内容非常丰富,非常值得参考。在数据融合中如果融合的数据是来自两个不同的时间点的数据,即INS数据和GPS数…