如何在海量資料中查詢最相似的topk樣本

2021-07-22 01:34:26 字數 484 閱讀 9790

大概總結3中方法,不一定對,歡迎**

1:還記得knn演算法吧,選擇最近的k個樣本作為**輸出

其中減少計算量的地方在於使用了kd樹,使得查詢非常高效

先計算每個特徵的方差,降序排序構建二叉樹

對當前特徵排序,取中位數作為**節點,把資料劃分成2部分

對左右部分遞迴處理

搜尋最近鄰點:沿著路徑搜尋即可

當維數較大時,直接利用k-d樹快速檢索的效能急劇下降。

假設資料集的維數為d,一般來說要求資料的規模n滿足條件:

n遠大於2的d次方,才能達到高效的搜尋。

另乙個是改進的wand演算法

2:使用聚類演算法

時間複雜度為o(n*k*t) n為樣本數,k為聚類中心數,t為迭代次數

查詢相似樣本的時候就可以在本簇裡面查詢或者在相鄰的簇裡面查詢

3:使用hash**

對特徵simhash一次

這樣相似的樣本就會被對映到相鄰的位置

如何在linux中查詢檔案

find是最常見和最強大的查詢命令,你可以用它找到任何你想找的檔案。find 命令會在硬碟進行檢索,速度較慢。find 指定目錄 指定條件 指定動作 whereis命令只能用於可執行檔案的搜尋,只能查到一些特定檔案,而且whereis和locate執行機制一樣,也是從資料庫中查詢 var lib l...

如何訪問redis中的海量資料

前言事故產生 分析原因 解決方案 總結有時候我們需要知道線上的redis的使用情況,尤其需要知道一些字首的key值,那我們怎麼去檢視呢?因為我們的使用者token快取是採用了 user token userid 格式的key,儲存使用者的token的值。我們運維為了幫助開發小夥伴們查一下線上現在有多...

如何在指標中隱藏資料?

編寫 c 語言 時,指標無處不在。我們可以稍微額外利用指標,在它們內部暗中儲存一些額外資訊。為實現這一技巧,我們利用了資料在記憶體中的自然對齊特性。記憶體中的資料並非儲存在任意位址。處理器通常按照其字大小相同的塊讀取記憶體資料 那麼考慮到效率因素,編譯器會按照塊大小的整數倍對記憶體中的實體進行位址對...