【机器学习】基于奇异值分解(SVD)的协同过滤推荐算法及python实现
推荐算法是机器学习的一个重要分支,协同过滤(Collaborative Filtering,CF)算法是最基本的推荐算法,CF算法从历史行为数据中挖掘用户的兴趣,为用户推荐其最可能感兴趣的项(参考资料1)。
一、协同过滤推荐算法
1.1、协同过滤算法的分类
协同过滤算法可以分为基于用户的协同过滤算法和基于项的协同过滤算法。基于用户的协同过滤算法计算用户之间的相似度,并根据用户之间的相似度给目标用户未评分项进行预测,找出目标用户对未评分项的兴趣;基于项的协同过滤算法计算项之间的相似度,并根据项之间的相似度给目标用户未评分项进行预测,找出目标用户对未评分项的兴趣。
1.2、相似度的度量
相似度的度量必须要满足三个条件:非负性、对称性和三角不等性(参考资料2)。本博文采用余弦相似度来度量两个向量(X,Y)之间的相似度。
C o s S i m ( X , Y ) = ⟨ X , Y ⟩ ∥ X ∥ ∥ Y ∥ {\mathop{\rm Cos}\nolimits} {\mathop{\rm Si}\nolimits} m\left( {X,Y} \right) = \frac{ {\left\langle {X,Y} \right\rangle }}{ {\left\| X \right\|\left\| Y \right\|}} CosSim(X,Y)=∥X∥∥Y∥⟨X,Y⟩
其中 ⟨ X , Y ⟩ {\left\langle {X,Y} \right\rangle } ⟨X,Y⟩为向量 X X X与向量 Y Y Y的内积, ∥ X ∥ {\left\| X \right\|} ∥X∥和 ∥ Y ∥ {\left\| Y\right\|} ∥Y∥分别是向量 X X X与向量 Y Y Y的范数。
1.3、商品评分的预测
基于用户的协同过滤算法中对目标用户 u u u未评分项 i i i的预测公式为:
p ( u , i ) = ∑ v ∈ N ( i ) w u , v r v , i p\left( {u,i} \right) = \sum\limits_{v \in N(i)} { {w_{u,v}}{r_{v,i}}} p(u,i)=v∈N(i)∑wu,vrv,i
其中 N ( i ) {N(i)} N(i