聊聊机器学习KNN理论实现的思考

KNN详述

以KNN理论模型为例:

给定一个新样本点时,只需要在训练集中找到距离最近的 k 个样本点,按照一定的决策规则得到新样本点的预测结果。

整个预测过程由三个基本要点组成,分别是:距离、k 值、决策规则。

距离

距离的定义中常见的有欧式距离(EuclIDEAn distance),也被称为 2-范数距离;向量点积;cos余弦值等。

K值

一般 k 值会取一个相对较小的值,并通过交叉验证的方式得到一个最优的 k 值。

决策规则

决策规则一般是采用“少数服从多数”的思想。对于分类问题,这 k 个最近的样本中分类最多的类型即为该新样本点的类型;对于回归问题,将这 k 个最近的样本对应的标签值进行平均即为该新样本点的预测值。

算法内容

  1. 保存训练集
  2. 查询最近的 k 个样本点
  3. 返回这 k 个样本点的标签平均值或返回这 k 个样本点分类最多的类型

可以看到算法中最核心的方法就是查询最近的 k 个样本点,其中一个最简单的方法就是线型扫描,即遍历整个训练集进行搜索,但当训练集中的样本数过大时,该方式需要对每一个训练样本计算距离,往往过于耗时,这时可以考虑使用一个数据结构来组织并存储一开始的训练集,在搜索阶段减少对距离的计算次数,以达到快速检索的目的。

数据结构&算法

通过某种数据结构&算法解决数据查询的问题;即组织原始数据集,加速后续的查询。

K-D Tree

K-D树(K-Dimensional Tree),全称为K维空间中的划分数据结构,是一种在k维空间中存储k维数据点的数据结构,常用于多维空间的查询,比如在多维空间中快速查找最近邻点。

适用场景:在样本不大、维度不多的情况下,可以精确快速地查询出最近邻。

Annoy 算法

Annoy(Approximate Nearest Neighbors Oh Yeah)算法是一种用于高效查找最近邻居的高性能算法,通常用于信息检索、推荐系统、机器学习等领域。它的核心思想是通过构建一种森林(Forest)的数据结构,使得在查询一个点的时候,可以快速地找到它的近似邻居。

适用场景:适合于大规模、数百维特征 数据集的近似查询。

总结

综上所述,对于KNN理论的实现,首先是理论的铺垫,然后是 数据结构&算法 组织起数据集,提供存储与查询检索等功能;对于所有的算法理论实现都是如此。

程序 = 数据结构 + 算法

聊聊机器学习KNN理论实现的思考

参考

机器学习算法系列(二十一)-k近邻算法(k-Nearest Neighbor / kNN Algorithm)[1]

机器学习算法系列(二十二)-近似k近邻算法-Annoy(Approximate Nearest Neighbor / ANN)[2]

参考资料
[1]

机器学习算法系列(二十一)-k近邻算法(k-Nearest Neighbor / kNN Algorithm): https://blog.csdn.net/sai_simon/article/details/124209904

[2]

机器学习算法系列(二十二)-近似k近邻算法-Annoy(Approximate Nearest Neighbor / ANN): https://blog.csdn.net/sai_simon/article/details/124960727


原文始发于微信公众号(阿郎小哥的随笔驿站):聊聊机器学习KNN理论实现的思考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/244135.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!