SVM基础理论(1):通俗讲解

SVM的核心思想


支持向量机的最核心的想法就是从输入空间到更加高维度的特征空间映射,这里有一点像是神经网络中的,针对输入在隐含层进行一个转换,最后所生成的特征拿去进行分类。

就是说不是在原始空间中进行分类,而是在一个新的空间中进行分类,在新的空间(高维度)中,会认为这个分类问题会得到一定程度的简化。

在高维度空间中,之前(低纬度空间)的线性不可分的问题就会被认为是一个线性可分的问题。

最大间隔


wx + b = 0中w的方向是垂直于超平面的


空间中任意一点到超平面的距离


问题引入:选择哪个超平面?


很多的超平面都可以使得在当前的训练集的条件之下,做到训练误差为0,那么问题来了,到底选择哪个呢?

其实问题的关键不是其在训练集上面的表现,而是其在测试集上面的表现是怎么样的(也就是说需要考察其泛化性能)。


概念:间隔和支持向量

support vectors 决定了分离超平面所能够移动的范围,这个范围就是叫做margin。


如何使用数学语言定义间隔?

只有使用数学的形式定义margin才可以去优化和求解。


假设我的样本是线性可分的,那么,我就一定可以找到平行的两条线:

使得:


然后通过一系列的缩放变换可以得到,周老师的书中(周志华《机器学习》,也就是上面截图的书)的样子:


下面我给出相关的变换的思路:


然后我们就是找到间隔最大的这个w0(我这里设置的就是w0),然后w0x + b0 = 0就是我们要找的分离超平面。

线性可分的SVM

目标函数

线性可分的支持向量机其实有两个目标:

第一,就是你需要把所有的样本都分对:


第二,就是在所有的样本全部都分对的情况之下使得间隔(margin)最大化:


所以,目标函数的数学形式如下:


求解目标函数:拉格朗日乘数法

原始问题:


对偶问题:一般而言,原始问题和对偶问题是不等价的,但是在SVM中的原始问题同对偶问题之间是等价的(这个是不用深究的),我们现在所要研究的问题就是变成了如何优化新的目标函数的问题。


下面是w和b的解:


下面是一个简单的例子展示svm如何求解:


软间隔:含有噪声的线性可分情况

目标函数和拉格朗日函数:


回代以及对偶问题求解:


非线性可分SVM

一维空间到二维空间映射的一个例子


所映射到的空间:特征空间


映射方法

基本的映射变换


高维空间中两个向量(样本)作内积


核函数:高维空间内积和低维空间内积的联系


核技巧

从低维空间到高维空间的优缺点

优点:数据的可分性增加

缺点:计算的复杂度增加

核技巧主要干一件什么样子的事情


所以说SVM为啥这么好

即利用了高维空间中的数据比较好分。

又避免了高维空间中的计算复杂度较高这个缺点。

核函数到底长啥样?(不同类型的核函数)


字符型核


非线性情况之下的w和b的求解


致敬

SVM的发展历程回顾


SVM之父


模型效能


VC维(建议看林轩田《机器学习基石》)

所谓的VC dimension就是你的模型最多可以shatter多少个点:


VC dimension是一个比较保守的估计,其认为样本可以进行任意打标签,但是实际的问题是没有这么复杂的:


所谓的VC dimension,就是模型的能力,对于h个点,不管如何打标签,这个模型都可以将其分开,那么我们就可以说这个模型的VC dimension就是h:


超平面在n维空间中,其VC dimension就是n + 1。

树的叶子节点的数量决定了其VC dimensiion,越复杂的决策树,其VC dimension就越高。

对于SVM而言,其VC dimension就是取决于其使用了何种的核函数。

数据挖掘的基本假设的问题探讨

数据挖掘中所使用的数据都被假设是有规律分布的,如果都是噪声,那么你怎么进行数据挖掘的行为都是没有用处的。

所以,基于以上假设,我们可以使用线性模型去对成千上万的点进行分类,如果严格按照VC dimension的理论的话线性模型是无法做到对成千上万个随机的点进行分类的。

为什么优先选择简单的(vc dimention较低)的模型


h值越大,这里的后面的公式就是bound,就会越大,说明训练误差和测试误差之间的距离越大。

也就是说,同样的两个模型,如果具有相同的训练误差,我们应该是偏向于使用比较简单的那个模型的,而不是比较复杂的那个模型(也就是VC dimension较高的那个模型)。

越复杂的模型,其risk一般而言会比较大,其在未知样本上的performance就更加难以把握。

SVM相关学习资源


你可能感兴趣的:(SVM基础理论(1):通俗讲解)