0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

高維空間逼近最近鄰評測

zhKF_jqr_AI ? 來源:未知 ? 作者:胡薇 ? 2018-05-29 08:33 ? 次閱讀

最近鄰方法是機(jī)器學(xué)習(xí)中一個(gè)非常流行的方法,它的原理很容易理解:鄰近的數(shù)據(jù)點(diǎn)是相似的數(shù)據(jù)點(diǎn),更可能屬于同一分類。然而,在高維空間中快速地應(yīng)用最近鄰方法,卻是非常有挑戰(zhàn)性的工作。

全球最大的流媒體音樂服務(wù)商Spotify需要向上面的海量用戶推薦音樂,其中就用到了最近鄰方法。也就是在高維空間、大型數(shù)據(jù)集上應(yīng)用最近鄰方法。

由于維度高、數(shù)據(jù)規(guī)模大,直接應(yīng)用最近鄰方法并不可行,因此,最佳實(shí)踐是使用逼近方法搜索最近鄰。這方面有不少開源庫,比如Spotify開源的Annoy庫。Annoy庫的作者Erik Bernhardsson在開發(fā)Annoy的過程中發(fā)現(xiàn),盡管有成百上千的使用逼近方法搜索最近鄰的論文,卻很少能找到實(shí)踐方面的比較。因此,Erik開發(fā)了ANN-benchmarks,用來評測逼近最近鄰(approximate nearest neighbor,ANN)算法。

評估的實(shí)現(xiàn)

Annoy Spotify自家的C++庫(提供Python綁定)。Annoy最突出的特性是支持使用靜態(tài)索引文件,這意味著不同進(jìn)程可以共享索引。

FLANN 加拿大英屬哥倫比亞大學(xué)出品的C++庫,提供C、MATLAB、Python、Ruby綁定。

scikit-learn 知名的Python機(jī)器學(xué)習(xí)庫scikit-learn提供了LSHForest、KDTree、BallTree實(shí)現(xiàn)。

PANNS 純Python實(shí)現(xiàn)。已“退休”,作者建議使用MRPT。

NearPy 純Python實(shí)現(xiàn)?;诰植棵舾泄#↙ocality-sensitive hashing,簡稱LSH,一種降維方法)。

KGraph C++庫,提供Python綁定?;趫D(graph)算法。

NMSLIB (Non-Metric Space Library) C++庫,提供Python綁定,并且支持通過Java或其他任何支持Apache Thrift協(xié)議的語言查詢。提供了SWGraph、HNSW、BallTree、MPLSH實(shí)現(xiàn)。

hnswlib(NMSLIB項(xiàng)目的一部分) 相比當(dāng)前NMSLIB版本,hnswlib內(nèi)存占用更少。

RPForest 純Python實(shí)現(xiàn)。主要特性是不需要在模型中儲(chǔ)存所有索引的向量。

FAISS Facebook出品的C++庫,提供可選的GPU支持(基于CUDA)和Python綁定。包含支持搜尋任意大小向量的算法(甚至包括可能無法在RAM中容納的向量)。

DolphinnPy 純Python實(shí)現(xiàn)?;诔矫婢植棵舾泄K惴?。

Datasketch 純Python實(shí)現(xiàn)?;贛inHash局部敏感哈希算法。

PyNNDescent 純Python實(shí)現(xiàn)?;趉-近鄰圖構(gòu)造(k-neighbor-graph construction)。

MRPT C++庫,提供Python綁定?;谙∈桦S機(jī)投影(sparse random projection)和投票(voting)。

NGT: C++庫,提供了Python、Go綁定。提供了PANNG實(shí)現(xiàn)。

數(shù)據(jù)集

ANN-benchmarks提供了一些預(yù)先處理好的數(shù)據(jù)集。

結(jié)果

Erik提供了在AWS EC2機(jī)器(c5.4xlarge)上運(yùn)行測試的結(jié)果——跑了好幾天才跑完,費(fèi)用約100美元。

glove-100-angular

sift-128-euclidean

fashion-mnist-784-euclidean

gist-960-euclidean

nytimes-256-angular

glove-25-angular

從以上評測可以看出(越靠上、靠右,成績越好),幾乎在所有數(shù)據(jù)集上,排名前五的實(shí)現(xiàn)為:

HNSW(NMSLIB的低內(nèi)存占用版本),比Annoy快10倍。

