机器学习SVM函数

2023-11-07


1 SVM的损失函数

在SVM中,我们主要讨论三种损失函数:

image_1b1vvangp18tc11dhis2q8h9k22a.png-67.4kB

  • 绿色:0/1损失
    • 当正例的点落在y=0这个超平面的下边,说明是分类正确,无论距离超平面所远多近,误差都是0.
    • 当这个正例的样本点落在y=0的上方的时候,说明分类错误,无论距离多远多近,误差都为1.
    • 图像就是上图绿色线。
  • 蓝色:SVM Hinge损失函数
    • 当一个正例的点落在y=1的直线上,距离超平面长度1,那么1-ξ=1,ξ=0,也就是说误差为0;
    • 当它落在距离超平面0.5的地方,1-ξ=0.5,ξ=0.5,也就是说误差为0.5;
    • 当它落在y=0上的时候,距离为0,1-ξ=0,ξ=1,误差为1;
    • 当这个点落在了y=0的上方,被误分到了负例中,距离算出来应该是负的,比如-0.5,那么1-ξ=-0.5,ξ=1.5.误差为1.5.
    • 以此类推,画在二维坐标上就是上图中蓝色那根线了。
  • 红色:Logistic损失函数
    • 损失函数的公式为:ln(1+e^{-y_i})l**n(1+ey**i)
    • 当yi=0时,损失等于ln2,这样真丑,所以我们给这个损失函数除以ln2.
    • 这样到yi=0时,损失为1,即损失函数过(0,1)点
    • 即上图中的红色线。

拓展学习:PPT讲义


2 SVM的核方法

2.1 什么是核函数

【SVM + 核函数】 具有极大威力。

核函数并不是SVM特有的,核函数可以和其他算法也进行结合,只是核函数与SVM结合的优势非常大。

2.1.1 核函数概念

核函数,是将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。

image-20200204154534315

下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时该如何把这两类数据分开呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mur7dXzJ-1665845616870)(images/1111.gif)]

  • 假设X是输入空间,
  • H是特征空间,
  • 存在一个映射ϕ使得X中的点x能够计算得到H空间中的点h,
  • 对于所有的X中的点都成立:

image-20190814000426859

若x,z是X空间中的点,函数k(x,z)满足下述条件,那么都成立,则称k为核函数,而ϕ为映射函数:

image-20190814000453473

2.1.2 核函数举例

2.1.2.1 核方法举例1

image-20190814000704864

image-20200204151146946

image-20200204151231279

image-20190814000952741


经过上面公式,具体变换过过程为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vR0CWJuy-1665845616873)(assets/image-20210811152410276.png)]

2.1.2.2 核方法举例2

  • 下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字和下面的紫色的字母。
  • 我们把红色的门上的点看成是“+”数据,字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。
  • 显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

image-20190814001147008

image-20190814001223208

(前后轴为x轴,左右轴为y轴,上下轴为z轴)


  • 绿色的平面可以完美地分割红色和紫色,两类数据在三维空间中变成线性可分的了。
  • 三维中的这个判决边界,再映射回二维空间中:是一条双曲线,它不是线性的
  • 核函数的作用就是一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。

image-20190814001302313

2.2 常见核函数

image-20190814003133082

1.多项核中,d=1时,退化为线性核;

