支持向量机(Support Vector Machines)(需要优化)

1.优化目标

一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector
Machine)。与逻辑回归和神经网络相比,支持向量机,或者简称 SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。
在这里插入图片描述
如果有一个 𝑦 = 1的样本,我的意思是不管是在
训练集中或是在测试集中,又或者在交叉验证集中,总之是 𝑦 = 1,现在我们希望ℎ𝜃(𝑥) 趋近 1。因为我们想要正确地将此样本分类,这就意味着当 ℎ𝜃
(𝑥)趋近于 1 时,𝜃𝑇𝑥 应当远大于 0,这里的>>意思是远远大于 0。这是因为由于 𝑧 表示 𝜃𝑇𝑥,当 𝑧远大于 0 时,即到了该图的右边,你不难发现此时逻辑回归的输出将趋近于 1。相反地,如果我们有另一个样本,即𝑦 = 0。我们希望假设函数的输出值将趋近于 0,这对应于𝜃𝑇𝑥,或者就是 𝑧 会远小于 0,因为对应的假设函数的输出值趋近 0。
在这里插入图片描述
考虑两种情况:
一种是𝑦等于 1 的情况;另一种是 𝑦 等于 0 的情况。
在第一种情况中,假设 𝑦 = 1 ,此时在目标函数中只需有第一项起作用,因为𝑦 = 1时,(1 − 𝑦)项将等于 0。因此,当在 𝑦 = 1 的样本中时,即在 (𝑥, 𝑦)中 ,我们得到 𝑦 = 1在这里插入图片描述
用 𝑧 表示𝜃𝑇𝑥,即: 𝑧 = 𝜃𝑇𝑥。当𝑧 增大时,也就是相
当于𝜃𝑇𝑥增大时,𝑧 对应的值会变的非常小。对整个代价函数而言,影响也非常小。这也就解释了,为什么逻辑回归在观察到正样本𝑦 = 1时,试图将𝜃
𝑇𝑥设置得非常大。因为,在代价函数中的这一项会变的非常小。
现在开始建立支持向量机,我们从这里开始:
在这里插入图片描述
另外一种情况是当𝑦 = 0时,此时如果你仔细观察代价函数只留下了第二项,因为第一项被消除了。如果当𝑦 = 0时,那么这一项也就是 0 了。
支持向量机是一种监督学习算法,用于二分类和多分类问题。其目标是找到一个最优的超平面(或者说决策边界),将不同类别的样本分开,并最大化样本与超平面之间的间隔。

具体而言,支持向量机的优化目标是最小化模型的结构风险,也就是最小化模型的经验风险和结构风险之和。其中,经验风险是指模型在训练集上的分类误差,而结构风险则是为了防止过拟合而引入的正则化项。

支持向量机的经验风险由两部分组成:边界误差和惩罚项。边界误差是指样本被错误分类的程度,而惩罚项是为了避免模型过于复杂而引入的惩罚因子。支持向量机通过最小化经验风险来寻找最优的超平面。

在最小化经验风险的同时,支持向量机还引入了结构风险,通过正则化项来控制模型的复杂度。正则化项的选择可以是L1正则化(Lasso)或L2正则化(Ridge),用于约束模型的参数。

通过最小化经验风险和结构风险的组合,支持向量机能够找到一个最优的超平面,使得样本分类误差最小化,并且具有较好的泛化能力。

总结来说,吴恩达介绍的支持向量机的优化目标是最小化模型的经验风险和结构风险之和,通过最大化间隔来实现样本的有效分类,并控制模型的复杂度以避免过拟合。

2.大边界的直观理解

