Support Vector Machine(SVM)——支持向量机

news2024/11/30 2:44:43

1.从逻辑回归到SVM

        回顾一下逻辑回归的模型

                h_\theta(x)=\frac1{1+e^{-\theta^Tx}}

        然后h_\theta(x)经过sigmoid函数得到预测y=1的概率,sigmoid函数如下图

                

        对于单个样本来说损失函数如下

          

        当一个输入的真实标签为1时,损失函数就只剩-\log\frac{1}{1+e^{-\theta^{T}x}},如左图所示,我们想要让\theta ^{T}X>>0,来使损失函数尽可能的小

        对于SVM来说,损失函数会做些修改,如右图所示,是一个分段函数,在>=1的时候,损失值直接为0,而<1部分是一条线段,假设命名为cost_{1}

        

       当一个输入的真实标签为0时,损失函数就只剩1-\log\frac{1}{1+e^{-\theta^{T}x}},如左图所示,同时我们想要让\theta ^{T}X<<0,来使损失函数尽可能的小

       同样的修改方式,在<=1的时候,损失值直接为0,而>1部分是一条线段,假设命名为cost_{0}

        于是在逻辑回归的基础上,我们可以得到SVM的损失函数如下

        \operatorname*{min}_{\theta}C\sum_{i=1}^{m}\left[y^{(i)}cost_{1}(\theta^{T}x^{(i)})+(1-y^{(i)})cost_{0}(\theta^{T}x^{(i)})\right]+\frac{1}{2}\sum_{i=1}^{n}\theta_{j}^{2}

对比逻辑回归,除了cost部分外,还有如下不同

  • 省去了\frac{1}{m},因为这并不会影响\theta的最优取值,只是影响函数值而已
  • 令C=\frac{1}{\lambda },接着正则化方式从A+\lambda BCA+B

        最后有别于逻辑回归经过一个sigmoid输出概率,SVM在得到参数\theta的值后,直接进行预测                        

                        

2.SVM——大间距分类器

        SVM构造出的决策边界总是使决策边界到两类样本点的距离较大,这点有别于感知机。

2.1 直观的理解

        回顾一下SVM修改后的损失函数

        如果说有一个y=1的正样本,如果\theta ^TX>=0,预测值就为1,预测正确。但如果从损失函数的来看,只有当\theta ^TX>=1的时候,损失函数的值才为0,同时在训练的过程中为了使损失函数最小,也确实会让\theta ^T X>=1(负样本同理)。也就是说SVM的损失函数让其对分类的要求更高,也就是大间距。

        接着,我们加上考虑C的影响。如果将C设置成一个非常大的值,则在最小化损失函数的时候,会迫切的希望找到一个让第一项(如下)为0的解,也就是\theta ^TX>=1(正样本时)

        

        对于二分类来说,绿色、蓝色、红色的线都可以将两者分类,但对于SVM来说,黑色的线才是其所要寻找的决策边界,因为它距离两个样本有更大的间隔,从效果上来看,黑色也确实是最好的

        

        如果找到了这个\theta,那么可以简化为如下

        

………………………………………………………………………………………………………………

        额外的对于参数C的理解,在上面的解释中我们使用了一个很大C来举例。因为C=1/λ,所以作用是类似

                                        

        但很大的C也意味着,如果多了一个左下角的“x”(有可能是异常值),决策边界直接从黑色的线变成粉色的线,这是不太好的,尽管在SVM中C的取值确实会比较大。如果C设置的不要太大,你仍然会得到和黑色线类似的线,只是分类的结果允许有点错误,忽略掉一些异常点的影响,同时如果你的数据是线性不可分的,也能给出好的结果

                                        

…………………………………………………………………………………………………………………

2.2 从数学上理解

        范数,表示向量的长度或大小(模其实是一样的)

||\theta ||=(\sqrt{\theta _{1}^{2}+\theta _{2}^{2}+\cdots +\theta _{n}^{2}})

