• 机器学习笔记:核函数的作用简介


    核函数这个东西并不只是在SVM中得到应用,在很多范围领域中都会得到应用。

    在上学期上课的时候虽然提到了核函数,但是当时对 其并没有一个很好的理解。只知道这个可以作用在一些软间隔上面会比较有用。今天趁着宿舍验收,上网在知乎上看了一个解释,感觉非常精妙。

    核函数的作用简单的说就是由低维度空间向高维度空间作一个映射,使原本线性不可分数据变得在高维度上变得可分,并找到这个分割函数(也并不是所有的线性不可分都能变成可分,能否可分一是要看数据,另一方面要看你找到的核函数是否合适)。

    需要注意的是,随着深入你会发现核函数并不是映射这么简单。

    下面我把看到的这个回答复制一下。

    作者:王赟 Maigo
    链接:https://www.zhihu.com/question/24627666/answer/28440943
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    我来举一个核函数把低维空间映射到高维空间的例子。

    下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字下面的紫色的字母。我们把红色的门上的点看成是“+”数据,紫色字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

    我们现在考虑核函数K(v_1,v_2) = <v_1,v_2>^2,即“内积平方”。
    这里面v_1=(x_1,y_1), v_2=(x_2,y_2)是二维空间中的两个点。

    这个核函数对应着一个二维空间到三维空间的映射,它的表达式是:
    P(x,y)=(x^2,sqrt{2}xy,y^2)
    可以验证,
    <P(v_1),P(v_2)>
&= &<(x_1^2,sqrt{2}x_1y_1,y_1^2),(x_2^2,sqrt{2}x_2y_2,y_2^2)> \
&= &x_1^2x_2^2 + 2x_1x_2y_1y_2+y_1^2y_2^2 \
&= &(x_1x_2 + y_1y_2)^2 \
&= &<v_1,v_2>^2 \
&= &K(v_1,v_2)

    在P这个映射下,原来二维空间中的图在三维空间中的像是这个样子:
    (前后轴为x轴,左右轴为y轴,上下轴为z轴)
    注意到绿色的平面可以完美地分割红色和紫色,也就是说,两类数据在三维空间中变成线性可分的了。
    而三维中的这个判决边界,再映射回二维空间中是这样的:

    这是一条双曲线,它不是线性的。

    ================================================

    如上面的例子所说,核函数的作用就是隐含着一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。

    当然,我举的这个具体例子强烈地依赖于数据在原始空间中的位置。
    事实中使用的核函数往往比这个例子复杂得多。它们对应的映射并不一定能够显式地表达出来;它们映射到的高维空间的维数也比我举的例子(三维)高得多,甚至是无穷维的。这样,就可以期待原来并不线性可分的两类点变成线性可分的了。

    ================================================

    在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:
    1) 线性:K(v_1,v_2)=<v_1,v_2>
    2) 多项式:K(v_1,v_2)=(gamma<v_1,v_2>+c)^n
    3) Radial basis function:K(v_1,v_2)=exp(-gamma||v_1-v_2||^2)
    4) Sigmoid:K(v_1,v_2)=	anh(gamma<v_1,v_2>+c)

    我举的例子是多项式核函数中gamma=1, c=0, n=2的情况。

    在实用中,很多使用者都是盲目地试验各种核函数,并扫描其中的参数,选择效果最好的。至于什么样的核函数适用于什么样的问题,大多数人都不懂。很不幸,我也属于这大多数人,所以如果有人对这个问题有理论性的理解,还请指教。

    ================================================

    核函数要满足的条件称为Mercer's condition
    由于我以应用SVM为主,对它的理论并不很了解,就不阐述什么了。
    使用SVM的很多人甚至都不知道这个条件,也不关心它;有些不满足该条件的函数也被拿来当核函数用。
  • 相关阅读:
    java图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
    java树形菜单实现
    vue-resource的使用,前后端数据交互
    如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件
    Git以及TortoiseGit的下载安装使用
    springBoot总结
    idea如何设置类头注释和方法注释
    (document).height()与$(window).height()
    使用js对中文进行gbk编码
    JS中URL编码参数(UrlEncode)
  • 原文地址:https://www.cnblogs.com/silence-tommy/p/7055526.html
Copyright © 2020-2023  润新知