K近邻算法
k近邻算法没有显示的学习过程。算法在预测的时候会根据输入实例到训练集中找出k个与输入实例最近的k个点。k个点中多数属于某个类,就将这个输入实例归为这个类,k为1的时候这个算法也称为最近邻算法。
整个过程表述如下:
假设训练集为:
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
yi∈{c1,c2,⋯}
假设输入实例最近的k个点都属于 Nk(x) ,这样的话根据分类决策规则(下面是以多数表决为例)来决定x的类别,如下:
y=arg maxcj∑xi∈Nk(x)I(yi=ci), i=1,2,3,⋯,N; j=1,2,3,⋯
K近邻算法的三要素
影响k近邻算法的三个主要因素,距离度量,k值的选择以及分类决策规则。这三者以及训练集确定时,其输出结果也确定。
距离度量
为了反映特征空间中两个点间的距离大小,这里需要度量手段来反映,平时常见的有欧式距离,
Lp
距离等等。其中
Lp
距离的定义如下:
假设特征空间为
X
,
xi,xj∈X,xi=(x(1)i,x(2)i,⋯,x(n)i)T
,
xi
与
xj
之间的距离如下所示:
Lp(xi,xj)=(∑l=1n|x(l)i−x(l)j|p)1p
p为2就是欧式距离,为1就是哈曼顿距离。
K值的选择
K值越小,模型对于输入实例附近的噪声就越敏感,模型也就越容易过拟合。而K值过大,会导致远离输入实例的点也会对预测产生影响,从而引入误差。
一般而言,k会取一个较小的值,然后通过交叉验证的效果来调整k的大小。
分类决策规则
在得到最近的k个点后,如何得到要预测的点的分类就是分类决策需要解决的问题。而前面提到的多数表决就是一种等价于经验风险最小的决策规则(这里不是特别理解希望有大神能证明一下为什么等价于经验风险最小)。