【机器学习】SMO算法

2023-11-17

1.SMO基础概念

将原始最优化问题转化成了其对偶问题,因为对偶问题是一个凸二次规划问题,这样的凸二次规划问题具有全局最优解。

其中(xi,yi)(xi,yi)表示训练样本数据,xixi为样本特征,yi∈{−1,1}yi∈{−1,1}为样本标签,C为惩罚系数由自己设定。

2.SMO原理分析

两个变量二次规划的求解方法

1、SMO的最优化问题的子问题

前面提到将原始的二次规划问题分解为只含有两个变量的二次规划子问题,所以假设选定两个变量\alpha_{1}\alpha _{2},其他变量相当于常数,省略常数后,SMO的最优化问题的子问题可以化简成以下形式

 

 

2、视为一元函数,求导取极值

(1)式可以看成是一个二元函数,根据于\alpha _{1}\alpha _{2}的约束关系,可以把\alpha _{1}消去。不过我们的目的是为了关于\alpha _{2}求导,导数为0的点就是要找的极值点,所以这里既可以把\alpha _{1}消去后对\alpha _{2}求导,也可以直接在现在这个式子上对\alpha _{2}求导。

 找到其他博主博客一些很好的参考:

 再根据推导:

 3、对原始解进行裁剪

对约束条件对应的*式\alpha _{1}y_{1}+\alpha _{2}y_{2}=\xi,考虑两种情况,分别如上图所示。

\alpha _{2}^{new}需要满足约束条件0\leq \alpha _{i}\leq C,所以最优值\alpha _{2}^{new}的取值范围也要满足条件L\leqslant \alpha _{2}^{new}\leqslant H

L和H分别是\alpha _{2}^{new}坐在的对角线段端点的界。

 

 所以在更新\alpha _{2}时,要先求出\alpha _{2}的可行域,然后用之前的那个公式求出极值点\alpha _{2}然后看极值点\alpha _{2}处的在不在可行域范围内,在的话就使用极值点处的\alpha _{2},不在的话就使用边界值H或者L更新,具体更新规则为:

 

4、求解\alpha _{1}^{new}

由于只有两个变量,根据\alpha _{1}^{old}y_{1}+\alpha _{2}^{old}y_{2}=\alpha _{1}^{new}y_{1}+\alpha _{2}^{new}y_{2}

可以求得\alpha _{1}^{new}=\alpha _{1}^{old}+y_{1}y_{2}(\alpha _{2}^{new}-\alpha _{2}^{new})

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

【机器学习】SMO算法 的相关文章

