目前协同过滤是应用最广泛、最成功的个性化推荐技术,其中基于近邻的协同过滤是重要的一类。他的基本思想是用一种相似度度量方法找到最近邻居集合(目标用户的最相似用户集合或者项目的最相似项目集合),最后通过对最近邻居集合的评分进行加权平均求和产生推荐集。
相似度计算的准确性直接影响推荐质量,传统的相似度度量方法利用两个用户对相同项目的共同评分来计算用户之间的相似度;项目之间的相似度通过对项目的共同评分用户的评分计算得到。然而在数据极大稀疏的时候无法保证足够的共同评分数据,传统的相似度计算方法的推荐效果不佳。
所以使用协同过滤,其关键在于最近邻居集合的选择,推荐系统的性能直接依赖于目标用户/项目邻居的选择,依赖于用户/项目之间相似度的度量,从而改进相似度计算方法,缓解数据稀疏性问题、提高推荐质量。协同过滤中常用的相似度度量方法包括余弦相似度、调整余弦相似度、Pearson相关系数和、Jaccard相似度等。
余弦相似度
s i m c o s ( u , v ) = ∑ i ∈ I u , v r u , i r v , i ∑ i ∈ I u , v r u , i 2 ∑ i ∈ I u , v r v , i 2 sim_{cos}(u,v)=\frac{\sum_{i \in I_{u,v}} r_{u,i}r_{v,i}} {\sqrt {\sum_{i \in I_{u,v}} r_{u,i}^2} \sqrt {\sum_{i \in I_{u,v}} r_{v,i}^2}} simcos(u,v)=∑i∈Iu,vru,i2∑i∈Iu,vrv,i2∑i∈Iu,vru,irv,i
其中 I u , v I_{u,v} Iu,v为用户 u u u和用户 v v v的共同评分项目集; r u , i , r v , i r_{u,i},r_{v,i} ru,i,rv,i分别表示用户 u u u和用户 v v v对项目 i i i的评分。
余弦相似度使用两个向量的夹角余弦值度量相似度,两个向量的夹角越小,他们的夹角余弦值越大,余弦相似度越高。这种方式对于评分数据不敏感,它过分关注向量之间的夹角而忽略向量的长度,并且过于依赖两个用户的共同评分。
调整余弦相似度
s i m a c o s ( u , v ) = ∑ i , j ∈ I u , v ( r u , i − r u ‾ ) ( r v , i − r v ‾ ) ∑ i ∈ I u ( r u , i − r u ‾ ) 2 ∑ i ∈ I v ( r v , i − r v ‾ ) 2 sim_{acos}(u,v)=\frac{\sum_{i,j \in I_{u,v}} (r_{u,i}- \overline{r_u})(r_{v,i}- \overline{r_v})} {\sqrt {\sum_{i \in I_{u}} (r_{u,i}- \overline{r_u})^2} \sqrt {\sum_{i \in I_{v}} (r_{v,i}- \overline{r_v})^2}} simacos(u,v)=∑i∈Iu(ru,i−r