[RecommendationSystem]推荐系统之协同过滤(CF)算法详解和实现Poll的笔记

集体智慧(CollectiveIntelligence)并不是Web2.0时代特有的,只是在Web2.0时代,大家在Web应用中利用集体智慧构建更加有趣的应用或者得到更好的用户体验。集体智慧是指在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是我们在单个个体上无法得到的,它往往是某种趋势或者人群中共性的部分。

Wikipedia和Google是两个典型的利用集体智慧的Web2.0应用:

协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤(CollaborativeFiltering,简称CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。

协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。当然其中有一个核心的问题:

协同过滤相对于集体智慧而言,它从一定程度上保留了个体的特征,就是你的品位偏好,所以它更多可以作为个性化推荐的算法思想。可以想象,这种推荐策略在Web2.0的长尾中是很重要的,将大众流行的东西推荐给长尾中的人怎么可能得到好的效果,这也回到推荐系统的一个核心问题:了解你的用户,然后才能给出更好的推荐。

前面作为背景知识,介绍了集体智慧和协同过滤的基本思想,这一节我们将深入分析协同过滤的原理,介绍基于协同过滤思想的多种推荐机制,优缺点和实用场景。

首先,要实现协同过滤,需要一下几个步骤

要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍:

以上列举的用户行为都是比较通用的,推荐引擎设计人员可以根据自己应用的特点添加特殊的用户行为,并用他们表示用户对物品的喜好。

在一般应用中,我们提取的用户行为一般都多于一种,关于如何组合这些不同的用户行为,基本上有以下两种方式:

收集了用户行为数据,我们还需要对数据进行一定的预处理,其中最核心的工作就是:减噪和归一化。

进行的预处理后,根据不同应用的行为分析方法,可以选择分组或者加权处理,之后我们可以得到一个用户偏好的二维矩阵,一维是用户列表,另一维是物品列表,值是用户对物品的偏好,一般是[0,1]或者[-1,1]的浮点数值。

当已经对用户行为进行分析得到用户喜好后,我们可以根据用户喜好计算相似用户和物品,然后基于相似用户或者物品进行推荐,这就是最典型的CF的两个分支:基于用户的CF和基于物品的CF。这两种方法都需要计算相似度,下面我们先看看最基本的几种计算相似度的方法。

相似度的计算

关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。下面我们详细介绍几种常用的相似度计算方法:

最初用于计算欧几里德空间中两个点的距离,假设x,y是n维空间的两个点,它们之间的欧几里德距离是:

可以看出,当n=2时,欧几里德距离就是平面上两个点的距离。

当用欧几里德距离表示相似度,一般采用以下公式进行转换:距离越小,相似度越大

sx,sy是x和y的样品标准偏差。

Cosine相似度被广泛应用于计算文档数据的相似度:

Tanimoto系数也称为Jaccard系数,是Cosine相似度的扩展,也多用于计算文档数据的相似度:

相似邻居的计算

介绍完相似度的计算方法,下面我们看看如何根据相似度找到用户-物品的邻居,常用的挑选邻居的原则可以分为两类:图1给出了二维平面空间上点集的示意图。

不论邻居的“远近”,只取最近的K个,作为其邻居。如图1中的A,假设要计算点1的5-邻居,那么根据点之间的距离,我们取最近的5个点,分别是点2,点3,点4,点7和点5。但很明显我们可以看出,这种方法对于孤立点的计算效果不好,因为要取固定个数的邻居,当它附近没有足够多比较相似的点,就被迫取一些不太相似的点作为邻居,这样就影响了邻居相似的程度,比如图1中,点1和点5其实并不是很相似。

与计算固定数量的邻居的原则不同,基于相似度门槛的邻居计算是对邻居的远近进行最大值的限制,落在以当前点为中心,距离为K的区域中的所有点都作为当前点的邻居,这种方法计算得到的邻居个数不确定,但相似度不会出现较大的误差。如图1中的B,从点1出发,计算相似度在K内的邻居,得到点2,点3,点4和点7,这种方法计算出的邻居的相似度程度比前一种优,尤其是对孤立点的处理。

基于用户的CF(UserCF)

基于用户的CF的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到K邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图2给出了一个例子,对于用户A,根据用户的历史偏好,这里只计算得到一个邻居-用户C,然后将用户C喜欢的物品D推荐给用户A。

基于物品的CF(ItemCF)

基于物品的CF的原理和基于用户的CF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。图3给出了一个例子,对于物品A,根据所有用户的历史偏好,喜欢物品A的用户都喜欢物品C,得出物品A和物品C比较相似,而用户C喜欢物品A,那么可以推断出用户C可能也喜欢物品C。

UserCFvs.ItemCF

前面介绍了UserCF和ItemCF的基本原理,下面我们分几个不同的角度深入看看它们各自的优缺点和适用场景:

ItemCF和UserCF是基于协同过滤推荐的两个最基本的算法,UserCF是很早以前就提出来了,ItemCF是从Amazon的论文和专利发表之后(2001年左右)开始流行,大家都觉得ItemCF从性能和复杂度上比UserCF更优,其中的一个主要原因就是对于一个在线网站,用户的数量往往大大超过物品的数量,同时物品的数据相对稳定,因此计算物品的相似度不但计算量较小,同时也不必频繁更新。但我们往往忽略了这种情况只适应于提供商品的电子商务网站,对于新闻,博客或者微内容的推荐系统,情况往往是相反的,物品的数量是海量的,同时也是更新频繁的,所以单从复杂度的角度,这两个算法在不同的系统中各有优势,推荐引擎的设计者需要根据自己应用的特点选择更加合适的算法。

相反的,在现今很流行的社交网络站点中,UserCF是一个更不错的选择,UserCF加上社会网络信息,可以增加用户对推荐解释的信服程度。

研究推荐引擎的学者们在相同的数据集合上分别用UserCF和ItemCF计算推荐结果,发现推荐列表中,只有50%是一样的,还有50%完全不同。但是这两个算法确有相似的精度,所以可以说,这两个算法是很互补的。

关于推荐的多样性,有两种度量方法:

第一种度量方法是从单个用户的角度度量,就是说给定一个用户,查看系统给出的推荐列表是否多样,也就是要比较推荐列表中的物品之间两两的相似度,不难想到,对这种度量方法,ItemCF的多样性显然不如UserCF的好,因为ItemCF的推荐就是和以前看的东西最相似的。

前面我们大部分都是从推荐引擎的角度考虑哪个算法更优,但其实我们更多的应该考虑作为推荐引擎的最终使用者--应用用户对推荐算法的适应度。

对于UserCF,推荐的原则是假设用户会喜欢那些和他有相同喜好的用户喜欢的东西,但如果一个用户没有相同喜好的朋友,那UserCF的算法的效果就会很差,所以一个用户对的CF算法的适应度是和他有多少共同喜好用户成正比的。

ItemCF算法也有一个基本假设,就是用户会喜欢和他以前喜欢的东西相似的东西,那么我们可以计算一个用户喜欢的物品的自相似度。一个用户喜欢物品的自相似度大,就说明他喜欢的东西都是比较相似的,也就是说他比较符合ItemCF方法的基本假设,那么他对ItemCF的适应度自然比较好;反之,如果自相似度小,就说明这个用户的喜好习惯并不满足ItemCF方法的基本假设,那么对于这种用户,用ItemCF方法做出好的推荐的可能性非常低。

邻居模型通常也被称为k-最近邻模型,或者简称为kNN。KNN模型可以获得精确的推荐结果并为结果给出合理的解释,它们是CF推荐系统中最早被使用也是直至目前最流行的一类模型。

PS:以下公式和图片转自博主自己的CSDN博客。

为了获得用户对产品的评分预测值,kNN模型一般包括以下三步:

1.计算相似度这步中计算每对产品之间的相似度(similarity)。一些被广泛使用的相似度测度包括:Pearsoncorrelation:

THE END
1.什么是URL过滤?URL过滤Cloudflare借助URL 过滤,公司能够阻止单个网页和文件,以限制员工可通过公司网络访问的内容。 学习目标 阅读本文后,您将能够: 了解什么是 URL 了解URL 过滤的工作方式 探索过滤 URL 类别和过滤单个 URL 之间的区别 比较URL 过滤和 DNS 过滤 相关内容 DNS 过滤 访问控制 ...https://www.cloudflare-cn.com/learning/access-management/what-is-url-filtering/
2.肾小球过滤的是什么专家文章肾小球过滤的是什么 肾小球过滤的是血细胞和大分子蛋白质,因此它是一种血液过滤器。影响肾小球过滤因素有很多,比如血管血压、囊内压以及血浆流量等等。 肾小球其实就是一个毛细血管团,很多检查都需要看肾小球的滤过率,也需要看肾小球有没有出现异常。大多数人都不知道肾小球有什么用,其实它有过滤的作用,肾小球...https://m.bohe.cn/article/mip/3i5yuw3vkv9xa5t.html
3.过滤的原理是什么?物理的原理是根据被过滤物的粒径不同,让它们一起通过筛网,大的留下,小的过去,这样达到过滤分离的目的.化学的原理是根据在被过滤物中所要得到的材料跟不需要的材料与同一种化学物质的不同反应结果(或生成沉淀或不反应),来实现分离.一定对的,我学过啊~ 解析看不懂?免费查看同类题视频解析查看解答...https://www.zybang.com/question/25e89ba66570a193a7cf680ad334a485.html
4.血过滤的作用是什么有问必答血过滤通常就是指使用一个机器和血管连接在一起,将血液当中的某些物质过滤掉,起到治疗疾病的作用,在...https://www.120ask.com/question/106794923.htm
5.家里装前置过滤器,到底是什么东西,真的好用吗?前置过滤器建议安装在家里的水表或者是入户总闸的处,这样就保证了进入室内的自来水都是被过滤了的。 前置过滤器,一般在水电进场打压测试后就可安装,记得提前购买并告知装修的水电师傅预留安装的位置。 前置过滤器安装要注意什么? 建议前置过滤器最好能垂直于地面,有利于排污,水管离地面最好预留一定的距离。 http://www.wheelton.cn/h-nd-205.html
1.常见的过滤方法都是什么常见的过滤方法都是什么?有哪些过滤方法是最常见的?相信这都是大家最想知道,最想了解的问题。下面医学教育网小编为大家搜集整理了相关信息,希望对大家能有所帮助。 常见的过滤方法 1 常压过滤:所用仪器有:玻璃漏斗、小烧杯、玻璃棒、铁架台等。要注意的问题有:在叠滤纸的时候要尽量让其与玻璃漏斗内壁贴近,这样会...https://www.med66.com/zhongyaoxuezhuanyezhishi/gc1705185206.shtml
2.空调滤棉是什么空调过滤棉的作用→MAIGOO知识摘要:空调滤棉是空调里不可缺少的一部分,空调滤棉在空调中起到的作用就是过滤杂质、净化空气、清除细菌的效果。市面上空调过滤棉的材质主要有合成纤维过滤棉、无纺布过滤棉、玻璃纤维过滤棉、活性炭过滤棉。下面来了解下空调滤棉的相关内容。 一、空调滤棉是什么 ...https://m.maigoo.com/goomai/292109.html
3.科普系列常说的过滤精度和过滤比到底是什么?这一期我们就跟大家说一说过滤精度和过滤比到底是什么? 过滤精度 过滤精度:其实就是过滤器滤芯的孔径;包含杂质的溶液通过滤材时,允许通过的最大颗粒的尺寸。 公称精度:由过滤器制造厂商给定的任意微米值,由于测试结果的重复性差,这种过滤精度已渐渐不使用。 https://www.pall.cn/zh_cn/industrial-manufacturing/pall-china-industrial-blogs/china-industral-blog-11.html
4.springboot某个类跳过过滤器springboot怎么写过滤器什么是过滤器? Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 https://blog.51cto.com/u_16099174/10174382
5.财务软件过滤是什么财务软件过滤是什么 导读:财务软件过滤可以帮助会计人员过滤潜在的财务错误和不合适的业务流程,以确保收入准确性、帐户安全性和及时结算,帮助企业确保财务稳定性和可持续发展。 财务软件过滤是一种使用财务系统软件来帮助会计人员过滤潜在的财务错误或不合适的业务流程的方法。这项技术可以帮助会计人员使用行业标准的过滤来...https://www.kuaizhang.com/news/detail_62905.html
6.前置过滤器作用是什么前置过滤器作用是什么 在我们日常生活当中,很多电器都会有前置过滤器,那么前置过滤器对于用水而言起到什么作用呢,今天小编就来跟大家说一说前置过滤器起到的作用是什么,希望可以给大家带来帮助,感兴趣的朋友们可以跟随小编一起来了解一下。 一、前置过滤器的作用是什么...https://m.jia.com/zixun/article/931903.html
7.空调过滤器的作用是什么空调过滤器的作用是什么 【太平洋汽车】空气过滤器的作用是过滤掉空气中的尘埃粒子(即杂质)。空调过滤器主要用于机房专用空调,通风系统的预过滤,净化空调洁净室回风过滤,高效过滤的预过滤,空压机的预过滤。 冬天来的时候,很多人洗空调不是洗外壳,而是洗空调内部的过滤器。由于静电,吸收很多粉尘,大大影响空调的制冷...https://www.yoojia.com/ask/5-11984206166098247636.html
8.过滤的反义词是什么过滤的同义词过滤的近义词——筛选、挑选、挑拣、剪辑、分离 过滤:拼音 :guo lv 释义:使液固或气固混合物中的流体强制通过多孔性过滤介质,将其中的悬浮固体颗粒加以截留,从而实现混合物的分离,是一种属于流体动力过程的单元操作。 滤的近义词是什幺 滤的近义词: 筛 ...https://www.xdyy8.com/juzi/75762.html
9.“非冷凝过滤“和“冷凝过滤”的区别威士忌中的是“非冷凝过滤“是什么意思? 非冷凝过滤(Non-chill filtering)是一种在瓶装威士忌之前去除杂质的过滤方法。在解释非冷凝过滤之前,我们需要了解冷凝过滤(Chill filtering)。 冷凝过滤是一种广泛应用于威士忌生产中的过滤方法。在这个过程中,威士忌先被冷却至接近冰点(大约为0°C / 32°F),然后通过一个...https://365whisky.com/article-detail/WrzaR7jW
10.什么是网络信息过滤技术?什么是网络信息过滤技术? 对有些不良信息,我们希望能从源头进行控制,堵塞这些信息的进入,基于源的内容阻塞就是信息过滤技术,它实际是由局域网、广域网等网络的主管或ISP对用户所能访问到的站点、内容进行限制,他们负责阻塞那些不良信息进入自己的网络。 1.在网络层阻塞(IP地址阻塞)...https://wap.qinfeng.gov.cn/info/4283/194292.htm
11.水龙头过滤器的作用是什么你肯定不知道如今,水资源短缺而且污染比较严重,安装水龙头过滤器是一件非常普遍的事情,大家都希望饮用到干净健康的水。然而水龙头过滤器的作用还是有很多人不太清楚,那么水龙头过滤器的作用是什么呢?接下来小编为大家介绍下水龙头过滤器的功效有哪些,一起来看看吧。 https://www.qizuang.com/gonglue/shuilongtou/58933.html
12.车内PM2.5过滤装置的作用是什么?汽车频道随着雾霾天气的频繁出现,车内空气质量也越来越受到人们关注。车内PM2.5过滤装置正是在这种背景下应运而生,被越来越多的汽车制造商所采用。然而,车内PM2.5过滤装置的作用究竟是什么呢?本文将从不同角度深入分析。 1. 净化车内空气 车内的空气环境是人们容易忽视的地方,尤其是长时间在车内驾驶或乘坐时。PM2.5是指...https://auto.hexun.com/2024-05-08/212773935.html