- 2006年netflix比赛
1. 基础知识
符号定义
- 用户:{u, v}
- 物品:{i, j, l}
- 评分: rui => 取值范围1到5
- 预测评分: r^ui
- 评分发生的时间: tui =>表示 rui 发生的时间
- 数据集合的稀疏程度:99%
- 评分存放集合: K={(u,v):rui已知}
- 用户u评分的物品集合: R(u)
- 对物品i评分的用户集合: R(i)
- 用户u提高了隐式偏好信息的物品集合:
N(u)
=>
svd方法建立的模型通过拟合已经观测的数据来学习,所以需要正则化;
2. 基准预测(预处理)
- 基准预测是用来处理与交互数据无关的因子(偏置)
- 用来消除用户间的评分偏差等
计算步骤
- 总体平均评分: μ
- 未知评分 rui 的基准预测: bui
- 用户
u
与平均评分值的偏差:
bu - 物品
i
与平均评分值的偏差:
bi - bui=μ+bu+bi
例如
- 预测用户joe对Titannic电影的评价
- 设:电影平均打分 μ=3.7 ;用户joe挑剔,打分一般比平均分低0.3;Titannic电影口碑好,比一般要高0.5分;
- Joe对Titannnic的基准预测是:3.7-0.3+0.5=3.9
bu 和 bi 的计算方法
- 最小二乘法,来估计 bu 和 bi
bu 和 bi 的简单方法
bi=∑u∈R(i)(rui−μ)λ2+|R(i)|
bu=∑i∈R(u)(rui−μ−bi)λ3+|R(u)|
3.Netfilix数据集
- 上亿的item
- 48万用户
- 1.7万物品
- 1~5分(具有时间戳)
- 测试结果:(均方根误差:RMSE)
4. 隐式反馈
- 浏览历史
- 购买记录
5. 因子分解模型
因子分解模型
- plsa模型
@@@Latent Semantic models for collaborative filtering - 神经网络
@@@restricted boltzmann machines for collaborative filtering - LDA
@@@LDA(blei) - svd
svd的发展
- 源于隐语义变量LSA
@@@Indexint By Latent Semantic Analysis - 问题:由于CF中缺失数据,简单使用已知数据,容易产生过拟合
- 简单填充的方法,会使得数据量增大,且不准确的数据也会使得数据倾斜
@@@Collaborative filtering based on iterative principal component analysis
@@@Application of Dimensionally reduction in recommender system - 采样直接利用数据建模的方法,并通过充分的正则化来避免过拟合
@@@modeling relationships at multiple scales to improve accuracy of large recommender systems
@@@collaborative filtering with privacy via factor anlysis
@@@netflix uodate:try this at home
@@@ factorization meets the neighborhood: a multifaceted collaborative filtering model
@@@improving regularized singular value decomposition for collaborative filtering
@@@resticted bolzmann machines for collaborative filtering
@@@ major components of the gravity recommendation algorithms
6. svd算法
- svd:将用户和物品两方面的信息映射到一个纬度是f的联合隐语义空间
- 例如:物品是电影,分解为:喜欢/悲剧;情节数量;面向儿童的等级等,甚至是无法解释的情况
算法
- 物品
i
和 其相关 f 维向量
qi < qi 是代表了物品拥有这些隐因子的程度> - 用户
u
和 其相关 f 维向量
pu < pu 是代表用户对这些隐因子的喜欢程度> - qTipu 点积,记录了用户和物品的交互程度,也就是用户对物品的喜欢程度
- 结合前面的基准预测,可以得到
r^ui=μ+bi+bu+qTipu
=>正则化学习模型的参数,最小化评分误差
minb,q,p∑(u,i)∈k(rui−μ−bi−bu−qTipu)2+λ4(b2i+b2u+||qi||2+||pu||2)
λ4
控制了正则化的程度,交叉验证获得
=>
最小化的求解:最小二乘或者交替最小二乘
@@@ scalable collaborative filtering with jointly derived neighborhood interpolation weights
@@@modeling relationships at multiple scales to improve accuracy of large recommender systems
netfilx上的svd
- 给定训练样本集合 rui ,其预测评分是 r^ui ; 预测误差: eui=rui−r^ui
- 梯度方向修正参数
bu<−bu+γ(eui−λ4∗bu)
bi<−bi+γ(eui−λ4∗bi)
qi<−qi+γ(eui∗pu−λ4∗qi)
pu<−pu+γ(eui∗qi−λ4∗pu)
参数: γ=0.005,λ4=0.02
@@@ matrix factorization and neighbor based algorithms for the netflix prize problem
7. svd++
- 隐式反馈的算法
@@@ factorization meets the neighborhood: a multifaceted collaborative filtering model
@@@improving regularized singular value decomposition for collaborative filtering
@@@probabilistic matrix factorization
添加隐性反馈
r^ui=μ+bi+bu+qTi(pu+|R(u)|−12∑j∈R(u)yi)
其中:
|R(u)|−12∑j∈R(u)yi
是补充项;
|R(u)|−12
是为了稳定方程,对其和做的规范化
随机梯度法求解:
- bu<=bu+γ∗(eui−λ5∗bu)
- bi<=bi+γ∗(eui−λ5∗bi)
- qi<=qi+γ∗(eui(pu+|R(u)|−12∑j∈R(u)yj)−λ6∗qi)
- pu<=pu+γ∗(eui∗qi−λ6∗pu)
- yi<=yi+γ∗(eui∗|R(u)|−12∗qi−λ6∗yi)
netflix数据集合30次后迭代停止
引入多种隐性反馈
r^ui=μ+bi+bu+qTi(pu+|N1(u)|−12∑j∈N1(u)y(1)i+|N2(u)|−12∑j∈N2(u)y(2)i)
=>其中隐性反馈的重要性,通过算法自动学习权重
8. timesvd++
- 用户偏置: bu(t)
- 物品偏置: bi(t)
- 用户偏好: pu(t)
- 物品的静态特征
时间变化的基准
- 物品的流行度或者是随时间的变化程度
人的评分标准的变化
tui 天内, 用户u对i的评分
bui=μ+bu(tui)+bi(tui)
bi 的计算 (物品偏置)
- bi(t)=bi+bi,Bin(t) ……….随时间固定变化
bu 的计算 (用户偏置)
- 用户
u
, 评分日期的均值
tu ; 设用户在t天评价了一部电影,则与该评分相关的时间偏置是
devu(t)=sign(t−tu)∗|t−tu|β
- 时间相关用户偏置
b(1)u(t)=bu+αudevu(t)
- netflix的用户偏置模型( bu,t 反映特定天的变化)
puk(t)=puk+αukdevu(t)+puk,t
svd++
r^ui=μ+bi(tui)+bu(tui)+qTi(pu(tui))+|R(u)|−12∑j∈R(u)yi
结论
- 特征纬度是10的timesvd++ 效果好于纬度是200的svd++
9. svd的优点
- 准确度
- 内存有效(迭代的方法计算)