支持向量机SVM——核函数
接前面所讲博客,我们知道了当数据理想线性可分的话我们可以用硬间隔的方式解决,即使出现了噪声,软间隔依旧能够处理,但是这些的前提都是数据是线性可分的,但是在现实任务中,原始样本空间可能并不是线性可分的,那么我们如何解决?
对于这样的问题,可以将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。例如如下这种情况,一个“异或”的例子:
![支持向量机SVM(5)——核函数 支持向量机SVM(5)——核函数](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ0OS8yYjVkNjU4YzM2MmM5YjY3ODJhMjIxMTk0Yzc3MzlmOS5wbmc=)
首先回顾一下我们的优化问题:
⎩⎪⎨⎪⎧maxλ(−21∑i=1N∑j=1NλiλjyiyjxiTxj+∑i=1Nλi)s.t.0≤λi≤C∑i=1Nλiyi=0
令ϕ(x)表示将x映射后的向量,于是我们的问题可以写成:
maxλ(−21i=1∑Nj=1∑Nλiλjyiyjϕ(xi)Tϕ(xj)+i=1∑Nλi)
因为xi,xj映射后的样本空间维数可能很高,甚至可能是无穷维,因此直接计算ϕ(xi)Tϕ(xj)通常是困难的。为了解决这个问题,我们可以先设:
k(xi,xj)=ϕ(xi)Tϕ(xj)
即我们希望把映射后的特征空间的内积ϕ(xi)Tϕ(xj)转换为在原始样本空间中通过函数k(xi,xj)来计算,相当于达到了降维计算的目的。并且k(xi,xj)也称为核函数(kernel function)。
常见的核函数如下:
![支持向量机SVM(5)——核函数 支持向量机SVM(5)——核函数](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQxNC9jNDI4YWM4MDQxODU5MTJjMzM4NDJmNDlkNzhhNjk5Ni5wbmc=)