K近邻法原理及数学推导

K近邻法

K近邻法(k-nearest neighbor,K-NN)是一种基本的分类与回归方法,但是没有显示式的学习过程。对于新输入的实例,它直接根据其k个最近邻训练实例的类别,通过多次表决的方式进行预测(这里表决的意思就是通过k个训练实例中各类的占比来确定新实例的类别),而非通过对训练数据的学习得到模型然后对新实例进行预测。其基本的三要素为-k值的选择、距离度量及分类规则。

K近邻算法

K近邻法原理及数学推导_第1张图片
式(3.1)是将k个近邻点分属于各个类的个数,以确定哪个类中包含的近邻点最多,以此确定新实例的类别。
当然,在这个算法中,k值的选择明显比距离度量的方式选择对于算法的影响要更大,距离度量我们一般选择欧氏距离,k值的选择倒是较为麻烦,k值选小了会导致估计误差增大,容易过拟合,选较大值可以减少学习的估计误差,但会增加近似误差,参与预测的训练实例邻域过大会导致较远的实例也能对预测结果产生影响,是预测发生错误。最好的确定k值的方法是进行交叉验证。
而分类规则的确定,我们还是从损失函数出发,如果损失函数为0-1损失函数,而分类函数为在这里插入图片描述
则误分类的概率为在这里插入图片描述
误分类率为在这里插入图片描述
其中Nk(x)为实例x的最近邻k个点的集合,Cj为x正确的分类类别。
因此,要使得经验风险最小化,就要使得在这里插入图片描述
最大,这就说明多数表决规则等价于经验风险最小化规则。

kd树

由上可知,实现k近邻法的主要问题是能够确定k个近邻点,但一般来讲,训练数据容量都较大,要达到这个目的需要有一个高效对k近邻进行搜索的方法,当然,线性扫描的方法是最简单的,但效率明显不能满足要求,我们这里考虑使用特殊的存储结构来存储训练数据以便于进行搜索。此处选择的便是kd树。

构造kd树

此处的k并不是上面所说的k值,而是单纯的训练数据的维数。

kd树首先是二叉树,用于对k维空间中的实例点进行存储,表示对k维空间的划分。构造kd树就相当于不断用垂直于坐标轴的超平面将k维空间切分,构成一系列的k维超矩形区域。
构造平衡kd树方法:
K近邻法原理及数学推导_第2张图片
K近邻法原理及数学推导_第3张图片
例如:
K近邻法原理及数学推导_第4张图片
计算(2,4,5,7,8,9)中位数为7,然后计算(1,2,3,4,6,7)中位数为4,如此递归下去直至仅剩一个节点。
kd树的最近邻搜索法:
K近邻法原理及数学推导_第5张图片
K近邻法原理及数学推导_第6张图片

你可能感兴趣的:(机器学习,统计学习方法,机器学习,算法)