2.高斯核亦称为RBF核。

  • 线性核和多项式核:
    • 这两种核的作用也是首先在属性空间中找到一些点,把这些点当做base,核函数的作用就是找与该点距离和角度满足某种关系的样本点。
    • 当样本点与该点的夹角近乎垂直时,两个样本的欧式长度必须非常长才能保证满足线性核函数大于0;而当样本点与base点的方向相同时,长度就不必很长;而当方向相反时,核函数值就是负的,被判为反类。即,它在空间上划分出一个梭形,按照梭形来进行正反类划分。
  • RBF核:
    • 高斯核函数就是在属性空间中找到一些点,这些点可以是也可以不是样本点,把这些点当做base,以这些base为圆心向外扩展,扩展半径即为带宽,即可划分数据。
    • 换句话说,在属性空间中找到一些超圆,用这些超圆来判定正反类。
  • Sigmoid核:
    • 同样地是定义一些base,
    • 核函数就是将线性核函数经过一个tanh函数进行处理,把值域限制在了-1到1上。
  • 总之,都是在定义距离,大于该距离,判为正,小于该距离,判为负。至于选择哪一种核函数,要根据具体的样本分布情况来确定。

  • 一般有如下指导规则:
    • 1) 如果Feature的数量很大,甚至和样本数量差不多时,往往线性可分,这时选用LR或者线性核Linear;
    • 2) 如果Feature的数量很小,样本数量正常,不算多也不算少,这时选用RBF核;
    • 3) 如果Feature的数量很小,而样本的数量很大,这时手动添加一些Feature,使得线性可分,然后选用LR或者线性核Linear;
    • 4) 多项式核一般很少使用,效率不高,结果也不优于RBF;
    • 5) Linear核参数少,速度快;RBF核参数多,分类结果非常依赖于参数,需要交叉验证或网格搜索最佳参数,比较耗时;
    • 6)应用最广的应该就是RBF核,无论是小样本还是大样本,高维还是低维等情况,RBF核函数均适用。

2.3 小结

  • SVM的核方法
    • 将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。
  • 常见核函数
    • 线性核
    • 多项式核
    • RBF核
    • Sigmoid核

3 SVM回归

SVM回归是让尽可能多的实例位于预测线上,同时限制间隔违例(也就是不在预测线距上的实例)。

线距的宽度由超参数ε控制。