在这里插入图片描述
如果你有一个正样本,𝑦 = 1,则只有在𝑧 >= 1时,代价函数cos𝑡1(𝑧)才等于 0。换句话说,如果你有一个正样本,我们会希望𝜃𝑇𝑥>=1,反之,如果𝑦 = 0,我们观察一下,函数cos𝑡0(𝑧),它只有在𝑧 <= −1的区间里函数值为 0。这是支持向量机的一个有趣性质。事实上,如果你有一个正样本𝑦 = 1,则其实我们仅仅要求𝜃𝑇𝑥大于等于 0,就能将该样本恰当分出,这是因为如果𝜃𝑇𝑥>0 大的话,我们的模型代价函数值为 0,类似地,如果你有一个负样本,则仅需要𝜃𝑇𝑥<=0 就会将负例正确分离,但是,支持向量机的要求更高,不仅要能正确分开输入的样本,即不仅仅要求𝜃𝑇𝑥>0,我们需要的是比 0 值大很多,比如大于等于 1,我也想这个比 0 小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
在这里插入图片描述
如果 𝐶非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。遵从以下的约束:𝜃𝑇𝑥(𝑖) >= 1,如果 𝑦(𝑖)是等于 1 的,𝜃𝑇𝑥(𝑖) <= −1。
在这里插入图片描述
存在一条直线把正负样本分开。当然有多条不同的直线,
可以把正样本和负样本完全分开。
在这里插入图片描述
黑色这条线在分离正样本和负样本上它显得的更好,这条黑线有更大的距离,这个距离叫做间距(margin)。
在这里插入图片描述
当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距
离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器,
回顾 𝐶 = 1/𝜆,因此:
𝐶 较大时,相当于 𝜆 较小,可能会导致过拟合,高方差。
𝐶 较小时,相当于 𝜆 较大,可能会导致低拟合,高偏差。

在吴恩达的机器学习课程中,他也提到了大边界(large margin)的直观理解,并将其作为支持向量机(Support Vector Machine,SVM)算法的核心概念之一。

吴恩达通过一个简单的二维数据集的例子来解释大边界的直观理解。假设我们有一个二分类问题,其中包含两类不同的数据点。吴恩达指出,支持向量机的目标是找到一个决策边界,使得这个边界在两类数据点之间有尽可能大的间隔。

直观地理解,大边界可以类比为一个街道,而支持向量机的目标是要找到一个决策边界,使得两类数据点在这条街道的两侧。这样的决策边界能够为新的未见过的数据点提供一个相对宽阔的间隔,使得其能够被正确分类。

吴恩达解释说,大边界的直观理解有助于提高模型的泛化能力。当我们遇到新的未见过的数据时,这个大边界可以提供更多的空间,使得模型在分类时更有自信,并减少错误分类的可能性。此外,大边界还能够提高模型对于数据噪声和异常点的鲁棒性,因为它们很可能在这个宽阔的间隔之外。

通过最大化间隔来实现大边界的直观理解是支持向量机算法的关键。支持向量机通过选择最优的支持向量(位于间隔边界上的样本点),来定义决策边界的位置和间隔的宽度。最终,支持向量机的目标是找到一个最优的超平面,使得间隔最大化。

总结来说,吴恩达在他的机器学习课程中强调了大边界的直观理解,并解释了其在支持向量机算法中的重要性。大边界可以提高模型的泛化能力和鲁棒性,使得模型能够更好地应对新的未见过的数据,并减少错误分类的风险。

3. 核函数

支持向量机也可以不使用核函数,不使用核函数又称为线性核函数(linear kernel),当我们不采用非常复杂的函数,或者我们的训练集特征非常多而实例非常少的时候,可以采用这种不带核函数的支持向量机。
下面是支持向量机的两个参数𝐶和𝜎的影响:
𝐶 = 1/𝜆
𝐶 较大时,相当于𝜆较小,可能会导致过拟合,高方差;
𝐶 较小时,相当于𝜆较大,可能会导致低拟合,高偏差;
𝜎较大时,可能会导致低方差,高偏差;
𝜎较小时,可能会导致低偏差,高方差。

在吴恩达的机器学习课程中,核函数(kernel function)是支持向量机(Support Vector Machine,SVM)算法中的一个重要概念。

