《推荐系统实践》读书笔记 第二章
第二章 利用用户行为数据
利用用户行为数据
- 啤酒和尿布的例子
- 购买A商品的用户都购买B商品
协同过滤
基于用户行为分析的推荐算法是个性化推荐系统的重要算法, 学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求
显示反馈 隐式反馈
-
用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈行为(implicit feedback) 。
-
显性反馈行为包括用户明确表示对物品喜好的行为。
-
隐性反馈行为指的是那些不能明确反应用户喜好的行为
1.最具代表性的隐性反馈行为就是页面浏览行为
2.用户浏览一个物品的页面并不代表用户一定喜欢这个页面展示的物品, 比如可能因为这个页面链接显示在首页, 用户更容易点击它而已。相比显性反馈,隐性反馈虽然不明确,但数据量更大
-
显性和隐性的比较
各种网站中显性和隐性的数据的例子
用户行为的统一表示
用户行为分析
- 长尾理论
-
不管是物品的流行度还是用户的活跃度,都近似于长尾分布,特别是物品流行度的双对数曲线,非常接近直线。
-
用户活跃度和物品流行度的关系
1.用户越活跃,越倾向于浏览冷门的物品
一般认为, 新用户倾向于浏览热门的物品, 因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。
-
协同过滤算法分类
学术界对协同过滤算法进行了深入研究, 提出了很多方法, 比如基于邻域的方法 (neighborhood-based)、 隐语义模型(latent factor model)、基于图的随机游走算法(random walk on graph)等。
-
最广泛应用的算法是基于邻域的方法
-
基于用户的协同过滤算法 这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。
-
基于物品的协同过滤算法 这种算法给用户推荐和他之前喜欢的物品相似的物品。
实验设计和算法评测
GroupLens提供的MovieLens数据集 ①介绍和评测各种算法
https://grouplens.org/datasets/movielens/1m/
评测指标
对用户u推荐N个物品(记为R(u)) ,令用户u在测试集上喜欢的物品集合为T(u),然后可以通过准确率/召回率评测推荐算法的精度:
- 召回率
- 精准率
- 算法的覆盖率
覆盖率表示最终的推荐列表中包含多大比例的物品。 - 评测推荐的新颖度
用推荐列表中物品的平均流行度度量推荐结果的新颖度。如果推荐出的物品都很热门,说明推荐的新颖度较低,否则说明推荐结果比较新颖。
基于邻域的算法
UserCF
-
基于用户的协同过滤算法
-
在一个在线个性化推荐系统中,当一个用户A需要个性化推荐 时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A
-
主要包含两个步骤
(1) 找到和目标用户兴趣相似的用户集合。
(2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。 -
协同过滤算法主要利用行为的相似度计算兴趣的相似度。给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合。那么,我们可以通过如下的Jaccard公式简单地计算u和v的兴趣相似度:
Jaccard公式计算相似度
通过余弦相似度计算使用余弦相似度计算的例子:
-
然后求和某用户最相似的k个用户
-
余弦相似推荐过于粗糙,改进
User-IIF算法:
ItemCF
-
基于物品的协同过滤算法
-
算法理论
temCF算法并不利用物品的内容属性计算物品之间的相似度, 它主要通过分析用户的行为记录计算物品之间的相似度。 该算法认为, 物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。 -
主要步骤:
(1) 计算物品之间的相似度。
(2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。 -
定义物品相似度公式
-
计算一个用户对某个商品的感兴趣程度
-
计算感兴趣程度的例子
用户A对 C++ Primer感兴趣程度是 1.3,对《编程之美》感兴趣程度是 0.9。《算法导论》与《C++…》和《编程…》的相似度分别是0.4和0.5,那么对于用户A对于《算法导论》的感兴趣程度就是 1.3x0.4+0.9x0.5=0.97。
计算完成后进行从大到小排序,挑出前几个进行推荐 -
itemCF-IUF
对ItemCF的改进,防止个别特别活跃的用户带偏整体数据
活跃用户对物品相似度的贡献应该小于不活跃的用户, 他提出应该增加IUF 参数来修正物品相似度的计算公式 -
itemCF 和 itemCF-IUF的对比
ItemCF-IUF在准确率和召回率两个指标上和ItemCF相近,但ItemCF-IUF明显提高了推荐结果的覆盖率,降低了推荐结果的流行度。 -
物品相似度的最大值归一化可以提高,可以提高推荐的准确率
物品相似度的归一化
UserCF 和 ItemCF的对比
UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,而ItemCF的推荐结果着重于维系用户的历史兴趣。换句话说,UserCF的推荐更社会化,反映了用户所在的小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。
隐语义模型
LFM(latent factor model)隐语义模型逐渐成为推荐系统领域耳熟能详的名词。其实该算法最早在文本挖掘领域被提出,用于找到文本的隐含语义。
- 核心思想是通过隐含特征(latent factor)联系用户兴趣和物品
对于某个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。 问题是如何对兴趣分类?于是出现了 隐含语义分析技术(latent variable analysis) - 分类
LFM
pLSA
LDA
隐含类别模型(latent class model)
隐含主题模型(latent topic model)
矩阵分解(matrix factorization)