svm可用于线性或非线性分类、回归、甚至异常检测。

svm尤其适用于中小数据集的复杂分类问题。

5.1 Linear SVM Classification

svm对feature scales敏感,如下图所示,左图中纵坐标范围远大于横坐标范围,决策边界会因为偏向于横坐标。右图进行了feature scaling之后,决策边界就好得多。

5.2 软间隔分类(Soft Margin Classification)

Scikit-Learn的SVM类有一个C超参数,C越小导致越宽的间隔但是更多的误分点。如下图所示,右侧C较小。C越小的模型也越容易一般化。如果SVM过拟合,可以尝试减小C进行调整。

Scikit-Learn提供了LinearSVC类和SVC类,但是后者会慢得多,由于对于大的训练集,因此不推荐。此外还可以使用SGDClassifier(loss="hinge",alpha=1/(m*C)),这会使用SGD算法训练一个线性SVM分类器,这没有LinearSVC收敛得快,但可以处理海量数据集或者在线分类任务。

The LinearSVC class regularizes the bias term(这半句没看懂), so you should center the training set first by subtracting its mean.这在调用StandardScaler时会自动完成。同时要设置损失超参数为"hinge",对偶(dual)超参数为False(除非特征数多于样本)。

5.3 Nonlinear SVM Classification

有些数据集本身就不是线性的,一个解决方案就是增加特征,比如多项式特征,然后使用线性SVM进行训练。这与4.3的多项式回归类似。

5.3.1 多项式核(Polynomial Kernel)

增加多项式特征很简单,但是次数太低无法拟合复杂函数,次数太高又会增加大量的特征。

幸运的是,SVMs可以使用一种被称作核技巧(kernel trick)的数学方法。它和增加很多多项式特征的表现一样,但实际上有没有增加特征。

5.3.2 增加相似度特征(Adding Similarity Features)

另一个处理非线性问题的方式是使用相似度函数增加特征,该函数计算所有样本点与给定样本点的相似度。比如,我看可以定义$\gamma = 0.3$的高斯径向基函数(Radial Basis Function,RBF)为相似度函数。

Gaussian RBF:

$\phi \gamma(X,l) = exp(-\gamma\left \| X - l \right \|^2)$

至于怎么选取给定的样本点,一个简单的方法是训练集中的所有样本都作为给定样本点,以便新的数据集尽可能的线性可分。但是这样的话,如果训练集很大,那就会增加太多的的特征。

5.3.3 Gaussian RBF Kernel

与多项式核代替直接增加多项式特征相似,我们也可以使用高斯RBF核代替直接增加相似度特征。

还有一些其它的很少用到的核函数。比如一些核函数是专门处理特殊数据结构的。String kernels可用于文本或DNA序列分类(比如string subsequence kernel或者基于Levenshtein distance的核)。

如何选择核函数呢?一般来说,首先应该尝试线性分类器,尤其是训练集很大或者特征很多。如果训练集不是特别大,也可以尝试Gaussian RBF kernel,图适用于大多数情况。

5.3.4 计算复杂度(Computational Complexity)

LinearSVC基于liblinear,它实现了线性SVMs的优化算法,但是不支持核技巧,计算复杂度大概$O(m \times n)$。

SVC基于libsvm,它实现了一个支持核技巧的算法,计算复杂度在$O(m^2 \times n)$到$O(m^3 \times n)$之间。

5.4 SVM回归

与分类问题求得类别间的最大间隔不同,SVM回归的目的是使得间隔里面包含最多的样本点。间隔的宽度通过超参数$\varepsilon$控制,如下图所示:

5.5 底层知识(Under the Hood)

svm的一些理论知识可参考支持向量机

5.5.6 在线SVMs

这个有时间再了解吧。

