@林彦的第3条很喜欢
不是根据每个用户做推荐,而是先将用户做聚类;把(userId、itemId、rank)变成(userGroupId、item、weightdRank)进行训练,得到每个聚群的推荐结果;
cache只需要存储每个聚群的推荐结果、每个用户的聚类映射即可,每次查询,先查询用户的聚类,然后取出聚类的推荐结果返回;
如果这个聚类算法能在线高实时调用,那连新用户冷启动问题都解决了;不过画像数据一般很大,要在几十MS返回画像,同时返回聚类结果,难道有点大;可以借鉴netflix的结构,加入近线层;把用户聚类的计算用streaming(spark streaming/flink/storm)计算,更新到CACHE即可;
展开