KNN

来源:互联网 发布:js性能测试代码 编辑:程序博客网 时间:2024/06/07 17:57

(笔记总结需要!目前粗糙潦草,后期会不断修改。若对您造成不便,望请见谅!!)

2. KNN

参考链接:http://www.hankcs.com/ml/k-nearest-neighbor-method.html

2.1 KNN算法

给定一个训练数据集,对新的输入实例,在训练数据集中找到跟它最近的k个实例,根据这k个实例的类判断它自己的类(一般采用多数表决的方法)。

image

KNN模型:
三要素:距离度量方法、K值选择和分类决策规则。

距离度量:
对n维实数向量空间Rn,经常用Lp距离或曼哈顿Minkowski距离。

Lp距离定义如下:
image

当p=2时,称为欧氏距离:
image

当p=1时,称为曼哈顿距离:
image

当p=∞,它是各个坐标距离的最大值,即:
image

如下图:
image

K值选择:
K较小,容易被噪声影响,易发生过拟合。
K较大,较远的训练实例也会用于预测,易发生错误。

分类决策规则:
使用0-1损失函数衡量,那么误分类率是:
image
Nk是近邻集合,要使左边最小,右边的右边.png必须最大,所以多数表决=经验最小化。

KNN算法实现:KD树

构造KD树:
对数据集T中的子集S初始化S=T,取当前节点node=root取维数的序数i=0,对S递归执行:
找出S的第i维的中位数对应的点,通过该点,且垂直于第i维坐标轴做一个超平面。该点加入node的子节点。该超平面将空间分为两个部分,对这两个部分分别重复此操作(S=S’,++i,node=current),直到不可再分。

例:image

可视化如图:
image

搜索KD树:

原创粉丝点击