林轩田之机器学习课程笔记( embedding numerous feature之kernel support vector machine)(32之19)
2017-12-30 13:52
567 查看
概要
核技巧
多项式核
高斯核
核函数对比
欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen
题目可能不全,因为有字数限制,不好意思,可以参考:
https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/
我们首先是通过映射,然后再求解的映射之后的点积。这样就导致了计算的问题,我们能不能绕过映射直接在原始的空间中求解,再变换下得到结果呢?
原问题是先通过映射到高维空间,然后在高维空间求解得到zTnzn,现将其转换为先在原始空间求解
这里先以一个二次式为例:
设原始空间中:x=[x1,x2,......xd]T,转换函数为ϕ2(x),将其映射到二次式。如下:
ϕ2(x)=[1,x1,x2,......xd,x21,x1x2,x1x3,....x1xd,x22.....x2d]T
那么考虑任意的两个转换之后的向量乘积:
ϕ2(x)⋅ϕ2(x′)=1+∑n=1dxnx′n+∑n=1d∑m=1dxnxmx′nx′m=1+∑n=1dxnx′n+∑n=1dxnx′n∑m=1dxmx′m=1+xTx′+(xTx′)(xTx′)
所以我们看到我们可以先在原始空间中计算好,xTx′然后直接得到高维映射后的内积。我们把这样的方式定义为kernel,每一个kernel函数对应着一个转换。比如上面所示:
kϕ(x,x′)=ϕ(x)⋅ϕ(x′)kϕ2=1+(xTx′)+(xTx)2
所以kernel的目的就是先在原始空间中做完内积,然后通过kernel函数转换到高维空间的内积。
当我们采用了核函数,那么就可以采用核函数来表示对偶问题的求解啦。
对于Q矩阵:qm,n=ynymznzm=ynymk(xn,xm)
对于b向量:
b=ys−wTzs=ys−∑n=1Nanznynzs=ys−∑n=1Nanynk(xn,xs)
同理,我们得到最后的函数为:
gsvm(x)=sign(∑n=1Nanynk(xn,x)+b)
所以我们通过核函数解决了要先映射到高维度空间求解内积的问题。
那么我们如何来确定核函数呢?下面来讲解。
ϕ2(x)=[1,x1,x2,......xd,x21,x1x2,x1x3,....x1xd,x22.....x2d]T
我们重新定义一个新的转换:
ϕ2(x)′=[1,2√x1,2√x2,......2√xd,x21,x1x2,x1x3,....x1xd,x22.....x2d]T
这样我们得到核函数:k(x,x′)=1+2xTx′+(xTx′)2
再改变下映射:
ϕ2(x)′=[1,2γ−−√x1,2γ−−√x2,......2γ−−√xd,γx21,γx1x2,γx1x3,....γx1xd,γx22.....γx2d]T
得到高斯函数:
k(k,k′)=(1+γxTx)2
这个式子的计算一般比上面的更简洁,所以更常用。
虽然上面都是做了二次转换,但是根据转换的不同,会得到不同的几何空间。这样得到的结果可能不一样:
最后给出多项式的核函数表示:
二次式的核函数:k2(x,x′)=(ζ+γxTx′)2,ζ≥0;γ>0三次式的核函数:k2(x,x′)=(ζ+γxTx′)3,ζ≥0;γ>0四次式的核函数:k2(x,x′)=(ζ+γxTx′)4,ζ≥0;γ>0q次式的核函数:k2(x,x′)=(ζ+γxTx′)q,ζ≥0;γ>0
这些就是多项式的转换,那么有映射到无限维度的么?下面讲解。
想象一下泰勒展开式,比如ex
现在假设这样一个核函数:k(x,x′)=e−(x−x′)2.
k(x,x′)=e−(x−x′)2=e−x2e−x′2e2xTx′=e−x2e−x′2(∑n=0+∞(2xx′)nn!)(泰勒展开)=∑n=0+∞e−x2e−x′22n!−−−√xn2n!−−−√x′n=ϕ(x)⋅ϕ(x′)
若:ϕ(x)=e−x2(1,21!−−√x,42!−−√x2,......)
所以我们得到高斯核,稍微经过变换如下:
k(x,x′)=e−γ||x−x′||2,γ>0
可以通过高斯的kernel将特征映射到无限维中去。
带入到SVM目标函数中得到:
gsvm(x)=sign(∑n=1Nanynk(xn,x)+b)=sign(∑n=1Nanyne−γ||x−xn||2+b)
采用高斯核来说明这个过程就是:
1)看过程:通过将资料点映射到无限维度中,然后找一个胖胖的边界作为分割线。
2)看结果:通过高斯核函数,SVM其实就是支持向量点的高斯函数的线性组合。这个也成为:RBF(Radio Base Function)
所以可以从这两个角度去理解SVM的高斯核函数。
通过SVM我们可以得到的好处就是,边界是胖胖的,减少了假设空间,同时通过映射,这样增大了假设空间。所以SVM要调节好核函数,不然还是会过拟合的呢。
如下图:
因为时刻要记住VC维理论,一方面VC减小,一方面通过核函数导致参数增多,空间增大。所以要想最后的Eout变小,需要调节核函数,如果得到的结果欠拟合,可以通过增大核函数来增大模型复杂度,如果过拟合则不能使用太过复杂的核函数
不管是机器学习还是做人看来都要是中庸之道啊,一方面要模型更好的拟合数据,那么就要采用复杂的映射,但是容易过拟合。
核函数当然不止只有上面的三种,核函数其实表示的是x映射到高维空间的相似性。但是不是只要是相似性就可以用来表示核函数。
首先定义下核矩阵:
⎡⎣⎢⎢⎢⎢ϕ(x1)⋅ϕ(x1)ϕ(x2)⋅ϕ(x1)......ϕ(xd)⋅ϕ(x1)ϕ(x1)⋅ϕ(x2)......ϕ(x2)⋅ϕ(x2)......ϕ(xd)⋅ϕ(x2)......ϕ(x1)⋅ϕ(xd)ϕ(x2)⋅ϕ(xd)ϕ(xd)⋅ϕ(xd)⎤⎦⎥⎥⎥⎥
即:
⎡⎣⎢⎢⎢⎢k(x1,x1)k(x2,x1)......k(xd,x1)k(x1,x2)......k(x2,x2)......k(xd,x2)......k(x1,xd)k(x2,xd)k(xd,xd)⎤⎦⎥⎥⎥⎥
得到[z1,z2,......zn]T[z1,z2,......zn]=zzT所以这个是半正定的。充分条件也是这个,但是证明比较难,就不详细写了。
这里只说下核函数的充要条件是半正定的
本节介绍了核函数,但是我们前面讲的都是hard-margin,数据要是线性可分的,但是不可分的呢?
预知后事如何,请听下回分解。
欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen
核技巧
多项式核
高斯核
核函数对比
欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen
题目可能不全,因为有字数限制,不好意思,可以参考:
https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/
概要
上次讲到了SVM的对偶形式,可以通过求解SVM的对偶问题来求解SVM。主要是当进行高维度的特征映射,很难求解,故而通过对偶方式固定参数,但是上节中还有个问题,虽然参数固定了,但是高维度的映射却是潜藏在了Q矩阵中。本节就该问题进行讨论。核技巧
如下图就是我们所遗留的问题:我们首先是通过映射,然后再求解的映射之后的点积。这样就导致了计算的问题,我们能不能绕过映射直接在原始的空间中求解,再变换下得到结果呢?
原问题是先通过映射到高维空间,然后在高维空间求解得到zTnzn,现将其转换为先在原始空间求解
这里先以一个二次式为例:
设原始空间中:x=[x1,x2,......xd]T,转换函数为ϕ2(x),将其映射到二次式。如下:
ϕ2(x)=[1,x1,x2,......xd,x21,x1x2,x1x3,....x1xd,x22.....x2d]T
那么考虑任意的两个转换之后的向量乘积:
ϕ2(x)⋅ϕ2(x′)=1+∑n=1dxnx′n+∑n=1d∑m=1dxnxmx′nx′m=1+∑n=1dxnx′n+∑n=1dxnx′n∑m=1dxmx′m=1+xTx′+(xTx′)(xTx′)
所以我们看到我们可以先在原始空间中计算好,xTx′然后直接得到高维映射后的内积。我们把这样的方式定义为kernel,每一个kernel函数对应着一个转换。比如上面所示:
kϕ(x,x′)=ϕ(x)⋅ϕ(x′)kϕ2=1+(xTx′)+(xTx)2
所以kernel的目的就是先在原始空间中做完内积,然后通过kernel函数转换到高维空间的内积。
当我们采用了核函数,那么就可以采用核函数来表示对偶问题的求解啦。
对于Q矩阵:qm,n=ynymznzm=ynymk(xn,xm)
对于b向量:
b=ys−wTzs=ys−∑n=1Nanznynzs=ys−∑n=1Nanynk(xn,xs)
同理,我们得到最后的函数为:
gsvm(x)=sign(∑n=1Nanynk(xn,x)+b)
所以我们通过核函数解决了要先映射到高维度空间求解内积的问题。
那么我们如何来确定核函数呢?下面来讲解。
多项式核
同样以上面的二次式的转换为例:ϕ2(x)=[1,x1,x2,......xd,x21,x1x2,x1x3,....x1xd,x22.....x2d]T
我们重新定义一个新的转换:
ϕ2(x)′=[1,2√x1,2√x2,......2√xd,x21,x1x2,x1x3,....x1xd,x22.....x2d]T
这样我们得到核函数:k(x,x′)=1+2xTx′+(xTx′)2
再改变下映射:
ϕ2(x)′=[1,2γ−−√x1,2γ−−√x2,......2γ−−√xd,γx21,γx1x2,γx1x3,....γx1xd,γx22.....γx2d]T
得到高斯函数:
k(k,k′)=(1+γxTx)2
这个式子的计算一般比上面的更简洁,所以更常用。
虽然上面都是做了二次转换,但是根据转换的不同,会得到不同的几何空间。这样得到的结果可能不一样:
最后给出多项式的核函数表示:
二次式的核函数:k2(x,x′)=(ζ+γxTx′)2,ζ≥0;γ>0三次式的核函数:k2(x,x′)=(ζ+γxTx′)3,ζ≥0;γ>0四次式的核函数:k2(x,x′)=(ζ+γxTx′)4,ζ≥0;γ>0q次式的核函数:k2(x,x′)=(ζ+γxTx′)q,ζ≥0;γ>0
这些就是多项式的转换,那么有映射到无限维度的么?下面讲解。
高斯核
我们上面已经知道,我们可以将原始数据映射到高维空间,但是呢,感觉还是不够,能不能映射到无限维?想象一下泰勒展开式,比如ex
现在假设这样一个核函数:k(x,x′)=e−(x−x′)2.
k(x,x′)=e−(x−x′)2=e−x2e−x′2e2xTx′=e−x2e−x′2(∑n=0+∞(2xx′)nn!)(泰勒展开)=∑n=0+∞e−x2e−x′22n!−−−√xn2n!−−−√x′n=ϕ(x)⋅ϕ(x′)
若:ϕ(x)=e−x2(1,21!−−√x,42!−−√x2,......)
所以我们得到高斯核,稍微经过变换如下:
k(x,x′)=e−γ||x−x′||2,γ>0
可以通过高斯的kernel将特征映射到无限维中去。
带入到SVM目标函数中得到:
gsvm(x)=sign(∑n=1Nanynk(xn,x)+b)=sign(∑n=1Nanyne−γ||x−xn||2+b)
采用高斯核来说明这个过程就是:
1)看过程:通过将资料点映射到无限维度中,然后找一个胖胖的边界作为分割线。
2)看结果:通过高斯核函数,SVM其实就是支持向量点的高斯函数的线性组合。这个也成为:RBF(Radio Base Function)
所以可以从这两个角度去理解SVM的高斯核函数。
通过SVM我们可以得到的好处就是,边界是胖胖的,减少了假设空间,同时通过映射,这样增大了假设空间。所以SVM要调节好核函数,不然还是会过拟合的呢。
如下图:
因为时刻要记住VC维理论,一方面VC减小,一方面通过核函数导致参数增多,空间增大。所以要想最后的Eout变小,需要调节核函数,如果得到的结果欠拟合,可以通过增大核函数来增大模型复杂度,如果过拟合则不能使用太过复杂的核函数
核函数对比
上面讲到了几个核函数,这里进行对比下:Tables | 好处 | 坏处 |
---|---|---|
线性核 | 简单,计算快 | 模型复杂度低,无法区分复杂数据 |
多项式核 | 计算复杂,超参数选择困难 | 模型复杂度高,一般采用2次,3次就好了 |
高斯核 | 模型复杂度非常高,映射到无限维度 | 容易过拟合 |
核函数当然不止只有上面的三种,核函数其实表示的是x映射到高维空间的相似性。但是不是只要是相似性就可以用来表示核函数。
首先定义下核矩阵:
⎡⎣⎢⎢⎢⎢ϕ(x1)⋅ϕ(x1)ϕ(x2)⋅ϕ(x1)......ϕ(xd)⋅ϕ(x1)ϕ(x1)⋅ϕ(x2)......ϕ(x2)⋅ϕ(x2)......ϕ(xd)⋅ϕ(x2)......ϕ(x1)⋅ϕ(xd)ϕ(x2)⋅ϕ(xd)ϕ(xd)⋅ϕ(xd)⎤⎦⎥⎥⎥⎥
即:
⎡⎣⎢⎢⎢⎢k(x1,x1)k(x2,x1)......k(xd,x1)k(x1,x2)......k(x2,x2)......k(xd,x2)......k(x1,xd)k(x2,xd)k(xd,xd)⎤⎦⎥⎥⎥⎥
得到[z1,z2,......zn]T[z1,z2,......zn]=zzT所以这个是半正定的。充分条件也是这个,但是证明比较难,就不详细写了。
这里只说下核函数的充要条件是半正定的
本节介绍了核函数,但是我们前面讲的都是hard-margin,数据要是线性可分的,但是不可分的呢?
预知后事如何,请听下回分解。
欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen
相关文章推荐
- 林轩田之机器学习课程笔记( how can machines learn better之three learning principles)(32之16)
- 林轩田之机器学习课程笔记( embedding numerous feature之linear support vector machine )(32之17)
- 林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
- 林轩田之机器学习课程笔记( combining predictive features之blending and bagging)(32之23)
- 林轩田之机器学习课程笔记(why can machines learn之noise and error)(32之8)
- 林轩田之机器学习课程笔记( embedding numerous feature之dual support vector machine)(32之18)
- 林轩田之机器学习课程笔记(when can machines learn之types of learning)(32之3)
- 林轩田之机器学习课程笔记( combining predictive features之 random forest)(32之26)
- 林轩田之机器学习课程笔记( combining predictive features之 decision tree)(32之25)
- 林轩田之机器学习课程笔记(why can machines learn之theory of generalization)(32之6)
- 林轩田之机器学习课程笔记( how can machines learn之linear regression)(32之9)
- 林轩田之机器学习课程笔记( how can machines learn之linear models for classification)(32之11)
- 林轩田之机器学习课程笔记( combining predictive features之gradient boosted decision tree)(32之27)
- 林轩田之机器学习课程笔记( how can machines learn better之regularization)(32之14)
- 林轩田之机器学习课程笔记( how can machines learn better之validation)(32之15)
- 林轩田之机器学习课程笔记( embedding numerous feature之support vector regression)(32之22)
- 林轩田之机器学习课程笔记(why can machines learn之the VC dimension)(32之7)
- 林轩田之机器学习课程笔记( distilling hidden features之radial basis function network)(32之30)
- 林轩田之机器学习课程笔记( combining predictive features之 adaptive boosting)(32之24)
- 林轩田之机器学习课程笔记(when can machines learn之feasibility of learning)(32之4)