协同过滤

基于用户的协同过滤推荐算法原理和实现

依然范特西╮ 提交于 2020-03-03 00:13:29
在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人。 基本思想 俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。 所以说,当一个用户 A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体 G,然后把 G 喜欢的、并且 A 没有听说过的物品推荐给 A,这就是基于用户的系统过滤算法。 原理 根据上述基本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤: 1. 找到与目标用户兴趣相似的用户集合 2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户 1. 发现兴趣相似的用户 通常用 Jaccard 公式或者余弦相似度计算两个用户之间的相似度。设 N(u) 为用户 u 喜欢的物品集合,N(v) 为用户 v 喜欢的物品集合,那么 u 和 v 的相似度是多少呢: Jaccard 公式: 余弦相似度:

【推荐系统实践】协同过滤

我怕爱的太早我们不能终老 提交于 2020-02-24 22:54:35
1. 推荐系统常用评价指标 主要讨论的是topN推荐 准确率,召回率,覆盖率(有多少物品被推荐出来了),流行度(推荐物品的流行度,计算平均流行度对每个物品的流行度取对数,因为满足指数分布) 2. 协同过滤 2.1 user base 计算两两用户的相似度,复杂度为O(U*U) 计算优化点:建立物品-用户的倒排表,物品下,每两个用户+1 关键参数K:参考最相似的k个用户的打分,k越大,越接近于热点,流行度越高,覆盖率越低,但准确率和召回率不一定 算法优化点:惩罚热门,原来分子是1的加和,改成1/log(1+物品i的热度) 2.2 item base 参数k:对指标没有明显规律(?) 对活跃的用户进行惩罚:和上面一样 哈利波特问题,对热门物品进行惩罚:所有物品都与哈利波特相似,分母加上(1-a) a指数 物品相似度归一化(重要):对相似矩阵,按列除以每列最大值。一般来说,热门门类的物品相似度比较大,不归一化的话,容易推荐出热门物品 2.3 对比 UserCF更加社会化,反应了所在群体的喜好 itemCF更加个性化,反映了自己的兴趣 新闻推荐中,兴趣比较粗粒度,热点大家都爱看,并且新闻更新很快,基本都用userCF 在电影,书籍推荐中,兴趣比较精细 3. 隐语义模型 topN推荐的关键问题:选取负样本 一般来说,正负样本数量一样,选那些热门但是没有行为的物品 正负样本比是关键参数

基于KMeans聚类的协同过滤推荐算法推荐原理、过程、代码实现 Canopy聚类算法 KMeans+Canopy聚类算法 聚类算法程序实现 KMEans聚类算法代码java

耗尽温柔 提交于 2020-02-16 23:43:00
基于KMeans聚类的协同过滤推荐算法可运用于基于用户和基于项目的协同过滤推荐算法中,作为降低数据稀疏度和提高推荐准确率的方法之一,一个协同过滤推荐过程可实现多次KMeans聚类。 一、基于KMeans聚类的协同过滤推荐算法推荐原理 KMeans聚类算法是聚类算法中最基础最常用、最重要的聚类算法。KMeans聚类算法首先需要确定N个初始中心点,初始中心点的选择对聚类结果影响很大,常用的初始中心点的选择有随机选择、自定义、采用Canopy聚类算法结果作为初始中心点,然后是重复遍历点与簇中心的距离,并不断修正簇中心点,可设置遍历次数和点与簇中心的最小距离影响聚类结果。 聚类的数据可以是一维数组、二维数组、N维数组,其中一维和二维数组的聚类结果便于可视化,一维数组初始中心点的选择采用自定义,这样聚类效果偏好,二维和N维数组采用Canopy聚类算法的聚类结果作为初始中心点效果偏好。下面介绍一下Canopy聚类算法: Canopy聚类算法 Canopy聚类算法的基本原则是:首先应用成本低的近似的距离计算方法高效的将数据分为多个组,这里称为一个 Canopy,暂时翻译为“树冠”,Canopy之间可以有重叠的部分;然后采用严格的距离计算方式准确的计算在同一Canopy中的点,将他们分配与最合适的簇中。Canopy聚类算法经常用于K均值聚类算法的预处理,用来找合适的k值和簇中心。

基于项目的协同过滤推荐算法原理、过程、代码实现 基于项目评分的协同过滤推荐算法程序 余弦、修正余弦、person皮尔森算法、欧几里得距离公式等相似度算法 movielens电影评分数据集

