《基于用户的协同过滤推荐算法原理和实现.docx》由会员分享,可在线阅读,更多相关《基于用户的协同过滤推荐算法原理和实现.docx(3页珍藏版)》请在第壹文秘上搜索。
1、基于用户的协同过滤推荐算法原理和实现在推荐系统众多方法中,基于用户的协同过港推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过渔系统,两年后1994年被GroupLens用于新闻过渔。一直到2000年,该算法都是推荐系统筑域最著名的算法。本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有J能感兴趣的人。根本思想俗话说物以类聚、人以群分,拿看电影这个例子来说,如果你喜欢煽蝠侠、碟中谍、星际穿越、K源代码等电影,另外有个人也都宫欢这些电影,而且他还喜欢钢铁侠,那么很有可能你也喜欢拥铁供这部电B所以说,当一个用
2、户A需要个性化推荐时,可以先找到和他兴趣相似的用户群体G,然后把G喜欢的、并且A没有听说过的物品推荐给A.这就是基上用户的系统过滤算法。原理根据上述根本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤:1找到与目标用户兴趣相似的用户集合2.找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户1-发现兴趣相似的用户通常用JaCCard公式或者余弦相似度计算两个用户之间的相似度。设N(U)为用户U喜欢的物品集仆,MV)为用户V喜欢的物品集合,那么U和V的相似度是多少呢:Jaccard公式:余弦相似度:假设日前共有4个用户:A.B.C、D;共有5个物品:a、Ac,d、e,.用
3、户与物品的关系(用户喜炊物品)如下列图所示:如何一下子计算所有用户之间的相似度呢?为计算方便,通常首先需要建立物品-用户的倒排表,如下列图所示:然后对于每个物品,喜欢他的用户,两两之间相同物品加1例如喜欢物品a的用户有A和B,那么在矩阵中他们两两加L如卜列图所示:计0用户两两之间的相似度,上面的矩阵仅仅代表的是公式的分子局部.以余弦相似度为例,对上图进行进一步计算,到此,计算用户相似度就大功告成,可以很直观的找到与Fi标用户兴趣较相似的用户.2.推荐物品首先需要从矩阵中找出与目标用户U最相似的K个用户,用集介S(u,K)表示,将S中用户喜欢的物必全部提取出来,并去除U已经喜欢的物品.对每个候选
4、物品i,用户U对它感兴趣的程度用如下公式计算:其中Z表示用户V对i的再欢程度.在本例中都是为1,在一些需要用户给予评分的推荐系统中,那么要代入用户评分。举个例子,假设我们要给A推荐物品,选取K,3个相似用户.相似用户那么是:B、&D,那么他们喜欢过并且A没有喜欢过的物品有:c、e,那么分别计算p(A,c)和p(A,e):看样子用户A对C和e的喜炊程度可能是一祥的,在真实的推荐系统中,只要按得分排序,取前几个物品就可以了.园友推荐在社交网络的推荐中,物品.其实就是人,“喜欢件物品变为关注的人,这节用卜,面的算法实现给我推荐10个园友。1计算10名与我兴趣最相似的园友由于只是为我一个人做用户推荐,
5、所以没必要建立一个庞大的用户两两之间相似度的矩阵了,与我兴瞋相似的园友只会在这个群体产生:我关注的人的粉丝:除我自己之外,目前我一共关注了23名园友,这23名园友一共有22936个唯一粉丝,我对这22936个用户逐一计算了相似度,相似度推名前10的用户及相似慢如下:昵称关注数量共同数量相似度蓝枫叶1938540.373001923296126FBI08070333鱼非鱼33Lauce33蓝色蜗牛33Shanyujin:53Mr.Huang640.340502612303499对世界说你好640.340502612303499Strucoder288Mr.Vangogh432.计算对推荐园友的兴
6、趣度这10名相似用户共推荐了25名园友.计算得到兴趣度并排序:排序昵称兴趣度1wolfy0.3730019232961262Artech0.3405026123034993CatChen0.3405026123034994WXWinter(冬)0.3405026123034995DanielWise0.3405026123034996一路前行7LiamWang8usharei9CoderZh10博客园团队11深蓝色右手12Kinglee13Gnie14riccc15Braincol16滴答的雨17DennisGao18刘冬.RET19李永京20浪端之渡鸟21李涛22阿不23JK_Rush24xiaotie25Leepy只需要按需要取相似度排名前10名就可以了,不过看起来整个列表的推荐质、都还不错!