倒排索引生成共现矩阵有什么快速算法吗?

2022-03-29 01:55:57 +08:00
 LeeReamond

需求:

简易的根据用户行为分析商品关联性的系统。

实现方式:

原始数据记录了每个用户访问过哪些项目,记录为如下形式:

{
  A 用户:['项目 1', '项目 2', '项目 3', '项目 4', '项目 5'],
  B 用户:['项目 2', '项目 3', '项目 4', '项目 5', '项目 6'],
  C 用户:['项目 1', '项目 3', '项目 5', '项目 7'] 
}

然后生成倒排索引,再生成共现矩阵,再取皮尔逊相关数,使用时取矩阵第 m 列×[1]得与第 m 项目关联的所有其他项目的关联性。

疑问:

倒排索引生成共现矩阵的实现过程中产生了质疑,目前的做法是遍历所有的,第 m 项目与第 n 项目的索引队列相似成分有哪些(进行交集运算),假设共有 n 个项目,则最少总共需要进行(n^2)/2 次交集运算,感觉复杂度有点略高,本身交集运算就是成本比较大的操作,又加上 on2 复杂度,随着项目数量增加运算成本有些爆炸,比如如果有十万个项目那么每次生成共现矩阵需要算好久好久。

想问一下有没有比硬写更快的算法,毕竟理论上像视频网站或淘宝这类需求,总项目数可能在亿级数量级甚至更多,如果构建一个如此基础的关联性分析都要这么大的运算量的话,这些推荐系统该如何自处呢?谢谢

765 次点击
所在节点    算法
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/843517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX