协同过滤中显性反馈 与 隐性反馈 的区别
1. 特质上的区别
显性反馈行为:用户明确表示对物品喜好的行为。
隐性反馈行为:不能明确反映用户喜好的行为。
隐性反馈的特性
- 没有负反馈。隐性反馈无法判断是否不喜欢。而显性反馈,明显能区分是喜欢还是不喜欢。
- 先天性具有噪声。用户购买了某物品,并不代表他喜欢,也许是送礼,也许买了之后发现不喜欢。
- 显性反馈数值代表偏好程度,隐性反馈数值代表置信度。隐性反馈的数值通常是动作的频次,频次越多,并不代表偏好值越大。比如一个用户经常看某部连续剧,可能该用户对该连续剧的喜好值一般,只是因为每周都播,所以动作频次很大,假如该用户对某部电影超级喜欢,但可能就看过一次,因此动作频次大并不反应偏好值大。从这个用户经常看这部连续剧这个行为,只能推断出该用户喜欢这连续剧有很大的置信度,但这个用户对这个连续剧的偏好值是多少我们无法评估。
- 隐性行为需要近似评估。
2. 两反馈在数据在处理上的区别
case 1 [参考《recommender Systems Handbook》第五章]
损失函数:
其中
其中:
1.
2.
3.
3.
•
•
•
•
•
该情景中同时有隐性反馈和显性反馈的数据
case2:[参考Collaborative Filtering for Implicit Feedback Datasets ]
Loss function:
其中:
与显性反馈的处理有两个重要区别:
1. 需要计算置信度
2. 计算时需要计算所有可能的
ALS最优解推导:
Spark的ALS算法Explicit vs. implicit feedback中明确指出隐反馈的处理方式是采用该论文中所使用的处理方式。
该情景中只有隐性反馈。
以下为论文中梯度为0的解
ALS最优化求解 Nonnegative Matrix Factorization
求解NMF问题:用维度较低的非负矩阵B,C 表示 高维矩阵A
目标函数:
1. Least-squares NMF
2. KL-Divergence NMF
AltMin (AM)/AltDesc:
1 初始化
2 计算
3 计算
4
ALS (NFM) :
NALS :
Block coordinate descent(BCD):
高斯迭代法 Gauss-Seidel update
更新xi时,xi之前的变量已经更新。
雅可比迭代法 Jacobi update (easy to parallelize)
更新xi时,xi之前的变量使用更新之前的结果。
附录: 矩阵的 F-范数:
ALS求解最优解
参考 :
1. recommender Systems Handbook 第五章
1. Collaborative Filtering for Implicit Feedback Datasets