推荐系列(四):矩阵分解|Matrix Factorization

  • 时间:
  • 浏览:1

$$ \sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2 $$

关于WALS的完整版介绍都还要看该图:

$$ \min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 $$

嵌入矩阵都还要看作是

一个多常用的目标函数是欧式距离,这里以此为例。为此,最小化所有观察到的item对的误差平方和:

注意,在实际应用中,还还要仔细权衡观察到的item对。这类,热门item或频繁使用(这类,重度用户)不可能 会主导目标函数。只要,我们我们我们还要通过对训练样例进行加权重来考虑item频率来校正模型效果。换句话说,都还要通过以下方法 替换目标函数:

矩阵分解一般是用近似的方法 表示,而完整版后会使用整个矩阵表示,整个矩阵的元素个数是O(nm)个元素,而嵌入矩阵的元素个数是O((m+n)d),其中d的维数一般远小于m和n的维度。只要,嵌入矩阵不不可不后能 表示数据的潜在行态,这表明观察到的结果接近于低维子空间,这类于降维。在上述例子中,不可能 维度太低,以至于你这种 优点被忽略不计。然而,在现实的推荐系统中,使用矩阵分解的效果都还要比学习完整版矩阵会更加高效。

在上节讲过,用户和item之间的关系都还要用一个多关系矩阵表示,而矩阵分解式一个多简单的嵌入模型。假设一个多用户反馈矩阵:

SGD

$$ V \in \mathbb R^{n \times d} $$

在上述目标函数中,只对观察到的item对(i,j)求和,即用户反馈矩阵中的非零值。然而,只对观察到值进行外理并完整版后会一个多好的想法 ,不可能 矩阵中的所有元素后会对模型产生影响,不可能 只用观察到的值进行仿真模拟,则该模型无法得出有效的推荐且泛化能力差。语录总结:在推荐系统中,正样本数据集和负样本数据集完整版后会有用的。

只要会有另外的求和方法 ,如下所示:

$$ U V^T(i, j)U . V^T\langle U_i, V_j\rangle i j A_{i, j} $$

$$ \min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2 $$

最小化目标函数的常用算法包括:

将为观察到的item对的值设置为0, 并对矩阵中所有的值求和,只要求和公式从如果的只对观察到的item对求和之外,还还要对未观察到的item对,求和公式如下所示:

,其中m表示用户的数量,n表示item的数量

相反,加权矩阵分解 将目标分解为一个多总和:

$$ U \in \mathbb R^{m \times d} $$

目标函数对于U和V完整版后会二次的,其中,随机梯度下降算法是比较常用的模型训练方法 ,这里不做越来越来越多的介绍,而WALS通过随机初始化嵌入,只要交替进行以下工作:

$$ A \in R^{m \times n} $$

的点积

$$ \min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2 $$

上述问题图片都还要使用奇异值分解(Singular Value Decomposition , SVD)外理,然而SVD完整版后会一个多很好的外理方法 ,这是不可能 其在实际应用中,矩阵A不可能 是非常稀疏的,比如在视频或新闻APP中,热门的item不可能 被更多的用户浏览,因为矩阵很稀疏。稀疏矩阵会因为SVD的求解结果近似为0,因为泛化能力很差。

SGD和WALS各有自身的优点有缺点:

WALS