范涛
发表于2017-04-19
最近把海量数据如何进行相似查找技术进行个大体汇总,包括高维稀疏数据和稠密数据。
这一节重点针对高维稀疏数据情况,说如何通过哈希技术进行快速进行相似查找。
试想个案例,就拿推荐系统中item-user矩阵说事。如果你有item数量是百万级别,user是千万级别,这个矩阵是十分稀疏的。你如何计算每一个item的Top N相似item呢?
同样海量文本场景,文本集合可以看成doc-word 稀疏矩阵,如何求解每个文档的Top N相似文档?
如果采用两两比较的话,至少有两个问题:(1) O(n^2) 遍历比较时间复杂度; (2) 两个高维向量之间计算相似度,比如jaccard相似度,时间很耗时。
那如何解决呢? 第一反应是用倒排啊。的确倒排能把上面的时间复杂度降低好几个数量级。但是上面提到的第二个问题却还是存在的。并且当文本数量级达到一定数量级时候,倒排拉链过长,效率也会下降。
所以这章重点说下基于哈希的方法,这种方法通过牺牲一定精度来换取时间上大幅提升。
一 Minhashing
先