机器算法学习笔记1----原理篇k近邻法(knn)

算法思想

给定一个训练数据集,对于新的输入实例,在数据集中找到与该实例最邻近的k个实例,这k个实例多数属于哪一类,就把该输入实例分为这个类。

优点:精度高、对异常值不敏感、无数据输入假定。

缺点:计算复杂度高、空间复杂度高。

模型

三要素:k值选择,距离度量,分类决策规则

k值选择:应用中k值一般取一个比较小的数值,通常采用交叉验证选取最优的k值。

距离度量:lp距离,欧氏距离(p=2),曼哈顿距离(p=1),切比雪夫距离(p=无穷)

分类决策规则:多数表决

实现

特征维数大及训练数据容量大时,可以使用特殊的结构存储训练数据,以减少计算距离的次数。比如kd树。

1.kd树的构造

(1)构造根节点,选择第一维坐标中位数的位置(根节点)为切分点,将该维度分为两部分。

(2)下一维度切割。

(3)所有点切分完毕停止。

tip:切割维度的选择可以使用方差,选择方差大的维度进行切割。网址:https://blog.csdn.net/carryheart/article/details/78142283

2.kd树搜索     原文:https://blog.csdn.net/losteng/article/details/50893739

从root节点开始,DFS搜索直到叶子节点,同时在stack中顺序存储已经访问的节点。
如果搜索到叶子节点,当前的叶子节点被设为最近邻节点。
然后通过stack回溯:
如果当前点的距离比最近邻点距离近,更新最近邻节点.
然后检查以最近距离为半径的圆是否和父节点的超平面相交.
如果相交,则必须到父节点的另外一侧,用同样的DFS搜索法,开始检查最近邻节点。
如果不相交,则继续往上回溯,而父节点的另一侧子节点都被淘汰,不再考虑的范围中.
当搜索回到root节点时,搜索完成,得到最近邻节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值