机器学习与数据挖掘-支持向量机(SVM)(一)

最近在看斯坦福大学的机器学习的公开课,学习了支持向量机,再结合网上各位大神的学习经验总结了自己的一些关于支持向量机知识。

一、什么是支持向量机(SVM)?

1、支持向量机(Support Vector Machine,常简称为SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。支持向量机属于一般化线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。

2、支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。

3、假设给定一些分属于两类的2维点,这些点可以通过直线分割, 我们要找到一条最优的分割线,如何来界定一个超平面是不是最优的呢?

如下图:

在上面的图中,a和b都可以作为分类超平面,但最优超平面只有一个,最优分类平面使间隔最大化。 那是不是某条直线比其他的更加合适呢? 我们可以凭直觉来定义一条评价直线好坏的标准:

距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。 因此我们的目标是找到一条直线(图中的最优超平面),离所有点的距离最远。

由此, SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做间隔(margin) 。

二、如何计算最优超平面?

1、线性分类:

我们通常希望分类的过程是一个机器学习的过程。这些数据点并不需要是中的点,而可以是任意的点(一个超平面,在二维空间中的例子就是一条直线)。我们希望能够把这些点通过一个n-1维的超平面分开,通常这个被称为线性分类器。有很多分类器都符合这个要求,但是我们还希望找到分类最佳的平面,即使得属于两个不同类的数据点间隔最大的那个面,该面亦称为最大间隔超平面。如果我们能够找到这个面,那么这个分类器就称为最大间隔分类器。

我们从下面一个图开始:

中间那条线是wx + b =0,我们强调所有点尽可能地远离中间那条线。考虑上面3个点A、B和C。从图中我们可以确定A是×类别的,然而C我们是不太确定的,B还算能够确定。这样我们可以得出结论,我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优。因为那样的话,要使得一部分点靠近中间线来换取另外一部分点更加远离中间线。同时这个所谓的超平面的的确把这两种不同形状的数据点分隔开来,在超平面一边的数据点所对应的 y 全是 -1
,而在另一边全是 1 。

我们可以令分类函数:

显然,如果 f(x)=0 ,那么 x 是位于超平面上的点。我们不妨要求对于所有满足 f(x)<0 的点,其对应的 y 等于
-1 ,而 f(x)>0 则对应 y=1 的数据点。如下图。

最优超平面可以有无数种表达方式,即通过任意的缩放 w 和
b
 。 习惯上我们使用以下方式来表达最优超平面

||=1

式中  表示离超平面最近的那些点,也可以就可以得到支持向量的表达式为:y(wx
+ b) = 1,

上面说了,我们令两类的点分别为+1, -1,所以当有一个新的点x需要预测属于哪个分类的时候,我们用sgn(f(x)),就可以预测了,sgn表示符号函数,当f(x) > 0的时候,sgn(f(x)) = +1, 当f(x) < 0的时候sgn(f(x)) = –1。

通过几何学的知识,我们知道点  到超平面  的距离为:

特别的,对于超平面, 表达式中的分子为1,因此支持向量到超平面的距离是

=

||w||的意思是w的二范数。

刚才我们介绍了间隔(margin),这里表示为 ,
它的取值是最近距离的2倍:

M = 2 / ||w||

最大化这个式子等价于最小化||w||, 另外由于||w||是一个单调函数,我们可以对其加入平方,和前面的系数,熟悉的同学应该很容易就看出来了,这个式子是为了方便求导。

最后最大化  转化为在附加限制条件下最小化函数:

即:

这是一个拉格朗日优化问题,可以通过拉格朗日乘数法得到最优超平面的权重向量W和偏置
b 。

PS

1、咱们就要确定上述分类函数f(x) = w.x
+ b(w.x表示w与x的内积)中的两个参数w和b,通俗理解的话w是法向量,b是截距;

2、那如何确定w和b呢?答案是寻找两条边界端或极端划分直线中间的最大间隔(之所以要寻最大间隔是为了能更好的划分不同类的点,下文你将看到:为寻最大间隔,导出1/2||w||^2,继而引入拉格朗日函数和对偶变量a,化为对单一因数对偶变量a的求解,当然,这是后话),从而确定最终的最大间隔分类超平面hyper
plane和分类函数;

3、进而把寻求分类函数f(x) = w.x + b的问题转化为对w,b的最优化问题,最终化为对偶因子的求解。

机器学习与数据挖掘-支持向量机(SVM)(一),布布扣,bubuko.com

时间: 2024-10-10 01:01:42

机器学习与数据挖掘-支持向量机(SVM)(一)的相关文章

机器学习第7周-炼数成金-支持向量机SVM

支持向量机SVM 原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser.Guyon.Vapnik发表在1992年(参考文档见韩家炜书9.10节)思想直观,但细节异常复杂,内容涉及凸分析算法,核函数,神经网络等高深的领域,几乎可以写成单独的大部头与著.大部分非与业人士会觉得难以理解.某名人评论:SVM是让应用数学家真正得到应用的一种算法 思路 简单情况,线性可分,把问题转化为一个

吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm from sklearn.model_selection import train_test_split def load_data_classfication(): ''' 加载用于分类问题的数据集 ''' # 使用 scikit-learn 自带的 iris 数据集 iris=datasets.lo

机器学习与数据挖掘中的十大经典算法

背景: top10算法的前期背景是吴教授在香港做了一个关于数据挖掘top10挑战的一个报告,会后有一名内地的教授提出了一个类似的想法.吴教授觉得非常好,开始着手解决这个事情.找了一系列的大牛(都是数据挖掘的大牛),都觉得想法很好,但是都不愿自己干.原因估计有一下几种:1.确实很忙2.得罪人3.一系列工作很繁琐等等.最后和明尼苏达大学的Vipin Kumar教授一起把这件事情承担下来.先是请数据挖掘领域获过kdd和icdm大奖的十四个牛人提名候选,其中一人因为确实很忙,正从ibm转行到微软,吴教授

机器学习实战笔记6(SVM)

鉴于July大哥的SVM三层境界(http://blog.csdn.net/v_july_v/article/details/7624837)已经写得非常好了,这里我就不详细描述,只是阐述简单的几个概念.如果看SVM三层境界有困惑,我也愿意与大家交流,共同进步. 简单概念描述: (1)      支持向量机(SVM, support vectormachine)就是通过最大化支持向量到分类超平面之间的分类间隔.分类超平面就是我们想要得到的决策曲面:支持向量就是离分类超平面最近的点,而间隔即为支持

支持向量机(SVM)(五)-- SMO算法详解

一.我们先回顾下SVM问题. A.线性可分问题 1.SVM基本原理: SVM使用一种非线性映射,把原训练            数据映射到较高的维.在新的维上,搜索最佳分离超平面,两个类的数据总可以被超平面分开. 2.问题的提出: 3.如何选取最优的划分直线f(x)呢? 4.求解:凸二次规划 建立拉格朗日函数: 求偏导数: B.线性不可分问题 1.核函数 如下图:横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类. 设: g(x)转化为f(y)=<a,y> g(x)=

机器学习和数据挖掘推荐书单

有了这些书,再也不愁下了班没妹纸该咋办了.慢慢来,认真学,揭开机器学习和数据挖掘这一神秘的面纱吧! <机器学习实战>:本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法.朴素贝叶斯算法.Logistic回归算法.支持向量机.AdaBoost集成方法.基于树的回归算法和分类回归树(CART)算法等.第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法.Apriori算法.FP-Growth算法.第四部分介绍了机器学习算法的一些附属

FPGA机器学习之数据挖掘,图像处理,模式识别,人工智能,机器学习的关系

数据挖掘: 数据挖掘从字面上就已经很好理解了,就是从一堆数据中,挖掘出一些有用的信息来的过程.比如说,我们的搜索数据,如果某个地区大部分人都在搜索MH370,表示他们在关注这个事情.我们就可以推荐一些安全知识,飞机知识过去.同样的也可能会有蜡烛销售高潮,提前给他们提供便利.这个就是数据挖掘的工作内容. 数据挖掘这些书的主要内容,数据有多少种,什么是有效数据,数据的维度,离散性,相似性.有很大的篇幅是在讲述数据的有效提取等有关数据的性质.剩下的一大部分篇幅就是这些数据的处理.数据的处理,整合,分析

机器学习和数据挖掘

机器学习和数据挖掘推荐书单 机器学习和数据挖掘推荐书单 有了这些书,再也不愁下了班没妹纸该咋办了.慢慢来,认真学,揭开机器学习和数据挖掘这一神秘的面纱吧! <机器学习实战>:本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法.朴素贝叶斯算法.Logistic回归算法.支持向量机.AdaBoost集成方法.基于树的回归算法和分类回归树(CART)算法等.第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法.Apriori算法.FP

关于支持向量机(SVM)一些不得不说的话

做为一种监督学习模型,支持向量机(Supprot Vector Machine)在机器学习领域内很重要.首先,SVM用来干什么?一句话将,就是分类(Classification).比较简单的分类,比如线性分类.Logistic 回归等等,得到的分类结果未必是最优的.而SVM则旨在找到一个最优的分类器.从这个目的出发,SVM提出了Soft Margin,Support Vector等等看似很直观的概念. 对支持向量机的介绍,往往从线性模型开始讲起.如果想对这个部分有一个了解,有两个英文的资料绝对值