推荐算法:基于领域的协同滤波

时间:2022-12-07 17:32:57

GroupLens: An Open Architecture for collaborative filtering


Amazon.com Rcommendations item-to-item Collaborative Filtering

本文主要

介绍了Amazon的item-to-item算法

相关研究:

  1. 传统的User-based方法存在计算消化大,扩展性差的缺点
  2. 传统的基于cluster的方法,存在准确度不够的缺点(通过细化用户群的画像,得到改善)
  3. 基于内容的过滤

提出了item-to-item的方法

(未详细展开介绍)


Item-based Collaborative Filtering Recommendation Algorithms

主要内容

分析和提出item-based的算法

研究背景

  1. user-based算法的缺点,扩展性差,计算花费大
  2. 数据稀疏

item-based算法

  • 符号
    用户: U={u1,......,um}
    物品: T={i1,......,in}
    Iui :用户 U 的购买物品列表

  • 相似度

(1)皮尔逊相似度

sim(i,j)=uU(RuiR¯i)(RujR¯j)uU(RuiR¯i)2uU(RujR¯j)2

Rui=ui
R¯i=i
(2) 修正的余弦相似度

sim(i,j)=uU(RuiR¯u)(RujR¯u)uU(RuiR¯u)2uU(RujR¯u)2

R¯u=u

用户间的评分差异大于物品见得评分差异,所以item-based算法中,修正余弦相似度效果好。

  • 预测计算

(1) 领域加权和
sim(i,j)ij
Nu(i)=uik

Pui=jNu(i)sim(i,j)RujjNu(i)|sim(i,j)|

(2) 回归

  • 结果

(1) 测试标准
MAE=Ni=1|piqi|N

(2)k的个数(30左右)


Item-based Top-N Recommendation Algorithms

  • 基于item-based的相似度
    // 减少了热门产品的影响
    wij=|N(i)N(j)||N(i)||N(j)|
    |N(i)| 是喜欢物品i的用户数
    |N(i)N(j)| 是同时喜欢物品i和物品j的用户数

  • 兴趣度的计算:用户u对物品j的兴趣度
    puj=iN(u)S(j,k)wjirui

N(u) 是用户喜欢的物品集合
S(j,K) 是和物品j最相似的k个物品的集合
rui 是u对i的兴趣(隐性数据集,如用户对物品有过行为,则 rui=1 )


Empirical Analysis of Predictive Algorithms for Collaborative Filtering

CF方法:

  • 基于内存的算法:操作整个数据库,计算
  • 基于模型的算法:学习一个模型,然后做预测

基于内存的算法

* 打分问题:

r̂ ui=jNu(i)wijrujjNu(i)|wij|
Nu(i) 是u已经评分且和物品i相似的k个物品

  • 相似度的计算:
    1. 基于皮尔逊系数(Person Correlation)
      pc(i,j)=uUij(ruir¯i)(rujr¯j)uuij(ruiu¯r)2uuij(rujr¯j)2
    2. 基于修正的余弦相似度
      AC(i,j)=uuij(ruir¯u)(rujr¯u)uuij(ruir¯u)2uuij(rujr¯u)2
      其中:用户评分差距大于物品间评分差距,所以item-based中AC的方法效果好。

* 评分预测的模型改进

*不同用户具有不同的评分尺度,用h对评分标准化

r¯ui=h1[jNu(i)wijh(ruj)jNu(i)|wij|]

  1. 均值中心化
  2. z标准化(更优)
    h(rui)=ruir¯iσi σu=1NNi=1(xiμ)2
    =>
    r¯ui=r¯u+σijNu(i)wij(ruir¯j)/σjjNu(i)|wij|

*IUF(反用户频率)

解决:用户活跃度对推荐算法的影响,活跃用户对相似度的影响应该小于不活跃的用户
λi=log|n||ni|
物品i被赋予权重 λi , ni 是给物品i打过分的用户u的数量
n 是用户的总数量

添加后的相似度:
AC(i,j)=uuijλi(ruir¯u)(rujr¯u)uuijλi(ruir¯u)2uuijλi(rujr¯u)2

Top-N的推荐

  • 步骤:
    1. 计算物品之间的相似度
    2. 根据相似度和用户历史行为生成推荐列表
  • 相似度:
    wij=|N(i)N(j)||N(i)||N(j)|
    |N(i)N(j)| 是同时喜欢物品i和物品j的用户数
    |N(i)|是喜欢物品i的用户数

  • 兴趣度的计算

puj=iN(u)S(j,k)wjirui
N(u) 是用户喜欢的物品的集合
s(j,k) 是和物品j最相似的k个集合
rui 是用户u对物品i的兴趣度(隐反馈数据,如果u对i有过行为,则认为是1)

  • 隐数据集合无法打分标准化
  • 物品相似度的归一化
    在item-based方法中
    wij=wijmaxjwij
    =>增加准确度,提高覆盖率和多样性

  • IUF
    wij=uN(i)N(j)1log1+|N(u)||N(i)||N(j)|


Effective Missing Data Prediction for Collaborative Filtering

  • 最主要的概念:singnificance weighting(重要性加权)
    当只有少数评分用于计算的时候,会降低相似度的重要性

    • 当两个人的共同评分的物品数 Tuv 小于给定的参数 γ ,相似度的权重会受到惩戒

    wij=min{|uij|,γ}γwij

γ >=25可以明显的提高准确率


Modeling Relationships at multiple scales to improve accuracy of large recommender systems

在模型的方法中待叙