| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 简单点理解 SVM(支持向量机) -> 正文阅读 |
|
[数据结构与算法]简单点理解 SVM(支持向量机) |
1、SVM简介支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。可能不好理解,那我们来举个例子吧 根据体重判断小鼠是否肥胖,首先得找到一个阈值,这个阈值怎么找呢?按从小到大的顺序排列后找到间隔最大的俩只小鼠取它们的中间体重,这个就是阈值。 但是也可能出现误差 ? ?(其中粉色代表肥胖,绿色代表不肥胖)这个图中个别案例不符合最大间隔法,所以这时就需要用到Sort Margin,如图 ?2、SVM算法简介?2.1、最大间隔法介绍:? ? ? ? ? ? ? ? ? ? 具体方法如下: 每个支持向量到超平面的距离可以写为: 由上述? ?可以得到? ?,所以我们得到: 最大化这个距离: ???????????????????????????????????????? 这里乘上 2 倍也是为了后面推导,对目标函数没有影响。刚刚我们得到支持向量?? ? ? ?,? ?,所以我们得到: 再做一个转换: 为了方便计算(去除 ||w||?的根号),我们有: 所以得到的最优化问题是: ?若要求解上面那个方程就必须用到拉格朗日乘子法,然后就会把一个含有约束的问题转化为没有约束的的问题,然后再转为对偶问题,最后转化为反对偶问题 ? ? ? ? ? ? ?接下来就是对了L(w,b,a)求偏导,这里我就不一一证明了,最后得到一个结果 ?转化为对求最大,最重要的是不要忘了新增的条件 ?补(对偶问题证明:强对偶性、弱对偶性以及KKT条件的证明(对偶问题的几何证明)_Cyril_KI的博客-CSDN博客这个博客讲的很透彻) ? 2.2、Soft Margin?当C是无穷大时,式子6.29要想取得最小值,那后面部分必须是0,所以全部满足条件 当C是有限值时,式子6.29要想取得最小值,可能后面那一部分不为0,所以可以有部分样本不满足约束 ?上图中的loss函数有多种,例如: ?推荐使用下面一个,因为上面那个函数不连续 然后就可以画出Sort Marg示例图,如图: ?2.3、SMO算法SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。下面这篇博客将带您认识什么是SMO算法 2.4、核函数2.4.1 线性不可分我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。 但我们可能会碰到的一种情况是样本点不是线性可分的,比如: 这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如: 对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性 SVM。我们用 x 表示原来的样本点,用?? ?表示 x 映射到特征新的特征空间后到新向量。那么分割超平面可以表示为:? 。 对于非线性 SVM 的对偶问题就变成了: ? ?2.4.2、核函数的作用我们不禁有个疑问:只是做个内积运算,为什么要有核函数的呢? 这是因为低维空间映射到高维空间后维度可能会很大,如果将全部样本的点乘全部计算好,这样的计算量太大了。 ?2.4.3、常见的核函数3、用python实现svm计算首先将需要使用的包导进来
紧接着就是准备训练样本和生成随机试验数据
下面就是最关键的选择核函数了 常见的核函数有:
接下来就是绘制样本点;
最后是绘制图形
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:41:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |