3.1 k近邻法介绍
k近邻法是一种基本的分类与回归方法。对于分类问题,给定训练数据集和实例标签。分类时,对新的实例,根据k个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻法不具有显示的学习过程。k近邻法实际上利用训练数据集对特征空间进行划分,并作为分类的“模型”。k值的选择、距离的度量和分类决策规则是k近邻法的三个基本要素。
k值的选择
k值的选择对k近邻算法具有较大影响。
如果选择的k值较小,相当于用较小的领域中的训练实例进行预测,“学习”的“近似”误差会减小,只有与输入实例较近的训练实例才会对预测结果起作用,“学习”的“估计”误差会增大,预测结果对近邻的实例点非常敏感。如果邻近的实例的恰巧是噪声,预测就会出错。所以,k值较小,相当于模型整体复杂度较高,容易发生过拟合。
如果选择的k值较大,相当于用较大的领域中的训练实例进行预测,“学习”的“近似”误差会增大,大量的训练实例对预测结果起控制作用,结果较远的点也会对预测起作用,“学习”的“估计”误差会减小,预测结果是众多结果的综合效果。。所以,k值较大,相当于模型整体复杂度较低,容易发生欠拟合。
距离的度量
k近邻模型的特征空间一般是n维实数向量空间,,,使用的距离是欧式距离,也可以使用其他距离,如更一般的距离。
设特征空间是n维实数向量空间,,,和的距离定义为():
当时,称为欧式距离:
当时,称为曼哈顿距离:
当时,
二维空间的不同取值与原点的距离为1的点的集合如下:
分类决策规则
多数表决规则(majority voting rule):如果分类损失函数为0-1损失函数,分类函数为:
则误分类概率:
对给定的实例,其最最近邻的k个训练实例点构成集合,如果涵盖的区域的类别是,则误分类率为:
要使误分类概率最小即经验风险最小,就要使最大,所以多数表决规则等价于经验风险最小化。
3.2 k近邻算法--kd树
平衡kd树
输入:k维空间数据集,其中;
输出:kd树
(算法描述略)
实例:
构造kd树:
最近邻分类:给定点(3, 5)实现最近邻搜索
1)首先从根节点(7,2)出发,将当前最近邻设为(7,2),对该k-d tree作深度优先遍历。以(3,5)为圆心,其到(7,2)的距离为半径画 圆(多维空间为超球面),可以看出(8,1)右侧的区域与该圆不相交,所以(8,1)的右子树全部忽略。
2)接着走到(7,2)左子树根节点(5,4),与原最近邻对比距离后,更新当前最近邻为(5,4)。以(3,5)为圆心,其到(5,4)的距离为半径 画圆,发现(7,2)右侧的区域与该圆不相交,忽略该侧所有节点,这样(7,2)的整个右子树被标记为已忽略。
3)遍历完(5,4)的左右叶子节点,发现与当前最优距离相等,不更新最近邻。所以(3,5)的最近邻为(5,4)。