核函数的作用是将输入的数据映射到更高维度的特征空间,以便在该特征空间中更容易找到线性可分的决策边界。通过引入核函数,支持向量机可以在高维特征空间中进行非线性的分类。

吴恩达在课程中介绍了两种常用的核函数:线性核函数和高斯核函数(也称为径向基函数)。

线性核函数:线性核函数是最简单的核函数,它直接计算输入数据的内积。在特征空间中,线性核函数对应着一个线性的决策边界。当数据在原始特征空间中是线性可分的时候,线性核函数可以得到很好的分类结果。

高斯核函数:高斯核函数是一种常用的非线性核函数。它通过计算输入数据与参考点之间的距离的指数函数来进行映射。高斯核函数对应着一个非线性的决策边界,可以处理非线性可分的数据。高斯核函数的参数决定了不同数据点之间的相似度,从而影响了决策边界的形状。

除了线性核函数和高斯核函数,还有其他的核函数可供选择,如多项式核函数、sigmoid核函数等。不同的核函数适用于不同的数据集和问题类型,需要根据具体情况进行选择。

通过使用核函数,支持向量机可以将低维的非线性问题转化为高维的线性问题,从而能够更好地处理复杂的分类任务。

总结来说,吴恩达的机器学习课程介绍了核函数的概念,并重点介绍了线性核函数和高斯核函数。核函数的作用是将数据映射到更高维度的特征空间,以便在该空间中寻找线性可分的决策边界。核函数是支持向量机算法中非常重要的一部分,可以处理非线性可分的数据。

4.使用支持向量机

在高斯核函数之外我们还有其他一些选择,如:
多项式核函数(Polynomial Kernel)
字符串核函数(String kernel)
卡方核函数( chi-square kernel)
直方图交集核函数(histogram intersection kernel)
这些核函数的目标也都是根据训练集和地标之间的距离来构建新特征,这些核函数需要
满足 Mercer’s 定理,才能被支持向量机的优化软件正确处理。
多类分类问题
假设我们利用之前介绍的一对多方法来解决一个多类分类问题。如果一共有𝑘个类,则我们需要𝑘个模型,以及𝑘个参数向量𝜃。我们同样也可以训练𝑘个支持向量机来解决多类分类问题。但是大多数支持向量机软件包都有内置的多类分类能,我们只要直接使用即可。
尽管你不去写你自己的 SVM 的优化软件,但是你也需要做几件事:
1、是提出参数𝐶的选择。我们在之前的视频中讨论过误差/方差在这方面的性质。
2、你也需要选择内核参数或你想要使用的相似函数,其中一个选择是:我们选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。因此,如果有人说他使用了线性核的 SVM(支持向量机),这就意味这他使用了不带有核函数的 SVM(支持向量机)。
从逻辑回归模型,我们得到了支持向量机模型,在两者之间,我们应该如何选择呢?
下面是一些普遍使用的准则:
𝑛为特征数,𝑚为训练样本数。
(1)如果相较于𝑚而言,𝑛要大许多,即训练集数据量不够支持我们训练一个复杂的非线
性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果𝑛较小,而且𝑚大小中等,例如𝑛在 1-1000 之间,而𝑚在 10-10000 之间,使用高
斯核函数的支持向量机。
(3)如果𝑛较小,而𝑚较大,例如𝑛在 1-1000 之间,而𝑚大于 50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。
值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。
今天的 SVM 包会工作得很好,但是它们仍然会有一些慢。当你有非常非常大的训练集,且用高斯核函数是在这种情况下,我经常会做的是尝试手动地创建,拥有更多的特征变量,然后用逻辑回归或者不带核函数的支持向量机。如果你看到这个幻灯片,看到了逻辑回归,或者不带核函数的支持向量机。在这个两个地方,我把它们放在一起是有原因的。原因是:
逻辑回归和不带核函数的支持向量机它们都是非常相似的算法,不管是逻辑回归还是不带核函数的 SVM,通常都会做相似的事情,并给出相似的结果。但是根据你实现的情况,其中一个可能会比另一个更加有效。但是在其中一个算法应用的地方,逻辑回归或不带核函数的SVM 另一个也很有可能很有效。但是随着 SVM 的复杂度增加,当你使用不同的内核函数来学习复杂的非线性函数时,这个体系,你知道的,当你有多达 1 万(10,000)的样本时,也可能是 5 万(50,000),你的特征变量的数量这是相当大的。那是一个非常常见的体系,也许在这个体系里,不带核函数的支持向量机就会表现得相当突出。你可以做比这困难得多需要逻辑回归的事情。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用C语言实例描述程序中的内聚和耦合

