小刘的机器学习---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为什么能分 ...
随机推荐
- linux 下获取文件最后几行
在Linux下,获取文件倒数几行的命令是: tail -n 10 your_filename #获取倒数10行
- sql注入--mysql
mysql数据库结构: 数据库A --> 表名 --> 列名 --> 数据 数据库B --> 表名 --> 列名 --> 数据 mysql数据库信息: my ...
- Django商城项目笔记No.17用户部分-用户中心用户地址管理
收货地址管理 首先就是新增地址 看图分析所需要保存的字段 因为是用户的地址,所以在users应用中的models创建模型类 class Address(BaseModel): "" ...
- JavaSript模块规范 - AMD规范与CMD规范介绍[转]
原文地址:http://blog.chinaunix.net/uid-26672038-id-4112229.html JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什 ...
- Volley源码分析(一)RequestQueue分析
Volley源码分析 虽然在2017年,volley已经是一个逐渐被淘汰的框架,但其代码短小精悍,网络架构设计巧妙,还是有很多值得学习的地方. 第一篇文章,分析了请求队列的代码,请求队列也是我们使用V ...
- 支付宝即时到账接口开发 - DEMO讲解
支付宝即时到帐接口 环境要求 PHP5.0以上,且需要开启curl.openssl. 文档地址: https://doc.open.alipay.com/doc2/detail?treeId=62&a ...
- Apache Commons Fileupload 反序列化漏洞分析
下面是k8脚本. # -*- coding: utf-8 -*- # Oracle Weblogic Server (10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3) D ...
- 数据库基本的的sql语句
数据库数据类型: 1.定义一个学生课程模式: create schma<模式名>authorization <用户名> create schema authorization ...
- Jmeter上传下载文件
每次使用时都会忘记,此处是存储网路上通用的方式. 1.上传文件 记得勾选“use multipart/form-data for post”,表明此请求包含文件信息.在信息请求头中,需加入“Con ...
- 树莓派学习笔记(4):利用yeelink实现在线硬件状态监控
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 一.实验目的 本文实验目的是定时获取树莓派CPU的温度.占用率及内存占用率,并其结果上传到yeelink网站,实现在 ...