一、协同过滤
其中基于模型的协同过滤技术中尤为矩阵分解(Matrix Factorization)技术最为普遍和流行,因为它的可扩展性极好并且易于实现
二、矩阵分解MF
2.1基础知识
随机梯度下降、矩阵运算、矩阵求导、特征值与特征向量的概念与求法、求偏导运算、推荐系统中的冷启动现象
推荐系统冷启动问题指的就是对于新注册的用户或者新入库的标的物, 该怎么给新用户推荐标的物让用户满意,怎么将新标的物分发出去,推荐给喜欢它的用户。
数据稀疏
拿电影场景举例,比如电影库中有10万部电影,但每个人看过的电影可能只有几十部,或者上百部。为了获取每个用户的表示,我们必须使用一个10万维的向量,但其中大部分都是0,这样的向量就是稀疏的。
2.2MF
-
特征分解
特征分解又称谱分解,其原理来源于线性代数中的相似矩阵变换,是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵(即可以通过相似变换变为对角矩阵的矩阵)才可以施以特征分解。分解公式如下所示:
特征分解需满足可对角化矩阵,进一步地把非方阵的矩阵分解使用奇异值分解(SVD)
-
奇异值分解(SVD)
假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),VT(V的转置)是一个M * M的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),下图反映了待分解的矩阵和分解出来的矩阵之间的大小关系:
Factorization分解:其实就是因式分解,在数学上,我们会将一个复杂的公式通过因式分解变成简单公式的组合。
每个物品i会有一个向量,而且每个用户u也会被联系一个向量,对于物品向量它衡量的是这个物品是多么符合隐特征,而用户向量是一个用户对这些隐特征多么偏爱。
我们要做的就是求分解出的两个矩阵和
,一个很简单的办法就是通过迭代的方式逐步求得与
之间的距离变小。设置loss值,然后使用梯度下降法。
| 物品 |
| 用户 |
| 用户 |
| 用户 |
| 全部已知评分的集合 |
| 正则化系数 |
| 等价于 |
| 用户偏置 |
| 物品偏置 |
| 所有电影评分的平均数(常量) |
| 等价于 |
| 训练的步长 |
| 用户隐反馈集合 |
| 时间上下文因素 |
| 社交网络信息 |
通过优化以下目标函数来训练出和
:
采用随机梯度下降(SGD)算法来训练两个隐向量矩阵:
但由于用户的个体差异性,即使是烂片也考虑到演员等因素打出高分,在这种情况下,我们其实需要为每个用户和每个物品加入一些偏置元素和
,代表了他们自带的与其他事物无关的属性,融入了这些元素,才能区别且正确地对待每一个用户和每一个物品,才能在预测中显得更加个性化。所以,预测评分的计算公式就变成了这样:
我们要优化、训练参数的目标公式也就变成了下图所示,要训练的参数除了用户、物品隐向量还要加上用户、物品偏置值,训练的方法同样是采用随机梯度下降法:
[参考资料]
1.推荐系统之矩阵分解(MF)没废话,有代码_mf 梯度-CSDN博客