image-20190814003742055

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习SVM函数 的相关文章

  • Node2vec 的工作原理

    我一直在读关于node2vec https cs stanford edu jure pubs node2vec kdd16 pdf嵌入算法 我有点困惑它是如何工作的 作为参考 node2vec 由 p 和 q 参数化 并通过模拟来自节点的
  • 是否有可能在每个训练步骤中获得目标函数值?

    在通常的 TensorFlow 训练循环中 例如 train op tf train AdamOptimizer minimize cross entropy with tf Session as sess for i in range n
  • 如何计算两个字符串向量之间的余弦相似度

    我有 2 个维度为 6 的向量 我想要一个介于 0 和 1 之间的数字 a c HDa 2Pb 2 BxU BuQ Bve b c HCK 2Pb 2 09 F G 谁能解释我应该做什么 使用lsa包和该包的手册 create some f
  • 如何防止 Keras 在训练期间计算指标

    我正在使用 Tensorflow Keras 2 4 1 并且有一个 无监督的 自定义指标 它将我的几个模型输入作为参数 例如 model build model returns a tf keras Model object my met
  • PyTorch 中的连接张量

    我有一个张量叫做data形状的 128 4 150 150 其中 128 是批量大小 4 是通道数 最后 2 个维度是高度和宽度 我有另一个张量叫做fake形状的 128 1 150 150 我想放弃最后一个list array从第 2 维
  • 为什么 cross_val_predict 比 KNeighborsClassifier 的拟合慢得多?

    在 Jupyter 笔记本上本地运行并使用 MNIST 数据集 28k 条目 每个图像 28x28 像素 以下内容为27秒 from sklearn neighbors import KNeighborsClassifier knn clf
  • 梯度下降有哪些替代方案?

    梯度下降存在局部极小值问题 我们需要运行梯度下降指数次来找到全局最小值 谁能告诉我梯度下降的任何替代方案及其优缺点 Thanks See 我的硕士论文 https arxiv org pdf 1707 09725 pdf page 96对于
  • 在监督分类中,使用partial_fit() 的MLP 比使用fit() 的表现更差

    我正在使用的学习数据集是灰度图像flatten让每个像素代表一个单独的样本 第二张图像在训练后将被逐像素分类Multilayer perceptron MLP 前一个分类器 我遇到的问题是MLP当它一次接收到所有训练数据集时表现更好 fit
  • 将姓名拆分为名字和姓氏 Java(Android OCR)[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我使用本机 Android JAVA 创建了一个 OCR 光学字符识别 应用程序 我可以将图像转换为文本视图 但是我如何使用这些词分别识别名
  • 神经网络不能立即重现?

    通过使用反向传播导数 弹性 的前馈神经网络中的随机权重初始化 误差图上的初始位置位于某个随机谷的顶部 该随机谷可能是也可能不是局部最小值 可以使用方法来克服局部最小值 但假设这些方法没有被使用 或者在给定的地形上不能很好地工作 那么神经网络
  • 神经网络中的时间序列提前预测(N点提前预测)大规模迭代训练

    N 90 使用神经网络进行提前预测 我试图预测提前 3 分钟 即提前 180 点 因为我将时间序列数据压缩为每 2 个点的平均值为 1 所以我必须预测 N 90 超前预测 我的时间序列数据以秒为单位给出 值在 30 90 之间 它们通常从
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • ValueError:没有为“dense_input”提供数据

    我正在使用以下简单的代码使用tensorflow加载csv并使用keras执行建模 无法弄清楚这个错误 import tensorflow as tf train dataset fp tf keras utils get file fna
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • rpart 决策树中的 rel 误差和 x 误差有什么区别? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个来自 UCI 机器学习数据库的纯分类数据框https archive ics uci edu ml datasets Diabet
  • 卷积 ImageNet 网络对于翻转图像具有不变性

    我正在使用深度学习 caffe 框架进行图像分类 我有一些有头像的硬币 有些是左向的 有些是右向的 为了对它们进行分类 我使用常见的方法 从预训练的 ImageNet 网络中获取权重和结构 该网络已经捕获了大量图像模式 并主要训练最后一层以
  • 大于 2GB 的 Tensorflow 图

    我正在尝试优化一个大型张量流保存模型 其中包含 10MB saving model pb 和 16GB 变量 我尝试冻结我的图表并进行一些进一步的转换 我已按照步骤操作https medium com google cloud optimi
  • XGBoost 产生预测结果和概率

    我可能正在文档中查看它 但我想知道 XGBoost 是否有办法生成结果的预测和概率 就我而言 我正在尝试预测多类分类器 如果我能返回Medium 88 那就太好了 分类器 中 预测概率 88 参数 params max depth 3 ob
  • Scikit-learn:如何获得 True Positive、True Negative、False Positive 和 False Negative

    我的问题 我有一个数据集 它是一个很大的 JSON 文件 我读取它并将其存储在trainList多变的 接下来 我对其进行预处理 以便能够使用它 完成后 我开始分类 我用kfold交叉验证方法以获得平均值 准确性并训练分类器 我做出预测并获

随机推荐

  • 【华为OD机试】仿 LISP 运算 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • 机器学习实战:Python基于K近邻KNN进行分类预测(四)

    文章目录 1 前言 1 1 K近邻的介绍 1 2 K近邻的应用 2 二维数据集演示 2 1 导入函数 2 2 导入数据 2 3 训练模型及可视化 3 莺尾花数据集全数据演示 3 1 导入函数 3 2 导入数据 3 3 训练模型及预测 4 模
  • Linux 平台一种进程代码注入方法

    Linux 平台一种进程代码注入方法 Posted on 2012年06月7日 用于在目标程序的 main 函数执行前完成一些操作 特定情况下用来调试还是不错的 源代码 fakemain c Heiher
  • 开发H5项目在手机查看

    一 电脑的防火墙关掉 二 cmd输入 ipconfig 获取自己电脑ip 三 电脑和手机要在同一wifi下 不过最好连自己热点 项目启动 手机网址打开 例 http ip 3000
  • python编程实战(一):用户登录模块,用户注册、登录、信息管理、功能设计与实现!

    用户登录模块 前言 思维导图 1 判断首次启动 2 用户注册 3 管理员信息 登录 4 用户登录 5 完整代码 前言 思维导图 用户登录模块是最基本的模块之一 主要设计的有当前用户存在判断 用户注册 用户登录名和密码的保存 用户信息输出等等
  • html文件上传到云服务器,把html文件上传到云服务器上

    把html文件上传到云服务器上 内容精选 换一换 需要准备的软件和工具如表1 软件和工具所示 如果Linux操作系统弹性云服务器未安装密码重置插件 可以参见本节内容重新设置密码 本节操作重置的是root用户的密码 您可以重置完root密码后
  • 自媒体创作必备的6个网站,助你打造爆款作品

    很多新人在入行自媒体时 不知道需要用到什么样的工具软件 导致其效率非常的低 其实在创作过程中使用自媒体工具还是非常有必要的 一方面帮助你快速做好自己的作品 另一方面也可以打造出更加优秀和火爆的作品 下面就和大家分享一下比较常用的一些自媒体工
  • 数组链表堆栈和队列

    转自 http blog csdn net tm wb article details 6319146 数组链表堆栈和队列 数组链表堆栈和队列是最基本的数据结构 任何程序都会涉及到其中的一种或多种 1数组 数组是最最基本的数据结构 很多语言
  • stream对多个字段分组_Java8 stream 中利用 groupingBy 进行多字段分组求和案例

    Java8的groupingBy实现集合的分组 类似Mysql的group by分组功能 注意得到的是一个map 对集合按照单个属性分组 分组计数 排序 List items Arrays asList apple apple banana
  • html代码雨特效代码,简易代码雨特效

    window onload function 获取画布对象 var canvas document getElementById canvas 获取画布的上下文 var context canvas getContext 2d 获取浏览器屏
  • CentOS dstat 命令详解(二)参数详解

    CPU相关参数 l load 展示1分钟 5分钟和15分钟内的平均负载 c cpu 展示cpu状态 usr用户占比 sys系统占比 idl空闲占比 wai等待次数 这四个加和是100 hiq硬中断次数 siq软中断次数 C 必须和 c配合使
  • prometheus-basic_auth加密配置

    文章目录 前言 一 basic auth加密的引入 二 使用步骤 1 生成basic auth密钥 2 将密钥文件写入config yml文件内 3 查看prometheus相关参数 4 修改prometheus配置 5 启动服务 5 1
  • 为什么Java中只有值传递?

    1 必知概念 实参 方法被调用时传入的实际值 形参 在定义方法时括号内定义的参数列表即为形参 它用来接收方法调用时传入的实参 值传递 当方法被调用时 实参通过形参将其副本传入方法内 接下来对形参的操作就是在对实参副本的操作 并不会影响实参本
  • ​​​​​​​自动化批量漏洞扫描脚本定制

    github上找到一款并发框架 POC T https github com Xyntax POC T 可以优美的进行并发操作 上面所述的内容大多可以用插件联合POC T进行 因为POC T不能一次使用多个插件 于是笔者对POC T框架进行
  • Xshell5登录报“找不到匹配的host key 算法“的错误

    Xshell5登录报 找不到匹配的host key 算法 的错误 现象 解决方法一 解决方法二 现象 xshell5登录欧拉22 03时报错 找不到匹配的host key 算法 解决方法一 1 编辑 etc ssh sshd config
  • win10电脑任务栏右侧小图标消失解决方法

    WIN10系统任务栏 左边是窗口键和快捷图标 右边是时钟 系统喇叭 网线连接图标 任务栏左边没问题 窗口键和快捷图标都良好 右侧的系统图标无显示 只显示任务栏的底色 尝试操作隐藏任务栏再开启任务栏后 图标恢复正常了 再点击右侧任务栏任意图标
  • 网络环路导致公司网络瘫痪问题排查

    问题 公司网络突然很不稳定 跟踪发现大量丢包 问题排查 1 怀疑电信网络 设备有问题 联系电信经理 安排工程人员过来排查 排查发现入户网络正常 更换电信入户光猫后网络还是不稳定 还是大量丢包 2 机房排查 2 1 关闭所有交换机 然后再一台
  • Anaconda换国内源(清华源、中科大源)

    命令行执行 Windows下 Anaconda 清华源 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda config
  • PPP协议实现透明传输的2种方法以及工作状态

    文章目录 1 PPP协议帧格式 2 字节填充 2 1 零比特填充方法 不使用序号和确认机制 PPP协议的工作状态 1 PPP协议帧格式 7E 十六进制数0x7E 在PPP协议里代表帧头和帧尾 二进制表示为0111 1110 占一个子节 FF
  • 机器学习SVM函数

    目录 1 SVM的损失函数 2 SVM的核方法 2 1 什么是核函数 2 1 1 核函数概念 2 1 2 核函数举例 2 1 2 1 核方法举例1 2 1 2 2 核方法举例2 2 2 常见核函数 2 3 小结 3 SVM回归 1 SVM的