林轩田之机器学习课程笔记( embedding numerous feature之kernel support vector machine)(32之19)
欢迎转载,可以关注博客:http://blog.****.net/cqy_chen
题目可能不全,因为有字数限制,不好意思,可以参考:
https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/
概要
上次讲到了SVM的对偶形式,可以通过求解SVM的对偶问题来求解SVM。主要是当进行高维度的特征映射,很难求解,故而通过对偶方式固定参数,但是上节中还有个问题,虽然参数固定了,但是高维度的映射却是潜藏在了Q矩阵中。本节就该问题进行讨论。
核技巧
如下图就是我们所遗留的问题:
我们首先是通过映射,然后再求解的映射之后的点积。这样就导致了计算的问题,我们能不能绕过映射直接在原始的空间中求解,再变换下得到结果呢?
原问题是先通过映射到高维空间,然后在高维空间求解得到
这里先以一个二次式为例:
设原始空间中:
那么考虑任意的两个转换之后的向量乘积:
所以我们看到我们可以先在原始空间中计算好,
所以kernel的目的就是先在原始空间中做完内积,然后通过kernel函数转换到高维空间的内积。
当我们采用了核函数,那么就可以采用核函数来表示对偶问题的求解啦。
对于Q矩阵:
对于b向量:
同理,我们得到最后的函数为:
所以我们通过核函数解决了要先映射到高维度空间求解内积的问题。
那么我们如何来确定核函数呢?下面来讲解。
多项式核
同样以上面的二次式的转换为例:
我们重新定义一个新的转换:
这样我们得到核函数:
再改变下映射:
得到高斯函数:
这个式子的计算一般比上面的更简洁,所以更常用。
虽然上面都是做了二次转换,但是根据转换的不同,会得到不同的几何空间。这样得到的结果可能不一样:
最后给出多项式的核函数表示:
这些就是多项式的转换,那么有映射到无限维度的么?下面讲解。
高斯核
我们上面已经知道,我们可以将原始数据映射到高维空间,但是呢,感觉还是不够,能不能映射到无限维?
想象一下泰勒展开式,比如
现在假设这样一个核函数:
若:
所以我们得到高斯核,稍微经过变换如下:
可以通过高斯的kernel将特征映射到无限维中去。
带入到SVM目标函数中得到:
采用高斯核来说明这个过程就是:
1)看过程:通过将资料点映射到无限维度中,然后找一个胖胖的边界作为分割线。
2)看结果:通过高斯核函数,SVM其实就是支持向量点的高斯函数的线性组合。这个也成为:RBF(Radio Base Function)
所以可以从这两个角度去理解SVM的高斯核函数。
通过SVM我们可以得到的好处就是,边界是胖胖的,减少了假设空间,同时通过映射,这样增大了假设空间。所以SVM要调节好核函数,不然还是会过拟合的呢。
如下图:
因为时刻要记住VC维理论,一方面VC减小,一方面通过核函数导致参数增多,空间增大。所以要想最后的
核函数对比
上面讲到了几个核函数,这里进行对比下:
Tables | 好处 | 坏处 |
---|---|---|
线性核 | 简单,计算快 | 模型复杂度低,无法区分复杂数据 |
多项式核 | 计算复杂,超参数选择困难 | 模型复杂度高,一般采用2次,3次就好了 |
高斯核 | 模型复杂度非常高,映射到无限维度 | 容易过拟合 |
不管是机器学习还是做人看来都要是中庸之道啊,一方面要模型更好的拟合数据,那么就要采用复杂的映射,但是容易过拟合。
核函数当然不止只有上面的三种,核函数其实表示的是x映射到高维空间的相似性。但是不是只要是相似性就可以用来表示核函数。
首先定义下核矩阵:
即:
得到
这里只说下核函数的充要条件是半正定的
本节介绍了核函数,但是我们前面讲的都是hard-margin,数据要是线性可分的,但是不可分的呢?
预知后事如何,请听下回分解。
欢迎转载,可以关注博客:http://blog.****.net/cqy_chen