《机器学习实战》学习笔记:支持向量机

该节的内容是支持向量机(SVM, support vectormachine)。

这里首先要推荐一下July的SVM三层境界(http://blog.csdn.net/v_july_v/article/details/7624837)由于《机器学习实战》关于SVM一章的内容很多,本节先简单归纳一下关于支持向量机的基础。

一.概念描述

支持向量机,就是通过最大化支持向量到分类超平面之间的分类间隔。分类超平面就是我们想要得到的决策曲面;支持向量就是离分类超平面最近的点,而间隔即为支持向量到分类超平面的距离。

核函数:这是一种将SVM扩展到更多数据集的方式,一般的说法是,核函数的作用是将数据从低维空间映射到高维空间,使得线性不可分变得线性可分。这句话的意思用个简单的例子来说明:

有:a1 * x1^2 + a2 * x2^2 + a3 * x1x2 = 0

此时令:z1=x1^2, z2=x2^2, z3=x1x2

这样就由原来的二维映射到三维空间了,而此时问题变成线性可分了。我们知道,在求解SVM时,所有的运算都可以写成内积的形式,但是在高维空间中计算内积往往比较复杂,有时可能出现维数灾难,此时我们就可以把内急运算符换成核函数,从而解决这个问题。

设非线性映射Φ(x)将全部原始数据 x 变换到另一个特征空间,在训练SVM时,需要计算两个样本间的内积,两个样本xixj对应的高维空间的内积为:<Φ(xi), Φ(xj)>,该内积可以通过一个核函数K(xi, xj)计算得到。而不用知道这个样本映射Φ(x)是怎样。径向基函数是SVM中常用的一个核函数:

径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。

二.书中提到的几点

  • SVM可能是现成最好的分类器,这里“现成”指的是分类器不加修改即可直接使用。几乎所有的分类问题都可以使用SVM,但是,SVM本身是一个二值分类器,对于多类分类问题,如果需要使用SVM,则需要对代码做一些修改。
  • SVM的实现方法有很多,最常用的就是序列最小最优化算法(SMO,Sequential Minimal Optimization)
  • 支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种决策“机”。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-18 06:44:15

《机器学习实战》学习笔记:支持向量机的相关文章

机器学习实战学习笔记(一)

1.k-近邻算法 算法原理: 存在一个样本数据集(训练样本集),并且我们知道样本集中的每个数据与其所属分类的对应关系.输入未知类别的数据后将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似(最近邻)的k组数据.然后将k组数据中出现次数最多的分类,来作为新数据的分类. 算法步骤: 计算已知类别数据集中的每一个点与当前点之前的距离.(相似度度量) 按照距离递增次序排序 选取与当前点距离最小的k个点 确定k个点所在类别的出现频率 返回频率最高的类别作为当前点的分类 py

机器学习实战-学习笔记-第一章

Added C:\Anaconda and C:\Anaconda\Scripts to PATH. C:\Anaconda>pythonPython 2.7.10 |Anaconda 2.3.0 (64-bit)| (default, May 28 2015, 16:44:52) [MSC v.1500 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "

机器学习实战-学习笔记-第十四章

1.将代码拷贝到F:\studio\MachineLearningInAction\ch14下 2.启动ipython 3.在ipython中改变工作目录到F:\studio\MachineLearningInAction\ch14 In [17]: cd F:\\studio\\MachineLearningInAction\\ch14 F:\studio\MachineLearningInAction\ch14 4.在工作目录下新建一个svdRec.py文件并加入如下代码: from num

《机器学习》学习笔记(一)

今天看了两集Stanford 的Machine Learning,先说说感受,在看的过程中,脑海里冒出来一个念头:在中国的大学里,教授们都是好像在做研究,而学生们都是好像在上课,到头来不知道学到了什么,我在屏幕的这边都能感受到他们和我们的不一样. 其实对于机器学习,我是真心不懂,也不知道为什么忽然就想学习一下了,然后看了第一集就觉得实在是太牛X了,他们做的那个爬越障碍物的狗和快速避障的小车,都不是我们能搞出来的,说来也奇怪,我们不是也有他们一样的课程体系吗?照理说在大学里能做出来的东西,我们也应

机器学习实战读书笔记(三)决策树

3.1 决策树的构造 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 一般流程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法 5.测试算法 6.使用算法 3.1.1 信息增益 创建数据集 def createDataSet(): dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, '

机器学习技法--学习笔记04--Soft SVM

背景 之前所讨论的SVM都是非常严格的hard版本,必须要求每个点都被正确的区分开.但是,实际情况时很少出现这种情况的,因为噪声数据时无法避免的.所以,需要在hard SVM上添加容错机制,使得可以容忍少量噪声数据. ? "软"化问题 软化SVM的思路有点类似正规化,在目标函数添加错误累加项,然后加一个系数,控制对错误的容忍度,并且在约束中添加错误容忍度的约束,形式如下: ? 现在问题就变成了(d+1+N)个变量和2N个约束.ξ用来描述错误的容忍度.C是常量,用来控制容忍度.C越大,由

机器学习实战读书笔记(二)k-近邻算法

knn算法: 1.优点:精度高.对异常值不敏感.无数据输入假定 2.缺点:计算复杂度高.空间复杂度高. 3.适用数据范围:数值型和标称型. 一般流程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法:不适用 5.测试算法:计算正确率 6.使用算法:需要输入样本和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理. 2.1.1 导入数据 operator是排序时要用的 from numpy import * import operato

基于kNN的手写字体识别——《机器学习实战》笔记

看完一节<机器学习实战>,算是踏入ML的大门了吧!这里就详细讲一下一个demo:使用kNN算法实现手写字体的简单识别 kNN 先简单介绍一下kNN,就是所谓的K-近邻算法: [作用原理]:存在一个样本数据集合.每个样本数据都存在标签.输入没有标签的新数据后,将新数据的每个特征与样本集数据的对应特征进行比较,然后算法提取样本集中最相似的分类标签.一般说来,我们只选择样本数据集中前k个最相似的数据,最后,选择这k个相似数据中出现次数最多的分类,作为新数据的分类. 通俗的说,举例说明:有一群明确国籍

机器学习基石--学习笔记01--linear hard SVM

背景 支持向量机(SVM)背后的数学知识比较复杂,之前尝试过在网上搜索一些资料自学,但是效果不佳.所以,在我的数据挖掘工具箱中,一直不会使用SVM这个利器.最近,台大林轩田老师在Coursera上的机器学习技法课程上有很详细的讲授SVM的原理,所以机会难得,一定要好好把握这次机会,将SVM背后的原理梳理清楚并记录下来.这篇文章总结第一讲linear hard SVM的相关内容. ? ? 最好的分割线 之前有讲过PLA,即在线性可分的数据中,找到一条线,能够区分开正负样本,如下所示: 上面三条线,

Spring4实战学习笔记

<Spring4实战 第4版>2016年4月新出版的,之前的第三版看起来还是不错的,所以看到新版就直接买下来. 英文版源码地址:Spring in Action, Fourth Edition Covers Spring 4 1.IOC装配Bean 参考[Spring实战4 2.2],作者提倡无XML配置化. 1.1接口只有一个现实类 可以自动装配 public interface CompactDisc { void play(); } import org.springframework.