KNN过时了!ANNs比它快了整整380倍

本文探讨了KNN算法在大规模数据中的效率问题,提出近似最近邻(ANN)算法,如HNSW,作为解决方案。HNSW通过多层图结构实现快速而准确的近似搜索,实验证明在寻找大量数据的最近邻时,HNSW的速度比KNN快了380倍,同时保持高准确性。结论指出,HNSW是KNN的有效替代方案。
摘要由CSDN通过智能技术生成

全文共5889字,预计学习时长15分钟

 

KNN过时了!ANNs比它快了整整380倍

图源:Google

我们正在经历一场灭绝性的大事件,颇受欢迎的KNN算法正面临淘汰,而几乎每门数据科学课上都会学习这种算法!

 

KNN背景

 

寻找与给定项目的K个相似项的做法在机器学习界被广泛称为“相似”搜索或“最近邻”(NN)搜索。最广为人知的最近邻搜索算法便是K最近邻(KNN)算法。

 

它的用途很广,在已有的物品集如手机电商目录中,运用KNN,便可以从这一整个目录中找到一个少数(K)最近邻来发起新的搜索请求。

 

比如说,在下面这个例子中,如果将K设为3,那每一个“iphone”的3最近邻便是其他“iphone”。类似地,对每一个“Samsung”的3最近邻便是所有的Samsungs。

KNN过时了!ANNs比它快了整整380倍

6款手机的目录

KNN的问题

 

尽管KNN很适合寻找类似项,但是它使用的是穷尽匹配距离计算方法。如果数据中有1000项的话,要找到一个新产品中K=3的最近邻,该算法就会把新产品与数据库中其他产品一起执行1000次距离计算。

 

这还不算太糟糕。但试想在现实中,顾客对顾客(C2C)的市场数据库里有着上百万的产品,并且每天都可能会上传新的产品。把新产品与所有数百万的产品进行比对的做法确实太浪费时间了,也就是说根本无法拓展。

 

解决方法

 

让最近邻在大量的数据中也适用的解决方法就是彻底规避这种暴力的距离计算法,代之以更复杂的一类算法,名为近似最近邻(ANN)。

KNN过时了!ANNs比它快了整整380倍

 

近似最近邻(ANN)

 

严格来说,近似最近邻这种算法在最近邻搜索中允许少量的错误。但在现实中的C2C市场里,“真正的”最近邻的数字要比被搜索的“K”最近邻高。相比暴力的KNN,ANN能够在短时间内达到惊人的准确率。下列有几种ANN算法:

 

· Spotify的【ANNOY】

· Google的【ScaNN】

· Facebook的【Faiss】

· 还有个人最爱:分层可导航小世界图【HNSW】

 

下面我们把焦点从Python的 sklearn中的KNN算法转向在Python的hnswlib 包中的HNSW图这一出色的ANN算法。接下来将使用大型的【Amazon product dataset】,其中包含‘手机&配件’分类中的527000个产品,以此来证明HNSW的速度非常快(准确说是快380倍),同

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值