随着Web2.0的发展,现在已经进入了一个数据爆炸的时代。人们想要找到本身须要的信息也愈来愈难。
–所以有了Search,在用户对本身需求相对明确的时候,用Search能很快的找到本身须要的数据
–但不少状况下,用户其实并不明确本身的须要,或者他们须要更加符合他们我的口味和喜爱的结果,所以出现了Recommendation
–这是个从数据的搜索到发现的转变
推荐方法分类–基于数据算法
•推荐系统能够简化建模为如下模型 app
根据数据的不一样,能够把推荐方法分为如下3类:
–根据用户特征(人口统计学):年龄,性别,职业,收入,地理位置
–根据物品的特征:关键词,基因…
–根据用户对物品的行为:评分,购买,评论…
协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)
基于用户的协同过滤 优化
基本原理
–根据全部用户对物品或者信息的偏好,计算用户间的类似度
–基于类似度找到与当前用户口味和偏好类似的“邻居”用户群,在通常的应用中是采用计算“K-邻居”的算法
–基于这K 个邻居的历史偏好信息,为当前用户进行推荐
用户类似度的计算
–每一个用户是一个向量,向量空间为物品集合,用向量的距离表示用户的类似度,cosine类似度

优化方法:
•不少user之间其实没有共同的item,致使分子为0.
•因此先创建物品到用户的倒排表,这样就很容易找到有共同打分的user,对每两个对物品有评价的用户,在User-User的类似度表中先标出他们的分子,最后在统一计算他们的类似度
基于物品的协同过滤网站
基本原理也是相似的:
–它使用全部用户对物品或者信息的偏好,发现物品和物品之间的类似度,而后根据用户的历史偏好信息,将相似的物品推荐给用户spa
Item-based CF算法
blog
•
基本逻辑和User-based CF同样。
•须要注意:
–CF算法都对流行物品进行了一些特殊的处理,以减轻他在权重中的影响。
–对ItemCF,有一个扩展算法,就是考虑用户活跃度对物品类似度的影响,认为越活跃的用户对物品的贡献度越小,相似UserCF的扩展。其实都是相似TFIDF的计算,其实对于过于活跃的用户,有的系统会忽略它的兴趣列表,这样能够提升推荐的覆盖率。
•ItemCF的类似度矩阵应该进行归一化处理,这样能够避免不一样类型物品类似度绝对值范围不一样的问题,以提升推荐的准确率。
两种协同过滤方法的比较
•差异
–UserCF更侧重反映和用户兴趣类似的小群体的热点,因此UserCF其实更加社会化,而ItemCF侧重于维系用户的历史兴趣,是推荐更加个性化。
–UserCF更加适合时效性强,用户个性化兴趣不明显的领域,好比个性化新闻,而ItemCF适合长尾物品丰富,用户个性化需求强烈的领域,好比图书,电影。
–一般购物网站会采用基于物品的协同过滤方法,由于物品相对用户数目更少,更容易计算。
•应用
–基于用户:Digg, 新闻网站(好比雅虎新闻)
–基于物品:Amazon, Netflix, YouTube