Support Vector Machines
支持向量机SVM。
简介
SVM核函数包括线性核函数、多项式核函数、径向基核函数、高斯核函数、幂指数核函数、拉普拉斯核函数、ANOVA核函数、二次有理核函数、多元二次核函数、逆多元二次核函数以及Sigmoid核函数。
支持向量机可能是最受欢迎的机器学习算法之一。
超平面是一个分割输入变量空间的线。在SVM中,选择一个超平面对输入变量空间中的点进行最优分类(类0或者类1,即二值分类)。
在二维中,你可以把它想象成一条直线,让我们假设所有的输入点都可以被这条线完全隔开。它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
SVM学习算法发现了在超平面上最优分类的系数。
超平面与最近的数据点之间的距离称为边界。能够区分这两个类的最好或最优的超平面是有最大边界的直线。只有这些点与定义超平面和分类器的构造有关。这些点称为支持向量。他们支持或定义超平面。
在实践中,利用优化算法来寻找最大化边界的系数的值。

SVM可能是最强大的开箱即用的分类器之一,值得在您的数据集上尝试。
SVM的核心思想就是找到不同类别之间的分界面,使得两类样本尽量落在面的两边,而且离分界面尽量远。
最早的SVM是平面的,局限很大。但是利用核函数(kernel function),我们可以把平面投射(mapping)成曲面,进而大大提高SVM的适用范围。
→ 
如右图,提高之后的SVM同样被大量使用,在实际分类中展现了很优秀的正确率。
适用情景
SVM在很多数据集上都有优秀的表现。
相对来说,SVM尽量保持与样本间距离的性质导致它抗攻击的能力更强。
和随机森林一样,这也是一个拿到数据就可以先尝试一下的算法。
优点:
1.可用于线性/非线性分类,也可以用于回归,泛化错误率低,计算开销不大,结果容易解释;
2.可以解决小样本情况下的机器学习问题,可以解决高维问题 可以避免神经网络结构选择和局部极小点问题。
3.SVM是最好的现成的分类器,现成是指不加修改可直接使用。并且能够得到较低的错误率,SVM可以对训练集之外的数据点做很好的分类决策。
缺点:
1.对参数调节和和函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题。
SVM和LR
首先,logistic regression(LR)的模型如下:

如下是SVM中cost function的定义。请看下图中玫瑰色的曲线,这就是我们希望得到的cost function曲线,和logistic regression的cost function非常相近,但是分为两部分。

逻辑回归LR的cost function为:

则SVM的cost function为:

cost0和cost1分别对应y=0和y=1时的目标函数定义,最后一项regularization项和logistic regression中的类似。其实它们的最后一项本来是一样的,但是可以通过线性变换化简得到SVM的归一化项。
多分类扩展
- 一对多法。其思想是把某一种类别的样本当作一个类别,剩余其他类别的样本当作另一个类别,这样就变成了一个两分类问题。然后,在剩余的样本中重复上面的步骤`这种方法箱要构造k个svM模型,其中,k是待分类的个数。这种方案的缺点是训练样本数目大,训练困难。
- 一对一方法。其做法是在多值分类中,每次只考虑两类样本,即对每两类样本设计一个SVM模型,因此,总共需要设计 k(k一1)/2 个SVM模型.这种做法需要构造多个二值分类器,并且测试时需要对每两类都进行比较,导致算法计算复杂度很高。
- SVM决策树法。它通常和二叉决策树结合起来,构成多类别的识别器。这种方法的缺点是如果在某个节点上发生了分类错误,将会把错误延续下去,该节点后续下一级节点上的分类就失去了意义。weston虽然提出了用一个优化式解多值分类问题’〕,但由于其变量t数目过多,所以只能在小型问题的求解中使用。一类分类方法的出现为异常值检测提供了一条新的思路,该方法通过核映射思想确定一个包含正类样本的紧致区域,以便使异常值更容易暴露出来,从而达到检测的目的。
Support Vector Machines的更多相关文章
- Support Vector Machines for classification
Support Vector Machines for classification To whet your appetite for support vector machines, here’s ...
- Machine Learning - 第7周(Support Vector Machines)
SVMs are considered by many to be the most powerful 'black box' learning algorithm, and by posing构建 ...
- Ng第十二课:支持向量机(Support Vector Machines)(三)
11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...
- Introduction to One-class Support Vector Machines
Traditionally, many classification problems try to solve the two or multi-class situation. The goal ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机
Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...
- 【Supervised Learning】支持向量机SVM (to explain Support Vector Machines (SVM) like I am a 5 year old )
Support Vector Machines 引言 内核方法是模式分析中非常有用的算法,其中最著名的一个是支持向量机SVM 工程师在于合理使用你所拥有的toolkit 相关代码 sklearn-SV ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 7) Support Vector Machines
本栏目内容来源于Andrew NG老师讲解的SVM部分,包括SVM的优化目标.最大判定边界.核函数.SVM使用方法.多分类问题等,Machine learning课程地址为:https://www.c ...
- Andrew Ng机器学习编程作业:Support Vector Machines
作业: machine-learning-ex6 1. 支持向量机(Support Vector Machines) 在这节,我们将使用支持向量机来处理二维数据.通过实验将会帮助我们获得一个直观感受S ...
- Coursera 机器学习 第7章 Support Vector Machines 学习笔记
7 Support Vector Machines7.1 Large Margin Classification7.1.1 Optimization Objective支持向量机(SVM)代价函数在数 ...
- 机器学习 Support Vector Machines 1
引言 这一讲及接下来的几讲,我们要介绍supervised learning 算法中最好的算法之一:Support Vector Machines (SVM,支持向量机).为了介绍支持向量机,我们先讨 ...
随机推荐
- C++静态库与动态库的区别
在日常开发中,其实大部分时间我们都会和第三方库或系统库打交道.在 Android 开发音视频开发领域,一般会用到 FFmepg.OpenCV.OpenGL 等等开源库, 我们一般都会编译成动态库共我们 ...
- 关于 exynos 4412 按键中断 异步通知
以下是驱动测试代码: //内核的驱动代码 #include <linux/init.h> #include <linux/module.h> //for module_init ...
- java之aop
1.AOP:aspect orientied programming 面向切面编程.就是横向编程. 2.面向切面编程是在不改变原有代码的情况下增加新的功能. 3.在spring中面向切面编程有两种应用 ...
- python 4. path的定义及参数,re_path
path定义 path函数的定义为:path(route,view,name=None,kwargs=None) 可以查看官方文档 → 官方文档,下面是取自官方文档关于path的参数 函数 path( ...
- k8s维护常用命令
k8s维护 1. 不可调度 kubectl cordon k8s-node-1 kubectl uncordon k8s-node-1 #取消 2.驱逐已经运行的业务容器 kubectl drain ...
- Windows VNC远程连接用法
VNC (Virtual Network Console)是虚拟网络控制台 被控端 被控端需要打开服务,等待主控端连接 服务端已经启动成功,右下角有小图标 主控端 打开主控端,连接被控端 输入被控端i ...
- 【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章
[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
- npm 更换阿里淘宝源
执行命令 npm config set registry https://registry.npm.taobao.org/ 查看是否已经更换成功 npm config get registry
- 大数据系列文章-Hadoop基础介绍(一)
Hadoop项目背景简介 2003-2004年,Google公开了部分GFS个Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年的业余时间,实现了DFS和Mapreduce机 ...
- MySQL Index--Change Buffer
Change Buffer功能 当执行INSERT/DELETE/UPDATE三类DML操作需要修改二级索引上数据时,如果需要修改的二级索引页未存在于当前Buffer Pool中,可以先将该" ...