KGraph位于第二,和HNSW的差距不算很大。和HNSW一樣,KGraph也是基于圖(graph)的算法。

SW-graph,源自NWSLIB的另一個(gè)基于圖的算法。

FAISS-IVF,源自Facebook的FAISS。

Annoy

在“評估的實(shí)現(xiàn)”一節(jié)中,我們看到,有不少使用局部敏感哈希(LSH)的庫。這些庫的表現(xiàn)都不是很好。在之前進(jìn)行的一次評測中,F(xiàn)ALCONN表現(xiàn)非常好(唯一表現(xiàn)優(yōu)良的使用局部敏感哈希的庫)。但是這次評測中,F(xiàn)ALCONN看上去退步得很厲害——原因未明。

從這次評測來看,基于圖的算法是當(dāng)前最先進(jìn)的算法(名列三甲的算法全都基于圖),特別是HNSW表現(xiàn)突出。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:高維空間最近鄰逼近搜索算法評測

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Python實(shí)現(xiàn)k-近鄰算法

    一數(shù)據(jù)與所屬分類的對應(yīng)關(guān)系。輸入沒有標(biāo)簽的新數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中數(shù)據(jù)對應(yīng)的特征相比較,然后算法提取樣本集中特征最相似數(shù)據(jù)(最近鄰)的分類標(biāo)簽。一般來說,我們只選擇樣本數(shù)據(jù)集中的前k個(gè)
    發(fā)表于 10-10 10:32

    基于Hilbert曲線的近似k-最近鄰查詢算法

    在低維空間中R樹的查詢效率較高,而在維空間中其性能急劇惡化,降維成為解決問題的關(guān)鍵。利用Hilbert曲線的降維特性,該文提出基于Hilbert曲線近似k-最近鄰查詢算法AKNN,分
    發(fā)表于 04-20 08:53 ?18次下載

    基于子空間樣本選擇的最近凸包分類器

    最近鄰凸包分類器需要求解測試樣本到訓(xùn)練集凸包距離的凸二次規(guī)劃問題,對于訓(xùn)練集規(guī)模較大的情況,有必要在分類之前進(jìn)行適當(dāng)?shù)臉颖具x擇。為此該文提出基于子空間樣本選擇
    發(fā)表于 04-20 09:47 ?23次下載

    改進(jìn)的共享型最近鄰居聚類算法

    聚類效果往往依賴于密度和相似度的定義,并且當(dāng)數(shù)據(jù)的維增加時(shí),其復(fù)雜度也隨之增加。該文基于共享型最近鄰居聚類算法SNN,提出了一種改進(jìn)的共享型最近鄰居聚類算法RSNN,
    發(fā)表于 05-16 11:38 ?11次下載

    基于SRM自組織多區(qū)域覆蓋的可拒絕近鄰分類算法研究

    該文依據(jù)區(qū)分與劃分相結(jié)合的可拒絕模式識別思路,提出了維空間海量訓(xùn)練樣本情況下的基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化決策的自組織多區(qū)域多球覆蓋可拒絕近鄰分類算法。該方法利用同類
    發(fā)表于 11-24 15:39 ?8次下載

    Spark下的并行多標(biāo)簽最近鄰算法

    隨著大數(shù)據(jù)時(shí)代的到來,大規(guī)模多標(biāo)簽數(shù)據(jù)挖掘方法受到廣泛關(guān)注。多標(biāo)簽最近鄰算法ML_KNN是一種簡單高效、應(yīng)用廣泛的多標(biāo)簽分類方法,其分類精度在很多應(yīng)用中都高于其他常見的多標(biāo)簽學(xué)習(xí)方法。然而隨著需要
    發(fā)表于 11-22 17:32 ?1次下載
    Spark下的并行多標(biāo)簽<b class='flag-5'>最近鄰</b>算法

    激光散亂點(diǎn)云K最近鄰搜索算法

    針對激光散亂點(diǎn)云的數(shù)據(jù)量大,且具有面型的特點(diǎn),為降低存儲(chǔ)器使用量,提高散亂點(diǎn)云的處理效率,提出了一種散亂點(diǎn)云K最近鄰(KNN)搜索算法。首先,利用多級分塊、動(dòng)態(tài)鏈表的存儲(chǔ)方式,只存儲(chǔ)非空的子空間編號
    發(fā)表于 12-11 14:09 ?1次下載

    路網(wǎng)環(huán)境下的最近鄰查詢技術(shù)

    最近鄰查詢作為基于位置服務(wù)的重要支持性技術(shù)之一,引起了眾多學(xué)者的廣泛關(guān)注和深入研究,相對于歐式空間而言,路網(wǎng)環(huán)境下的最近鄰查詢更貼近人們的生活,有著更重要的研究意義.路網(wǎng)環(huán)境下龐大的數(shù)據(jù)量和復(fù)雜
    發(fā)表于 12-18 14:14 ?0次下載
    路網(wǎng)環(huán)境下的<b class='flag-5'>最近鄰</b>查詢技術(shù)

    基于最近鄰距離分布的空間聚類方法

    基于最近鄰距離分布的空間聚類方法,這個(gè)算法是基于這樣一個(gè)假設(shè),假設(shè)在數(shù)據(jù)空間的某個(gè)特定部分,一個(gè)聚類內(nèi)部的點(diǎn)是均勻分布的。實(shí)驗(yàn)分析表明,該方法不僅能發(fā)現(xiàn)任意形狀的簇,而且對于大型空間數(shù)
    發(fā)表于 12-19 11:30 ?0次下載

    最近鄰的隨機(jī)非線性降維

    針對線性降維技術(shù)應(yīng)用于具有非線性結(jié)構(gòu)的數(shù)據(jù)時(shí)無法得到令人滿意的結(jié)果的問題,提出一種新的著重于保持維空間局部最近鄰信息的非線性隨機(jī)降維算法( NNSE)。該算法首先在
    發(fā)表于 12-23 11:45 ?0次下載

    人工智能機(jī)器學(xué)習(xí)之K近鄰算法(KNN)

    K近鄰KNN(k-Nearest Neighbor)算法,也叫K最近鄰算法,1968年由 Cover 和 Hart 提出,是機(jī)器學(xué)習(xí)算法中比較成熟的算法之一。K近鄰算法使用的模型實(shí)際上對應(yīng)于對特征
    發(fā)表于 05-29 06:53 ?2852次閱讀

    解決復(fù)雜數(shù)據(jù)最近鄰問題的通用方法

    為了找到最近鄰,通常所用的方法是將數(shù)據(jù)分成好幾份。假設(shè)你的數(shù)據(jù)就像在牧場中吃草的奶牛,給分散在草場中的牛群畫不同的圓圈,現(xiàn)在進(jìn)來了一頭新奶牛,問它會(huì)落在哪個(gè)圓圈里?可以肯定的是,這頭新奶牛的最近鄰一定也在這個(gè)圈里。
    的頭像 發(fā)表于 08-16 09:24 ?2288次閱讀

    一種基于自然最近鄰的密度峰值聚類算法

    最近鄰的密度峰值聚類算法( Density Peaks Clusteringbased on Natural Nearest Neighbor,NNN-DPC)。該算法無需指定任何參數(shù),是一種非參數(shù)
    發(fā)表于 04-08 11:18 ?12次下載
    一種基于自然<b class='flag-5'>最近鄰</b>的密度峰值聚類算法

    基于改進(jìn)的Canopu和共享最近鄰的聚類算法

    為輔助銀行機(jī)構(gòu)進(jìn)行精準(zhǔn)的服務(wù)推薦,提出了基于改進(jìn)的Caηopy和共享最近鄰相似度的聚類算法?;谠撍惴▽τ脩暨M(jìn)行細(xì)分,針對用戶群特點(diǎn)進(jìn)行精準(zhǔn)服務(wù)推薦。該算法首先采用最大值和最小值對 Canopy算法
    發(fā)表于 04-28 11:44 ?2次下載
    基于改進(jìn)的Canopu和共享<b class='flag-5'>最近鄰</b>的聚類算法

    針對大規(guī)模維數(shù)據(jù)的最近鄰檢索方法

    本文針對大規(guī)模維數(shù)據(jù)近鄰檢索中的瓶頸問題,提岀基于向量量化的一種檢索方法一簇內(nèi)乘積量化樹方法。該方法運(yùn)用向量量化和乘積量化的多層樹狀結(jié)構(gòu)高效表征大規(guī)模維數(shù)據(jù)集,與現(xiàn)有方法相比降低了索弓表空桶率
    發(fā)表于 05-10 16:45 ?3次下載