【发布时间】:2012-04-26 22:23:00
【问题描述】:
我想不出更好的方法来解决以下问题...? 想象一下,我有一张大桌子,其中的行和列是某种 ids.. 假设是 book id
book_id-->1 2 3 .....
1 1 0.92 0.33
2
3
此表中的条目告诉您每本书的相似程度。 所以从上表看.. 书 1 和书 2 的相似度指数为 0.92。
所以,我已经在银行端计算了这个……比如说“n”个条目。
从 n+1 开始,数据是实时的..
所以我要做的第一步是填充这个新行。这是一个非常幼稚的方法。
i = 0; i < total_books ; i++
sim(book(n+1),book(i))
假设计算任何书籍相似度的计算速度非常快。 但由于这必须发生“n”次,所以这加起来..
如果有“m”本新书,那么它是一个 n^2 操作(我认为)。 是否有更好的算法/数据结构可以使这种计算可接受。
另外,只是为了填充一些背景。 这种相似性只不过是两个向量之间的点积。 (谷歌搜索余弦相似度会给出一个想法)。但它没什么特别的......只是在两个向量之间取点积......它会返回一个介于 0 和 1 之间的值。
【问题讨论】:
-
如果您想要相似度度量的笛卡尔平方,那么我看不出如何将其减少到 O(n^2) 之外。但是,如果您有其他目标,例如识别新文档的相似性 > X,那么文献中已经开始出现一些有趣的方法。你想做什么?
标签: algorithm data-structures machine-learning information-retrieval