K近邻法(k-NN)

  1. \(k-NN\)的分类模型

1.1. 三要素: \(k\)值的选择、距离度量、分类决策规则
1.2. 算法过程:输入训练集 \(T\),根据某种距离度量,在 \(T\)中找到与实例 \(x\)最近的 \(k\)个点,再在这 \(k\)个点中根据分类决策规则(如多数表决),决定 \(x\)的类别 \(y\)

  1. \(k-NN\)的分类模型的实现算法

2.1. 构造 \(kd\)树( \(kd\)树的 \(k\)是数据 \(x\)的特征维度与上面的超参数 \(k\)不同)
2.1.1. 根据数据中第1维的中位数来切分,切分后得到两个子集,并将在切分超平面上的实例点作为根节点。
2.1.2. 对两个子集分别切分,第2次切分的是第2维,切分后分别得到两个子集,并保留在切分超平面上的实例点于树的结点中。
2.1.3. 第k次切分的是第k维,第k+1次切分的是第1维。
2.1.4. 切分至实例点都分配到了树的结点中(切分后的子集为空)。

2.2. 搜索 \(kd\)
2.2.1. 用目标点 \(x\)\(kd\)树中依次比较各维度的数值, \(x\)的小了就走 \(kd\)树的左子树,大了走右子树,直至叶子节点,并以此叶子节点为“当前最近邻点 \(p\)”。
2.2.2. 然后往上回退,以 \(x\)为圆心,以 \(x\)与点 \(p\)间的距离为半径,若非叶结点 \(q\)\(x\)的距离小于该半径,则往下搜索至叶子节点,并更新“当前最近邻点 \(p\)”。
2.2.3. 重复操作,直至回到根节点,则此时“当前最近邻点 \(p\)”就是目标点 \(x\)的最近邻点。
2.2.4. 如果 \(k\)值大于1,则用长度为 \(k\)的队列储存这些最近邻点。

posted @ 2020-08-27 23:52  Da熊猫  阅读(155)  评论(0)    收藏  举报