随机推荐

  • hive数据表去重方法

    1 hive 0 8 0数据表去重方法 问题描述 hive的外部表test中 在若干字段上存在重复现象 现在需要将若干字段上值相同的多条记录 只保其中留一条 舍弃其余的 解决思路 1 group by的方法 首先新建与test表完全相同的新
  • 单点登录的解析和代码实现

    单点登录 系统简介 Http协议 web应用采用browser server架构 http作为通信协议 http是无状态协议 浏览器的每一次请求 服务器会独立处理 不与之前或之后的请求产生关联 这个过程用下图说明 三次请求 响应对之间没有任
  • 生成图片验证码的两种实现方式

    最近工作中 需求让新加一个图片验证码功能 其实这个功能之前自己写过 想必跟大家现在心里想到的实现方式一样 要么是通过servlet实现请求操作 要么是通过get请求实现操作 然后在后台通过session存储图片上的字符串 和之后前台请求过来
  • 什么是测试开发工程师?

    什么是测试开发工程师 测试开发工程师 Software Development Engineer in Test 简称SDET 是指那些既可以称作是开发人员 同时也负责软件开发阶段和测试周期的测试工作的技术人员 一个专业的SDET更关注软件
  • Matlab模拟仿真模糊PID(Fuzzy)

    研究项目 模糊PID Fuzzy 的仿真测试 研究内容 本篇文章主要研究如何通过matlab软件实现模糊PID Fuzzy 的仿真测试 研究材料 matlab 2017a软件 基本概念和定义 模糊量 如E EC 论域 上下限 240 240
  • Numpy中的argsort函数详解

    Numpy中的argsort函数返回的是每个元素的排序序号 但是不是很容易理解 gt gt gt dd mat 4 5 1 gt gt gt dd argsort matrix 2 0 1 一开始的时候想不明白为什么是2 0 1而不是1 2
  • 链表作业 3:多项式加法

    题目描述 实现两个一元n次多项式的加法 例如P A x 3x2 5x5 7 P B 2x2 6x3 x5 4x6 求P A P B 输入 每行是两个用空格隔开的整数m n 分别代表多项式的系数和指数 以输入0 0作为结尾 输出 每次完成一个
  • vue elementUI 日期组件 默认当前月份第一天 与 当前月份最后一天

    1 template中如下代码
  • (java)宠物商店,接口实现

    基本思想 使用一个接口作为宠物商店的标准 只要满足接口内的方法都可以实现接口进入宠物商店 本例子用yellVoice 方法作为标准 整体代码 import java util Scanner 导入Sacnner类 interface Pet
  • 画出有3个节点的树和有3个结点的二叉树的所有不同的形态

    画的难看了点
  • 【HDLBits 刷题 11】Circuits(7)Finite State Manchines 18-26

    目录 写在前面 Finite State Manchines Fsm serialdata Fsm serialdp Fsm hdlc Design a Mealy FSM ece241 2014 q5a ece241 2014 q5b 2
  • Data->Iopb->Parameters.Create.Options & FILE_DIRECTORY_FILE 判断是否为路径

    如何在minifilter 判断操作的文件对象是目录还是文件呢 有很多人发现答案是 Data gt Iopb gt Parameters Create Options FILE DIRECTORY FILE 是否成立 不过也有很多人发现 上
  • centos7 nginx 配置 ssl证书

    安装nginx 从阿里云服务器下载 nginx版本的ssl证书 防止再 etc nginx ssl 下 停止 nginx 服务 systemctl stop nginx 修改配置文件 etc nginx conf d root izm5ej
  • app离线消息推送服务器,在线消息推送和离线消息推送(3)

    首先介绍一下具体的功能设计 整个系统由服务端 客户端组成 客户端包含前端 浏览器端 pyqt桌面端 和后台 用于添加要推送的消息 因为浏览器端不容易注意到实时提醒 所以我将实时提醒功能放到pyqt桌面端中实现 如托盘区闪烁等醒目的方式 浏览
  • Unity 数据保存失败

    问题 游戏数据突然保存不了了 没有任何报错 切后台保存也出问题 编辑器上和PC端没问题 移动端上保存不了 原因 我使用的存储方式是 Newtonsoft Json 将对象转换成加密字符串并保存到本地 而不巧的是 我使用了 HashSet 这
  • BOOST升压电路原理详解

    原文来自公众号 工程师看海 BOOST升压电源是利用开关管开通和关断的时间比率 维持稳定输出的一种开关电源 它以小型 轻量和高效率的特点被广泛应用在各行业电子设备找那个 是不可缺少的一种电源架构 公众号后台回复 boost仿真文件 Boos
  • Linux 添加开机启动方法

    添加开启启动的方式一般有如下几种 第一种 把开机命令 写入到os的启动文件之中 伴随着启动文件的读取 顺便帮你把要启动的任务 一起启动了 第二种 把启动任务 放到os的启动目录下 os启动过程之中 会执行所有放在此目录下的任务 第三种 os
  • KaTeX数学公式输入

    序号 运算符 输入 举例 举例代码 1 x y
  • 【Java 学习】方法 和 一些编程案例

    文章目录 一 概述 二 案例 1 计算1 n的和返回 2 判断整数是奇数还是偶数 3 数组求最值改方法实现 三 方法的内存原理 四 方法参数传递机制 基本类型 引用类型 五 参数传递的案例 1 打印整型数组内容 2 从数组中查询指定元素的索
  • 【机器学习】SMO算法

    1 SMO基础概念 将原始最优化问题转化成了其对偶问题 因为对偶问题是一个凸二次规划问题 这样的凸二次规划问题具有全局最优解 其中 xi yi xi yi 表示训练样本数据 xixi为样本特征 yi 1 1 yi 1 1 为样本标签 C为惩