第五章——支持向量机(Support Vector Machines)的更多相关文章

  1. [C7] 支持向量机(Support Vector Machines) (待整理)

    支持向量机(Support Vector Machines) 优化目标(Optimization Objective) 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非 ...

  2. 斯坦福第十二课:支持向量机(Support Vector Machines)

    12.1  优化目标 12.2  大边界的直观理解 12.3  数学背后的大边界分类(可选) 12.4  核函数 1 12.5  核函数 2 12.6  使用支持向量机 12.1  优化目标 到目前为 ...

  3. 机器学习课程-第7周-支持向量机(Support Vector Machines)

    1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...

  4. Ng第十二课:支持向量机(Support Vector Machines)(三)

    11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...

  5. 十二、支持向量机(Support Vector Machines)

    12.1 优化目标 参考视频: 12 - 1 - Optimization Objective (15 min).mkv 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都 ...

  6. stanford coursera 机器学习编程作业 exercise 6(支持向量机-support vector machines)

    在本练习中,先介绍了SVM的一些基本知识,再使用SVM(支持向量机 )实现一个垃圾邮件分类器. 在开始之前,先简单介绍一下SVM ①从逻辑回归的 cost function 到SVM 的 cost f ...

  7. Ng第十二课:支持向量机(Support Vector Machines)(二)

    7 核函数(Kernels) 最初在“线性回归”中提出的问题,特征是房子的面积x,结果y是房子的价格.假设从样本点的分布中看到x和y符合3次曲线,那么我们希望使用x的三次多项式来逼近这些样本点.那么首 ...

  8. Ng第十二课:支持向量机(Support Vector Machines)(一)

    1 目录 支持向量机基本上是最好的有监督学习算法了,从logistic回归出发,引出了SVM,揭示模型间的联系,过渡自然. 2 重新审视logistic回归 Logistic回归目的是从特征学习出一个 ...

  9. 机器学习(八)--------支持向量机 (Support Vector Machines)

    与逻辑回归和神经网络相比,支持向量机或者简称 SVM,更为强大. 人们有时将支持向量机看作是大间距分类器. 这是我的支持向量机模型代价函数 这样将得到一个更好的决策边界 理解支持向量机模型的做法,即努 ...

  10. 斯坦福机器学习视频笔记 Week7 支持向量机 Support Vector Machines

    SVM被许多人认为是最强大的“黑箱”学习算法,并通过提出一个巧妙选择的优化目标,今天最广泛使用的学习算法之一. Optimization Objective 根据Logistic Regression ...

随机推荐

  1. Android使用统计图AChartEngine 来展示数据

    本文采用的统计图参考:AChartEngine 访问地址 :http://code.google.com/p/achartengine/ 先给出效果图 本文的开发代码主要是这些:对一些代码进行修改 以 ...

  2. 【Android 应用开发】Android游戏音效实现

    1. 游戏音效SoundPool 游戏中会根据不同的动作 , 产生各种音效 , 这些音效的特点是短暂(叫声,爆炸声可能持续不到一秒) , 重复(一个文件不断重复播放) , 并且同时播放(比如打怪时怪的 ...

  3. SharePoint 2013配置启用搜索服务

    1.安装完毕SharePoint 2013,新建网站集,点击搜索,出现如下错误(因为没配置,别激动). 2.尝试启动服务器场中的服务之SharePoint Server Search,提示新建搜索应用 ...

  4. SharePoint 解决方案手动打包简单介绍

    介绍:在使用SharePoint中,我们经常需要做的就是打包解决方案,我们来介绍下SharePoint解决方案的手动部署,我自己觉得,解决方案是SharePoint中非常好的一个功能,部署和使用起来相 ...

  5. PHP开发环境apache搭建

    首先我们先来了解一下PHP的一些相关的基础知识: PHP是啥? php其实就是超文本预处理程序,一种制作网站的脚本程序. 通常PHP的运行环境有以下两种: wamp  windows+apache+m ...

  6. Linux 系统应用编程——标准I/O

    标准I/O的由来         标准I/O指的是ANSI C 中定义的用于I/O操作的一系列函数. 只要操作系统安装了C库,标准I/O函数就可以调用.换句话说,如果程序中使用的是标准I/O函数,那么 ...

  7. javascript简单介绍

    ECMAScript 1.语法 2.变量:只能使用var定义,如果在函数的内容使用var定义,那么它是一个局部变量,如果没有使用var它是一个全局的.弱类型! 3.数据类型:原始数据类型(undefi ...

  8. Linux下转换文件从GBK到UTF-8

    iconv -f gbk -t utf- source-file -o target-file

  9. Configure the MySQL account associate to the domain user via MySQL Windows Authentication Plugin

    在此记录如何将之前一次做第三发软件在配置的过程. 将AD user通过代理映射到mysql 用户. 在Mysql官网有这样一段话: The server-side Windows authentica ...

  10. 自动布局Autoresizing与Autolayout

    一.关于iPhone屏幕的一些基本常识 1.ios屏幕适配的尺寸 iPhone的尺寸3.5inch.4.0inch.4.7inch.5.5inch iPad的尺寸7.9inch.9.7inch 2.点 ...