LeeReamond
V2EX  ›  算法

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

  •  
  •   LeeReamond · Mar 29, 2022 · 1241 views
    This topic created in 1534 days ago, the information mentioned may be changed or developed.

    需求:

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

    实现方式:

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

    {
      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 复杂度,随着项目数量增加运算成本有些爆炸,比如如果有十万个项目那么每次生成共现矩阵需要算好久好久。

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4915 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:07 · PVG 09:07 · LAX 18:07 · JFK 21:07
    ♥ Do have faith in what you're doing.