编程时&#xff0c;我们讲究的是高内聚低耦合&#xff0c;在协同开发、代码移植、维护等环节都起到很重要的作用。 一、原理篇 而低耦合&#xff0c;是指模块之间尽可能的使其独立存在&#xff0c;模块之间不产生联系不可能&#xff0c;但模块与模块之间的接口应该尽量少而简单…

从零学习Hession RPC

为什么学习Hessian RPC&#xff1f; 存粹的RPC&#xff0c;只解决PRC的四个核心问题&#xff08;1.网络通信2.协议 3.序列化 4.代理&#xff09;Java写的HessianRPC落伍了&#xff0c;但是它的序列化方式还保存着&#xff0c;被Dubbo(Hessian Lite)使用。 被落伍&#xff0c;只…

浅谈DNS的工作原理及其作用

DNS&#xff0c;全称为Domain Name System&#xff0c;即域名系统&#xff0c;是一种用于将域名和IP地址相互映射的分布式数据库系统。它将可读的域名转换为对应的IP地址&#xff0c;使得用户可以更方便地通过域名来访问网络上的资源。今天锐成就简单探讨一下DNS的工作原理及其…

Android网络状态差的处理方案

1,在没有网络的情况下的处理 相信大家面对这个情况处理起来是毫无压力的. //有网 if (Utils.isNetworkConnected(this)) {loadingView.setVisibility(View.VISIBLE);//显示正在加载//联网获取数据getDataFromNet(); } else {//没网直接显示本地数据.showView();Toast.makeTex…

Ubuntu20.04 安装 ROS noetic + MAVROS

本文在 AlphaCatOvO【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程 基础上&#xff0c;根据实际安装经验&#xff0c;稍微进行补充。 一、安装Ubuntu20.04 假设已经正确安装。 二、安装 ROS noetic 2.1 换源 执行 sudo apt update sudo mv /etc/apt/sources.list /etc/apt/…

C++代码入门07 函数调用语句

图源&#xff1a;文心一言 听课笔记简单整理&#xff0c;包括以下内容”&#x1f40b;3.2 二进制转十进制、&#x1f40b;3.3 数学公式1&#xff1a;用反切函数表示pi、&#x1f40b;3.4 判断回文数、&#x1f40b;3.5 数学公式2&#xff1a;分段函数、&#x1f40b;3.6 扔骰子…

容器安全工具

