基于模糊聚类和协同过滤的混合推荐系统

      Hybrid Recommender System based on Fuzzy Clustering and Collaborative Filtering

      给出题目,想找的话直接在ElsevierSD里下载即可。

      并不是逐句翻译,一些简单的背景比如经济啦什么的直接忽略,不过笔者会在博文里点出来。

      一二三这样的标题是原论文的题目,我没翻译,为以后自己写英文论文做准备,以1234这样的标题开始的内容是笔者自己加上去的,就是我的笔记。

      我自己把握不准的或者比较精妙的局段,都有英文原文留下,分段也被保留。

      如何输入罗马数字,看下图,搜狗输入法下,ctrl+shift+z;有时候可能需要多个这样的符号,每次都这样调用的话很麻烦,我就按住ctrl键,果然可以一次多个,看来计算机是相通的。

                      

一、Abstract

      由于越来越多的电商使用推荐系统,推荐系统获得了极大发展。不过由于产品和用户数的显著增加使得推荐系统面临数据稀疏性和可扩展性的问题。本篇提出了FCM(Fuzzy C Means)算法。

二、Introduction

      推荐系统结合电商背景介绍。NetFlix推荐电影,Amazon推荐图书。有几种不同的方法来做推荐,这包括给出销量最高的产品列表、基于人口统计学给我出建议和通过分析用户过去行为来给出建议(including providing top list of items, making suggestion based on demographic data and making recommendation by analyzing past user interaction of the user with the system.)。在这之中,协同过滤是最好的技术之一,该技术于1992年由[Goldberg et al., 1992]提出(我以Goldberg为关键字百度之,只出现摔跤运动员,对于这么吊的算法思想来说,这很不合理啊)。通常来说,推荐系统被分为三类,协同过滤、基于内容的推荐和混合推荐。基于内容的推荐使用过去的产品或者用户的描述信息(the item or user’s profile),因此当产品是像视频、音乐这类东西的话,该算法会很不方便得到需要的信息(原文是be quite challenging)。

      在协同过滤算法(下文用CF来代替,太麻烦,我自己加上的)中,关键元素是用户过去的行为。CF推荐系统采用由用户制作的原来产品的排名来预测新产品的排名(笔者感觉这很像是Item-Based的CF算法,请参考笔者这一篇博文探秘推荐引擎之协同过滤算法小综述)。这种算法思想是根据(The idea behind this is that)两个用户曾经喜欢过想死产品的话那么他们很可能继续喜欢同样的产品(这一句又像是User-Based)。在建议的的方法中(proposed approach),初试聚类中心采用FCM算法生成。然后这些中心采用item-based来预测未来的产品排名。

      相关工作在区域 Ⅱ,区域Ⅲ详细讨论了建议的方法,实验结果在区域Ⅳ讨论,结论呈现在区域Ⅴ。

      1.基于人口统计学的推荐

      这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。

      系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。

      优势:

      a 不需要历史数据,没有冷启动问题

      b 不依赖于物品的属性,因此其他领域的问题都可无缝接入。

      不足:

      算法比较粗糙,效果很难令人满意,只适合简单的推荐

      2.基于内容的推荐

                      

      与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。

      系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙,还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户A很可能对电影C也感兴趣。于是将电影C推荐给A。

      优势:

      对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度

      不足:

      a 物品的属性有限,很难有效的得到更多数据

      b 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性

      c 需要用户的物品的历史数据,有冷启动的问题

      看完2我发现,冷启动问题指的就是建模的初始数据的来源问题,看来书真是阅读越明白,所以温故而知新,古人没有欺骗我---古之人诚不欺余也。

