最近要为一个资讯类的项目加入个性化推荐的逻辑,以给用户展示更加符合其阅读偏好的文章,提高点击率。之前研究过相关理论,这次在工程中应用上,也属于一边摸索一边实践的过程。
概述
推荐系统中常用的推荐算法有:
- 基于内容的推荐content-based
- 协同过滤collaborative filtering
- 基于模型的推荐,隐语义模型(LFM, latent factor model)推荐,机器学习的模型等
不同的推荐算法有着不同的效果、优点、缺点,适合不同的场景,这个系列的文章用于记录这几种算法的实现过程。
基于内容的推荐
基于内容的推荐算法主要思想是为用户推荐与过去喜欢的item类似的item,比如一个用户看过绝地求生98K好用吗的的文章,那么就可以给他推荐绝地求生98k怎么好用的文章。
基于内容的推荐可以分为以下三步:
- 建立文章的特征向量,用来描述这篇文章的关键信息,这里可以使用TF-IDF模型建立一个特征矩阵来描述文章的特征
- 建立用户模型,用来描述用户具有哪些偏好,可以通过计算用户浏览过的文章的TF-IDF矩阵的均值作为用户模型
- 在推荐过程中,根据用户模型检索类似的文章,可以通过检索Top N个与用户模型特征向量相似的文章向量,作为用户的推荐
但是在这个流程中有一个问题,第3步在工程实现中,如果文章的数量很大,需要计算每篇文章与用户模型的相似度,时间和空间复杂度会很高,所以这里进行了简化,取用户当前浏览的文章作为用户模型,这样可以通过离线计算的方式,提前计算出每篇文章的相似结果。