机器学习-线性分类-支持向量机SVM-SMO算法-14
1. SVM算法总结
选择 核函数 以及对应的 超参数
为什么要选择核函数?
升维 将线性问题不可分问题 升维后转化成 线性可分的问题
核函数 有那些? linea gauss polinormail tanh选择惩罚项系数C
min ||w||2 + Csum(ei)构造优化问题:
利用SMO算法 计算 α*
根据α* 计算w*
根据α* 得到支撑向量 计算每个支撑向量 对应的bs*
bs* 求平均得到b*
学得超平面:
仔细观察这个式子就会发现:
其实只需要关注 支撑向量的C>α>0 非支撑向量的alpha为0
W*的计算:
其实也就只需要关注 是支撑向量的几个点,支撑向量对于W,b的求解起关键作用,其他的非支撑向量,对模型没起任何作用
- 得到最终的判别式
神奇的SMO算法到底是如何进行的?
2. SMO算法
其中(xi,yi)表示训练样本数据,xi 为样本特征,yi∈{−1,1}为样本标签,C 为惩罚系数由自己设定。上述问题是要求解 N 个参数(α1,α2,α3,...,αN),其他参数均为已知
把原始求解 N 个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解 2 个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。
同时优化两个参数,固定其他 N-2 个参数,假设选择的变量为α1,α2,
固定其他参数α3,α4,...,αN,由于参数α3,α4,...,αN 的固定, 可以简化目标函数为只关于α1,α2的二元函数,Constant 表示常数项(不包含变量α1,α2 的项)。
v1 表示 x1 与 3---N 之后所有的样本运算
v2 表示 x2 与 3---N 之后所有的样本运算
其中:
Kij表示 xi 与 xj 输入到核函数 进行运算的结果
两边同时乘以 y1, 任意的y*2 = 1
得到:
需要优化的目标函数转化成:
上式中是关于变量α2 的函数,对上式求导并令其为 0 得:
将4, 6, 7 带入求导=0 的式子
令η=K11+K22−2K12
这里得到的α2 是未经过修建的alpha 不一定满足约束条件
翻译一下:
两个拉格朗日算子 0< α1 α2 < C限定必须在正方形盒子内部
α1y1+α2y2=固定值 限定了必须在直线上 最优解 必须是一条线段
新的α2 下限L 上限H
修建后的alpha
由于其他 N-2 个变量固定:
两边同时乘以y1:
选择α1 α2采用上述方法进行优化,直到不违反kkt条件
α1 α2优化的同时对b进行更新:
- 如果:
则 x1 y1 为支撑向量
两边乘以y1:
得到bnew:
只不过是拆成3部分而已
前两项可以替换为
得到:
如果
同理:
α1 α2 都满足:
取一个就行:如果都不满足 他们的中点:
取1/2 *(α1 + α2)
机器学习-线性分类-支持向量机SVM-SMO算法-14的更多相关文章
- SVM-非线性支持向量机及SMO算法
SVM-非线性支持向量机及SMO算法 如果您想体验更好的阅读:请戳这里littlefish.top 线性不可分情况 线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,为了满足函数间隔大 ...
- 线性可分支持向量机--SVM(1)
线性可分支持向量机--SVM (1) 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 线性可分支持向量机的定义: ...
- 统计学习:线性可分支持向量机(SVM)
模型 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned} \tag{ ...
- 机器学习算法整理(七)支持向量机以及SMO算法实现
以下均为自己看视频做的笔记,自用,侵删! 还参考了:http://www.ai-start.com/ml2014/ 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还 ...
- 机器学习笔记:支持向量机(svm)
支持向量机(svm)英文为Support Vector Machines 第一次接触支持向量机是2017年在一个在线解密游戏"哈密顿行动"中的一个关卡的二分类问题,用到了台湾教授写 ...
- 支持向量机的smo算法(MATLAB code)
建立smo.m % function [alpha,bias] = smo(X, y, C, tol) function model = smo(X, y, C, tol) % SMO: SMO al ...
- 吴裕雄--天生自然python机器学习:基于支持向量机SVM的手写数字识别
from numpy import * def img2vector(filename): returnVect = zeros((1,1024)) fr = open(filename) for i ...
- 机器学习:Python中如何使用支持向量机(SVM)算法
(简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...
- 机器学习-支持向量机SVM
简介: 支持向量机(SVM)是一种二分类的监督学习模型,他的基本模型是定义在特征空间上的间隔最大的线性模型.他与感知机的区别是,感知机只要找到可以将数据正确划分的超平面即可,而SVM需要找到间隔最大的 ...
- 机器学习——支持向量机SVM
前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...
随机推荐
- RDBMS与Hbase对比 HDFS与HBase对比 Hive与HBase对比
RDBMS: HBASE: HDFS与HBase对比: Hive与HBase对比: Hive与HBase总结
- 解决 VM with version 2.1.0 has multidex support ; VM has multidex support, MultiDex support library is disabled.问题
发布打包完之后,android studio提示 VM with version 2.1.0 has multidex support I/MultiDex: installI/MultiDex: V ...
- JDK1.8下载 用阿里云盘
JDK1.8下载 用阿里云盘 jdk-8u202-windows-x64.exe https://www.aliyundrive.com/s/jJhWUk17jMt 点击链接保存,或者复制本段内容,打 ...
- 从0开始学微信逆向开发(android版)——第一栏
首先给大家普及一下啥叫微信逆向开发,以及微信逆向开发能做什么: 场景1:小明是做微商的,他每天需要加很多很多的好友.然后他会通过微信的各种渠道去添加好友,比如(附近的人.摇一摇.漂流瓶.手机号搜索等) ...
- 【scikit-learn基础】--『监督学习』之 决策树分类
决策树分类算法是一种监督学习算法,它的基本原理是将数据集通过一系列的问题进行拆分,这些问题被视为决策树的叶子节点和内部节点.决策树的每个分支代表一个可能的决策结果,而每个叶子节点代表一个最终的分类结果 ...
- 2023“强网杯”部分WP
强网先锋 SpeedUp 题目 我的解答: 分析代码可知是求2的27次方的阶乘的每一位的和. 使用在线网址直接查看:https://oeis.org/A244060/list 然后sha256加密 f ...
- 2023-05-28:为什么Redis单线程模型效率也能那么高?
2023-05-28:为什么Redis单线程模型效率也能那么高? 答案2023-05-28: 1.C语言实现,效率高 C语言程序运行速度快,因为其相较于其他高级语言更加接近底层机器.由于C语言直接操作 ...
- OPPO关停自研芯片公司哲库,这对行业将产生什么影响?
OPPO什么时候关停自研芯片公司哲库? 公元2023年5月12日,OPPO关停了自研芯片公司哲库.这也是汶川大地震的日子,而OPPO创始人是四川人,真是冥冥之中自有天意.OPPO公司在一份声明中表示, ...
- Java 展开或折叠PDF中的书签
PDF中的书签功能可快速定位到指定阅读位置.对多层书签可根据阅读喜好设置层级展开或折叠.本文将通过Java程序代码介绍如何来实现PDF书签展开或折叠. 程序环境 Spire.Pdf.jar( 免费版3 ...
- Sermant:无代理服务网格架构解析及无门槛玩转插件开发
本文分享自华为云社区<Sermant:无代理服务网格架构解析及无门槛玩转插件开发>,作者: 华为云社区精选 . 本期直播的主题是<从架构设计到开发实践,深入浅出了解Sermant&g ...