三、Related Work

      在参考文献3里,作者提出了一种基于用户和产品之间不同的CF算法。首先,他们(用的they,表示作者不止一个的意思吧)比较了不同的CF算法。根据他们的方法,他们没有考虑用户和产品知己恩的联系,只考虑(other than)了不同之处。在这种情况下,有一些用户倾向于给好评,对那些真正的垃圾产品才给差评;而其他用户给最好的产品最高的评价,对于其他的产品倾向于给差评(On the condition that there are some users, who inclined to give positive rating, leaving negative ratings for really bad items, while other user, save their highest rating s for the best item and tends to give negative ratings. So according to their approach, first find the tendencies of items and users and on the basis of this, recommendation is done.刚开始翻译不出来参考了百度翻译,就翻译了出来;我想起了英语老师说咱们口语不好不是因为搞几次会不会,而是因为很多低级词汇忘了;我真是个听话的孩子,好老师说的话我基本都记得,感觉自己萌萌哒)。因此根据他们的方法(approach),首先找到产品和用户的趋势,据此,推荐完成。

      在参考文献11里,作者提出了混合的方法,该方法结合了(take advantages of)基于内容和CF的优点。根据他们的方法,他们首先采用k-means算法找到相似的用户(笔者认为这地方没说清楚,根据用户买的产品类别还是用户的个人注册信息,不过就笔者个人感觉而言,对于非社交群体,比如电商企业,用户的注册信息完全没有价值);然后,找到同一簇中高度相关用户的内容(感觉内容量子很别扭then find the content that the users of the same cluster rated high)。添加这一内容进入内容列表中,然后在同一簇中就要求的内容采用FCM算法找到内容。最后,从珍贵(我在想,他是不是写错了previous:前一个,写成了precious)的两个已经计算的集合找出公共部分(Add this content in the list of contents and then apply fuzzy c-mean algorithm to find contents in the same cluster as that of the content requested. And in the end find common set from precious two computed set. 我不理解两个已经计算的集合是什么)。公共部分就是最好的结果。算了,确实看不明白,有空看原文。

      在参考文献15中,作者针对个性化推荐提出了一种相反的CF算法。根据他们的方法,他们结合user-based和item-based算法,同时使用斯皮尔曼等级相关系数代替皮尔逊相关系数来确保在数据的逻辑区域有相同的空间(或者等距,equal space),这不必要成对出现从正态分布(which do not need to be receive in pairs from the normal distribution)。根据这个算法,CF算法预测相似的产品集根据已经给的数据,然后使用第二个算法得到最终的分配,同时解决奇异的数据(

singular data

)。

      1.斯皮尔曼相关系数

          

      在此例中,我们要使用下表所给出的原始数据计算一个人的智商 和其每周花在 电视上的小时数的相关性。

                

      首先,我们必须根据以下步骤计算出 ,如下表所示。

  1.  排列第一列数据 ()。 创建新列 并赋以等级值 1,2,3,...n
  2. 然后,排列第二列数据 (). 创建第四列 并相似地赋以等级值 1,2,3,...n
  3. 创建第五列 保存两个等级列的差值 ().
  4. 创建最后一列 保存 的平方.

               

       得 ρ = −0.175757575,这个值很小表明上述两个变量的关系很小。

      该系数和皮尔逊的区别是xy可以不是正态分布;但是xy不也可以进行标准花么((x-u)/D),然后可以用皮尔逊洗漱了。

