推荐系统
推荐系统概要
一、推荐系统的本质
推荐系统在本质上是一个信息检索的系统。它和搜索最大的区别是,搜索是主动式的,根据关键词和引擎参数、搜索引擎召回、机器学习排序,决定给你看到的是哪些内容。而我们看到的推荐系统,在大多数情况下是没有主动输入的(有时会有一些简单的反馈动作),是被动出现的。
推荐系统是利用上下文,根据当前用户所处的环境,根据信息的特点来决定给你推荐什么内容和商品。而推荐系统的目标是什么,什么才是一个好的推荐系统,要优化的指标是什么。
二、推荐系统的实验方法
2.1离线实验
离线实验的方法一般由如下几个步骤构成:
(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
(2) 将数据集按照一定的规则分成训练集和测试集;
(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。
优点 | 缺点 |
---|---|
不需要有对实际系统的控制权 | 无法计算商业上关心的指标 |
不需要用户参与实验 | 离线实验的指标和商业指标存在差距 |
速度快,可以测试大量算法 |
2.2用户调查
成本高、双盲、用户分布。
2.3在线实验
AB Test。
三、推荐系统的测评指标
3.1 用户满意度:点击率、用户停留时间和转化率等指标度量用户的满意度
3.2 预测准确度:最重要的测评指标
3.2.1 评分预测 RMSE和MAE
3.2.2 TopN推荐 TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
3.3 覆盖率:对物品长尾的发掘能力。推荐系统能够推荐出来的物品占总物品集合的比例。
信息熵,基尼指数,马太效应。
3.4 多样性:推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性
3.5 新颖性:新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最
简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉
四、用户行为的推荐算法-协同过滤算法
显性反馈行为:点击和评价等。
隐性反馈行为:例如页面浏览行为。
基于用户的协同过滤算法 这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。
基于物品的协同过滤算法 这种算法给用户推荐和他之前喜欢的物品相似的物品。
优缺点比较:
UserCF | ItemCF | |
---|---|---|
性能 | 适用于用户较少的场合,如果用户很多,计算用户相似度矩阵代价很大 | 适用于物品数明显小于用户数的场合,如果物品 |
领域 | 时效性较强,用户个性化兴趣不太明显的领域 | 长尾物品丰富,用户个性化需求强烈的领域 |
实时性 | 用户有新行为,不一定造成推荐结果的立即变化 | 用户有新行为,一定会导致推荐结果的实时变化 |
冷启动 | 在新用户对很少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度表是每隔一段时间离线计算的 | 新用户只要对一个物品产生行为,就可以给他推荐和该物品相关的其他物品 |
新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给和对它产生行为的用户。 | 但没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户。 | |
推荐理由 | 很难提供令用户信服的推荐解释。 | 利用用户的历史行为给用户做推荐解释,可以令用户比较信服 |
五、冷启动问题
冷启动分为用户的冷启动和整个推荐系统的冷启动,整个推荐系统的冷启动就是在搭建推荐系统之前,我能否已经收集了一些用户行为的数据,如果有的话,可以构造一些弱一点的模型,比如说用 CF、SVD、热度这样的方法对内容做一些初步的排序和筛选,同时配合一些简单的基于query 的策略,比如最新、最热、最多评价等等先构造一个差一点但是比随机强很多的推荐列表。如果数据基础更好,也可以用其他场景的数据来构造 label、样本来进行建模。而用户的冷启动,归根结底就是在用户进入产品之后,尽快有效地获取他的信息,一方面可以通过产品的手段来实现,一方面可以通过第三方数据合作的方式来实现,比如说这个人如果是微博注册的话,如果你能够收集到一些公开的微博数据,就会对冷启动很有帮助。
5.1 用户冷启动
用户冷启动主要解决如何给新用户做个性化推荐的问题。当新用户到来时,我们没有他的行为数据,所以也无法根据他的历史行为预测其兴趣,从而无法借此给他做个性化推荐。
5.1.1 利用用户的注册信息
基于注册信息的个性化推荐流程基本如下:
(1) 获取用户的注册信息;
(2) 根据用户的注册信息对用户分类;
(3) 给用户推荐他所属分类中用户喜欢的物品。
5.1.2 选择合适的物品启动用户兴趣
新用户第一次访问推荐系统时,不立即给用户展示推荐结果,而是给用户提供一些物品,让用户反馈他们对这些物品的兴趣,然后根据用户反馈给提供个性化推荐。
一般来说,能够用来启动用户兴趣的物品需要具有以下特点。
1)比较热门
2)具有代表性和区分性
3)启动物品集合具有多样性
5.2 物品冷启动
考虑利用物品的内容信息,将新物品先投放给曾经喜欢过和它内容相似的其他物品的用户。
对于ItemCF算法来说,物品冷启动就是一个严重的问题了。因为ItemCF算法的原理是给用户推荐和他之前喜欢的物品相似的物品。ItemCF算法会每隔一段时间利用用户行为计算物品相似度表(一般一天计算一次),在线服务时ItemCF算法会将之前计算好的物品相关度矩阵放在内存中。因此,当新物品加入时,内存中的物品相关表中不会存在这个物品,从而ItemCF算法无法推荐新的物品。解决这一问题的办法是频繁更新物品相似度表,但基于用户行为计算物品相似度是非常耗时的事情,主要原因是用户行为日志非常庞大。而且,新物品如果不展示给用户,用户就无法对它产生行为,通过行为日志计算是计算不出包含新物品的相关矩阵的。为此,我们只能利用物品的内容信息计算物品相关表,并且频繁地更新相关表(比如半小时计算一次)。
物品的内容信息多种多样,不同类型的物品有不同的内容信息。
一般来说,物品的内容可以通过向量空间模型表示,该模型会将物品表示成一个关键词向量。如果物品的内容是一些诸如导演、演员等实体的话,可以直接将这些实体作为关键词。但如果内容是文本的形式,则需要引入一些理解自然语言的技术抽取关键词。对于中文,首先要对文本进行分词,将字流变成词流,然后从词流中检测出命名实体(如人名、地名、组织名等),这些实体和一些其他重要的词将组成关键词集合,最后对关键词进行排名,计算每个关键词的权重,从而生成关键词向量。
根据TF-IDF公式计算词的权重,而根据物品的内容相似度可以通过向量之间的余弦相似度计算。
得到物品的相似度之后,可以利用前面提到的ItemCF算法的思想,给用户推荐和他历史上喜欢的物品内容相似的物品。
LDA模型,作为一种生成模型,对一篇文档产生的过程进行了建模。话题模型的基本思想是,一个人在写一篇文档的时候,会首先想这篇文章要讨论哪些话题,然后思考这些话题应该用什么词描述,从而最终用词写成一篇文章。
六、广告推荐
参考《计算广告互联网商业变现的市场与技术》
千次展示期望收入(expected Cost Per Mille,eCPM)是计算广告中最为核心的量化指标之一。
广告点击与广告展现的比率称为点击率(Click Through Rate,CTR);
用户从落地页开始,进一步完成下单等操作,则称为转化,转化次数与到达次数的比例称为转化率(Conversion Rate,CVR),这是在广告主网站上或线下发生的。
表达式中的a、u、c 三个变量,分别代表广告、用户与环境,即广告活动的三个参与主体,用表示点击率,v表示点击价值(click value),即单次点击为广告产品带来的收益。