隐式反馈的模型
在本节中,我们描述了隐式反馈的模型。 首先,我们需要将rui变量所衡量的置信度概念形式化。 为此,让我们介绍一组二元变量pui,它表示用户u对项目i的偏好。 pui值是通过二值化rui值得出的:
换句话说,如果用户你消耗了项目i(rui> 0),那么我们有一个指示你喜欢我(pui = 1)。另一方面,如果你从未消费过我,我们认为没有偏好(pui = 0)。然而,我们的信念与极大不同的置信水平有关。首先,根据数据的性质,pui的零值与低置信度相关联,因为不对项目采取任何积极行动可能源于除了不喜欢它之外的许多其他原因。例如,用户可能不知道该项目的存在,或者由于其价格或有限的可用性而无法消费它。此外,消费物品也可能是因为不喜欢它而产生的因素。例如,用户可能仅仅因为她停留在之前观看的节目的频道上而观看电视节目。或者消费者可以购买物品作为其他人的礼物,尽管不喜欢他自己的物品。因此,我们将在被指示为用户偏好的项目之间具有不同的置信水平。一般来说,随着rui的增长,我们有一个更强烈的迹象表明用户确实喜欢这个项目。因此,我们引入了一组变量cui,它们衡量了我们观察pui的信心。 cui的合理选择是:
这样,对于每个用户 - 项目对,我们对pui的信心很小,但是当我们观察到更多关于正偏好的证据时,我们对pui = 1的信心也相应增加。 增加率由常数α控制。 在我们的实验中,设定α= 40被发现产生了良好的结果。我们的目标是为每个用户u找到一个向量xu∈Rf,并为每个项目i找到一个向量yi∈Rf,它将考虑用户的偏好。 换句话说,假设偏好是内在产品:
这些向量将分别称为用户因子和项目因子。 从本质上讲,向量努力将用户和项目映射到一个共同的潜在因子空间,在那里可以直接比较它们。 这类似于显式反馈数据流行的矩阵分解技术,有两个重要的区别:(1)我们需要考虑变化的置信水平,(2)优化应考虑所有可能的u,i对,而不是仅考虑 与观察数据相对应的那些。 因此,通过最小化以下成本函数来计算因子:
后半部分对于使模型正则化是必要的,使得它不会过度拟合训练数据。 参数λ的精确值是数据相关的并且通过交叉验证确定
请注意,成本函数包含m·n项,其中m是用户数,n是项数。 对于典型的数据集,m·n可以轻松达到几十亿。 这一大量术语阻止了大多数直接优化技术,如随机梯度下降,这种技术被广泛用于显式反馈数据集。 因此,我们建议另一种有效的优化过程,如下所示。
观察到当用户因子或项目因子被固定时,成本函数变为二次方,因此可以容易地计算其全局最小值。 这导致交替最小二乘优化过程,其中我们在重新计算用户因素和项目因子之间交替,并且保证每个步骤降低成本函数的值。 交替最小二乘用于显式反馈数据集[2],其中未知值被视为缺失,导致稀疏目标函数。 隐式反馈设置需要不同的策略来克服密集成本函数并整合置信水平。 我们通过利用变量的结构来解决这些问题,以便可以实现此过程的高度可扩展性。
第一步是重新计算所有用户因素。 让我们假设所有项目因子都收集在n×f矩阵Y内。 在循环遍历所有用户之前,我们在时间O(f2n)中计算f×f矩阵Y T Y. 对于每个用户u,让我们定义对角线n×n矩阵Cu,其中Cii u = cui,以及包含u(pui值)的所有偏好的向量p(u)∈Rn。 通过区分,我们找到了xu的分析表达式,它最小化了成本函数(3):
这里的计算瓶颈是计算Y T CuY,其天真计算将需要时间O(f2n)(对于m个用户中的每一个)。通过使用Y T CuY = Y T Y + Y T(Cu-I)Y的事实实现了显着的加速。现在,Y T Y独立于你并且已经预先计算好了。至于Y T(Cu - I)Y,请注意Cu - I只有nu非零元素,其中nu是rui> 0且通常为nu«n的项目数。类似地,Cup(u)仅包含nu非零元素。因此,在时间O(f2nu + f3)中执行xu的重新计算。这里,我们假设矩阵求逆的O(f3)时间(Y T CuY +λI)-1,即使存在更有效的算法,但可能与通常较小的f值相关性较小。该步骤在m个用户中的每一个上执行,因此总运行时间是O(f2N + f3m),其中N是非零观测的总数,即N = Pu nu。重要的是,运行时间与输入的大小呈线性关系。 f的典型值介于20和200之间;见第6节的实验研究。
重新计算用户因素之后,以并行方式重新计算所有项目因子。 我们将所有用户因子排列在m×f矩阵X内。首先,我们在时间O(f2m)中计算f×f矩阵XT X. 对于每个项目i,我们定义对角线m×m矩阵Ci,其中Ci uu = cui,以及包含i的所有偏好的向量p(i)∈Rm。 然后我们解决:
使用与用户因素相同的技术,该步骤的运行时间将是O(f2N + f3n)。 我们采用了一些用户和项目因子的配对重新计算,直到它们稳定。 典型的扫描次数为10次。
整个过程随着数据的大小线性变化。 在计算了用户和项目因素之后,我们建议用户使用最大值为pui = xT u yi的K个可用项目,其中pui表示项目i的用户u的预测偏好。
既然已经完成了我们技术的基本描述,我们想进一步讨论它,因为我们的一些决定可以修改。 例如,通过将对应的pui的rui的最小阈值设置为非零,可以与rui不同地导出pui。 类似地,有很多方法可以将rui转换为置信水平cui。另一种对我们也很有效的替代方法是设置
无论方案的确切变体如何,重要的是要实现其主要属性,以解决隐式反馈的独特特征:
- 将原始观察结果(rui)转换为具有不同解释的两个独立的态度:偏好(pui)和置信水平(cui)。 这更好地反映了数据的性质,对于提高预测准确性至关重要,如实验研究所示(第6节)。
- 一种算法,通过利用变量的代数结构,在线性运行时间内解决所有可能的(n·m)用户项组合。
网友评论