矩阵分解算法

矩阵分解算法

针对协同过滤算法的头部效应较明显、泛化能方较弱的问题,矩阵分解算法被提出。矩阵分解 在协同过滤算法中“共现矩阵”的基础上,加入了隐向量的概念,加强了模型处理稀疏矩阵的能力,针对性地解决了协同过滤存在的主要问题。
矩阵分解算法_第1张图片
上图描述了协同过滤算法和矩阵分解算法在视频推荐场景下的算法原理。如图(a)所示,协同过滤算法找到用户可能喜欢的视频的方式很直接,即基于用户的观看历史,找到跟目标用户Joe看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户Joe。矩阵分解算法则期望为每一个用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上,如图(b)所示,距离相近的用户和视频表明兴趣 特 点 接 近 , 在 推 荐 过 程 中 , 就 应 该 把 距 离 相 近 的 视 频 推 荐 给 目 标 用 户 。 例 如 , 如果希望为图(b)中的用户Dave推荐视频,可以发现离Dave的用户向量最近的两个视频向量分别是“Ocean’s 11”和“The Lion King”,那么可以根据向量距离由近到远的顺序生成Dave的推荐列表。
但关键问题是如何得到这样的隐向量呢?在“矩阵分解” 的算法框架下,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的,这也是“矩阵分解”名字的由来。
矩阵分解算法_第2张图片
矩阵分解算法将 mxn 维的共现矩阵R分解为 mxk 维的用户矩阵和 kxn 维的物品矩阵K相乘的形式。其中m是用户数量,n是物品数量,k是隐向量的维度。k的大小决定了隐向量表达能力的强弱。k的取值越小,隐向量包含的信息越少,模型的泛化程度越高;反之,k的取值越大,隐向量的表达能力越强, 但泛化程度相应降低。此外,k的取值还与矩阵分解的求解复杂度直接相关。在具体应用中,k的取值要经过多次试验找到一个推荐效果和工程开销的平衡点。
基于用户矩阵U和物品矩阵V,用户u对物品i的预估评如下所示:
注意这里向量qp之间是内积而不是向量乘法。
在这里插入图片描述
其中pu是用户u在用户矩阵U中的对应的行向量,qi 是物品i在物品矩阵V中的对应列向量。

矩阵分解的过程

对矩阵进行矩阵分解的主要方法有三种:特征值分解(Eigen Decomposition )、 奇异值分解(Singular Value Decomposition,SVD )和梯度下降(Gradient Descent)。其中,特征值分解只能作用于方阵,显然不适用于分解用户-物品矩阵。
奇异值分解的具体描述如下:
矩阵分解算法_第3张图片
可以说,奇异值分解似乎完美地解决了矩阵分解的问题,但其存在两点缺陷, 使其不宜作为互联网场景下矩阵分解的主要方法。
( 1 ) 奇异值分解 要 求 原 始 的 共 现 矩 阵 是 稠 密 的 。 互 联 网 场 景 下 大 部 分 用 户 的 行 为 历 史 非 常 少 , 用 户 - 物 品 的 共 现 矩 阵 非 常 稀 疏 , 这 与 奇 异 值 分 解 的 应 用 条 件 相悖。如果应用奇异值分解,就必须对缺失的元素值进行填充。
( 2 )传统奇异值分解的计算复杂度达到了O(mn^2)的级别,这对于商品数量动辄上百万、用户数量往往上千万的互联网场景来说几乎是不可接受的。
由于上述两个原 因 , 传统奇异值分解也不适用于解决大规模稀疏矩阵的矩阵分解问题 。 因 此 ,梯度下降法成了进行矩阵分解的主要方法,这里对其进行具 体 的介绍。
矩阵分解算法_第4张图片
是求解矩阵分解的目标函数 , 该目标函数的目的是让原始评分rui与用户向量和物品向量之积qi^t pu的差尽量小,这样才能最大限度地保存共现矩阵的原始信息。其中k是所有用户评分样本的集合。为了减少过拟合现象,加入正则化项后的目标函数如下所示。
矩阵分解算法_第5张图片
对上面的目标函数的求解可以利用非常标准的梯度下降过程完成。
矩阵分解算法_第6张图片
矩阵分解算法_第7张图片
在 完 成 矩 阵 分 解 过 程 后 , 即 可 得 到 所 有 用 户 和 物 品 的 隐 向 量 。 在 对 某 用 户 进 行 推 荐 时 , 可 利 用 该 用 户 的 隐 向 量 与 所 有 物 品 的 隐 向 量 进 行 逐 一 的 内 积 运 算 , 得 出该用户对所有物品的评分预测,再依次进行排序,得到最终的推荐列表。

消除用户和物品的打分偏差

由 于 不 同 用 户 的 打 分 体 系 不 同 ( 比 如 在 5 分 为 满 分 的 情 况 下 , 有 的 用 户 认 为 打 3 分 已 经 是 很 低 的 分 数 了 , 而 有 的 用 户 认 为 打 1 分 才 是 比 较 差 的 评 价 ) , 不同物品的衡量标准也有所区别(比如电子产 品的平均分和日用品的平均分差异有可能比较大),为了消除用户和物品打分的偏差(Bias),常用的做法是在矩阵分解时加入用户和物品的偏差向量,如下所示。
矩阵分解算法_第8张图片
与此同时,矩阵分解目标函数也需要在之前的基础上做相应改变 。
在这里插入图片描述
同理,矩阵分解的求解过程会随着目标函数的改变而变化,主要区别在于利用新的目标函数,通过求导得出新的梯度下降公式,在此不再赘述。加入用户和物品的打分偏差项之后,矩阵分解得到的隐向量更能反映不同用户对不同物品的“真实”态度差异,也就更容易捕捉评价数据中有价值的信息, 从而避免推荐结果有偏。

矩阵分解的优点和局限性

相比协同过滤,矩阵分解有如下非常明显的优点。
(1 )泛化能力强。在一定程度上解决了数据稀疏问题。
(2) 空间杂度低 。 不需再 储协 同 过 滤 模 型 服 务 阶 段 所 需 的 “ 庞 大 ” 的 用 户 相 似 性 或 物 品 相 似 性 矩 阵 ,只需存储用户和物品 隐 向 量 。 空 间 复 杂 度 由 级 别 降低到k级别。
(3) 更 好 的 扩 展 性 和 灵 活 性 。 矩 阵 分 解 的 最 终 产 出 是 用 户 和 物 品 隐 向 量 , 这其实与深度学习中的Emb e d d i n g思想不谋而合,因此矩阵分解的结果也非常便于与其他特征进行组合和拼接,并便于与深度学习网络进行无缝结合。
与 此 同 时 , 也 要 意 识 到 矩 阵 分 解 的 局 限 性 。 与 协 同 过 滤 一 样 , 矩 阵 分 解 同 样 不 方 便 加 人入用 户 、 物 品 和 上 下 文 相 关 的 特 征 , 这 使 得 矩 阵 分 解 丧 失 了 利 用 很 多 有 效 信 息 的 机 会 , 同 时 在 缺 乏 用 户 历 史 行 为 时 , 无 法 进 行 有 效 的 推 荐 。 为 了 解 决 这 个 问 题 , 逻 辑 回 归 模 型 及 其 后 续 发 展 出 的 因 子 分 解 机 等 模 型 , 凭 借 其 天 然 的 融 合 不同特征的能力,逐渐在推荐系统领域得到更广泛的应用。

你可能感兴趣的:(深度学习推荐系统,矩阵,算法,推荐算法)