简易的根据用户行为分析商品关联性的系统。
原始数据记录了每个用户访问过哪些项目,记录为如下形式:
{
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 复杂度,随着项目数量增加运算成本有些爆炸,比如如果有十万个项目那么每次生成共现矩阵需要算好久好久。
想问一下有没有比硬写更快的算法,毕竟理论上像视频网站或淘宝这类需求,总项目数可能在亿级数量级甚至更多,如果构建一个如此基础的关联性分析都要这么大的运算量的话,这些推荐系统该如何自处呢?谢谢