文章目录
- 1 矩阵分解MF针对问题
- 2 解决思路
- 2.1 引例
- 2.2 实际应用中
- 3 MF的几种方式
- 3.1 特征值分解
- 特征值、特征向量
- 特征值分解
- 缺点
- 3.2 奇异值分解(SVD)
- 示例:
- 基本定理
- 计算步骤
- 缺点
- 3.3 Basic SVD(LFM、Funk SVD)
- 3.4 RSVD
- 进一步优化
- 3.5 SVD++
- 4 MF优点、局限性
- 4.1 优点
- 4.2 局限性
1 矩阵分解MF针对问题
① 协同过滤处理稀疏矩阵的能力比较弱
② 协同过滤中,相似度矩阵维护难度大
2 解决思路
2.1 引例
将3×3的矩阵分解为一个3×4的矩阵与一个4×3的矩阵相乘。
这个例子中,用这些“隐向量”(小清新、重口味、优雅、伤感、五月天)给音乐风格打了一个标签。
总之就是用隐含向量给物品、用户打上标签。
之所以叫隐向量,是因为这些信息需要我们自己去挖掘,通过矩阵分解的方法把潜在的信息挖掘出来
2.2 实际应用中
(数值不能完全对上,只是近似)
- 矩阵是稀疏的
- 这里的隐含特征是不可解释的,即我们也不知道具体含义,要模型自己去学习
- k的大小决定了隐向量表达能力的强弱,k越大,表达信息就越强,理解起来就是:把用户的兴趣和物品的分类划分的越具体
- 通过用户矩阵和物品矩阵,预测评分,计算公式:
3 MF的几种方式
Matrix Factorization,MF——矩阵分解
3.1 特征值分解
特征值、特征向量
特征值分解
缺点
只适用于方阵
3.2 奇异值分解(SVD)
Singular Value Decomposition,SVD——奇异值分解
什么是奇异值分解,可以参考:奇异值分解
简单来说:奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。
奇异值分解克服了特征值分解只能适用于方阵的弊端,是能适用于任意的矩阵的一种分解的方法:
假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片:
示例:
补充:矩阵A的奇异值分解中,奇异值是唯一的,而矩阵U、V不是唯一的。
基本定理
任意给一个实矩阵,其奇异值分解一定存在
计算步骤
参考:计算步骤、奇异值分解的计算步骤
缺点
- 传统的SVD分解,会要求原始矩阵是稠密的,而我们这里的这种矩阵一般情况下是非常稀疏的,如果想用奇异值分解,就必须对缺失的元素进行填充,而一旦补全,空间复杂度就会非常高,且补的不一定对。
- 然后就是SVD分解计算复杂度非常高,而我们的用户-物品矩阵非常大,所以基本上无法使用。
3.3 Basic SVD(LFM、Funk SVD)
主要思想:将矩阵分解问题转化为:最优化问题,通过梯度下降进行优化。
参考:Basic SVD,LFM算法详解
3.4 RSVD
RSVD是在Basic SVD目标函数的基础上,加入了正则化参数(加入惩罚项),以防止过拟合。
进一步优化
Netfix Prize提出另一种LFM,在原来的基础上加了偏置项,来消除用户和物品打分的偏差
- 原因:
- 不同用户的打分体系不同,比如有的人认为3分就已经很高了
- 不同物品的衡量标准也有区别,比如电子产品的评分跟日常用品的评分标准也不同
3.5 SVD++
改进方向:
- 引入用户评分过的历史物品
- 物品之间的某种关联,会影响物品的评分。比如:对逃学威龙1评分高的人,可能也会对逃学威龙2高评分。
- 将这种关联对评分结果产生的影响,交给模型去学习
预测函数演化过程:
4 MF优点、局限性
4.1 优点
VS协同过滤:
- 泛化能力强,在一定程度上解决了数据稀疏的问题。
- 显然,协同过滤在应对稀疏矩阵时,准确率很低。举个例子:在一个共现矩阵中,大部分物品只有少数用户评分了,那么计算相似性时,很难找到准确的“相似”
- 而在矩阵分解中,比如梯度下降中,我们是不需要关注缺失值的,我们只需要利用已知的评分,去拟合出我们的两个矩阵,然后就可以用过这两个矩阵,去预测缺失值
- 协同过滤中,它只利用了“用户自身”跟“物品自身”的信息,矩阵分解中,挖掘了用户与物品的潜在信息,可以看作是对用户和物品“打标签”,用户和物品画像都得到了丰富,提高了泛华能力。
- 空间复杂度降低
- 更好的扩展性、灵活性
4.2 局限性
- 与协同过滤一样,同样无法利用用户特征、物品特征、上下文特征
- 缺乏用户历史行为时,无法进行推荐
参考:b站视频,博客