协同非负矩阵分解(Collaborative Non-negative Matrix Factorization, CNMF)是结合了非负矩阵分解(NMF)
和协同过滤(CF)
思想的一种方法,主要用于处理用户-项目评分矩阵的推荐系统场景
。
这种方法特别适合于处理大型稀疏矩阵
,因为用户往往只对一小部分项目进行过评分。
NMF基础
在非负矩阵分解中,给定一个非负矩阵
V
V
V (例如,用户-项目评分矩阵),目标是找到两个低秩的非负矩阵
W
W
W 和
H
H
H ,使得它们的乘积
W
H
WH
WH 大致等于
V
V
V 。数学上,可以表示为:
V ≈ W H V \approx WH V≈WH
其中,
- V V V 是一个 n × m n \times m n×m 的非负矩阵。
-
W
W
W 是一个
n
×
k
n \times k
n×k 的非负矩阵,被称为
基矩阵
(basis matrix)。 -
H
H
H 是一个
k
×
m
k \times m
k×m 的非负矩阵,被称为
混和矩阵
(mixture matrix)或编码矩阵
。 - k k k 是一个远小于 n n n 和 m m m 的整数,代表分解后的矩阵的秩。
CNMF公式
在协同非负矩阵分解中,目标是通过最小化重构误差来估计
W
W
W 和
H
H
H 。
对于存在评分的项,重构误差可以通过下面的公式来衡量:
min W , H ∑ ( i , j ) ∈ Ω ( V i j − ( W H ) i j ) 2 \min_{W,H} \sum_{(i,j) \in \Omega} (V_{ij} - (WH)_{ij})^2 W,Hmin(i,j)∈Ω∑(Vij−(WH)ij)2
其中,
- Ω \Omega Ω 是所有已知评分的索引对的集合,即用户-项目评分矩阵中非空条目的位置。
-
V
i
j
V_{ij}
Vij 是用户
i
i
i 对项目
j
j
j 的
评分。
-
(
W
H
)
i
j
(WH)_{ij}
(WH)ij 是通过
W
W
W 和
H
H
H 的乘积重构出来的用户
i
i
i 对项目
j
j
j 的
预测评分。
求解CNMF
CNMF通常使用迭代
优化算法来求解,其中一个流行的算法是交替非负最小二乘法(ANLS)
。
在每一步迭代中,固定其中
一个矩阵,求解另
一个矩阵,直到收敛为止。
公式中的每个字符
- V V V : 用户-项目评分矩阵。
- W W W : 基矩阵,每一列代表一个“原型”或“主题”,在推荐系统中可以理解为用户的偏好特征。
- H H H : 混和矩阵,每一行代表一个项目在不同“原型”或“主题”上的贡献。
- i i i : 用户索引。
- j j j : 项目索引。
- k k k : 分解的秩,即特征维度。
- Ω \Omega Ω : 已知评分的索引对集合。
- V i j V_{ij} Vij : 用户 i i i 对项目 j j j 的真实评分。
- ( W H ) i j (WH)_{ij} (WH)ij : 用户 i i i 对项目 j j j 的预测评分。
- ∑ \sum ∑ : 求和符号,表示对所有已知评分的误差求和。
- 2 ^2 2 : 平方操作,用于计算误差的平方,确保误差值非负并惩罚大的偏差。
应用
CNMF在推荐系统
中非常有用,因为它能够处理高维稀疏数据
,并且能够通过学习用户和项目的隐含特征来预测未评分项目。
此外,由于NMF的非负性约束
,它倾向于学习到易于解释的特征,这对于理解和优化推荐系统的性能很有帮助。