容器安全工具是用于保护和监控容器环境安全的工具。它们提供了一系列功能,包括容器镜像的漏洞扫描、运行时监控、事件日志记录、访问控制、运行权限管理等。以下是一些常见的容器安全工具: 1. Docker Bench Security:用于检查Docker环境配置的安全性,提供一些最佳实践建议…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM平台编程第二天-ARM汇编(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1bG0tuVaACATvjLwD05j1FQ?pwd1688 提取码&#xff1a;1688 上午&#xff1a;ARM编程模型 下午&#xff1a;常用ARM指令 教学内容&#xff1a; 1、ARM数据类型 字节&#xff08;Byte&#xff09;&#xff1a;在ARM体系结构及常见的…

无限可能!安全狗入选“潜力十强企业”

近日&#xff0c;等级保护测评公布了“2023年网络安全优秀评选”活动评选结果。 作为国内云原生安全领导厂商&#xff0c;安全狗凭借突出的综合实力&#xff0c;荣获“潜力十强企业”称号。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于…

redis-发布缓存

一.redis的发布订阅 什么 是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 Redis的发布和订阅 客户端订阅频道发布的消息 频道发布消息 订阅者就可…

信创UOS

信创UOS 国产操作系统 文章目录 信创UOS前言一、信创UOS是什么二、信创UOS的特点与局限性1. 信创UOS的特点2. 信创UOS的局限性三、信创UOS常见故障总结前言 信创UOS(Union Operating System)是由中国软件与技术服务股份有限公司(CS&S)开发的一款操作系统。它是中国政府…

SpringCloudFunction漏洞分析

前言 SpringCloudFunction是SpringBoot开发的一个Servless中间件&#xff08;FAAS&#xff09;&#xff0c;支持基于SpEL的函数式动态路由。在特定配置下&#xff0c;3 < 版本 < 3.2.2&#xff08; commit dc5128b 之前&#xff09;存在SpEL表达式执行导致的RCE。 补丁分…

卸载软件Geek Uninstaller,MySQl安装不成功

最近刷最右的时候&#xff0c;看到两个帖子都是MySQl安装过程总是出现问题。大概两年前我也遇到了这个问题&#xff0c;推荐一款软件。 是因为在安装的过程之中&#xff0c;出现了问题。然后你再进行安装的时候&#xff0c;没有完全将原来安装的软件卸载掉&#xff0c;导致有注…

详解SpringCloud微服务技术栈:ElasticSearch实践1——RestClient操作索引库与文档

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;ElasticSearch原理精讲、安装、实践 &#x1f4da;订阅专栏&#xff1a;微服务技术全家…

多场景建模:阿里MARIA

Multi-scenario ranking framework with adaptmulti-scenario ranking framework with adaptive feature learning 背景 多模态搜索场景支持用户通过不同模态的Query来表达多样的搜索需求。 拍照搜索&#xff08;Visual Search&#xff09;&#xff1a;实拍图作为query相似商…

05.Elasticsearch应用(五)

Elasticsearch应用&#xff08;五&#xff09; 1.Mapping介绍 Mapping是对索引库中文档的约束&#xff0c;类似于数据表结构&#xff0c;作用如下&#xff1a; 定义索引中的字段的名称定义字段的数据类型&#xff0c;例如字符串&#xff0c;数字&#xff0c;布尔等字段&…

antdesignvue中使用VNode写法

1、使用场景 如图&#xff1a;消息提示框中&#xff0c;将数据中的数据单独一行显示 2、代码 let errorList res.result; //后端返回的数据例&#xff1a; ["1. 数据格式不正确","2. 数据已存在"]if(errorList&&errorList.length!0){this.$notif…

IDE server has started, listening on http://127.0.0.1:61945已解决

看了网上很多网上博主写的&#xff0c;总结出来了两个主要方法&#xff0c;以我的为准&#xff0c;很多博客都是错误的&#xff01; 1.打开微信开发者工具的安全权限 设置-安全设置-服务端口 2.必须把appid改为自己的才能打开微信小程序&#xff0c;只能在mainfest里面改&…

【工具使用-Everything】everything只能搜到文件夹,无法搜到文件

一&#xff0c;问题现象 everything搜索时&#xff0c;只能搜索到文件夹&#xff0c;无法搜索到文件夹下的文件。 二&#xff0c;问题原因 everything搜索设置问题&#xff0c;设置为"文件夹"导致 三&#xff0c;解决方法 将搜索选项设置为“所有”即可&#x…

第3章 接口和API设计

第15条&#xff1a;用前缀避免命名空间冲突 OC没有其他语言那种内置的命名空间机制。因此&#xff0c;我们在起名时要设法避免潜在的命名冲突&#xff0c;否则很容易就重名了。若是发生重名冲突&#xff0c;那么应用程序相应的链接过程就会出错。例如&#xff1a; 错误原因在…