基于用户的协同过滤算法
2015-08-18 10:15
211 查看
最近正在读项亮博士的《推荐系统实践》人民邮电出版社,这本书应当是目前国内为数不多的介绍推荐算法的了。目前正在学习基于用户的协同过滤算法(UserCF :user-based collaborative filtering)。
该算法是推荐系统中最古老的算法,标志着推荐系统的诞生,该算法在1992年提出用于邮件过滤系统,1994年被GroupLens用于新闻过滤。
算法的主要思想是如果一个用户A需要一个个性化推荐列表,我们可以找到和用户A有着相似兴趣的其他用户,给A推荐其他用户喜欢的且A没听说过的物品集合。
基于用户的协同过滤算法主要包括包括两个步骤:
1. 找到和目标用户兴趣相似的用户集合
2. 找到集合中用户喜欢的且目标用户没有听说过的物品集合
UserCF的关键在于步骤 1如何利用用户行为计算用户之间的相似性,最简单的计算相似性有Jaccard公式和余弦相似度公式。
![](http://img.blog.csdn.net/20150818170709076?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Jaccard
公式
![](http://img.blog.csdn.net/20150818170736243?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
余弦相似度
其中N(A) N(B)分别表示用户A,B有过正反馈的物品集合。
例如下图所示:
![](http://img.blog.csdn.net/20150818170756067?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
利用Jaccard公式计算 w(AB) = 1/4
利用余弦公式计算 w(AB) = 1/sqrt(6)
利用上述公式得到用户兴趣相似度 w 之后, UserCF算法会给用户推荐和他兴趣最相似的 K 个用户喜欢的物品。
![](http://img.blog.csdn.net/20150818170825250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中 r(vi)表示用户 v 对物品 i 的兴趣, 通常是 有兴趣r(vi)=0, 反之 r(vi)=0. p(u,i) 则是最终用户 u 对物品 i 的感兴趣程度,就是所谓的用户 u 对物品 i 的打分。
该算法是推荐系统中最古老的算法,标志着推荐系统的诞生,该算法在1992年提出用于邮件过滤系统,1994年被GroupLens用于新闻过滤。
算法的主要思想是如果一个用户A需要一个个性化推荐列表,我们可以找到和用户A有着相似兴趣的其他用户,给A推荐其他用户喜欢的且A没听说过的物品集合。
基于用户的协同过滤算法主要包括包括两个步骤:
1. 找到和目标用户兴趣相似的用户集合
2. 找到集合中用户喜欢的且目标用户没有听说过的物品集合
UserCF的关键在于步骤 1如何利用用户行为计算用户之间的相似性,最简单的计算相似性有Jaccard公式和余弦相似度公式。
Jaccard
公式
余弦相似度
其中N(A) N(B)分别表示用户A,B有过正反馈的物品集合。
例如下图所示:
利用Jaccard公式计算 w(AB) = 1/4
利用余弦公式计算 w(AB) = 1/sqrt(6)
利用上述公式得到用户兴趣相似度 w 之后, UserCF算法会给用户推荐和他兴趣最相似的 K 个用户喜欢的物品。
其中 r(vi)表示用户 v 对物品 i 的兴趣, 通常是 有兴趣r(vi)=0, 反之 r(vi)=0. p(u,i) 则是最终用户 u 对物品 i 的感兴趣程度,就是所谓的用户 u 对物品 i 的打分。
相关文章推荐
- 2015-8-18进一步修改
- 根据用户在tableview中点击(触摸)cell的自定义accessoryButton获得其indexpath
- 大白话系列之C#委托与事件讲解(序言)
- AHB-Lite简介
- 当当网
- 屏蔽所有统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法
- JackSon 数据之间的转换 java
- MYSQL-目录文件分配查询
- Gradle Android最新自动化编译脚本
- Oracle 分区操作
- GitHub和SourceTree入门教程
- 如何在shell中处理异常
- window server2008 R2 mvc 项目服务器环境的搭建。
- redis.conf配置详解
- Ubuntu14.04下安装OpenCV 3.0.RC1
- 苹果开发 笔记(62)edgesForExtendedLayout
- SQL_修改表结构
- Ugly Numbers(STL应用)
- iOS开发-UICollectionView
- Linux下查看目录大小