四、ProposedApproach

      算法被分为两个阶段(phase)。

      阶段一:根据产品信息进行产品聚类

      阶段二:对阶段一的每个簇应用基于项目的CF。

      算法概述。

      步骤一:根据产品信息进行产品聚类(笔者认为说的很不直观,聚类的结果是什么,只是产品还是包括用户)

      步骤二:在用户项目矩阵中对于每个簇应用基于项目的CF来预测丢失的评分。

      步骤三:为了减少冷启动的问题,新用户(NU):必须给在给定阈值数量的产品的评分来做推荐。新产品(NI):用户U对于新产品的评分经由NI(U)的评分=用户U在该簇中的评分平均值(To reduce the Cold Start problem.New User: Rating must be given on the specific (threshold)number of items to get recommendation.New Item (NI) : Rating of new item by user U is given byRating of NI(U) = Average rating of the user U within thatcluster.)。这是不是在说SlopeOne算法,前面提到的博文里对该算法有介绍。

      步骤四:为了降低可扩展性的问题,聚类是预先处理步骤。该算法周期性运行或者当超过给定阈值数量额产品被加入时该算法被触发(Clustering is pre-processing step. This algorithm is runperiodically or triggered after some particular (threshold)number of new items add in the system.)。

      阶段一:聚类

      A.K-means

      笔者注:下面只做简单翻译

      采用k-means算法(原文是k-mean,是不是笔误)。Movielens数据集包括来自943个用户的评分分为1到5等级的10w个评分,该数据集也包括每个电影的大致信息(profile),比如类型(genre[ˈʒɒnrə])(喜剧、动作等),类型共19种。在电影的类型上做聚类。在划分好的k个簇上上应用基于项目的CF算法。

      下面就是k-means的步骤了,不再翻译。

      假设10个电影(Assume),每个电影经由三种类型来描述(喜剧、动作、音乐片),如表1(为毛没加上章的信息,写成表3-1)。

                  

      使用曼哈顿距离来计算电影之间的相似性或者不想实行。

         

      笔者注:曼哈顿距离与欧氏距离:红 蓝和黄分别表示曼哈顿距离都拥有一样的长度12.绿色表示欧式距离 6*1.414=8.48的长度。

         

      笔者感觉这个图很直观,妙处自己体会。        

 

 

 

      结果是表2

        

      B、FCM

      先介绍

           

      生成如下表

          

      假设阈值是0.15

                   

      C。减少冷启动问题

      新用户未做任何评价,新产品未收到任何评价。

      a.新用户必然要评价超过阈值数量的产品。

      b.if new item add in the system: rating of new item M,by user U is given by:上面的式子Where右端第一部分 average of user U in cluster c. And右端第二部分 is membership value of new item M to cluster c。

      阶段二:基于项目的CF

      笔者注:未做逐字逐句翻译。

      由于当数据达到百万级时,user-based算法寻找像是用户的CF的计算复杂度太大。 所以2001年提出了item-based算法。

      该阶段把第一阶段的输出作为输入,对每个簇用基于项目的CF算法。

      采用皮尔逊相关系数离线计算ij之间的相似度。

              

      U是同时评价过i和j的用户集,带上划线的是评价过该项产品的所有用户评分的均值。

         

      由于FCM是模糊聚类,那么问题来了当一个产品同时属于两个或多个簇时,评分公式如下,

       

      Nc是簇个数,分子是a对i在簇c下的评分,实际上就是求各个簇下的均值。写到这,笔者认为,所谓论文就是把简单问题复杂化,通俗名词专业化。

五、Experiment Results

      CF的评价准则有统计学准则和决策支持准则,本文采用前者。统计学准则比较预测值和实际值的分离程度,采用MAE(mean absolute error),

              ,下面第二个图x是指数据量的大小,单位是10w。

                 

六、Conclusion

      结合CF和FCM解决数据稀疏性和冷启动问题。

      提出的方法是基于记忆的方法,因此不需要花费时间来训练数据(这个不懂,可能看的资料不够吧,我感觉是不就是说增量)。

七、笔者自己

      四点半左右去听了一个讲座,小公式注重你的技术,要能立刻上手;大公司注重基础,愿意培养你,所以跟一个大牛,他跳槽了,也把你带走了。

      今晚在实验室吃饭啦,附上照片纪念正在流逝的青春。

                     

时间: 2024-10-28 23:44:26

基于模糊聚类和协同过滤的混合推荐系统的相关文章

基于皮尔森相关系数的协同过滤算法

      刚看到一新闻说很多互联网公司尤其是草根北京的都缺少有针对性的CTO,看完我感觉我要努力学好算法,争取自己创业. 一.PearsonCorrelation       两个变量之间的相关系数越高,从一个变量去预测另一个变量的精确度就越高,这是因为相关系数越高,就意味着这两个变量的共变部分越多,所以从其中一个变量的变化就可越多地获知另一个变量的变化.如果两个变量之间的相关系数为1或-1,那么你完全可由变量X去获知变量Y的值.       相关系数:考察两个事物(在数据里我们称之为变量)之

