文章目录
1、用户行为数据
用户行为可以分为:(1)显示反馈行为(包括用户明确表示对物品喜好的行为);(2)隐式反馈行为(不明确反应用户喜好的行为,如页面浏览行为。)。
比较类别 | 显示反馈数据 | 隐式反馈数据 |
---|---|---|
用户兴趣 | 明确 | 不明确 |
数量 | 较少 | 庞大 |
存储 | 数据库 | 分布式文件系统 |
实时读取 | 实时 | 有延迟 |
正负反馈 | 都有 | 只有正反馈 |
常见的数据集:
(1)无上下文信息的隐式反馈数据集:每一条行为记录仅仅包含用户ID和物品ID。
http://www.informatik.uni-freiburg.de/~cziegler/BX/
(2)无上下文信息的显式反馈数据集:每一条行为记录包含用户ID、物品ID和对物品的评分。
(3)有上下文信息的隐式反馈数据集:每一条行为记录包含用户ID、物品ID和用户对物品产生行为的时间戳。
http://www.dtic.upf.edu/~ocelma/MusicRecommendationDataset/lastfm-1K.html
(4)有上下文信息的显示反馈数据集:每一条行为记录包含用户ID、物品ID、用户对物品的评分和评分发生行为的时间戳。http://netflixprize.com/
2、用户行为分析
(1)用户活跃度和物品流行度的分析
令 f n ( k ) f_n(k) fn(k)为对k个物品产生过行为的用户数,令 f i ( k ) f_i(k) fi(k)为被k个用户产生过行为的物品数,那么它们都符合长尾分布: f u ( k ) = α u k β u f_u(k)=\alpha_u k^{\beta_u} fu(k)=αukβu和 f i ( k ) = α i k β i f_i(k)=\alpha_i k^{\beta_i} fi(k)=αikβi。
即大部分用户都是新用户,而老用户占据很少的比例;热门的物品占据的比例很少。
一般认为,新用户倾向于浏览热门的物品,而老用户会逐渐开始浏览冷门的物品。
(2)协同过滤算法
仅仅基于用户行为数据设计的推荐算法即协同过滤算法。
常用的方法有:
- ①基于邻域的方法(neighborhood-based)
- (i)基于用户的协同过滤算法:给用户推荐和他兴趣相似的其他用户喜欢的物品。
- (ii)基于物品的协同过滤算法:给用户推荐和他之前喜欢的物品相似的物品。
- ②隐语义模型(latent factor model)
- ③基于图的随机游走算法(random walk on graph)等。
3、基于邻域的算法
(1)基于用户的协同过滤算法UserCF
步骤:
①找到和目标用户兴趣相似的用户集合;
②找到这个集合中的用户喜欢的、且目标用户没有听说过的物品推荐给目标用户。
Step1:计算用户的兴趣相似度
步骤①的关键是计算两个用户的兴趣相似度。令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合,那么可以利用Jaccard公式简单地计算u和v的兴趣相似度:
w u v = ∣ N ( u ) ∩ N ( v ) ∣ ∣ N ( u ) ∪ N ( v ) ∣ w_{uv} = \frac{|N(u)∩N(v)|}{|N(u)∪N(v)|} wuv=∣N(u)∪N(v)∣∣N(u)∩N(v)∣
或
w u v = ∣ N ( u ) ∩ N ( v ) ∣ ∣ N ( u ) ∣ ∣ N ( v ) ∣ w_{uv} = \frac{|N(u)∩N(v)|}{\sqrt{|N(u)||N(v)|}} wuv=∣N(u)∣∣N(v)∣∣N(u)∩N(v)∣
或改进为John S. Breese提出的公式:
w u v = ∑ i ∈ N ( u ) ∩ N ( v ) 1 l o g ( 1 + ∣ N ( i ) ∣ ) ∣ N ( u ) ∣ ∣ N ( v ) ∣ w_{uv} = \frac{\sum_{i∈N(u)∩N(v)}{\frac{1}{log(1+|N(i)|)}}}{\sqrt{|N(u)||N(v)|}} wuv=∣N(u)∣∣N(v)∣∑i∈N(u)∩N(v)lo