想必很多头条玩家都想了解头条的推荐算法是怎样进行推荐的,刚好之前有做过推荐算法的开发测试相关工作,在此与大家分享下,目前常用的个性化推荐算法在头条产品的应用。
今日头条核心算法负责人杨震原曾讲到:
一开始今日头条的推荐算法,首先入手的是“非个性化推荐”——解决的热门文章推荐以及新文章冷启动的问题(单纯热门文章的推荐会使得新文章没有曝光机会,需要通过一些机制平衡热与新的问题)。今日头条开始逐步引入个性化推荐的策略。他们所采用的,是协同过滤 + 基于内容推荐,直到今天依然构成今日头条推荐算法的基础。
通过这段话,我们不难看出头条的算法先后经历了热门(文章)推荐、协同过滤、基于内容推荐的算法发展与补充。
推荐算法原理概述
热门(文章)推荐:比如提取文章关键词、对文章的分类,并赋予一个初始热度值,随着用户阅读、收藏、分享、评论、点赞行为,这些行为促使文章热度提升。文章一般是有较强时效性的内容,因此文章发布之后,热度必须随着文章时效性变低而衰减。同时需要考虑不同类型文章的初始热度值不同,以及不同用户行为的热度加值权重也不同。然后根据不同类别的文章热度值排序推送给用户。
协同过滤:可以简单理解为"人以群分"的算法解释,通过海量数据中人的行为,计算相似的人或者相似物品的相似度,然后将与你相似的人喜欢的物品或你喜欢物品的相似物品推荐给你。
基于用户的协同过滤
上图示意出基于用户的协同过滤推荐机制的基本原理,假设Charles 喜欢文章A/B,Mark喜欢文章A/B/C,Bill喜欢文章C;从这些用户的历史喜好记录中,我们可以发现Charles 和Mark的偏好是比较相似的,同时Mark还喜欢文章C,那么我们可以推断Charles可能也喜欢文章C,因此可以将文章C推荐给Charles。
基于物品的协同过滤
上图示意出基于物品的协同过滤推荐机制的基本原理,假设Charles喜欢文章A/B,用户Mark喜欢文章A/C,Bill喜欢文章B,从这些用户的历史喜好记录中,我们可以发现喜欢文章A的人都喜欢文章B,因此文章A与文章B比较类似,那么我们可以推断Bill很有可能也喜欢文章A,所以系统会将文章A推荐给Bill。
上图示意出内容推荐机制的基本原理,首先我们需要对文章A/B/C的元数据属性特征(文章类型)建模;然后根据文章的元数据寻找文章间的相似度,因为,文章A与文章C都是"推荐算法、协同过滤"类型的文章,因此文章A与文章B为相似文章,那么对于Charles,他喜欢看文章 A,系统就可以推荐文章B。
后续文章中将详细介绍基于用户协同过滤算法、物品协同过滤算法、内容推荐算法的python实现,感兴趣的可以关注哦。