文章目录
1 传统的推荐系统模型
传统模型演化关系
这里对应的核心是 ——> 协同过滤那里的评分矩阵给分解成用户矩阵乘上物品矩阵的形式
2 协同过滤的进化——矩阵分解算法
2.1 隐语义模型? 这家伙到底是个啥?
引
举例
总结:
想办法基于这个评分矩阵去找到上面例子中的那两个矩阵, 也就是用户兴趣和物品的隐向量表达, 然后就把这个评分矩阵分解成Q和P两个矩阵乘积的形式, 这时候就可以基于这两个矩阵去预测某个用户对某个物品的评分了。 然后基于这个评分去进行推荐
2.2 矩阵分解算法的原理
原理图:
k的大小决定了隐向量表达能力的强弱, k越大, 表达信息就越强, 理解起来就是把用户的兴趣和物品的分类划分的越具体
原理公式:
2.3 矩阵分解算法的求解(BacisSVD, RSVD, ASVD, SVD++)
- 引:
传统的特征值分解(EVD) ——》 要求是方阵
传统的SVD——》要求原始矩阵是稠密的
2.3.1 Basic SVD(LFM)
-
思想
把求解上面两个矩阵的参数问题转换成一个最优化问题, 可以通过训练集里面的观察值利用最小化来学习用户矩阵和物品矩阵。
-
具体公式
-
有个问题
- 两个矩阵很大的时候, 往往容易陷入过拟合的困境, 这时候, 就需要在目标函数上面加上正则化的损失, 就变成了RSVD
2.3.2 RSVD
在目标函数中加入正则化参数(加入惩罚项)
一些在原来矩阵的基础加了偏置项(考虑的是其它的一些因素)
2.3.3 SVD++
将用户历史评分的物品加入到了LFM模型里
2.4 矩阵分解的优缺点
优点
- 泛化能力强
- 一定程度上解决了稀疏问题
- 空间复杂度低,由于用户和物品都用隐向量的形式存放, 少了用户和物品相似度矩阵, 空间复杂度由n^2,降到了( n + m ) ∗ f。
- 更好的扩展和灵活性:矩阵分解的最终产物是用户和物品隐向量,这个和深度学习中的embedding思想不谋而合,因此矩阵分解的结果非常便于与其他特征进行组合和拼接,并可以与深度学习无缝结合
缺点
- 矩阵分解只用到了频分矩阵,没有考虑到用户特征,物品特征和上下文特征,为了解决这个问题,后面提出了回归模型及后序的因子分解模型