协同过滤算法简介

协同过滤算法简介

协同过滤算法在推荐系统算法领域中也已经被研究了许多年,提出了不少的方法,我们就来把这些算法归类一下。

协同过滤方法的一个基本假设就是,如果用户A和用户B在一些物品偏好上,具有相似的历史标注模式或者行为习惯,那么他们在其余项目上都具有一定相似的兴趣。

协同过滤算法主要分为两大类:基于内存的方法、基于模型的方法。而协同过滤算法的难点就在于用户评价矩阵非常稀疏,缺省的值较多,存在共同评价的物品非常少。

1. 基于内存的协同过滤算法

基于内存的协同过滤算法主要就是两个代表:基于用户和基于物品。这两个都在我们上篇博文中讲过了,如下:

http://blog.csdn.net/puqutogether/article/details/43524641

其主要的步骤就是:

这两种方法是基于内存一类方法的代表,后续的扩展包括很多,主要是为了解决评价矩阵中高稀疏,缺省项太多的情况。

这些改进的方法包括:

1)基于缺省标注填充的协同过滤算法。在基于内存的协同过滤算法中,相似度的计算往往考虑的是用户共同标注过的项目,或者是共同标注过项目的用户。但是,评价矩阵是非常系数的,导致这两种共同项会非常少。这个方法将评价矩阵中缺失的值,采用相似用户标注的平均值来填充,提高了推荐精度;

    2)基于逆用户频率的协同过滤算法。对于一些物品,所有用户都标注偏好了,那么这个数据对用户相似度的计算就没有太高的用处,我们应该忽略掉。这个方法在计算相似度的时候,不是采用原始的评价矩阵,而是把它使用逆用户频率公式转换一下,转换公式为:

其中n_i表示标注过物品i的用户数量,n表示用户总数量。对于刚才那种情况,转换之后的特征就是0. 基于逆用户频率的协同过滤算法过滤掉了频繁标注对于相似度计算的影响,适当提高了非频繁标注的权重,提高了推荐精度;

    3)基于虚拟值估算的协同过滤算法。这个方法也是解决评价矩阵稀疏性问题的,其基本思想就是利用虚拟值插补技术,对评价矩阵中的缺失标注进行填充。

2. 基于模型的协同过滤算法

这类方法运用评价矩阵为训练数据,通过一些常见的机器学习算法(聚类,回归,贝叶斯)等,来学习出一个模型,以识别出复杂的用户或者物品标注模式,做出推荐。

1)基于聚类模型的协同过滤算法。在协同过滤中,聚类通常可以作为数据处理中间步骤,聚类的结果被用来下一步的分类和预测。例如,我们可以用评价矩阵的数据把用户聚类,然后在每个小簇中采用基于内存的协同过滤算法得到推荐;或者也可以在聚类之后,把用户到簇中心的距离作为一个权重,常与到后面的步骤中。不过,这类方法由于先聚类,在数据两更小的簇中协同过滤,小簇毕竟损失了一部分有用的信息,效果不一定很好;

2)基于贝叶斯信念网络;

3)基于回归模型;

4)基于隐语义模型。

这几个方法不通用,就不一一介绍了,需要了解的可以参考下面的文献。

参考文献:

《基于协同过滤的推荐算法研究》

时间: 2024-10-29 19:07:23

协同过滤算法简介的相关文章

《推荐系统》基于用户和Item的协同过滤算法的分析与实现(Python)

1:协同过滤算法简介 2:协同过滤算法的核心 3:协同过滤算法的应用方式 4:基于用户的协同过滤算法实现 5:基于物品的协同过滤算法实现 一:协同过滤算法简介 关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐.在问的时候,都习惯于问跟自己口味差不 多的朋友,这就是协同过滤的核心思想. 协同过滤是在海量数据中挖掘出小部分与你品味类似的用户,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的东西

机器学习之协同过滤算法(推荐系统)

前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 很多网站都有推荐系统,向我们推荐我们想要地或者有可能需要的信息,那么它是怎么实现的呢?因为它们 都采用了推荐算法,在现今的推荐算法之中,最被大家广泛认可和采用的是协同过滤算法. 协同过滤算法 所谓基于内容的推荐,就是说我们的item具备某些属性attrs,然后我们可以通过某个user的历史评分记录, 计算出该user对各种 属性 attr的喜好程度,从而可以给user推荐具备他喜欢的attr的item. 比如说,每

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

GBDT(Gradient Boosting Decision Tree)算法&协同过滤算法

GBDT(Gradient Boosting Decision Tree)算法参考:http://blog.csdn.net/dark_scope/article/details/24863289 理解机器学习算法:http://blog.csdn.net/dark_scope/article/details/25485893 协同过滤算法:http://blog.csdn.net/dark_scope/article/details/17228643

Mahout实现基于用户的协同过滤算法

Mahout中对协同过滤算法进行了封装,看一个简单的基于用户的协同过滤算法. 基于用户:通过用户对物品的偏好程度来计算出用户的在喜好上的近邻,从而根据近邻的喜好推测出用户的喜好并推荐. 图片来源 程序中用到的数据都存在MySQL数据库中,计算结果也存在MySQL中的对应用户表中. package com.mahout.helloworlddemo; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.

基于用户的协同过滤算法(UserCF)

基于用户的协同过滤算法: 找到和目标用户相似的用户集合 找到这个集合中用户喜欢的但目标用户没有听过的物品 #encoding: utf-8 from Similarity import Person from Sort import select_sort file=open('user_bookmark','r') filew=open('user_bookRecommend','w') #加载训练集 trainSet={} while True: line=file.readline().s

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

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

机器学习----推荐系统之协同过滤算法

(一)问题描述 电影评分,下图中5部电影,4个人进行评分,评分从0-5,并且为整数,问号处表示没有评分. (二)基于内容的推荐系统 给每部电影添加两个features,针对这个问题中分别为romatic和action,范围为1-5,并且给出一部电影这两个参数就已知. 这里设,每部电影由xi表示,xi为一个3*1的向量,第一个x0为截距1,第二个为romantic指数,第三个为action指数.每个人的评分也由一个3*1的向量表示,第二个和第三个分别表示每个人对romantic和action的喜欢

推荐引擎之Mahout 基于用户协同过滤算法的使用

本文目的: 介绍一种常见推荐算法(用户协同过滤)的使用. 应用场景: XXX项目运行一段时间后,系统中将会存在很多视频信息, 而通常 APP 给用户推送的消息(1-3条/每天), 那么这就需要我们根据用户的行为特征,进行更为有效的推送. 工具介绍:mahout 协同过滤算法的使用 测试代码: /**  *   * 基于用户近邻协同过滤推荐算法,  * 本文目的:针对xxx后续广告推荐算法,提供一些算法模型的参考  *   * @版权所有:来谊金融 版权所有 (c) 2015  * @author