推荐算法学习(一):概述

前段时间因工作需要学习了推荐系统课程,近期打算抽空整理一下学习内容,并更新至博客。该课程共有17个课时,每个课时前半段讲解推荐算法及模型理论知识,后半段讲相关工具的使用及实践案例,课后留有thinking和action作业,虽然课程理论知识讲解的并不细致深入,但课程整体框架较为合理,适合新人入门学习。

本文结合推荐系统课程学习内容,先对推荐系统进行概述,再介绍常用推荐算法,后续将在该系列文章中详细展开。

推荐系统

推荐系统是一种信息过滤系统,根据用户的历史行为、社交关系、兴趣点等信息,过滤出用户当前感兴趣的物品或内容。其基本架构如下图所示:

推荐系统架构

推荐系统的数据源一般包括商品特征、用户画像及用户行为;召回阶段(过滤)是一个初筛的过程,得到候选商品集合;排序阶段是对多个召回通道的内容进行打分排序,选出最优的少量结果,召回和排序的具体过程见下图:

2

3

4

5

6

推荐系统一般存在三种不同的工作方式:离线模式,近线模式和在线模式。

0

在线模式下,召回阶段将100万的item=>1000,item太多还可以进行粗排,排序阶段使用相对复杂的模型对较少的item进行排序,在呈现给用户前,还会集合一些业务策略(去掉用户已读,商业化广告);近线模式下,实时收集用户行为反馈,并选择训练实例,抽取特征=>更新在线推荐模型;离线模式下,整理离线训练数据 => 周期性更新推荐模型。

推荐系统有很多的应用场景,如电商、社交网络、音乐推荐等,不同应用场景的需求不同,其目标定义也不同,具体的定义可从覆盖率、多样性、新颖度等多维度综合考虑。另外,推荐系统中还存在两大常见问题:冷启动问题 和 EE问题(利用&探索),EE问题的目标是带来更多收益;冷启动问题是指针对上线的网站,或对于新来的用户、物品如何做推荐。这些问题在今后的文章中将会做出解答。

推荐算法

推荐算法主要有基于内容的推荐和协同过滤两大类。下图总结了常见的推荐算法:

常见推荐算法

基于内容的推荐是根据商品的属性为其打上标签,再根据标签计算商品间的相似度,为用户推荐与他们喜欢的商品相似的商品;协同过滤的思想是利用用户的“集体智慧“,通过用户行为信息,找到与你兴趣相同的用户,推荐他们喜欢的商品,或者给用户推荐那些和他们之前喜欢的商品相似的商品(这里与基于内容推荐不同,不利用物品的内容属性计算物品之间的相似度,主要通过分析用户的行为记录计算物品之间的相似度)。

协同过滤包括基于邻域的协同过滤和基于模型的协同过滤,其区别是:基于邻域的协同过滤包括UserCF, ItemCF,将用户的所有数据读入到内存中进行运算,也称之为基于内存的协同过滤(Memory-based),数据量少的情况下,可以在线实时推荐;基于模型的推荐(Model-based),采用机器学习的方式,分成训练集和测试集。离线训练时间比较长,但训练完成后,推荐过程比较快。隐语义模型是指用户与物品之间存在着隐含的联系,通过隐含特征(Latent Factor)联系用户兴趣和物品,其可解释性差,相比之下ItemCF可解释性强。