自古美人都是妖i 提交于 2020-02-16 23:33:13
本文主要介绍基于项目的协同过滤推荐算法的推荐原理、推荐过程、代码实现。 一、基于项目的协同过滤推荐算法推荐原理 基于项目的协同过滤推荐算法也是推荐算法中最基础、最简单、很重要的算法,主要是根据用户对项目的某一种操作行为,构成项目-用户操作行为矩阵,根据操作行为矩阵计算项目之间的相似度,最终为目标用户推荐目标用户有操作行为的预测评分高的项目,作为目标用户感兴趣的项目。 二、基于项目的协同过滤推荐算法推荐过程 基于项目的协同过滤推荐算法推荐过程可分为三个步骤:构建项目-用户操作行为矩阵、计算项目之间似度、获取推荐结果。 1、构建项目-用户操作行为矩阵 我们以用户对项目的评分数据为例,M个项目和N个用户最大有M*N条项目的评分数据,记为矩阵MN,在计算机语言中可以通过一个二维数组来表达array[M][N],项目用数组下标0-M表示,用户用数组下标0-N表示,矩阵MN图形如下所示(0表示用户对项目没有评分): 评分 0 1 2 3 4 5 … N 0 1 0 5 2 0 3 … 5 1 5 2 4 0 0 0 … 0 2 2 5 3 4 2 1 … 4 3 0 4 0 0 4 1 … 2 … … … … … … … … … M 3 0 4 2 3 2 … 1 项目-用户评分矩阵可适用于项目-用户浏览记录矩阵、项目-用户浏览时长矩阵、项目-用户播放次数矩阵、项目-用户播放时长矩阵、项目

多成分图卷积协同过滤

北战南征 提交于 2020-01-31 00:45:40
多成分图卷积协同过滤 本文由北京邮电大学联合北大和北交发表在AAAI2020上.代码和数据集见https://github.com/RuijiaW/Multi-Component-Graph-Convolutional-Collaborative-Filtering 知乎专栏对公式支持较好 , 见 https://zhuanlan.zhihu.com/c_1158788280744173568 个人公众号 图与推荐 介绍 推荐系统有很多种经典的算法也有多种理解视角.从图的角度来理解的话,推荐系统实际上是在做用户-商品二部图上的链路预测.推荐系统在工业界很容易落地创造大量的经济价值.各大定会上关于推荐论文也是层出不穷. 但是如果我们仅仅从用户-商品简单购买交互来看的话,其实是把购买行为的建立简化了.事实上,用户-商品二部图的形成通常源于高度复杂的潜在购买动机,例如性价比(cost-effective)或颜控(appearance),仅仅用用户-商品之间的单一购买关系无法精确的进行描述为什么购买行为发生,如下图所示. 用户U1,U3和U4的购买动机是高性价比, 他们更喜欢一些便宜实用的东西.而用户U2比较注意东西的外观,倾向于购买一些比较好看的东西.如果忽略上述潜在的购买意图,我们无法准确的预测U1将购买商品I3还是I4.如果考虑用户的潜在偏好,我们就会发现I4是对用户U1的更好建议

推荐系统之协同过滤的原理及C++实现

我怕爱的太早我们不能终老 提交于 2020-01-24 06:42:13
1.引言 假如你经营着一家网店,里面卖各种商品(Items),有很多用户在你的店里面买过东西,并对买过的Items进行了评分,我们称之为历史信息,现在为了提高销售量,必须主动向用户推销产品,所以关键是要判断出用户除了已经买过的商品之外还会喜欢哪些商品,这就需要利用用户购买商品过程产生的历史信息。协同过滤通常分为基于用户的协同过滤和基于商品的协同过滤。 基于用户的协同过滤 :利用用户之间的相似度进行推荐 基于物品的协同过滤 :利用物品之间的相似度进行推荐 2.原理 关于协同过滤的原理网上到处都有,思想很简单,这里就不赘述,下面举一个简单的实例来说明基于用户的协同过滤: 上面每一行代表一个用户,每一列代表一个商品,比如第2行第一列的3表示用户2对商品1的评分为3,0代表对应的用户还没有购买过该商品,现在想预测用户2对商品4的评分: 找出对商品4评过分的用户:用户1,3,5,8,9,10,评分分别为:4, 2, 1, 3, 3, 1 分别计算用户2与用户1,3,5,8,9,10之间的相似度,相似度的计算方法有很多,常用的分为3类:欧氏距离,余弦相似度,皮尔逊相关系数,网上很容易查到,这里以常用的余弦相关系数说明:      要计算用户2与用户1之间的相似度,首先找到二者都评过分的商品为:商品1, 2, 9, 10,用户1对这4个商品的评分向量为r1=[5 3 4 4]

推荐系统之协同过滤推荐算法

