再理解协同过滤算法

  协同过滤算法是推荐系统中最古老,也是最简单高效的推荐算法。简单说协同过滤就是根据以往的用户产生的数据分析,对用户的新行为进行匹配分析来给用户推荐用户最有可能感兴趣的内容。

  协同过滤算法是为了解决长尾现象,也就是说推荐系统是为了解决长尾现象而诞生的。因为在之前在有限的空间(如:书店的书架、服装店的衣架、商店的货架、网页的展示区域)只能摆有限的物品进行展示,造成大量的非热门物品很难进入人们的视野,也就无法产生任何价值。研究表明挖掘长尾内容,产生的效益很可能会超过头部。因为网络、计算机的发展使关注大数据量下的长尾内容成本下降,使得关注长尾效益成为可能。

  简单说就是推荐系统会在有限空间内针对到单个用户推荐内容,帮助用户发现长尾内容中对自己更有价值的内容,发挥长尾内容的效益。也就是推荐算法和推荐系统的存在价值。

  协同过滤算法的数学模型有一个假设前提:每个人会有一个或多个自己感兴趣的领域。

  看起来有点废话,但是这是一切的基础,这样我们可以推论:

  1、如果两个事物同属于一个人的兴趣范围,那么这两个事物有较大可能属于不同类型的事物;
  2、如果两个事物同时属于很多人的兴趣范围,那么这两个事物有较大可能属于同一类型的事物。

  虽然已经可以用了,但是想推荐的更准确仍有很多工作需要做,比如:
  1、不活跃用户应该比活跃用户有更多的权重来确定物品相关性,因为活跃用户总会对很多事物点赞之类的,即使他只是感觉差不多而已。
  2、对热门事物的惩罚力度、推荐事物的新颖度等控制,都是一个需要试验后设置好一个理想的阈值。
  3、最后还需要根据推荐系统所推荐的事物,进行各种数据的优化和过滤以满足产品定位的各种需求。

  参考:http://blog.pureisle.net/archives/2120.html 推荐系统实践

时间: 2024-10-03 18:40:39

再理解协同过滤算法的相关文章

谁有协同过滤算法Demo

问题描述 根据评分推荐电影,最好是C#版的,有的话给我参考下,谢谢dming4@163.com 解决方案 解决方案二:协同过滤算法?没理解这跟算法有一毛钱关系所谓评分,不就是将评分写进数据库表里,表里至少要有用户ID(避免重复评分),评分(必须是数值型的,避免用字符)然后取个平均值,就是最终得分了按平均值统计查询,再按分高到分低排序,不就行了解决方案三:表里至少要有4列1.主键,可以用GUID或自增,主要方便删除和修改的时候定位到那一行,避免一次性修改多行2.电影名3.用户名4.评分然后sele

探秘推荐引擎之协同过滤算法小综述

      数学大神.统计学大神和数据挖掘推荐大神请关注. 一.数学期望的理解       早些时候,法国有两个大数学家,一个叫做布莱士·帕斯卡,一个叫做费马.帕斯卡认识两个赌徒,这两个赌徒向他提出了一个问题.他们说,他俩下赌金之后,约定谁先赢满5局,谁就获得全部赌金.赌了半天,A赢了4局,B赢了3局,时间很晚了,他们都不想再赌下去了.那么,这个钱应该怎么分?是不是把钱分成7份,赢了4局的就拿4份,赢了3局的就拿3份呢?或者,因为最早说的是满5局,而谁也没达到,所以就一人分一半呢?这两种分法都不

协同过滤算法 R/mapreduce/spark mllib多语言实现

用户电影评分数据集下载 http://grouplens.org/datasets/movielens/ 1) Item-Based,非个性化的,每个人看到的都一样 2) User-Based,个性化的,每个人看到的不一样 对用户的行为分析得到用户的喜好后,可以根据用户的喜好计算相似用户和物品,然后可以基于相似用户或物品进行推荐.这就是协同过滤中的两个分支了,基于用户的和基于物品的协同过滤. 在计算用户之间的相似度时,是将一个用户对所有物品的偏好作为一个向量,而在计算物品之间的相似度时,是将所有

C#实现协同过滤算法的实例代码

这篇文章介绍了C#实现协同过滤算法的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SlopeOne {     public class Rating     {         public float Value { get; set; }         public int Freq

有关基于项目的协同过滤算法的预测值计算问题

问题描述 有关基于项目的协同过滤算法的预测值计算问题 有个疑问,比如项目有100个最近邻居,但是目标用户对这100个邻居中的极少部分有评分,比如只对5个项目有评分,但是大部分论文中计算预测值时是这么计算的:,我将未评分值先简单置为0,那么分母就是所有相似度之和,分子却只是那5个目标用户有评分项的加权和,结果通常很小,与实际值相差很大,我想那个分母是不是只用包括最近邻居中用户已评分项的相似度? 解决方案 我刚计算预测值时分母只累加了已评分项的相似度,邻居300左右时MAE值达到最优值为0.75,正

基于物品的协同过滤算法(ItemCF)

最近在学习使用阿里云的推荐引擎时,在使用的过程中用到很多推荐算法,所以就研究了一下,这里主要介绍一种推荐算法-基于物品的协同过滤算法. ItemCF算法不是根据物品内容的属性计算物品之间的相似度,而是通过分析用户的行为记录来计算用户的相似度.该算法认为物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B. 基于物品的协同过滤算法实现步骤: 1.计算物品之间的相似度 2.根据物品的相似度和用户的历史行为记录给用户生成推荐列表 下面我们一起来看一下这两部是如何实现的: 一.计算物品之间的相似度

解决-求大神勾搭,关于mahout协同过滤算法的问题,不胜感激

问题描述 求大神勾搭,关于mahout协同过滤算法的问题,不胜感激 dd求大神帮忙解决mahout的协同过滤算法问题,老是报错,没办法解决,求指点

《R的极客理想——高级开发篇 A》一一2.1 用R重写Mahout协同过滤算法

2.1 用R重写Mahout协同过滤算法 问题 如何用R语言实现推荐算法? 引言 推荐系统在互联网应用中很常见,比如亚马逊为你推荐购书列表,豆瓣为你推荐电影列表.Mahout是Hahoop家族用于机器学习的分步式计算框架,主要包括三类算法,即推荐算法.聚类算法和分类算法.本节将用R语言来重写推荐部分的基于用户的协同过滤算法.用R语言重写Mahout的基于用户的协同过滤推荐算法,将完全按照Mahout的思路和设计进行实现,并与Mahout的计算结果进行对比.2.1.1 Mahout的推荐算法模型

协同过滤算法-k最近邻协同过滤中,k值如何确定?

问题描述 k最近邻协同过滤中,k值如何确定? k最近邻协同过滤算法中,如何确定用户最合适的邻居集大小,也就是k.