文章目录
- k近邻 / KNN
- 主要思想
- 模型要素
- 距离度量
- 分类决策规则
- kd树
- 主要思想
- kd树的构建
- kd树的搜索
- 总结归纳
k近邻 / KNN
主要思想
假定给定一个训练数据集,其中实例标签已定,当输入新的实例时,可以根据其最近的
具体划分,
分类问题:对新的实例,根据与之相邻的 个训练实例的类别,通过多数表决等方式进行预测。
回归问题:对新的实例,根据与之相邻的
输入:训练集
其中:,实例
输出:实例 的所属的类
- 根据给定的距离度量,计算 与
- 在 中找到与 最邻近的 个点,涵盖这 个点的 的邻域记作
- 在 中根据分类决策规则(如多数表决)决定 的类别
模型要素
距离度量
距离:特征空间 假设为 ,则有
欧氏距离(Euclidean distance) :
曼哈顿距离(Manhattan distance) :
切比雪夫距离(Chebyshev distance) = :
分类决策规则
分类函数:
0-1 损失函数:
误分类概率:
给定实例 ,相应的 邻域 ,类别为 ,误分类率:
最小化误分析率,等价于:
kd树
主要思想
kd 树是一种对
本质:二叉树,表示对 维空间的一个划分。
构造过程:不断地用垂直于坐标轴的超平面将 维空间切分,形成 维超矩形区域。
kd 树的每一个结点对应于一个
kd树的构建
输入: 维空间数据集:
其中,
输出:kd 树
- 开始:构造根结点。
- 选取 为坐标轴,以训练集中的所有数据 坐标中的中位数(数据集为偶数时,中位数+1)作为切分点,将超矩形区域切割成两个子区域,将该切分点作为根结点。
由根结点生出深度为 1 的左右子结点,左结点对应坐标小于切分点,右结点对应坐标大于切分点。
- 重复:
- 对深度为 的结点,选择 为切分坐标轴(切分应垂直于坐标轴), ,以该结点区域中所有实例 坐标的中位数作为切分点,将区域分为两个子区域。
生成深度为
- 直到两个子区域没有实例时停止。
kd树的搜索
输入:已构造的 kd 树,目标点
输出:
- 寻找“当前最近点“
- 从根结点出发,递归访问 kd 树,找出包含 的叶结点(kd 树的每一个结点对应一个超矩形区域);
- 以此叶结点为"当前最近点";
- 回溯
- 若该结点比“当前最近点”的距离目标更近,更新“当前最近点”;
- 当前最近点一定存在于该结点一个子结点对应的区域,检查子结点的父结点的另一子结点(子结点的兄弟结点)对应的区域是否有更近的点。
- 当回退到根结点时,搜索结束,最后的“当前最近点”即为
目标点的最近邻一定在以目标点为中心并通过当前最近点的超球体的内部。
如果父结点的另一个子结点的超矩形区域与超球体相交,那么在相交的区域内寻找与目标点更近的实例点。
总结归纳
- 较小的 值,学习的近似误差减小,但估计误差增大,敏感性增强,而且模型复杂,容易过拟合。
较大的 - 分类决策规则使用 0-1 损失函数,因为分类问题只有分类正确和分类错误两种可能。
- kd 树构建时对于超平面的划分,二位空间划分为矩形,三维空间划分为长方体。
- 构建完成的 kd 树,类似于二叉排序树,每一层代表着一个维度。
- kd 树的搜索,类似于二叉排序树的搜索过程。
- kd 树更适用于训练实例数远大于空间维数时的