基于协同过滤的个性化Web推荐

         下面这是论文笔记,其实主要是摘抄,这片博士论文很有逻辑性,层层深入,所以笔者保留的比较多.          看到第二章,我发现其实这片文章对我来说更多是科普,科普吧-- 一.论文来源 Personalized Web Recommendation via Collaborative Filtering(很奇怪via为什么小写,先记住吧) (Candidate)博士研究生:孙慧峰 (Advisor)导师:陈俊亮(院士) (Academic Degree Applied for)

基于协同过滤的推荐方法

协同过滤(Collaborative Filtering, CF)是推荐系统广泛使用的一种技术,它主要通过考虑用户(User)与用户之间.物品(Item)与物品之间的相似度(Similarity),来向用户推荐物品,常被用在电商网站中.其中,在推荐系统中最常使用的协同过滤方法,有如下4种: 基于用户的协同过滤推荐 基于物品的协同过滤推荐 基于模型的协同过滤推荐 混合协同过滤推荐 上面4种方法中,基于用户的协同过滤推荐.基于物品的协同过滤推荐都是基于内存的协同过滤推荐,一般在数据量较小的应用场景下

达观推荐算法实现:协同过滤之item embedding

推荐系统本质是在用户需求不明确的情况下,解决信息过载的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢(这里的信息的含义可以非常广泛,比如咨询.电影和商品等,下文中统称为item).达观数据相关推荐是达观推荐系统中的重要组成部分,其价值在于,在没有用户画像信息的情况下,也能给用户以好的推荐体验,比如资讯类,通过达观相关推荐算法找到item相关的其他item,可以提供对某一类或者针对某一事件多角度多侧面的

Spark MLlib中的协同过滤

本文主要通过Spark官方的例子理解ALS协同过滤算法的原理和编码过程,然后通过对电影进行推荐来熟悉一个完整的推荐过程. 协同过滤 协同过滤常被应用于推荐系统,旨在补充用户-商品关联矩阵中所缺失的部分.MLlib当前支持基于模型的协同过滤,其中用户和商品通过一小组隐语义因子进行表达,并且这些因子也用于预测缺失的元素.Spark MLlib实现了交替最小二乘法(ALS) 来学习这些隐性语义因子. 在 MLlib 中的实现类为org.apache.spark.mllib.recommendation

再理解协同过滤算法

协同过滤算法是推荐系统中最古老,也是最简单高效的推荐算法.简单说协同过滤就是根据以往的用户产生的数据分析,对用户的新行为进行匹配分析来给用户推荐用户最有可能感兴趣的内容. 协同过滤算法是为了解决长尾现象,也就是说推荐系统是为了解决长尾现象而诞生的.因为在之前在有限的空间(如:书店的书架.服装店的衣架.商店的货架.网页的展示区域)只能摆有限的物品进行展示,造成大量的非热门物品很难进入人们的视野,也就无法产生任何价值.研究表明挖掘长尾内容,产生的效益很可能会超过头部.因为网络.计算机的发展使关注大数

推荐系统中基于深度学习的混合协同过滤模型

近些年,深度学习在语音识别.图像处理.自然语言处理等领域都取得了很大的突破与成就.相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段. 携程在深度学习与推荐系统结合的领域也进行了相关的研究与应用,并在国际人工智能顶级会议AAAI 2017上发表了相应的研究成果<A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems>,本文将分享深度学习在推荐系统上的应用,同时介绍携程基础BI团

谁有基于用户的推荐系统或者协同过滤的算法和代码分析啊

问题描述 求个大数据的大神给个基于用户的推荐系统或者协同过滤的算法和代码分析啊我有部分代码但是不知道怎么在Eclipse上实现求解答啊1.publicclassAggregateAndRecommendReducerextendsReducer<VarLongWritable,VectorWritable,VarLongWritable,RecommendedItemsWritable>{...publicviodreduce(VarLongWritablekey,Iterable<Ve

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

      在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是推荐系统领域最著名的算法.       本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人. 基本思想       俗话说"物以类聚.人以群分",拿看电影这个例子来说,如果你喜欢<蝙蝠侠&