小刘的机器学习---SVM
前言:
这是一篇记录小刘学习机器学习过程的随笔。
正文:
支持向量机(SVM)是一组用于分类, 回归和异常值检测的监督学习方法。
在分类问题中,SVM就是要找到一个同时离各个类别尽可能远的决策边界即最大化margin(margin为图中2虚线的距离)。这种尽可能远的思想能够提高模型的泛化能力。
虚线上的点是支持向量,实线是决策边界。此图为线性可分的情况。
求margin的最大值就相当于求d(支持向量到决策边界的距离)的最大值。
决策边界为wx-b=0
任意点到边界的距离为
为了方便计算,我们将2个类分别称为1和-1。那么可以得到约束条件
因为是常数所有化简得
为方便表达写为,注意此
非彼
进一步化简得
由于支持向量到边界的距离就是1,所有最大化问题转换为min||w||,为方便后面的计算改写成
最终我们得到一个带约束条件的优化问题
那么如何求解带约束条件的优化问题呢?
这里我们应用拉格朗日对偶性,由对偶问题求原问题。
解对偶问题
求偏导:
代入得:
由数值计算得到
再由对偶问题的解得到原问题的解:
至此,我们得到了在线性可分的情况下决策边界的表达式。
但是在实际生活中很多情况是线性不可分的,如何解决非线性问题呢?这里我们引入升维的概念。
很明显,上图中我们无法找出一个线性决策边界。这个时候我们需要引入第三个维度,即z = x² + y²
这样我们就能用一条直线来做边界了
然而这种映射到高维度的方法会极大的增加计算量。为了减少工作量我们引入核函数的技巧。
核函数是二元函数,输入是变换之前的两个向量,其输出与两个向量变换之后的内积相等。这样的“巧合”让我们可以忽略了映射而通过核函数直接计算映射后的值。
也就是说将问题转换为我们就不用在高维空间计算了。
一般用到的核函数如下:
线性核函数:
多项式核函数:
径像基核函数/高斯核函数:
拉普拉斯核函数:
sigmod核函数:
至于如何选择核函数,一般来说,线性情况就用线性核,非线性的时候用径像基核就可以了。
结语:
这是小刘的学习心得,如有错误欢迎大家指正:)
彩图来源:https://monkeylearn.com/blog/introduction-to-support-vector-machines-svm/
小刘的机器学习---SVM的更多相关文章
- 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)
(写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ...
- 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)
前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...
- 小刘的深度学习---CNN
前言: 前段时间我在树莓派上通过KNN,SVM等机器学习的算法实现了门派识别的项目,所用到的数据集是经典的MNIST.可能是因为手写数字与印刷体存在一些区别,识别率并是很不高.基于这样的情况,我打算在 ...
- [机器学习] SVM——Hinge与Kernel
Support Vector Machine [学习.内化]--讲出来才是真的听懂了,分享在这里也给后面的小伙伴点帮助. learn from: https://www.youtube.com/wat ...
- 机器学习--------SVM
#SVM的使用 (结合具体代码说明,代码参考邹博老师的代码) 1.使用numpy中的loadtxt读入数据文件 data:鸢尾花数据 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3 ...
- 程序员训练机器学习 SVM算法分享
http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine 摘要:支持向量机(SVM)已经成为一种非常受欢迎的算法.本文 ...
- 小刘的深度学习---Faster RCNN
前言: 对于目标检测Faster RCNN有着广泛的应用,其性能更是远超传统的方法. 正文: R-CNN(第一个成功在目标检测上应用的深度学习的算法) 从名字上可以看出R-CNN是 Faster RC ...
- [机器学习]SVM原理
SVM是机器学习中神一般的存在,虽然自深度学习以来有被拉下神坛的趋势,但不得不说SVM在这个领域有着举足轻重的地位.本文从Hard SVM 到 Dual Hard SVM再引进Kernel Trick ...
- 机器学习——SVM
整理自: https://blog.csdn.net/woaidapaopao/article/details/77806273?locationnum=9&fps=1 带核的SVM为什么能分 ...
随机推荐
- 【转】VMware虚拟机三种网络模式超详解
[原文]https://www.toutiao.com/i6596228488666022403/ 由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很浪费.那 ...
- [WPF]启动参数
在App.xaml.cs中重写方法OnStartup protected override void OnStartup(StartupEventArgs e) { //e.Args为命令行参数 // ...
- vuejs安装篇
1.安装nodejs,自带npm环境. 地址:https://nodejs.org/en/download/,Node.js 历史版本下载地址:https://nodejs.org/dist/ 可自 ...
- 细数垃圾邮箱客户端 Live Mail 的BUG
以前用XP系统,里面自带的有outlook,使用中还行,不过bug也不少,常见的如 1.查找,邮件多了后,常常查找不到: 2.有时收件箱什么的突然空白,或部分邮件不见了(2G大小限制,超过了就不能做移 ...
- QT5 视图坐标
又出错了. . main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __th ...
- python批量连接mysql
注释:脚本(gomysql.py)需要进一步优化,初学者,努力中 首先配置需要执行的dbip.ini列表,格式如下 S1 192.168.0.5 3306 dbusername dbpassw ...
- SDOI 2018 R2 游记
一篇真正的“游记”. DAY -3 下午: 今天老师批准了我去省选划水的请假要求. 批准之后感觉学习非常有动力,顺便忽悠别的同学和我一起去,然而wzx是唯一一个表示可以考虑一下的同学,其他同学直接一口 ...
- ThreadLocal解决SimpleDateFormat多线程安全问题中遇到的困惑
测试代码: public class Main { public static void main(String[] args) { for (int k = 0; k < 10; k++) { ...
- XmlSpy / XSD以及验证
很早以前看过一句话:“XML就象空气”,在企业应用开发中XML是一个重要的数据交换标准.而XSD则可以用来校验XML的数据格式是否正确. 一个典型的XSD文件如下: <?xml version= ...
- kafka 部署
Windows平台kafka环境的搭建 https://blog.csdn.net/u010054969/article/details/70241478