协同过滤中显性反馈 与 隐性反馈 的区别
1. 特质上的区别
显性反馈行为:用户明确表示对物品喜好的行为。
隐性反馈行为:不能明确反映用户喜好的行为。
隐性反馈的特性
- 没有负反馈。隐性反馈无法判断是否不喜欢。而显性反馈,明显能区分是喜欢还是不喜欢。
- 先天性具有噪声。用户购买了某物品,并不代表他喜欢,也许是送礼,也许买了之后发现不喜欢。
- 显性反馈数值代表偏好程度,隐性反馈数值代表置信度。隐性反馈的数值通常是动作的频次,频次越多,并不代表偏好值越大。比如一个用户经常看某部连续剧,可能该用户对该连续剧的喜好值一般,只是因为每周都播,所以动作频次很大,假如该用户对某部电影超级喜欢,但可能就看过一次,因此动作频次大并不反应偏好值大。从这个用户经常看这部连续剧这个行为,只能推断出该用户喜欢这连续剧有很大的置信度,但这个用户对这个连续剧的偏好值是多少我们无法评估。
- 隐性行为需要近似评估。
2. 两反馈在数据在处理上的区别
case 1 [参考《recommender Systems Handbook》第五章]
损失函数:
RMSE=∑(u,i)∈TestSet(rui−r^ui)2|TestSet|−−−−−−−−−−−−−−−−−−−√
其中
r^ui 如下:
r^ui=μ+bi+bu+qTi(pu+|R(u)|−12∑j∈R(u)yj)
其中:
1.
Pu 为显性反馈所代表的部分
2.
|R(u)|−12∑j∈R(u)yj 为隐性反馈所代表的部分
3.
R(u) 用户u评价过的商品集合
3.
y 是一个item行rank列的矩阵
• 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)
• ∀j∈R(u) :
yj←yj+γ⋅(eui⋅|R(u)|−12⋅qi−λ6⋅yj)
该情景中同时有隐性反馈和显性反馈的数据
case2:[参考Collaborative Filtering for Implicit Feedback Datasets ]
Loss function:
L=∑u,icu,i(pu,i−xTuyi)2+λ(∑u||xu||2+∑i||yi||2)
其中:
pui={10 (rui>0) (rui=0)
cui=1+αrui
与显性反馈的处理有两个重要区别:
1. 需要计算置信度 c
2. 计算时需要计算所有可能的 u,i 对,而不仅是数据中出现的 u,i 对。
ALS最优解推导:
∂L∂xur=∂∑icu,i(pu,i−∑rank1xuryri)2+λ(x2ur)∂xur=2λxur−∑i2cu,i(pu,i−∑1rankxuryri)yri令 xur=xur0+ε,eui=(pu,i−∑1rankxur0yri)得 (pu,i−∑1rankxuryri)=eu,i−εyri∂L∂ε=2λ(xur0+ε)−∑i2cu,ieui0yri−∑i2cu,iεy2ri=0⇒ε=∑icu,ieui0yri−λxur0λ−∑icu,iy2ri⇒xur=xur0+∑icu,ieui0yri−λxur0λ−∑icu,iy2ri
Spark的ALS算法Explicit vs. implicit feedback中明确指出隐反馈的处理方式是采用该论文中所使用的处理方式。
该情景中只有隐性反馈。
以下为论文中梯度为0的解
xu=(YTCuY+λI)−1YTCup(u)
yi=(XTCiX+λI)−1XTCip(i)
ALS最优化求解 Nonnegative Matrix Factorization
求解NMF问题:用维度较低的非负矩阵B,C 表示 高维矩阵A
A≈B∗C s.t.B;C>=0
目标函数:
1.
Least-squares NMF
min12||A−BC||2F s.t.B;C>=0
2.
KL-Divergence NMF
min∑ijAijlog(BC)ijAij−Aij+(BC)ij s.t.B;C>=0
AltMin (AM)/AltDesc:
1 初始化 B0,k=0
2 计算 Ck+1s.t.F(A;BkCk+1)<=F(A;BkCk)
3 计算 Bk+1s.t.F(A;Bk+1Ck+1)<=F(A;BkCk+1)
4 k=k+1 , 迭代直到最终精度满足.
ALS (NFM) :
C=argminC||A−BkCk||2F, Ck+1=max(0,C)
B=argminB||A−BCk+1||2F, Bk+1=max(0,B)
NALS :
C=argminC||A−BkCk||2F, s.t.C>=0
B=argminB||A−BCk+1||2F, s.t.B>=0
Block coordinate descent(BCD):
高斯迭代法 Gauss-Seidel update
xk+1i←argminε∈χif(xk+11,..,xk+1i−1done,εcurrent,xki+1,..,xkmto do)
更新xi时,xi之前的变量已经更新。
雅可比迭代法 Jacobi update (easy to parallelize)
xk+1i←argminε∈χif(xk1,..,xki−1don′t clobber,εcurrent,xki+1,..,xkmto do)
更新xi时,xi之前的变量使用更新之前的结果。
附录: 矩阵的 F-范数:
∥A∥F=(∑i=1m∑j=1na2ij)12
ALS求解最优解
参考 :
1. recommender Systems Handbook 第五章
1. Collaborative Filtering for Implicit Feedback Datasets