您的位置:首页 > 其它

机器学习 之 SVM 为什么使用核函数

2015-08-30 21:18 337 查看
用一个具体文本分类的例子来看看这种向高维空间映射从而分类的方法如何运作,想象一下,我们文本分类问题的原始空间是1000维的(即每个要被分类的文档被表示为一个1000维的向量),在这个维度上问题是线性不可分的。现在我们有一个2000维空间里的线性函数

f(x’)= < w’ ,x’ > + b

注意向量的右上角有个’ 。它能够将原问题变得可分。

式中的w’和x’都是2000维的向量,只不过w’是定值,而x’是变量(严格说来这个函数是2001维的),现在的输入是一个1000维的向量x,分类的过程是先把x变换为2000维的向量x’,然后求这个变换后的向量x’与向量w’的内积,再把这个内积的值和b相加,就得到了结果,看结果大于阈值还是小于阈值就得到了分类结果。

本质:我们其实只关心那个高维空间里内积的值,那个值算出来了,分类结果就算出来了。

从理论上说,x’是经由x变换来的,因此广义上可以把它叫做x的函数(有一个x,就确定了一个x’,唯一对应),而w’是常量,它是一个低维空间里的常量w经过变换得到的,所以给了一个w和x的值,就有一个确定的f(x’)值与其对应。这让我们幻想,是否能有这样一种函数 K(w,x),它接受低维空间的输入值,却能算出高维空间的内积值<w’,x’> ?

如果有这样的函数,那么当给了一个低维空间的输入x以后,

g(x)=K(w,x)+b

f(x’)=<w’,x’>+b

这两个函数的计算结果就完全一样,我们也就用不着费力找那个映射关系,直接拿低维的输入往g(x)里面代就可以了(再次提醒,这回的g(x)就不是线性函数啦,因为 不能保证 K(w,x)这个表达式里的x次数不高于1次 )。

万幸的是,这样的 K(w,x)确实存在(发现凡是我们人类能解决的问题,大都是巧得不能再巧,特殊得不能再特殊的问题,总是恰好有些能投机取巧的地方才能解决,由此感到人类的渺小),它被称作核函数(核,Kernel),而且还不止一个,事实上,只要是满足了Mercer条件的函数,都可以作为核函数。核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: