簡體   English   中英

如何有效地計算/估計非晶石矩陣中數十億對的余弦相似度?

[英]How to efficiently calculate/estimate cosine similarity for billions of pairs in a non-spars matrix?

考慮一下我有 1000 萬個項目,每個項目都用 100 維實數向量標識(實際上它們是 word2vec 嵌入)。 對於每個項目,我想(大約)使用余弦相似度獲得與其最相似的前 200 個項目。 我當前的余弦相似度標准實現為 Hadoop(hive)中的 UDF function,與 1000 萬個其他項目相比,計算 1 項的余弦相似度大約需要 1 秒。 這使得運行整個矩陣變得不可行。 我的下一步是在 Spark 上運行它,並行化程度更高,但仍然不能完全解決問題。

我知道有一些方法可以減少晶石矩陣的計算。 但我的矩陣並不稀疏

如何有效地為每個項目獲取最相似的項目? 是否存在計算效率更高的余弦相似度近似值?

您可以壓縮向量以使分數計算更簡單。 通過新的距離方法,如漢明距離。

有一個關鍵詞叫vector quantization ,還有很多算法都在講向量壓縮。

這是一個使其與余弦相似度相媲美的示例。

https://github.com/tdebatty/java-LSH/blob/master/src/main/java/info/debatty/java/lsh/SuperBit.java#L208

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM