注意:这里将的核函数和讲希尔伯特空间提到的核函数不是一回事,这里的核函数仅仅作为一种局部化的表示工具。而另一种核函数是在高维空间内计算内积,解决非线性问题的。
基本思想是使用靠近目标点
x0
处的点来生成预测模型。
我们通常使用权重函数或者核数
Kλ(x0,xi)
,来达到函数光滑的效果。这两种方法都是参考
xi到x0
的距离,给
xi
赋予一个权重。越靠近
x0
的权重越大,对
x0
的预测值的影响越大。
注:核函数 Kλ 使用 λ 来索引, λ 代表邻域的宽度
这种方法还可以称为 memory−based methods ,大意就是说模型其实就是数据集本身,在预测的时候完成训练。
一维空间
图中:k近邻方法,
(xi,yi)
,i=1,…,100,K=30。
左图直接使用平均数预测
y0
,可以发现左图的平均数是不光滑,不连续的。为了解决这种问题,我们给参与预测的
yi
赋上权重。
Nadaraya−Watson kernel−weighted average
f(x0)=∑Ni=1Kλ(x0,xi)yi∑Ni=1Kλ(x0,xi)Kλ(x0,x)=D(|x−x0|λ)
D(t)=⎧⎩⎨34(1−t2), |t|≤10, other
通过上面的方法就能得到右图。
直观的理解就是:假设我们将 x0 从左向右移动,刚进入邻域的点的权值为0,慢慢增大。权重作用的区域是通过 λ 来调节。
为了使上述核函数更有一般性,我们可以使用 hλ(x0) 来表示宽度函数(之前我们使用 λ 来表示宽度):
Kλ(x0,x)=D(|x−x0|hλ(x0))
- hλ(x0) 在KNN里面就是 x0 近邻个数 k
- 上面的例子里
hλ 就是 λ
局部线性回归
通过使用核权重的方法,我们可以获得光滑的曲线
。但是,核函数不具有对称性,因此,当
x0
处于边界
位置的时候,预测会出现问题。如图显示的红色点。
我们可以使用局部线性回归:
注:
我们可以换一种形式来写预测函数:
f^(x0)=α^x0+β^x0x0 ,也就是说 α^(x0)和β^(x0) 是预测函数的系数,它们不是 x0 的函数。
我们可以显示地给出预测函数:
- b(x)T=(1,x)
- B∈RN×N,Bi=b(xi)T
- W∈RN×N,Wi=Kλ(x0,xi)
注:这式子怎么推导我没想出来,但是和线性回归里的函数挺像的:
y^=Xβ^=X(XTX)−1XTy
- b(x0) → X
- BT → BTW(x0)
通过这个式子,我们可以发现预测函数是关于 yi 的线性函数。
模型bias分析
Ef^(x0)=∑i=1Nli(x0)f(xi)=f(x0)∑i=1Nli(x0)+f′(x0)∑i=1N(xi−x0)li(x0)+f′′(x0)2∑i=1N(xi−x0)2li(x0)+R
又因为
b(x0)T=b(x0)T(BTW(x0)B)−1BTW(x0)B(1,x0)=b(x0)T(BTW(x0)B)−1BTW(x0)[1,x0]
所以
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1x0=b(x0)T(BTW(x0)B)−1BTW(x0)1=∑i=1Nli(x0)=b(x0)T(BTW(x0)B)−1BTW(x0)x0=∑i=1Nli(x0)xi
所以
∑i=1Nli(x0)=1∑i=1N(xi−x0)li(x0)=0
所以
bias=Ef^(x0)−f^(x0)=f′′(x0)2∑i=1N(xi−x0)2li(x0)+R
所以我们可以看到 bias 依赖于二阶及以上导数。
局部多项式回归
多项式回归的表达形式如下:
|||l(x0)| 随着维度 d 增大而增大。
部分证明参考: 习题答案