无人久伴 提交于 2020-01-11 20:18:19
1.思想简介: 协同过滤,从字面上理解,包括协同和过滤两个操作。所谓协同就是利用群体的行为来做决策(推荐)。对于推荐系统来说,通过用户的持续协同作用,最终给用户的推荐会越来越准。而过滤,就是从可行的决策(推荐)方案(标的物)中将用户喜欢的方案(标的物)找(过滤)出来。协同过滤分为基于用户的协同过滤和基于标的物(物品)的协同过滤两类算法。 基于协同过滤的两种推荐算法,核心思想是很朴素的”物以类聚、人以群分“的思想。所谓物以类聚,就是计算出每个标的物最相似的标的物列表,我们就可以为用户推荐用户喜欢的标的物相似的标的物,这就是基于物品(标的物)的协同过滤。所谓人以群分,就是我们可以将与该用户相似的用户喜欢过的标的物的标的物推荐给该用户(而该用户未曾操作过),这就是基于用户的协同过滤。 基于协同过滤的两种推荐算法,核心思想是很朴素的”物以类聚、人以群分“的思想。所谓物以类聚,就是计算出每个标的物最相似的标的物列表,我们就可以为用户推荐用户喜欢的标的物相似的标的物,这就是基于物品(标的物)的协同过滤。所谓人以群分,就是我们可以将与该用户相似的用户喜欢过的标的物的标的物推荐给该用户(而该用户未曾操作过),这就是基于用户的协同过滤。具体思想可以参考下面的图 2.算法原理 协同过滤的核心是怎么计算标的物之间的相似度以及用户之间的相似度。我们可以采用非常朴素的思想来计算相似度

协同过滤算法智能推荐原理与实践

时光总嘲笑我的痴心妄想 提交于 2019-12-19 09:02:47
数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品,但是当超市将两种产品放到相邻货架销售的时候,会大大提高两者销量。很多时候看似不相关的两种产品,却会存在这某种神秘的隐含关系,获取这种关系将会对提高销售额起到推动作用,然而有时这种关联是很难通过经验分析得到的。这时候我们需要借助数据挖掘中的常见算法-协同过滤来实现。这种算法可以帮助我们挖掘人与人以及商品与商品的关联关系。 协同过滤算法是一种基于关联规则的算法,以购物行为为例。假设有甲和乙两名用户,有a、b、c三款产品。如果甲和乙都购买了a和b这两种产品,我们可以假定甲和乙有近似的购物品味。当甲购买了产品c而乙还没有购买c的时候,我们就可以把c也推荐给乙。这是一种典型的user-based情况,就是以user的特性做为一种关联。 一、业务场景描述 通过一份7月份前的用户购物行为数据,获取商品的关联关系,对用户7月份之后的购买形成推荐,并评估结果。比如用户甲某在7月份之前买了商品A,商品A与B强相关,我们就在7月份之后推荐了商品B,并探查这次推荐是否命中。 本次实验选用的是PAI-Studio作为实验平台,仅通过拖拽组件就可以快速实现一套基于协同过滤的推荐系统。本实验的数据和完整业务流程已经内置在了PAI首页模板,开箱即用: 二、数据集介绍 数据源:本数据源为天池大赛提供数据,数据按时间分为两份

推荐系统的常用算法原理和实现

故事扮演 提交于 2019-12-17 03:50:34
推荐算法介绍 基于人口统计学的推荐 这是最为简单的一种推荐 算法 ,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。 系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。 优缺点: 不需要历史数据,没有冷启动问题 不依赖于物品的属性,因此其他领域的问题都可无缝接入。 算法比较粗糙,效果很难令人满意,只适合简单的推荐 基于内容的推荐 与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。 系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙, 还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户 A很可能对电影C也感兴趣。于是将电影C推荐给A。 优缺点: 对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度 物品的属性有限,很难有效的得到更多数据 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性 需要用户的物品的历史数据,有冷启动的问题 协同过滤 协同过滤是推荐算法中最经典最常用的

基于用户协同过滤与基于项目协同过滤的适用场景

冷暖自知 提交于 2019-12-14 01:50:42
一、在适合用途上的比较 基于用户的协同过滤算法主要有两步: 1)找到和目标用户兴趣相似的用户集合 2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。 基于物品的协同过滤算法主要有两步: 1)计算物品之间的相似度。 2)根据物品的相似度和用户的历史行为给用户生成推荐列表。 Item CF是利用物品间的相似性来推荐的,所以假如用户的数量远远超过物品的数量,那么可以考虑使用Item CF,比如购物网站,因其物品的数据相对稳定,因此计算物品的相似度时不但计算量较小,而且不必频繁更新;User CF更适合做新闻、博客或者微内容的推荐系统,因为其内容更新频率非常高,特别是在社交网络中,User CF是一个更好的选择,可以增加用户对推荐解释的信服程度。 而在一个非社交网络的网站中,比如给某个用户推荐一本书,系统给出的解释是某某和你有相似兴趣的人也看了这本书,这很难让用户信服,因为用户可能根本不认识那个人;但假如给出的理由是因为这本书和你以前看的某本书相似,这样解释相对合理,用户可能就会采纳你的推荐。 UserCF是推荐用户所在兴趣小组中的热点,更注重社会化,而ItemCF则是根据用户历史行为推荐相似物品,更注重个性化。所以UserCF一般用在新闻类网站中,如Digg,而ItemCF则用在其他非新闻类网站中,如Amazon,hulu等等。 因为在新闻类网站中