推荐系统的主要方法
一、基于内容的推荐算法
网络基于内容的推荐系统,也称CB(Content-based Recommendations):根据用户基于item时的历史信息(如评分、评价、分享、和收藏过的文档)构造用户偏好文档,计算推荐项目与用户偏好文档的相似度,将最相似的项目推荐给用户。例如,在书籍推荐中,基于内容的系统首先分析用户已经购买过的打分比较高的书籍的共性(作者、风格等),再推荐与这些用户感兴趣的书籍内容相似度高的其他电影。再例如一个推荐饭店的系统可以依据某个用户之前喜欢很多的烤肉店而为他推荐烤肉店。CB最早主要是应用在信息检索系统当中,所以很多信息检索及信息过滤里的方法都能用于CB中。CB中大致包括三步骤:
Item Representation;为每个item抽取出一些特征(也就是item的content了)来表示此item。
Profile Learning :用一个用户过去的item的特征数据,来学习出此用户的喜好特征(profile)。
Recommendation Generation;通过比较上一步得到的用户profile与候选item的特征,为此用户推荐一组相关性最大的item。
真实应用中的item往往都会有一些可以描述它的属性。这些属性通常可以分为两种:结构化的(structured)属性与非结构化的(unstructured)属性。所谓结构化的属性就是这个属性的意义比较明确,其取值限定在某个范围;而非结构化的属性往往其意义不太明确,取值也没什么限制,不好直接使用。比如在交友网站上,item就是人,一个item会有结构化属性如身高、学历、籍贯等,也会有非结构化属性(如item自己写的交友宣言,博客内容等等)。对于结构化数据,我们自然可以拿来就用;但对于非结构化数据(如文章),我们往往要先把它转化为结构化数据后才能在模型里加以使用。真实场景中碰到最多的非结构化数据可能就是文章了(如个性化阅读中)。将文本这种非结构化数据转化成结构行数据,常用的方法是IF-IDF(term frequency-inverse document frequency)[58]
1)基于item的特征学习
所有文章集合为,而所有文章中出现的词的集合(对于中文章,首先得对所有文章进行分词),也称为词典,即。也就是说,我们有篇要处理的文章,而这些文章里包含了个不同的词。我们最终要使用一个向量来表示一篇文章,比如第篇文章被表示为,其中表示第1个词在文章中的权重,值越大表示越重要;中其他向量的解释类似。所以,为了表示第篇文章,现在关键的就是如何计算各分量的值了。例如,我们可以选取为1,如果词出现在第篇文章中;选取为0,如果未出现在第篇文章中。我们也可以选取为词出现在第篇文章中的次数(frequency)。但是用的最多的计算方法还是信息检索中常用的词频-逆文档频率(term frequency–inverse document frequency,简称)。
2)基于用户profile特征学习
假设用户u已经对一些item给出了他的喜好判断,喜欢其中的一部分item,不喜欢其中的另一部分。那么,这一步要做的就是通过用户u过去的这些喜好判断,为他产生一个模型。有了这个模型,我们就可以根据此模型来判断用户u是否会喜欢一个新的item。所以,我们要解决的是一个典型的有监督分类问题,应用机器学习中的分类算法可以解决分类问题。常用的分类机器学习算法有KNN,决策树,朴素贝叶斯,随机森林,支持向量机,神经网络等。
最后通过通过用户profile模型特征与item特征进行相似度运算,将得分高的Item推荐给用户。基于内容的推荐方法原理简单,推荐结果也易于理解;没有流行度偏见;没有冷启动问题;不需要惯用数据,可以使用用户内容特性来提供解释。但是也存在一定的缺点:对于物品的特征具有较高要求,对于视频、音频等这种多媒体资源无法进行理想的推荐;推荐结果相对固定,用户的个性化偏好在与内容匹配度高时才能获得推荐,很难为用户发现新的感兴趣信息;缺少多样性,新颖性。
二、基于协同过滤的推荐算法
协同过滤推荐,Collaborative Filtering Recommendations(简称CF)是目前最流行的推荐方法,在研究界和工业界得到大量使用。很多有名的推荐系统都是利用协同过滤推荐策略,如Netflix的电影推荐系统、亚马逊的商品推荐系统、Tapestry邮件处理系统等。协同过滤能够基于一组兴趣相同的用户或项目进行推荐,它根据邻居用户(与目标用户兴趣相似的用户)的偏好信息产生对目标用户的推荐列表。Schafer,Frankowski等[74]曾提出,协同过滤推荐是“使用其他用户的观点来过滤和评价商品的过程”。这种协同过滤机制的主要目的在于根据已有数据之间的关系,计算用户之间的相似度,找到有共同兴趣爱好的用户,从而产生推荐。协同过滤简理解就是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应(或评分)不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。
协同过滤推荐算法一般可以分为基于用户协同推荐(User-based Collaborative Filtering)、基于物品协同推荐(Item -Based Collaborative Filtering)和基于模型的系统推荐(Model-Based Collaborative Filtering)。协同过滤是在海量数据中挖掘出小部分与你品味类似的用户,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的东西组织成一个排序的目录推荐给你。关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐。在问的时候,都习惯于问跟自己口味差不多的朋友,这就是协同过滤的核心思想。简单的说就是:人以类聚,物以群分。
1、基于用户的协同过滤算法(user-based collaboratIve filtering)
基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分。根据不同用户对相同商品或内容的态度和偏好程度计算用户之间的关系。在有相同喜好的用户间进行商品推荐。简单的说就是如果A,B两个用户都购买了x,y,z三本图书,并且给出了5星的好评。那么A和B就属于同一类用户。可以将A看过的图书w也推荐给用户B。
协同过滤推荐算法的核心是寻找目标用户的最近邻居是User-based协同过滤推荐算法,其所找到的邻居质量和寻找的效率,直接影响整个推荐算法的推荐质量和推荐效率。User-based协同过滤推荐算法的主要工作内容是,用户偏好搜索并进行相似度度量,最近邻居查询,预测评分,为相似的用户提供推荐物品。
2、基于物品的协同过滤算法(item-based collaborative filtering)
基于物品的协同过滤算法与基于用户的协同过滤算法很像,将商品和用户互换。通过计算不同用户对不同物品的评分获得物品间的关系。基于物品间的关系对用户进行相似物品的推荐。这里的评分代表用户对商品的态度和偏好。简单来说就是如果用户A同时购买了商品1和商品2,那么说明商品1和商品2的相关度较高。当用户B也购买了商品1时,可以推断他也有购买商品2的需求。
Item-Based协同过滤算法的核心是计算Item间的相似度,来预测用户评分。主要通过用户评分数据、计算Item相似度矩阵,主要的工作:1.寻找相似的物品,2并选择相似性度量方式计算相似性,3为用户提供基于相似物品的推荐。
3、基于模型的协同过滤
基于模型的协同过滤作为目前最主流的协同过滤类型之一,其相关算法非常多,这里针对其思想做一个归类概括。这里有m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。对于这类问题,常用方法是利用机器学习来建模进行问题解决,主流的方法可以分为:关联规则类算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型等来解决。
a)关联规则类算法的协同过滤算法
基于关联规则的推荐技术是以关联规则为基础,其反映了一个事物与其他事物之间的相互依存性和关联性,主要结合用户当前的购买行为向用户推荐合适的项目。其关键点在于利用数据挖掘技术找出具有某种关联关系的数据项。在电子商务网站中,基于关联规则的推荐主要是分析用户的购物车、用户检索信息、浏览信息以及已购买的商品信息,通过数据挖掘技术统计这些商品之间的相关性,从而向用户推荐其可能感兴趣的商品。常用关联推荐算法有Apriori,FP Tree PrefixSpan。
一般我们可以找出用户购买的所有物品数据里频繁出现的项集小程序列,来做频繁集挖掘,找到满足支持阈的关联物品的频繁N项集或者序列。如果用户购买了频繁N项集或者序列里的部分物品,那么我们可以将频繁项集或序列里的其他物品按一定的评分准则推荐给用户,这个评分准则可以包括支持度,置信度和提升度等。
关联规则的算法优点是不需要用户输入评分数据,能发现用户的新兴趣,推荐的结果也较为精确。但它也有一些缺点[30]:1)庞大的用户信息在前期需要经过数据清洗,数据转换等工作,比较复杂;2)关联规则需要对巨大的用户信息和项目信息做分析,提取规则较难,个性化程度较低。
b)用聚类算法做协同过滤
用聚类做协同过滤就和前面的基于用户或者项目的协同过滤有些类似了。我们可以按照用户或者按照物品基于一定的距离度量来进行聚类。如果基于用户聚类,则可以将用户按照一定距离度量方式分成不同的目标人群,将同样目标人群评分高的物品推荐给目标用户。基于物品聚类,则是将用户评分高物品的相似同类物品推荐给用户。常用聚类推荐算法有K-Means,BIRCH,DBSCAN和谱聚类 。
c)用分类算法做协同过滤
如果我们根据用户评分的高低,将分数分成几段,则这个问题就变成了分类问题。比如最直接的,设置一个评分阈值,评分高于阈值就推荐,评分低于阈值就不推荐,我们将问题变成了一个二分类问题。常用的分类算法是逻辑回归,支持向量,朴素贝叶斯等。
d)用回归算法的协同过滤
用回归算法做协同过滤比分类算法解释性更强,评分可是是连续值也是在离散值,通过回归算法模型得到目标用户对某商品的预测打分。常用的驾照推荐算法有Ridge回归,回归树和支持向量回归。
e)用矩阵分解做协同过滤
用矩阵分解做协同过滤是目前使用也很广泛的一种方法。由于传统的奇异值分解SVD要求矩阵不能有缺失数据,必须是稠密的,而我们的用户物品评分矩阵是一个很典型的稀疏矩阵,直接使用传统的SVD到协同过滤是比较复杂的。目前主流的矩阵分解算法主要有SVD的一些变种,比如FunkSVD,BiasSVD,RSVD[97]和SVD++[98]。
f)用神经网络做协同过滤
用神经网络乃至深度学习做协同过滤应该是以后的一个趋势。目前比较主流的用两层神经网络来做推荐算法的是限制玻尔兹曼机(RBM)。在目前的Netflix算法比赛中,RBM算法的表现很良好。
CF推荐具有较强的个性化,且得到了广泛的应用,CF的优点体现在:1)推荐的结果对于用户来说比较新奇,可以发现内容上完全不相似的物品;2)对于非结构化的对象有很好的推荐效果比如电影、音乐、图片等;3)不需要很专业的知识就可以推荐。但仍然存在着以下几点问题:1)冷启动问题,要是一个用户从来没有对任何项目进行评价,那么该用户就不能得到推荐,同样如果从来没有用户对某一商品加以价,则这个商品就不可能被推荐;2)稀疏性问题,实际的网站中用户和项目的数量十分巨大,而用户通常只对其中小部分项目进行评分,用户-项目评分矩阵是非常稀疏的,可用于计算用户之间相似度的数据非常有限,使得搜索的最近邻不够可靠,推荐质量较差;3)可扩展性问题,即随着用户和项目数量的增多,算法的计算复杂度急剧增加,严重影响了个性化推荐的实时性。
三、基于社交网络的推荐算法
最在线社交网络使得人们可以在网络上面分享心情,发表看法,获取兴趣话题,但是面对海量的用户信息与内容信息。
社会推荐(Social Recommendation),是指在各种社会化媒体(Social Media)上通过社会化的群体行为对信息内容进行推荐或分享[78],基于社交网络的推荐mj是社会推荐的重要研究部分,研究涉及社会科学、物理学、信息科学、和管理科学等多门学科,属于典型的跨学科交叉研究.基于传统的推荐决策过程中引入用户的社交网络信息,一方面是考虑传统协同过滤推荐方法的数据稀疏性的缺陷;另一方面社会网络中的用户间关系能够体现出用户之间的兴趣相似性和影响能力.
邻居节点的社会影响力同样也是影响用户信任度的一个重要因素,一般来说,人们往往更倾向于相信权威,权威用户(即意见领袖)对周围人们的影响较大,可以理解为社会影响力高的用户有较高的影响力和用户信任度,在推荐过程中所占据的权重也相对更大.文献[79,80]认为邻居节点的社会影响力比历史行为的相似性在商品推荐效果方面显得更加显著.Internet时代放大了社会影响力的价值,“口碑营销”和“病毒式营销”[81]在线社交网络中即是通过重点节点基于一种高信任度的角度,通过传播的一种方式将产品或者信息等推荐给邻居节点,由于网络的实时性、信息发送的便捷性、用户节点数目的海量性,信息则以更快的传播到更多的网络结点.基于社会影响力的角度进行推荐,取得了一定的效果,文献[54]通过对豆瓣网站和Goodreads网站(“美国版豆瓣”)的实证分析,发现来自朋友的社会推荐除了可以提高商品的销售量外,还可以提升用户的售后评价满意程度.
实际上,社交网络中的许多推荐问题都可以归结为两类问题:产品推荐和用户推荐。产品推荐主要是向用户推荐他们可能会感兴趣的歌曲、电影、书或者产品等。例如Liu等[82]通过给网络新用户推荐一组“影响力”较大的产品集合,以此来引导用户的兴趣爱好。一些工作考虑影响力传播的效果,如向新用户推荐一些社交影响力比较大的用户[83],这个向新用户做推荐有点类似推荐系统的冷启动问题。
在现实生活中,当我们在需要做出决策的时候,通常会受到两个方面的影响,一个是社会影响,一个是自身影响。社会影响指的是人们在社会生活中,会受到周围环境中,其他社会个体的影响。比如自己的亲戚、朋友或同事等。在社会影响中,同时也需要考虑两个因素,一个是社会个体影响力,一个是对社会个体的信任度。在自身影响中,也会受到两个因素的影响,一个是自身爱好,另一个是物品特点。
具有高影响力节点用户,从某个角度上可以说明了他在网络中的口碑与地位的衡量,在一定程度上他的言行举止具有一定的信任度,会影响着他人对用户的看法和信任程度,所以具有影响力节点在基于自身影响力的同时若是发布负能量发文,或者长期发布用户不感兴趣的微博,那他很可能就会“掉粉”,所以高影响力用户的每一个发文都会主题明确,例如有些影响力用户专门发布萌宠的相关信息,有些用户专门发布穿衣搭配的图片,有些用户专门发布时尚的家居装修,有些用户专门发布各种美食,有些用户专门发布心灵鸡汤,有些用户专门发布实时政事,或者新闻,以及最近有很多商家会在微博上进行商品的发布,用户直接通过点击链接可以进行购买。因此除了一些大V用户或者营销用户会发布广告性质的发文,还有很多有影响力节点会发布自己的主题微博。
[1][58] Ramage D,Dumais S,Liebling D. Characterizing micro blogs with topic models[C]/ /Proceedings of International AAAI Conference on Weblogs and Social Media. Menlo Park. CA: AAAI,2010: 130-137.
[2][59]张晨逸,孙建,丁轶群.基于MB-LDA模型的微博主题挖掘[ J ] .计算机研究与发展,2 0 1 1 ,4 8 ( 1 0 ) : 1 7 9 5 - 1 8 0 2 .
[3][60]谢昊,江红.一种面向微博主题挖掘的改进LDA模型[ J ] .华东师范大学学报:自然科学版,2 0 1 3 ,1 1 ( 6 ) : 9 3 - 100.
[4][61]冯普超.基于CMBLDA的微博主题挖掘[D].杭州:浙江大学,2014: 37-47.
[5][62] Philip R,Eric H. Gibbs sampling for the uninitiated[R]. Technical Reports from UMIACS,2010.
[6][63]贝克,晓冬.社会资本制胜:如何挖掘个人与企业网络中的隐性资源[M].上海交通大学出版社,2002.
[7][64]天涯.六度分隔理论和150法则[EB/OL].http://blog.sina.com.cn/s/blog_62bae1640100|5f3.html.[2010-07-14].
[8][65]Granovetter M S.The Strength of Weak Ties[J]. American journal of sociology, 1973: 1360-1380.
[9][66]王梓.社交网络中节点影响力评估算法研究[D].北京邮电大学, 2014.
[10][67] Meeyoung Cha, Hamed Haddadi,Fabricio Benevenutoets. Measuring User Influence in Twitter: The Million Follower Fallacy[C]. Proceedings of the 4th International AAAI Conference on Weblogs and Social Media (ICWSM),2010:10-17
[11][68] Page, Lawrence, Brin, et al. The PageRank citation ranking[C]// BringingOrder to the Web. Stanford InfoLab. 1998: 1-14.
[12][69]Kleinberg J M. Authoritative sources in a hyperlinked environment[J]. Journal of the ACM, 1999, 46(5): 604-632.
[13][70]Zibin Yin, Ya Zhang. Measuring Pair-Wise Social Influence inMicroblog[C], 2012 ASE/IEEE International Conference on SocialComputing and 2012 ASE/IEEE International Conference on Privacy,Security, Risk and Trust, 2012: 502-507.
[14][71]Lu Liu, Jie Tang, Jiawei Han, Meng Jiang, Shiqiang Yang. Mining topic-level influence in heterogeneous networks[C]. Proceedings of the 19th ACMinternational conference on information and knowledge management, 2010: 199-208.
[15][72] Qianni Deng, Yunjing Dai. How Your Friends Influence You: Quantifying Pairwise Influences on Twitter[C], International Conference on Cloud and Service Computing, 2012:185-192.
[16][73] Bi, Bin, et al. Scalable Topic-Specific Influence Analysis on Microblogs[C], Proceedings of the 7th ACM international conference on Web search and data mining,2014: 513-522.
[17][74]Schafer.J., et al. Collaborative filtering recommender systems. The adaptive web, 2007. 291-324.
[18][75]徐小伟.基于信任的协同过滤推荐算法在电子商务推荐系统的应用研究[D].东华大学, 2013.
[19][76] Paterek A. Improving regularized singular value decomposition for collaborative filtering[C]//Proceedings of KDD cup and workshop. 2007, 2007: 5-8.
[20][77] Koren Y.Factorization meets die neighborhood: a multifaceted collaborative filtering model[C]//Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2008: 426-434.
[21][78]Guy I,Carmel D. Social recommender systems[C]. Proceedings of the 20th International Conference Companion on World Wide Web,2011 .
[22][79]Salganik M J,Dodds P S,Watts D J. Experimental study of inequality and unpredictability in an artificial culturalmarket[J]. Science,2006,311: 854-856.
[23][80]BonhardP,SasseMA."Knowingmeknowingyou"—usingpro- files and social networking to improve recommender systems[J]. BT Technology Journal,2006,24: 84-98.
[24][81]Leskovec J,Adamic L A,Huberman B A. The dynamics of viral marketing[C]. Proceedings of ACM Conference on Electronic Commerce,2006.
[25][82]Liu Q, Xiang B, Chen E,et al. Influential seed items recommendation[C].Proceedings of the sixth ACM conference on Recommender systems, 2012: 245-248.
网友评论