看起来像原子核一样难懂的核函数真的难吗?

本文深入探讨了核函数在解决非线性问题中的应用,通过实例解释了如何利用核函数将低维空间映射到高维空间,使原本不可分的数据变得线性可分,介绍了常用的核函数类型及其在机器学习中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面对非线性问题时,会用到“核函数”的技巧,那么到底什么是核函数呢?
核函数:映射关系的内积。映射函数本身仅仅是一种映射关系,并没有增加维度的特性,不过可以利用核函数的特性,构造可以增加维度的核函数。

二维映射到三维,区分就容易了,这是常用核函数的原因。为什么PCA降维算法也使用核函数呢?

要注意,核函数和映射没有关系。核函数只是用来计算映射到高维空间之后的内积的一种简便方法。

举一个知乎上霍华德的例子。假设我们的任务是要预测那些微博可以上微博热搜榜。
有两个离散特征,一个代表某个微博里有“鹿晗”,一个代表某个微博里有“关晓彤”。
两个特征单独看热度都一般,此时我们用二阶多项式核方法:
K ( 鹿 晗 , 关 晓 彤 ) = &lt; 鹿 晗 , 关 晓 彤 &gt; 2 K(鹿晗,关晓彤) = &lt;鹿晗,关晓彤&gt;^2 K(鹿,)=<鹿,>2
这个核函数可以把二维空间投射到三维空间,展开之后是:
K ( 鹿 晗 , 关 晓 彤 ) = ( 鹿 晗 2 , 2 鹿 晗 × 关 晓 彤 , 关 晓 彤 2 ) K(鹿晗,关晓彤) =(鹿晗^2,\sqrt{2}鹿晗\times 关晓彤,关晓彤^2) K(鹿,)=(鹿2,2 鹿×,2)
这样就把二维特征变成了三维,多了一维 鹿 晗 × 关 晓 彤 鹿晗\times 关晓彤 鹿× ,代表着某条微博里鹿晗和关晓彤同时出现。
结果大家都知道了,鹿晗关晓彤同时出现的那条微博超级火,把新浪服务器都挤爆了。

举一个知乎上王赟 Maigo的例子。
目标:区分红色和黑色两部分在这里插入图片描述
可以看到图一中明显不是线性可分的,图三可看出是二维曲线,但是通过核函数映射到三维,可以明显看到中间绿色的部分将原图线性可分了。
我们现在考虑核函数 k ( v 1 , v 2 ) = &lt; v 1 , v 2 &gt; 2 k(v_1,v_2) = &lt;v_1, v_2&gt;^2 k(v1,v2)=<v1,v2>2,即“内积平方”。
这里面 v 1 = ( x 1 , y 1 ) v_1 = (x_1,y_1) v1=(x1,y1), v 2 = ( x 2 , y 2 ) v_2 = (x_2,y_2) v2=(x2,y2)是二维空间中的两个点。
这个核函数对应着一个二维空间到三维空间的映射,它的表达式是:
P ( x , y ) = ( x 2 , ( 2 ) x y , y 2 ) P(x, y) = (x^2, \sqrt(2)xy, y^2) P(x,y)=(x2,( 2)xy,y2)
可以验证,
&lt; P ( v 1 ) , P ( v 2 ) &gt; = &lt; ( x 1 2 , 2 x 1 y 1 , y 1 2 ) , ( x 2 2 , 2 x 2 y 2 , y 2 2 ) &gt; &lt; P(v_1), P(v_2) &gt; = &lt;(x_1^2, \sqrt2x_1y_1, y_1^2), (x_2^2, \sqrt2x_2y_2, y_2^2)&gt; <P(v1),P(v2)>=<(x12,2 x1y1,y12),(x22,2 x2y2,y22)>
= x 1 2 x 2 2 + 2 x 1 x 2 y 1 y 2 + y 1 2 y 2 2 = x_1^2x_2^2 + 2x_1x_2y_1y_2 + y_1^2y_2^2 =x12x22+2x1x2y1y2+y12y22
= ( x 1 2 x 2 + y 1 y 2 ) 2 = (x_1^2x_2 + y_1y_2)^2 =(x12x2+y1y2)2
= &lt; v 1 , v 2 &gt; 2 = &lt;v_1,v_2&gt;^2 =<v1,v2>2
= K ( v 1 , v 2 ) =K(v_1, v_2) =K(v1,v2)

现实生活中有很多非线性非常强的特征 而核方法能够捕捉它们。核技巧(kernel trick)的作用,一句话概括的话,就是降低计算的复杂度,甚至把不可能的计算变为可能。
在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:

  1. 线性: K ( v 1 , v 2 ) = &lt; v 1 , v 2 &gt; K(v_1,v_2) = &lt;v_1,v_2&gt; K(v1,v2)=<v1,v2>
  2. 多项式: K ( v 1 , v 2 ) = ( γ &lt; v 1 , v 2 &gt; + c ) n K(v_1,v_2) = (\gamma&lt;v_1,v_2&gt;+c)^n K(v1,v2)=(γ<v1,v2>+c)n
  3. Radial basis function: K ( v 1 , v 2 ) = exp ⁡ ( − γ ∣ ∣ v 1 − v 2 ∣ ∣ 2 ) K(v_1,v_2)=\exp(-\gamma||v_1-v_2||^2) K(v1,v2)=exp(γv1v22)
  4. Sigmoid: K ( v 1 , v 2 ) = tanh ⁡ ( γ &lt; v 1 , v 2 &gt; + c ) K(v_1,v_2)=\tanh(\gamma&lt;v_1,v_2&gt; + c) K(v1,v2)=tanh(γ<v1,v2>+c)
    举的例子是多项式核函数中 γ = 1 , c = 0 , n = 2 \gamma = 1,c = 0,n = 2 γ=1c=0n=2的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值