首先给你两个向量 。在一般的机器学习方法,比如 SVM 里面,这里一个向量是一个实体。比如一个向量代表一个人。每个向量有两个维度,身高和体重。比如可以有
现在要求两个人的相似度,最简单的方法是计算它们的内积 。这很简单,只要按照维度相乘求和就可以了。
但是有的时候(比如 SVM 的数据线性不可分的时候),我们可能会想对数据做一些操作。我们可能认为体重的二次方,身高的二次方,或者身高体重的乘积是更重要的特征,我们把这个操作记为过程 ,比如可能有
我们认为 比
更能表示一个人的特征。我们再计算两个人的相似度时,使用
与
的内积:
在上面的操作中,我们总共要计算 11 次乘法,2 次加法。
但是如果我们定义核函数
那么有
可以看到 。但是这次我们只计算了 3 次乘法,1 次加法。
所以其实核函数就是这么一回事:
当我们需要先对数据做转换,然后求内积的时候,这样的一系列操作往往成本过高(有时候根本不可能,因为我们可能想要升到无穷维)。
因此我们可以直接定义一个核函数 K 直接求出做转换后求内积的结果,从而降低运算量。
作者:SleepyBag
链接:https://www.zhihu.com/question/24627666/answer/1085861632
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。