1 Curse of dimensionality
我们知道,k-NN算法是一种非常简单又很有效果的算法,它的核心思想就是局部近似。究其原因,就是因为它可以很好地对条件期望进行近似,一方面它用样本均值代替了期望,另一方面它用给定某个点的邻域代替了该点,结合起来,就是用在邻域内的样本均值,取代了在该点处的条件期望。
但是,在高维问题中,k-NN会逐渐变得无效。为什么?还要从高维问题的一些特点说起。
首先,高维空中的样本,分布非常稀疏。假设有一个单位体积的超立方体(hypercube),即每个维度的“边长”都为1,它的“体积”也为1,而样本在里面均匀分布。如果我们想要取到它一定比例r的样本,也即取该超立方体r比例的体积,那么,每条边应该取多少的比例范围?很简单,每个边长应取ep(r)=r1/p。如果在10维空间中,仅仅想取它10%的体积,就应取每条边的e10(0.1)=0.80的长度,也就是对每条边都要取80%的范围。
第二,高维空间中的样本,几乎都分布在“边缘”处。考虑p维空间中的N个样本,假设它们均匀分布在一个单位球中,球心就在原点,那么,距离原点最近的那个样本,它到原点的“距离”的中位数是多少?令D=mini{∥xi∥}为各样本到原点距离的最小值,计算它的累积分布函数
=====F(d)Pr(D≤d)1−Pr(D>d)1−i=1∏NPr(∥xi∥>d)1−i=1∏N[1−Pr(∥xi∥≤d)]1−[1−dp]N
想知道距离的中位数,只需让累积分布函数取值1/2即可。可以算出,最近距离的中位数d(N,p)=[1−(1/2)1/N]1/p。比如p=10,N=500的话,d(10,500)≈0.52,也就是说,离原点最近的那个点,就已经在一半距离以外了。
第三,在高维中,采样密度与N1/p成比例。如果在1维时我们采样100个点,那么在10维时我们需要采样10010个点才能维持一样的采样密度。
2 高维问题举例
2.1 高维中的1-NN
设定:N=1000,X为p维随机变量,且在[−1,1]p上均匀分布,Y=f(X)=exp(−8∥X∥2),记训练集为T,我们要用1-NN去预测x0=0处的y0。当然,我们已经知道了答案y0=f(x0)=1。
可以对MSE(mean squared error,均方误差)做分解:
==MSE(x0)ET[f(x0)−y^0]2[f(x0)−ET(y^0)]2+ET[ET(y^0)−y^0]2
最后一个等式是因为ET{[f(x0)−ET(y^0)](ET(y^0)−y^0)}=0。第一部分为bias的平方,第二部分为variance。
在p=1时,1-NN算法找的最近的点,很可能不会在0处,因此必有ET(y^0)<0,但由于此时N=1000比较大,找的点基本上会离x0比较近,因此bias和variance都不会太大。
但在高维时,问题就开始出现了。比如p=10,那么如上文所说,到原点的最短距离会大大增加:有99%以上的样本,到x0=0的最近距离会大于0.5。因此预测的y^0有很高的概率接近于0,bias会非常大,就算variance很小,也会导致MSE接近于1了。
有时候不一定是bias过多影响了MSE,比如真正的函数关系只与其中几个维度有关的话,如f(X)=(X1+1)3/2,此时,bias不会太大,在MSE中是variance起了决定性作用。
2.2 高维中的LS
设定:真实的变量关系为y=Xβ+ϵ,其中ϵ∼N(0,σ2IN)且与X无关,我们还是要估计x0处的y0。
首先利用最小二乘法,我们有β^=(X′X)−1X′y=β+(X′X)−1X′ϵ,y^0=x0′β^=x0′β+x0′(X′X)−1X′ϵ,在这里,我们关注在x0处的expected (squared) prediction error(期望预测误差)EPE(x0)=Ey0∣x0ET(y0−y^0)2。
与2.1节中的情况相比,这里多了一个扰动项ϵ,我们将y0−y^0拆解为两部分:
y0−y^0=(y0−x0′β)+(x0′β−y^0)
由简单的计算,可将第一项的平方项化为Ey0∣x0ET(y0−x0′β)2=σ2,将第二项的平方项化为
并且,由于ET(y^0)=x0′β+x0′ET[(X′X)−1X′ϵ],再利用ET[(X′X)−1X′ϵ]=EXEY∣X[(X′X)−1X′ϵ]=EX[(X′X)−1X′EY∣X(ϵ)]=0,可知ET(y^0)=x0′β,上式第一项即bias的平方为0,最终只剩variance,并可进一步化为
====Ey0∣x0ET(x0′β−y^0)2ET[ET(y^0)−y^0]2ET[x0′(X′X)−1X′ϵϵ′X(X′X)−1x0]x0′EX[(X′X)−1X′[EY∣X(ϵϵ′)]X(X′X)−1]x0x0′EX[(X′X)−1]x0σ2
最后,再次利用ET(y^0)=x0′β,交叉项为
==2Ey0∣x0ET[(y0−x0′β)(x0′β−y^0)]2Ey0∣x0[(y0−x0′β)ET(x0′β−y^0)]0
汇总以上3个结果,有:
EPE(x0)=Ey0∣x0ET(y0−y^0)2=σ2+x0′EX[(X′X)−1]x0σ2
若T为随机抽取的样本,假定E(x)=0,当N→∞时,X′X→NCov(x),再对于所有x0取期望,有
∼===Ex0EPE(x0)σ2+Nσ2Ex0[x0′Cov(x)−1x0]σ2+Nσ2tr[Cov(x)−1Ex0(x0x0′)]σ2+Nσ2tr(Ip)σ2+Npσ2
可以看出,EPE会随着p的增加而增加。
参考文献
- Friedman, Jerome, Trevor Hastie, and Robert Tibshirani. The elements of statistical learning. Vol. 1. No. 10. New York: Springer series in statistics, 2001.