K近邻(KNN)算法是基于实例的算法,如果训练样本数量庞大,预测的时候挨个计算距离效率会很低下,如何破解?
K近邻(KNN)是最简单的算法之一,它计算预测样本与训练数据集中每个数据点之间的距离,并找到K个最近的样本数据。
当我们使用最近邻搜索算法时,它将所有的数据点与上述的查询点进行比较,找到最近的K个点。
有很多方法可以求出两个数据点之间的距离。最常用的距离度量是“欧氏距离”和“汉明距离”。
设想这样一种情况:你的任务有数千万个训练样本,每次算法都会将预测数据与所有训练数据进行比对。它不是计算量很大吗?
此外,数据点越大,所需的计算量也就越大。很明显!
KNN搜索计算每个距离的时间复杂度为O(N)。对于有K个邻居搜索的KNN,只有当我们保持一个优先队列返回最近的K个观测值时,时间复杂度才为O(log(K)*N)。因此,对于大数据或者互联网场景下的数据集,KNN似乎对计算得要求要求很高。那么,有没有其他方法可以替代KNN模型的最近距离计算的算法,它使用类似的方法,但也可以是有效的时间?
令人开心的是,KD树和Ball树就是用来解决这个问题的。
标签:KNN,距离,算法,计算,训练样本,数据 来源: https://blog.csdn.net/zhongkeyuanchongqing/article/details/118253681
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。