机器学习之SVM支持向量机
前言
以下内容是个人学习之后的感悟,转载请注明出处~
简介
支持向量机(support vector machine),简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特
征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
原理
SVM代价函数
支持向量机的代价函数和逻辑回归的代价函数十分相似,因为前者可以从后者中衍化出来。如下图所示,其实,支
持向量机的代价函数只是把逻辑回归的代价函数里的项进行了项替换(这里是相似项,并不对等,从图中可以看出),
并且把1/m去掉了(因为这是无关紧要的)。这时,大家都会觉得奇怪,为什么要替换项呢?替换了之后达到了什么效
果呢?


事实上,项替换了之后,我们可以在上图清晰地看到,cost1(z)和cost2(z)项的曲线图近似于原来逻辑回归中对应项的
曲线,但是这两项比原来更直观,从上图中可以看出,要想最小化代价函数,则:
- 如果y=1,我们希望θTx≥1;

- 如果y=0,我们希望θTx≤-1;
SVM最大间隔超平面
首先,介绍一下向量内积,设有两个向量u、v,则uTv=p·||u||,其中p为v在u上映射的长度。如下图所示:

那么,如何将上面这个数学原理用到SVM中呢?其实很简单,将u,v分别替换为θ、x即可,则θTx=p·||θ||。既然要求
最大间隔,那么只需各个样本特征值的p的值越大,那么超平面(即下图中绿色线)与样本点的间隔越大,分类效果更好。不
过p不能无限制的大,还要满足下图中的约束公式,即p尽量大,θ尽量小,使得代价函数更小,得到最大间隔超平面。

接下来,我们看一下SVM分类最大间隔超平面的效果图,下面右图是我们需要的效果,分类效果更加好。

核函数kernels
上面都是讲解线性可分的问题,那么,对于线性不可分问题,SVM该如何做呢?对,就是引入核函数,将低维的数据映
射到高维来解决线性不可分问题。目前,常用的核函数有以下几种:
| 线性核函数(也称无核) |
|
| 多项式核函数 |
|
| 高斯核函数(RBF) |
|
| sigmoid核函数 |
|
那么如何选择核函数呢?本文做以下概述:
- 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
- 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
- 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。
本文将会以较为常见的高斯核函数来讲解核函数在SVM中的作用。下图是

- 当
时,
- 当
距离
很远时,
以上是全部内容,如果有什么地方不对,请在下面留言,谢谢~
机器学习之SVM支持向量机的更多相关文章
- 机器学习 - 算法 - SVM 支持向量机
SVM 原理引入 支持向量机( SVM,Support Vector Machine ) 背景 2012年前较为火热, 但是在12年后被神经网络逼宫, 由于应用场景以及应用算法的不同, SVM还是需要 ...
- 机器学习进阶-svm支持向量机
支持向量机需要解决的问题:找出一条最好的决策边界将两种类型的点进行分开 这个时候我们需要考虑一个问题,在找到一条直线将两种点分开时,是否具有其他的约束条件,这里我们在满足找到一条决策边界时,同时使得距 ...
- 机器学习 - 算法 - SVM 支持向量机 Py 实现 / 人脸识别案例
SVM 代码实现展示 相关模块引入 %matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy i ...
- 机器学习(四) SVM 支持向量机
svr_linear = SVR('linear') #基于直线 svr_rbf = SVR('rbf') #基于半径 svr_poly = SVR('poly') #基于多项式
- 机器学习实战 - 读书笔记(06) – SVM支持向量机
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...
- OpenCV机器学习库函数--SVM
svm分类算法在opencv3中有了很大的变动,取消了CvSVMParams这个类,因此在参数设定上会有些改变. opencv中的svm分类代码,来源于libsvm. #include "o ...
- 6-11 SVM支持向量机2
SVM支持向量机的核:线性核.进行预测的时候我们需要把正负样本的数据装载在一起,同时我们label标签也要把正负样本的数据全部打上一个label. 第四步,开始训练和预测.ml(machine lea ...
- 机器学习:SVM
SVM 前言:支持向量机(Support Vector Machine, SVM),作为最富盛名的机器学习算法之一,其本身是一个二元分类算法,为了更好的了解SVM,首先需要一些前提知识,例如:梯度下降 ...
- Python实现SVM(支持向量机)
Python实现SVM(支持向量机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end ...
随机推荐
- sql语言复习2
一.查询 select 字段列表 from 表名列表 [where 条件表达式][group by 字段列表[having 条件表达式]] [order by 字段列表[asc|desc]] 含义:在 ...
- Hadoop 源码阅读技巧
http://www.cnblogs.com/xuxm2007/category/388607.html 个人谈谈阅读hadoop源代码的经验.首先,不得不说,hadoop发展到现在这个阶段, ...
- Google的分布式计算模型Map Reduce map函数将输入分割成key/value对
http://www.nowamagic.net/librarys/veda/detail/1768 上一篇 大规模分布式数据处理平台Hadoop的介绍 中提到了Google的分布式计算模型Map R ...
- Cadence SPB 16. 6 安装步骤
1.首先下载Cadence Allegro SPB orCAD16. 6 安装包,单击我,下载之后运行其中的setup.exe,然后先安装第一项License Manager
- man screen
http://www.gnu.org/software/screen/manual/screen.html Screen User's Manual Next: Overview, Previous: ...
- 何时使用Entity或DTO
关注公众号: 锅外的大佬 每日推送国外优秀的技术翻译文章,励志帮助国内的开发者更好地成长! JPA和Hibernate允许你在JPQL和Criteria查询中使用DTO和Entity作为映射.当我在我 ...
- 虚拟网卡TUN/TAP 驱动程序设计原理
昨天韦哥写了<Linux下Tun/Tap设备通信原理>一文,只提到了两个使用Tun的用户进程之间的通信路径,并没有说明Tun虚拟网卡驱动是如何实现的,而正好看到了这里的一篇讲解这方面的文章 ...
- Active Directory的DirectoryEntry与DirectorySearcher初识及Filter语法
前言 增删改查,我想查询是最先要说的一个了.本章主要记录使用.NET Framework进行对域控服务器对象的查询操作,介绍DirectoryEntry与DirectorySearcher(搜索器)及 ...
- MFC学习之对话框---对话框之间的domodle 数据传递
if(IDOK==data.DoModal()){tx->m_gao=data.m_he;tx->m_kuan=data.m_wi;tx->m_jiao=data.m_jiaoju; ...
- 【原创】Sublime Text 3快捷配置c++的编译,运行,gdb环境
打开Tools ->Build System -> New Build System 弹出一个文件,将原有的东西删掉,输入: { "encoding": "u ...