\left.\min\frac{1}{2}\sum_{j=1}^n\theta_j^2s.t\left\{\begin{matrix}\theta^Tx^{(i)}\geq1ify^{(i)}=1\\\theta^Tx^{(i)}\leq-1ify^{(i)}=0\end{matrix}\right.\right.

        为了便于理解和画图,假设\theta _{0}=0(即决策边界截距为0),并且特征数n=2

 \frac{1}{2}\sum_{j=1}^{n}\theta _{j}^{2}=\frac{1}{2}(\theta _{1}^{2}+\theta _{2}^{2})=\frac{1}{2}(\sqrt{\theta _{1}^{2}+\theta _{2}^{2}})^{2}=\frac{1}{2}\left \| \theta \right \|^{2}

        设向量x^{i}与向量\theta的夹角为t,P^{i}为向量x^{i}在向量\theta方向上的投影的长度

\theta^{T}x^{(i)}=||\theta ||\left \| x^{i} \right \|cost=P^{i}\left \| \theta \right \|(向量内积)

                                ​​​​​​​        

        假如我们的决策边界是这条黑线,那么θ向量就是与黑线垂直的向量(法向量)

        ​​​​​​​        ​​​​​​​        

        如果决策边界是这样的,这个间隔更大,同时P也更加的大

        ​​​​​​​        ​​​​​​​        ​​​​​​​

        SVM需要在最小化||θ||的同时,还需要满足

        那么在最小化||θ||让P更加的大,才能满足,由上面两幅图可以分析出,这等价于让样本点距离决策边界距离更加的大

            ​​​​​​​​​​​​​​

        间隔大小为\frac{2}{||\theta ||},那些则最靠近分类决策面的点,是最难分类的数据点(落在margin线上的)也叫支持向量(support vectors),

2.3 kernel——核函数

        在之前,为了拟合非线性的数据,我们可以创造高次方的特征,使用多项式回归。


        而在SVM我们可以使用核函数,不使用核函数的SVM也叫使用线性核函数的SVM。

2.3.1 Gaussian Kernel高斯核函数

         假设我们预先选定了三个地标(lanmarks),输入x通过与计算与这三个地标的近似程度来获得新的特征f_{1},f_{2},f_{3}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        f_{1}=similarity(x,l^{(1)})=exp(-\frac{\|x-l^{(1)}\|^{2}}{2\sigma^{2}})

        f_{2}=similarity(x,l^{(2)})=exp(-\frac{\|x-l^{(2)}\|^{2}}{2\sigma^{2}})

        f_{3}=similarity(x,l^{(3)})=exp(-\frac{\|x-l^{(1)}\|^{3}}{2\sigma^{2}})

其中\begin{aligned}\exp\left(-\frac{||x-l||^2}{\sigma^2}\right)\end{aligned}就是高斯核函数,\|x-l^{(1)}\|^{2}=\sum_{j=1}^{n}(x_{j}-l_{j}^{(1)})^{2}表示x与l的距离的平方

        于是就可以得到
        ​​​​​​​h_{\theta}(x)=\theta_{1}f_{1}+\theta_{2}f_{2}+\theta_{3}f_{3}​​​​​​​

       假设输入x与某个地标l的距离为0,那么新特征f=e^{-0}=1,如果较远,那么f的值就靠近于0

        下面通过一个示例,看看高斯核函数的转换

        

        图中水平面的坐标为x1,x2而垂直坐标轴代表f。可以看出,只有当x与l^{(1)}重合时f才具有最大值。随着x的改变f值改变的速率受到\sigma^{2}的控制。

        只有当x=(3,5)与l^{(1)}重合时,f取得最大值,离l^{(1)}越远,f越小。

        可以看作正态分布的三维形式,因为这个这个式子和正态分布是一样的

        l相当于对称轴,函数在这里取得最大值,\sigma^{2}相当于方差,\sigma^{2}越大,分布越散,图象越平坦,\sigma^{2}越小,分布越集中,图象越在对称轴突出

        在下图中,当实例处于洋红色的点位置处,因为其离l^{(1)}更近,但是离l^{(2)}l^{(3)}较远,因此f_{1}接近1,而f_{2},f_{3}接近0,h_{\theta}(x)=\theta_{0}+\theta_{1}f_{1}+\theta_{2}f_{2}+\theta_{1}f_{3}>0,因此预测y=1。同理可以求出,对于l^{(2)}离较近的绿色点,也预测y=1,但是对于蓝绿色的点,因为其离三个地标都较远,预测y=0。我们可以得到决策边界类似下图

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​​​​​​​​        

        这样就可以实现非线性的数据分类。

2.3.2 如何选择地标

        在SVM会使用所有的训练样本作为地标,假设有m个样本

l^{(1)}=x^{(1)},l^{(2)}=x^{(2)},\ldots\ldots,l^{(m)}=x^{(m)}

        对于每一个样本x^{i},都可以计算m个f,得到大小为m的f向量

        此外还需修改我们的损失函数

        minC\sum_{i=1}^{m}[y^{(i)}cost_{1}\left(\theta^{T}f^{(i)}\right)+(1-y^{(i)})cost_{0}(\theta^{T}f^{(i)})]+\frac{1}{2}\sum_{j=1}^{n=m}\theta_{j}^{2}​​​​​​​

2.4.3 高斯核函数的超参数

        超参数为C和\sigma^{2}

  • C较大时,可能会导致低偏差,高方差
  • C较小时,可能会导致高偏差,低方差
  • \sigma^{2}较大时,可能会导致高偏差,低方差
  • \sigma^{2}较小时,可能会导致高偏差,低方差

        由于高斯核函数会使用每个样本

        另外使用高斯核函数使用特征缩放是很有必要的

2.5.4 其他Kernel

  • Polynomial kernel

     \mathrm{Ker}(x,l)=(\gamma x^Tl+c)^k,包括γ,c,k三个参数
  • String kernel
  • chi-square kernel
  • ​​​​​​​histogram intersection kernel
  • ……

无论什么核函数,都需要满足“Mercer’s Theorem”

        Mercer条件:训练样本的核矩阵应为半正定矩阵,因为只有所有大于或等于零的特征值才能产生有效的距离​​​​​​​

2 多分类SVM

        我们可以利用之前在逻辑回归介绍的一对多方法来解决一个多类分类问题。如果一共有k个类,则我们需要k个模型,以及k个参数向量θ。我们同样也可以训练k个支持向量机来解决多类分类问题。

        但是大多数支持向量机软件包都有内置的多类分类功能,我们只要直接使用即可。

3 逻辑回归与SVM的选择

n为特征数,m为训练样本数。

        (1)如果相较于m而言,n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。

        (2)如果n较小,而且m大小中等,例如n在1-1000之间,而m在10-10000之间,使用高斯核函数的支持向量机。

        (3)如果n较小,而m较大,例如n在1-1000之间,而m大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。

              

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1318057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验报告九、使用枚举法验证6174猜想

一、实验目的&#xff1a; 1、了解6174猜想的内容。 2、熟练使用选择结构和循环结构。 3、了解标准库itertools中combinations()函数的用法。 4、熟练使用字符串的join&#xff08;方法。 5、熟练使用内置函数int()、str()、 sorted()。 二、实验内容&#xff1a; 1955…

机器学习的数据管理

.机器学习的数据管理注意事项 机器学习的生命周期包括如下部分 (1).业务的理解&#xff0c;机器学习问题框架 (2).数据理解和收集 (3).模型的训练和评估 (4)模型部署 (5).模型监控 (6).业务衡量 数据管理和机器学习的生命周期的2&#xff0c;3&#xff0c;4个阶段有关。…

Pikachu漏洞练习平台之暴力破解(基于burpsuite)

从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基 Burte Force&#xff08;暴力破解&#xff09;概述 “暴力破解”是一攻击具手段&#xff0c;在web攻击中&#xff0c;一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认…

【STM32】STM32学习笔记-EXTI外部中断(11)

00. 目录 文章目录 00. 目录01. 中断系统02. 中断执行流程03. STM32中断04. NVIC基本结构05. NVIC优先级分组06. EXTI简介07. EXTI基本结构08. AFIO复用IO口09. EXTI框图10. 计数器模块11. 旋转编码器简介12. 附录 01. 中断系统 中断&#xff1a;在主程序运行过程中&#xff0…

使用PyQt5连接mysql数据库实现用户管理(增,删,改,查,附代码和完整界面)

一&#xff1a;环境搭建 首先本地需要安装python,PyQt5环境&#xff0c;我是用pip安装的 python -m pip install PyQt5 或者 pip install PyQt5 python -m pip install PyQt5-tools 或者 pip install PyQt5-tools 如果网络不好&#xff0c;还可以使用其他源 pip install PyQt…

C++中的继承(一)

文章目录 前言概念访问限定符基类和派生类的赋值转换继承中的作用域派生类的默认成员函数构造函数 拷贝构造析构函数 继承的其他一些细节 前言 我们之前说过&#xff0c;继承是面向对象的三大特性。 面向对象的三大特性&#xff1a; 封装、继承、多态。 封装在类和对象体现出…

大一python题库刷题训练,大一python填空题题库

大家好&#xff0c;给大家分享一下大一python题库及答案和分析&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 这篇文章主要介绍了大一python上机题库及答案&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完…

【线性代数】期末速通!

1. 行列式的性质 1.1 求一个行列式的值 特殊地&#xff0c;对角线左下全为0&#xff0c;结果为对角线乘积。行 r 列 c 1.2 性质 某行&#xff08;列&#xff09;加上或减去另一行&#xff08;列&#xff09;的几倍&#xff0c;行列式不变某行&#xff08;列&#xff09;乘 …

智能优化算法应用:基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.海洋捕食者算法4.实验参数设定5.算法…

git-lfs基本知识讲解

目录 1. 基本知识2. 安装 1. 基本知识 git-lfs 是 Git Large File Storage 的缩写&#xff0c;是 Git 的一个扩展&#xff0c;用于处理大文件的版本控制。 它允许你有效地管理和存储大型二进制文件&#xff0c;而不会使 Git 仓库变得过大和不稳定。以下是一些与 git-lfs 相关…

mysql原理--InnoDB的表空间

1.概述 通过前边儿的内容大家知道&#xff0c; 表空间 是一个抽象的概念。 对于系统表空间来说&#xff0c;对应着文件系统中一个或多个实际文件&#xff1b;对于每个独立表空间来说&#xff0c;对应着文件系统中一个名为 表名.ibd 的实际文件。可以把表空间想象成被切分为许许…

仿易订货的订货系统源码一般多少钱

易订货是一款面向中小企业的B2B电子商务平台&#xff0c;旨在提供一站式的采购和销售解决方案。不少批发商贸企业在数字化转型的时候会采用订货系统&#xff0c;今天我们谈谈仿易订货的订货系统源码需要多少钱。 这款订货系统是一款SaaS&#xff0c;所以它是不面向市场销售源码…

Java 第9章 房屋出租系统

设计 如图是系统的分层结构&#xff0c;包括了界面层、业务层和数据层。 单独建包&#xff1a;由于在实际开发过程中&#xff0c;可能会出现管理多个界面的情况&#xff0c;所以界面需要单独建包&#xff0c;其他同理。 开发任务&#xff1a;从界面层深入到业务层&#xff0c…

ce从初阶到大牛--函数

1、显示/etc/passwd文件中以bash结尾的行&#xff1b; grep "bash$" /etc/passwd2、找出/etc/passwd文件中的三位或四位数&#xff1b; grep -E \b[0-9]{3,4}\b /etc/passwd3、找出/etc/grub2.cfg文件中&#xff0c;以至少一个空白字符开头&#xff0c;后面又跟了非…

产品定位后选择通过外包团队降低成本:迅腾文化的优势与实践

产品定位后选择通过外包团队降低成本&#xff1a;迅腾文化的优势与实践 在激烈的市场竞争中&#xff0c;产品定位是企业成功的关键。然而&#xff0c;仅凭优秀的产品定位并不足以确保企业的成功&#xff0c;如何在降低成本的同时保持产品质量和市场竞争力也是至关重要的。在这…

计算机网络:DNS域名解析系统

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

【TB作品】51单片机,语音出租车计价器

西交大题目 1.语音出租车计价器 一、功能要求: 1.具有可模拟出租车车轮转速传感器的硬件设计,可计量出租车所走的公 里数。 2.显示和语音播报里程、价格和等待红灯或堵车的计时价格: 3.具有等待计时功能 4.具有实时年月日显示和切换功能。 5.操作简单、界面友好。 二、设计建议…

委托线程安全

委托线程安全是指将对共享数据的访问委托给线程安全的类&#xff0c;从而避免在调用方代码中进行额外的同步控制。这可以通过将线程安全性限定在一个类内部来实现。以下是一个简单的例子&#xff1a; 假设有一个计数器类 Counter&#xff0c;它不是线程安全的。 public class…

数据手册Datasheet解读-MOS管笔记

数据手册Datasheet解读-MOS管笔记 NMOS应用场景一般特征第一个参数Vdss第二、三个参数Rds&#xff08;on&#xff09;、IdMOS管的散热绝对最大额定值第一个参数-Vd第二个参数-Vdgr第三个参数-Vg(栅源电压)第四个参数-Id第五个参数-Idm第六个参数-Ptot第七个参数-Viso第七和八的…

【合成数字】合成类游戏-uniapp项目开发流程详解

以前玩过2048游戏&#xff0c;从中发现规律&#xff0c;想到跟合成类游戏相似&#xff0c;知道为什么很相似吗&#xff0c;在这里&#xff0c;做一个数字合成游戏玩玩吧&#xff0c;感兴趣的话可以看看&#xff0c;这里给大家讲一讲数字合成游戏的开发过程。 文章目录 创建项目…