这篇论文要解决的实际问题(研究点)是什么?
一般而言,用户基于item的显性反馈(比如评分数据)是可以出显示出用户对某样item的喜好程度的。但是现实生活中其实还存在着很多的隐性反馈(比如购买记录、浏览记录,搜索记录等)这样子的数据量其实是有非常的多的,但这一类数据普遍都存在一个缺陷,即它们是很难有证据显示出用户对该item的不喜欢程度(we lack substantial evidence on which products consumer dislike),至少大部分是,毕竟用户的打分才是最直接表示喜好的一种行为。所以如何处理隐性数据,以及如何显示出用户对item的喜好程度,成为了本文要研究的问题。
本文做的实验是分析用户对电视节目的watch habits,并且做出推荐。而拥有的数据都是隐性的数据,比如电视节目的观看时间以及次数等。
这个实际问题(研究点)目前的处理现状是什么?(即原有的方法是什么)
隐性反馈的一些特性
- 没有负面反馈( No negative feedback)。一般来说通过观察用户的行为(比如购买记录等)我们可以大致判断用户可能是喜欢某个物品,而对于没有记录的物品我们则是无法判断的,可能是因为用户不喜欢也有可能是因为用户根本不知道这个物品。而这在显性反馈里面是不存在这种不对称的信息的,比如,显性反馈更加注重于收集到的信息(比如user-item-rating),这里的 rating其实一定程度上是可以反应用户的喜好的,并且剩下的没有评分的数据信息在我们分析的时候是可以省略掉的。然而这在收集隐性反馈数据里是绝对不存在的,因为如果仅仅聚焦于收集用户行为数据(feedback)会让我们一直在收集正面的反馈,让我们在描述用户profile的时候,失去准确性。所以在隐性反馈数据中,最重要的是处理消失的最能反应用户负面反馈的数据。
- 隐性数据有固有的噪音。所以要针对用户的行为记录进行具体的分析。购买记录不一定能显示用户喜欢这个物品,可能它仅仅是一个礼物。
- 显性数据的“数字”可以显示用户的喜好程度,而隐性数据的“数字”可以反应用户行为的“置信程度(confidence)”而这个要结合具体的问题进行具体行为次数的分析。一般来说,一个重复发生的行为更可能反应用户的观点。
- 评估隐性反馈的推荐需要有合适的方法,一般如果有用户的评价分数的话,可以用诸如均方误差来衡量预测成功。然而对于隐式模型我们必须考虑item的可用性,和与其他item的竞争性以及重复反馈等数据(例如若我们收集关于电视观看的数据,则无法评估这个节目是否被看了多次,或如何比较两个同时出现的节目,因此不能被用户观看)
原有的方法
- Neighborhood models(user-oriented和item-oriented)
此类方法对于隐性反馈数据集来说不够友好,他们不提供区分用户喜好的灵活性和这些喜好里面的置信程度的灵活性。 - Latent factor models
Latent factor models是一种可以替代协同过滤的方法,它的目标是揭示解释观察到的评级的潜在特征;比如pLSA,神经网络,LDA.还有很受欢迎的SVD,因为它的准确率和可扩展性。典型的模型将每个用户u与用户向量 x u x_u xu∈ R f R_f Rf,每个物品i和物品向量 y i y_i yi∈ R f R_f Rf联系起来。预测是通过取内积来完成的,即 r u i = x u T y i r_{ui} = x_u^Ty_i rui=xuTyi。更多涉及的部分是参数估计,一般此类的工作都是应用于显示反馈数据集,直接对观察到的评分进行建模,但是同时为了避免过度拟合,也会加入惩罚项。
它的结果一般比协同过滤要好,只是缺少可解释性
本篇论文中提出的工作是在隐式反馈数据集里面使用SVD,给评分数据加上置信度,去修改公式以及优化项。
本文提出的解决问题的方法(模型)是什么?
由于隐性反馈数据是不能显示用户的喜好程度的,作者把隐性反馈数据转换成了两个维度,一个是喜好程度(preference),另一个是置信程度(confidence),以此,得出的分数,我们是可以看出用户的喜好程度的(transform the raw observations(the r u i r_{ui} rui values) into distinct preference-confidence pairs( p u i p_{ui} pui, c u i c_{ui} cui)),然后再使用SVD方法。
参数解释
r u i r_{ui} rui :是评分数据|或者次数的数据
p u i p_{ui} pui:显示用户u对物品i的喜好程度
c u i c_{ui} cui:显示对 p u i p_{ui} pui的置信程度(即这个答案的可信程度)
m:用户数量
n:物品数量
X:含有用户向量的矩阵(每一行代表用户, m* f ,f是factors的大小)
Y:含有用户向量的矩阵(每一列代表物品,n* f,f是factors的大小)
公式
p u i = { 1 , r u i > 0 0 , r u i = 0 p_{ui} = \begin{cases} 1,\quad r_{ui}>0 \\ 0,\quad r_{ui}=0 \