【机器学习·浙江大学】机器学习概述、支持向量机SVM(线性模型)

机器学习概述

在这里插入图片描述
在这里插入图片描述
机器学习

  • 特征提取(feature)

  • 根据提取的特征构造算法,实现特定的任务⭐(这门课程的重点:假设所有的特征已经存在且有效,如何根据这些特征来构造学习算法)

  • 如下图所示,机器学习主要就是来进行如何画这一条线(也就是模型,即从泛指从数据中学习得到的结果,其对应了关于数据的某种潜在的规律,因此称为“假设”;这种潜在规律自身,则称为“真相”或者“真实”ground-truth,学习得到模型的过程,就是去找出或者逼近真相):
    在这里插入图片描述

  • 难点

    • 维度(超平面hyper plane上万维度,如何去做这样一个超平面->困难
    • 标准:那一条曲线or哪一个超平面是最好的(没有同一的标准,不同算法的画线和判别标准不同(而机器学习就是学习这些不同的算法,对这些算法有一个感觉,适用于什么场景
  • 没有免费午餐定理
    如果我们不对特征空间进行先验假设,则所有算法的平均表现一样(农场主理论),有了先验假设,才可以说哪个算法更好!

  • 几乎所有机器学习的算法所做的事情都可以分为以下三步

    • 首先用一个方程or一个复杂的函数(其实本质上神经网络就是一个很复杂的函数)来限定一个模型
    • 在这个模型中,留出一些待定的参数
    • 利用样本,去训练模型,用相应的算法确定待定参数(关键)

所以在对比算法时,往往也可以从这三方面来进行对比。

0、历史沿革

  • 发明者:Vapnic(苏联人)
  • 发明时间:70年代中期
  • 发表时间:苏联解体后,Vapnic去往美国,在90年代将其发表
  • 算法性质:针对小样本问题
  • 理论支撑:完整&优美的数学理论

一、线性模型、SVM的基本思想

🌸什么是线性模型?
  在上文的机器学习概述中,我们知道,机器学习的核心就是在特征空间中画这样一个线or面,把训练数据给划分开。而线性模型,其实直观上来讲,就是这个线是直线or这个面是一个超平面,这样的模型我们称为线性模型:
在这里插入图片描述
  同时,对于这样的训练样本集我们称为线性可分训练样本集(Linear Separable);相反,若无法画一条直线or超平面对训练样本集进行划分,则该样本集称为非线性可分训练样本集(Non-Linear Seperable)

 💁🏻‍♀️而SVM(support vector machine)则是研究,如何在线性可分训练样本集上画这样一条直线or超平面,进而推广到非线性可分训练样本集

🌸哪一条直线(模型)是最好的?——模型的评判标准(SVM的基本思想)

  如果存在一条直线可以将样本集进行划分,那么必然存在无数条直线可以对其进行划分。那么哪一条直线是最好的呢?
在这里插入图片描述

  根据上面概述中讲到的“没有午餐定理”,其实并不存在什么“最好”的模型,除非对特征空间进行假设(hypothesis),这种假设也是 基于先验知识(训练数据)的某种潜在的规律
  根据我们的先验知识,从我们角度出发,相信很多人都会在下面三条直线中选择②号线:
在这里插入图片描述

  为什么呢?这其实是根据我们的先验知识或者说是假设(潜在的规律),如下图,只有②号线它的容错能力是最强的(这种容错能力也称为泛化性,当新样本来临时,它的表现会更好),因此我们选择它:
在这里插入图片描述
  那么如何以描述这种假设呢?Vapnic做出如下假设:
   1. 首先我们需要定义对每条直线的一个评判/衡量的标准:performance-measure 代表这条直线的 性能指标,且每条直线都可以计算出其相应的performance
   2. 当然,我们要保证那个容错性能最好的直线的performance是最大的。那么如何计算直线的性能指标呢?对每条直线进行平移,直到穿过每个类别的一个or几个点为止,计算出平移距离之和(也就是间隔),间隔d最大的那条直线,就是我们要选取的那条直线。(同时还有一个约束条件:保证这条线在这个距离之间,即d/2的位置,这样才能保证这条直线唯一)。
在这里插入图片描述

💁🏻‍♀️其实上面的定义性能指标、计算性能指标的过程,就是SVM的基本思想。那么如何对这个过程用数学形式进行表示呢?

二、SVM的数学描述

2.1:一些定义

  1. d:间隔/间隔距离(margin)——支持向量机就是最大化margin的方法

  2. 将直线上下移动所穿过的向量称为:支持向量(support vectors)——为什么呢?因为我们从上文讲到的确定最终直线的方法来看,最大化距离、确定直线,只和这几个穿过的支持向量有关(这也是为什么SVM适合小样本问题)

    在这里插入图片描述

  3. 训练数据及其标签: ( X → 1 , y 1 ) (\overrightarrow{X}_{1},y_{1}) (X 1,y1) ( X → 2 , y 2 ) (\overrightarrow{X}_{2},y_{2}) (X 2,y2) ( X → 3 , y 3 ) (\overrightarrow{X}_{3},y_{3}) (X 3,y3) ( X → N , y N ) (\overrightarrow{X}_{N},y_{N}) (X N,yN)

    注意: X → \overrightarrow{X} X 是特征向量;在这里我们讨论的是二分类问题, y y y 我们限定只能取-11,代表为两个类别。

  4. 线性模型:

    • 参数: ( W → , b ) (\overrightarrow{W},b) (W ,b)
    • 超平面(线性模型)的表达: W → T ⋅ X → + b = 0 \overrightarrow{W}^{T}·\overrightarrow{X}+b = 0 W TX +b=0
  5. 一个训练样本集线性可分是指:对于样本集 { ( X i , y i ) } i = 1 … N \left \{ (X_{i},y_{i} )\right \}_{i=1\dots N} {(Xi,yi)}i=1N
    存在 ( W , b ) (W,b) (W,b),使得,对任意 ( X → i , y i ) (\overrightarrow{X}_{i},y_{i}) (X i,yi) 有:

    • y i = + 1 y_{i} = +1 yi=+1,则 W → i T ⋅ X → + b ≥ 0 \overrightarrow{W}_{i}^{T}·\overrightarrow{X}+b \ge 0 W iTX +b0
    • y i = − 1 y_{i} = -1 yi=1,则 W → i T ⋅ X → + b < 0 \overrightarrow{W}_{i}^{T}·\overrightarrow{X}+b < 0 W iTX +b<0

    上述两个式子合起来也可以用一个公式来表示: y i ( W → i T ⋅ X → + b ) > 0 y_{i}(\overrightarrow{W}_{i}^{T}·\overrightarrow{X}+b) > 0 yi(W iTX +b)>0

    就是存在一个超平面可以将其划分开,使得一类数据在该平面的一侧,另外一类在另一侧,只不过上面是数学表示罢了。

2.2:SVM的优化问题

 上文讲到SVM的线性模型(也就是那个划分样本集的超平面),该如何确定呢?这个问题也叫做SVM的优化问题。其实在第一节讲SVM的基本思想时,我们已经窥得许多了,它的核心就是最大化间隔(margin)——d。在这里,我们将表述成更简洁更优雅的数学表示(本质是做了一个优化,从而确定参数w,b,但是背后的原理还是从最小化d触发的):

  • 最小化(minimize): ∥ W ∥ 2 \left \| W \right \| ^{2} W2
  • 限制条件 (subject to): y i ( W → i T ⋅ X → + b ) ≥ 1 ( i = 1 … N ) y_{i}(\overrightarrow{W}_{i}^{T}·\overrightarrow{X}+b) \ge 1 (i=1\dots N) yi(W iTX +b)1i=1N

 用一句话来解释一下,就是在上面的限制条件下,对 ∥ W ∥ 2 \left \| W \right \| ^{2} W2进行最小化

 相信你和我一样,是不是感到莫名其妙,明明我们的侧重点是放在间隔d间隔d应该相等且最大,怎么现在突然扯到W上了?不急,我们现在慢慢道来。

 首先我们要明确两个事实

  1. W → T ⋅ X → + b = 0 \overrightarrow{W}^{T}·\overrightarrow{X}+b = 0 W TX +b=0 a W → T ⋅ X → + a b = 0 a\overrightarrow{W}^{T}·\overrightarrow{X}+ab = 0 aW TX +ab=0 是一个平面, a ∈ R + a\in R^{+} aR+.这说明: ( W , b ) (W, b) (W,b) 满足线性模型,则 ( a W , a b ) (aW, ab) (aW,ab)也满足。
  2. 向量 X 0 X_{0} X0 到超平面 W → T ⋅ X → + b = 0 \overrightarrow{W}^{T}·\overrightarrow{X}+b = 0 W TX +b=0 的距离为: d = ∣ W T ⋅ X 0 + b ∣ ∥ W ∥ 2 d = \frac{\left | W^{T}·X_{0}+b \right | }{\left \| W \right \|^{2} } d=W2WTX0+b

 OK ,根据事实2,我们得到了间隔d的表达式,但是我们也发现, 直接让所有的支持向量的d最大,是一个很难操控的事情,如是,我们做了如下转换:

 我们根据事实1, 使用一个正实数a对参数进行如下缩放:
( W , b ) → ( a W , a b ) (W,b)\to (aW,ab) (W,b)(aW,ab)
 最终使得所有的支持向量 X 0 X_{0} X0,有: ∣ W T ⋅ X 0 + b ∣ = 1 | W^{T}·X_{0}+b|=1 WTX0+b=1,此时, d = 1 ∥ W ∥ 2 d = \frac{1 }{\left \| W \right \|^{2} } d=W21,至此,为什么要最小化 ∥ W ∥ 2 \left \| W \right \| ^{2} W2也就显而易见了。

 当然,只最大化d从而最小化w可不行,那平面可以无限远呀,那不就最大了。所以还要需要限制条件,保证其他非支持向量的向量点能被成功划分开,这也是为什么有那个限制条件。 在这里插入图片描述

🪧 扩展:

  • 首先,有一些教材会在“最小化”那里,写成 ∥ W ∥ 2 2 \frac{\left \| W \right \| ^{2}}{2} 2W2,其实没什么区别,就是为了求导时能消去W头上移下来的2。
  • 其次,在限制条件那里,其实 y i ( W → i T ⋅ X → + b ) y_{i}(\overrightarrow{W}_{i}^{T}·\overrightarrow{X}+b) yi(W iTX +b) 可以大于任何正实数,道理很简单,因为a可以取不同正实数,且代表的还是同一个平面。

最后,就是如何确定参数W呢?这里其实是 凸优化(二次规划) 问题,也是我们常听说的梯度下降法,不断试探直到达到最优点

三、SVM和逻辑回归(LR)的对比

关于逻辑回归在前面的博客中已经讲解过,感兴趣的同学可以去了解一下【吴恩达·机器学习】第三章:分类任务:逻辑回归模型(交叉熵损失函数、决策边界、过拟合、正则化)。这里我想将两者进行比较,因为在我学习的过程中,我就发现这两者似乎非常相像。

💐 LR和SVM的相同点

  • 都是监督学习算法(都需要有样本进行训练)
  • 如果不考虑核函数,LR和SVM都是线性分类算法
  • 都是判别模型(判别模型会生成一个表示 P(y|x) 的判别函数)

💐 LR和SVM的不同点

  • 损失函数不同:LR采用对对数损失函数,SVM采用hinge损失函数(所谓损失函数,就是我们最终想要最小化的那个东西!)
  • SVM损失函数自带正则项,LR必须另在损失函数上添加正则项
  • SVM 只考虑局部的分界线附近的点(支持向量),LR考虑全局(每个样本点都必须参与决策面的计算过程)

    其实SVM也考虑了其他点,在限制条件里,只不过影响效果没有那么大,这也是下面一点要说的

  • LR对异常值敏感,SVM对异常值不敏感
  • 在解决非线性问题时,SVM采用核函数机制,而LR通常不采用核函数的方法(SVM只有几个样本点参与核计算,而LR如果要使用核函数,则所有样本点都要参与核计算,计算复杂度太高,不划算)
  • 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受影响。(线性SVM寻找最大间隔分类器时是依据数据的距离测量的,如果不对数据进行正则化,会对结果有所影响,然而,LR虽然也会用到正则化,却是为了方便优化过程的起始值,LR求解的过程是与距离测量无关的,所以归一化对于LR的求解结果是没有影响的)

上面说实话是我在网上找到的,说的不无道理,下面我想说说我理解的不同点。首先你可能还记得在上文机器学习概述中讲到的,几乎所有机器学习的算法所做的事情都可以分为以下三步

  1. 首先用一个方程or一个复杂的函数(其实本质上神经网络就是一个很复杂的函数)来限定一个模型
  2. 在这个模型中,留出一些待定的参数
  3. 利用样本,去训练模型,用相应的算法确定待定参数(关键)

OK,我们从这三点来对比一下SVM和LR

  1. 限定模型:都是线性模型——相同
  2. 预留参数:都是(W,b)——相同
  3. 确定参数的方法——不同
    a. LR:采用的是最大似然估计方法,我们的目标是求取最大化对数似然函数的参数值,这个过程通常使用梯度下降法或牛顿法等优化算法实现。
    b. SVM:采用的是间隔最大化策略,其目标是寻找一个划分超平面,使得该平面距离最邻近的训练样本点(即支持向量)的距离最大化,求解过程一般通过二次规划求解器完成。

其实本质也是我们在“没有免费午餐定理”中提到的,它们两个的“假设”不同:LR旨在最大化样本的似然概率(也即让模型尽可能拟合每一个样本),而SVM在保证分类正确的前提下,尽可能找到离分隔面最远的边界,以实现对未知样本最好的分类效果(容错性)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOSFreeRTOS列表和列表项

FreeRTOS列表和列表项 今天继续跟着正点原子学习FreeRTOS列表和列表项的内容。列表和列表项这个知识点用到了C语言链表的知识点。所以必须对C语言中的链表这个数据结构才能更好的理解这部分内容。TIPS&#xff1a;正点原子这节课内容讲的特别好&#xff0c;强烈推荐&#xff1…

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的基于个人需求和地域特色的外卖推荐系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

关于 Python 的 import,你了解多少?

多线程和多进程是 Python 中两种实现多任务的不同策略&#xff0c;二者都可以在特定的场景下在一定程度上提高程序的运行速度、性能以及吞吐&#xff0c;但二者的运行机制却有很大的差别。 在 Python 中&#xff0c;多线程以_并发&#xff08;concurrent&#xff09;的方式运行…

Chapter 1 Basic Concepts of Communication and Communication Systems

1.1 The Concept of Communication communication【通信】:It is the process of using signals to transmit messages containing information in space. To put it simply, communication is the spatial transmission of information【信息的空间传递】Information【信息】…

C语言数组:数据的集合艺术(续)

前言 在上一篇文章中&#xff0c;我们深入探讨了C语言数组的基本概念、操作以及多维数组的应用。今天&#xff0c;我们将继续探索数组的更多高级特性&#xff0c;包括动态内存分配、指针与数组的关系以及数组在实际编程中的应用案例。 一、动态内存分配与数组 在C语言中&…

Unity开发一个FPS游戏之三

在前面的两篇博客中&#xff0c;我已实现了一个FPS游戏的大部分功能&#xff0c;包括了第一人称的主角运动控制&#xff0c;武器射击以及敌人的智能行为。这里我将继续完善这个游戏&#xff0c;包括以下几个方面&#xff1a; 增加一个真实的游戏场景&#xff0c;模拟一个废弃的…

数据加密的两种方案

说明&#xff1a;本文介绍对项目中的数据加密的两种方案&#xff1b; 场景 源自真实的项目需求&#xff0c;需要我们对系统中的敏感数据&#xff08;如手机号、证件号等&#xff09;进行加密处理&#xff0c;即存入到数据库中的是加密后的密文数据。加密本身是不难的&#xf…

Spring Security——11,自定义权限校验方法

自定义权限校验方法 一键三连有没有捏~~ 我们也可以定义自己的权限校验方法&#xff0c;在PreAuthorize注解中使用我们的方法。 自定义一个权限检验方法&#xff1a; 在SPEL表达式中使用 ex相当于获取容器中bean的名字未ex的对象。然后再调用这个对象的 hasAuthority方法&am…

软考高级架构师:嵌入式系统的内核架构

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

ssm028蜀都天香酒楼的网站设计与实现+jsp

基于JSP的蜀都天香酒楼管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定蜀都…

带头双向循环链表实现

1.结构及特性 前面我们实现了无头单向非循环链表&#xff0c;它的结构是这样的&#xff1a; 在这里的head只是一个指向头结点的指针&#xff0c;而不是带头链表的头节点。 而带头双向循环链表的逻辑结构则是这样的 这就是链表的结构&#xff0c;链表的每一个节点都有两个指针…

docker 安装redis报错:can not init background jbos

启动redis&#xff0c;发现一直再重启 docker run -d --name redis -p 6379:6379 --restartalways redis:6.2.6 --requirepass "123456" 查看日志&#xff0c;发现job没启动 docker logs 47f6572a779c 尝试了一堆解决办法。。。最后发现尝试安装了redis6.2.6版本&a…

从《布瓦尔与佩库歇》实践中学习社会科学概论

从《布瓦尔与佩库歇》实践中学习社会科学概论 前情提要《布瓦尔与佩库歇》实践笔记云藏山鹰社会科学概论报告核心--信息形数身知™意合™意气实体过程意气实体过程宇宙学诠释™ 社会科学概论花间流风版导读&#xff0c;马斯克风格演讲[ 一尚韬竹团队供稿&#xff1b;] 内容展开…

实验4 层次图和HIPO图

一、实验目的 通过绘制层次图和HIPO图&#xff0c;熟练掌握层次图和HIPO图的基本原理。 能对简单问题进行层次图和HIPO图的分析&#xff0c;独立地完成层次图和HIPO图设计。 二、实验项目内容&#xff08;实验题目&#xff09; 1、用Microsoft Visio绘制出图书馆管理系统的层…

Flume 拦截器概念及自定义拦截器的运用

文章目录 Flume 拦截器拦截器的作用拦截器运用1.创建项目2.实现拦截器接口3.编写事件处理逻辑4.拦截器构建5.打包与上传6.编写配置文件7.测试运行 Flume 拦截器 在 Flume 中&#xff0c;拦截器&#xff08;Interceptors&#xff09;是一种可以在事件传输过程中拦截、处理和修改…

Spring定义Bean对象笔记(二)

前言&#xff1a;上一篇记录了通过XML文件来定义Bean对象&#xff0c;这一篇将记录通过注解和配置类的方式来定义Bean对象。 核心注解&#xff1a; 定义对象&#xff1a;Component,Service,Repository,Controller 依赖注入&#xff1a; 按类型&#xff1a;Autowired 按名称&am…

【JavaScript】作用域 ③ ( JavaScript 作用域链 | 作用域链变量查找机制 )

文章目录 一、JavaScript 作用域链1、作用域2、作用域链3、作用域链变量查找机制 二、代码示例 - 作用域链 一、JavaScript 作用域链 1、作用域 在 JavaScript 中 , 任何代码都有 作用域 , 全局作用域 : 在 <script> 标签中 或者 js 脚本中 定义的变量 属于 全局作用域 …

Vue3【进阶】

简介 https://cn.vuejs.org/guide/introduction.html 创建vue3工程 【基于 vue-cli创建】 基本和vue-cli的过程类似&#xff0c;只是选择的时候用vue3创建 【基于vite创建】【推荐】 【官网】https://vitejs.cn/ 【可以先去学一下webpack】 步骤 【https://cn.vitejs.…

kubernetes集群添加到jumpserver堡垒机里管理

第一步、在kubernetes集群中获取一个永久的token。 jumpserver堡垒机用api的来管理kubernetes&#xff0c;所以需要kubernetes的token&#xff0c;这个token还需要是一个永久的token&#xff0c;版本变更&#xff1a;Kubernetes 1.24基于安全方面的考虑&#xff08;特性门控Le…

LeetCode-热题100:118. 杨辉三角

题目描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]]…