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

         下面这是论文笔记,其实主要是摘抄,这片博士论文很有逻辑性,层层深入,所以笔者保留的比较多。

         看到第二章,我发现其实这片文章对我来说更多是科普,科普吧……

一、论文来源

Personalized Web Recommendation via Collaborative Filtering(很奇怪via为什么小写,先记住吧)

(Candidate)博士研究生:孙慧峰

(Advisor)导师:陈俊亮(院士)

(Academic Degree Applied for)学位级别:工学博士学科(Doctor of Philosophy)

二、Abstract

提出新相似度算法JacUOD,该算法考虑了向量长度和不同向量空间的维数差异。

提出归一还原CF算法。实验表明,该方法精度高。

最后,面向云环境下的个性化开放接口(推荐,本文提出了名为的用户聚类协同过滤方法。这种方法受这样的灵感启发:度量开放接口的相似度应该基于偏好相似的用户。它先根据用户的偏好把用户划分到某个用户组,然后在用户组内进行基于的协同过滤。由于多个用户组之间可并行执行,它具有很好的可扩展性。除此之外,它也具有良好的预测精度。基于真实接口数据集的实验证明了这种方法的有效性。

三、引言

万维网,搜索引擎从目录索引到全文索引,由于目录索引需要人工维护(感觉就像图书馆中图法),那么网站太多怎么办?全文索引 (对爬虫得到的网页建立倒排索引,用户按关键字查询),那么当用户需求比较模糊时或者组织不好关键字,检索结果令人不满意,由此推荐系统诞生了。

从本质上讲,推荐系统和搜索引擎都是帮助用户在信息爆炸时代获取有效信息的有力工具。但是,不同于搜索引擎需要用户明确提出自己的需求,推荐系统则通过分析用户的历史数据来建模用户兴趣,进而帮助用户发现一些潜在的、也许用户自己都没有察觉到的需求,并根据这些需求推荐相关信息。

按照长尾理论,只要产品的存储和流通的渠道足够多,需求不旺或销量不佳的产品所共同占据的市场份额可以和那些少数热销产品所占据的市场份额相匹敌甚至更大,即众多小市场汇聚成可产生与主流市场相匹敌的能量。

笔者注:长尾理论是网络时代兴起的一种新理论,由于成本和效率的因素,当商品储存流通展示的场地和渠道足够宽广,商品生产成本急剧下降以至于个人都可以进行生产,并且商品的销售成本急剧降低时,几乎任何以前看似需求极低的产品,只要有卖,都会有人买。这些需求和销量不高的产品所占据的共同市场份额,可以和主流产品的市场份额相当,甚至更大。

不得不吐槽一下垃圾的西方经济学老师,讲课看天花板,考试全专业65个60多分的,2个90多,4个80多和6个70多的,10个不及格的,我考了61分。妹的啊,那年我总评比第二名高7分多,只能到一等奖学金。

例如,在销售产品时,厂商关注的是少数几个所谓“VIP”客户,“无暇”顾及在人数上居于大多数的普通消费者。而在网络时代,由于关注的成本大大降低,人们有可能以很低的成本关注正态分布曲线的“尾部”,关注“尾部”产生的总体效益甚至会超过“头部”。

                

二八定律关注的是图中红色的头部(,认为这部分的产品虽然只占全部产品的但却对销售量贡献巨大——的产品创造了的销售量,所以应该只保留这部分的产品而舍弃其它产品。长尾理论则关注梧黄色的长尾巴认为这部分产品积少成多,可以积累成足够大、甚至超过红色头部产品的市场份额。红色头部的产品销售量高,表明他们迎合绝大部分客户的共性需求;长尾巴部分的产品销售量低,表明他们各自只符合少量客户的个性化需求。如果能在合理控制成本的情况下,把长尾巴部分的产品销售给用户,那么其所产生的利润将可与红色头部相匹敌甚至更大。每个品种产品的利润与销量成正比,由于存在存储和流通等管理成本,当销量低于一定限度就会引起亏损,所以实体商店往往销售处在红色头部的产品。在互联网时代,网上商店对购物网站的维护费用远远低于实体店面,可以儿乎零成本地增加产品,处在诘黄色长尾巴部分的产品所带来的巨大市场份额终于可以在网上商店中转化为巨大的利润,所以网上商店把长尾巴部分产品摆到自己的页面上去销售。我们把处在梧黄色长尾巴部分的产品叫做“长尾产品”,把由销售长尾产品产生的利润称为“长尾利润”。要实现长尾利润,只是将长尾产品摆放到网页上去销售显然是不够的,因为长尾产品种类繁多,而且就长尾产品中的某一种产品来说只有极少数的用户对它感兴趣,所以对用户而言在浩如烟海的长尾产品中几乎不可能、而且也不愿意花精力主动找寻少数几种目标产品。

推荐系统领域一个较早的工作是美国明尼苏打大学的研究小组所研制的称为的电影推荐系统。系统首先让用户给电影评分,然后采用用户的评分信息来建模用户的兴趣,在此基础上为用户推荐那些用户可能感兴趣又没有看过的电影。电子商务公司亚马逊率先偿试了推荐系统的商业应用,他们通过分析用户对商品的浏览和购买行为来预测用户可能对哪些商品感兴趣,并将这些商品推荐给用户,亚马逊的销售额因此提高了。

协同过滤的优点是具有通用性,它不依赖的具体内容,而只与用户的偏好有关。

近些年,出现了许多关于感知的服务方法比如服务选择方法、服务容错方法等研究,这些研究的前提是服务数据的获得。要获得服务数据,需要在不同的物理位置监视服务。这是一个分布式任务,且不同物理位置的网络环境也不同。而且,在有些情况下,通过直接监视服务获取数据的方法是不可行的(比如有众多的候选服务时,若直接逐个监视,时间、资源等代价将非常昂贵;或者因为服务的调用是收费的情况)。因此,避开以真实调用的方式、通过预测的方式获取服务的QoS数据,变得极具吸引力。服务数据预测,旨在利用少量可获得的信息(比如,用户的信息,服务的信息,用户的特征,服务的特征等),为服务用户作出个性化的值预测。预测出来的数据,可用于服务选择和推荐、服务组合、面向服务系统的容错等。因此,研究如何对服务的值进行尽可能准确地预测,是一个十分有必要的问题。

面对如此众多的功能等价开放接口,面对如此庞大的第三方用户群,怎样才能为每个用户寻找合适自己的幵放接口呢?为解决这一问题,云环境下个性化开放接口推荐成为了必要的研究问题。

基于以上分析,为了促进个性化推荐的发展,我们需要提供更为有效的基于评分的产品推荐机制、感知的服务推荐机制、云环境下的开放接口推荐机制。本论文提出了种方法来解决这些问题。第一种方法是通过一种新的协同过滤的相似度算法,来实现更为准确的基于评分的产品个性化推荐。第二种方法是通过一种新的协同过滤,来实现更具针对性的感知的服务个性化推荐。第三种方法是通过用户聚类的协同过滤,来实现有效的感知的开放接口个性化推荐。这三种方法构成了本论文的贡献。

为实现云环境下个性化开放接口推荐,我们设计了用户聚类协同过滤。我们的方法受这样的灵感启发:度量开放接口的相似度应该基于偏好相似的用户。这种方法先根据用户的偏好把用户划分到某个用户组,然后在各个用户组内进行基于item的协同过滤。由于多个用户组之间可并行执行,这种方法具有很好的可扩展性,这一点对于具有大量用户的云环境来说很有吸引力。

四、背景回顾

4.1推荐系统

1997年,等人将推荐系统所使用的方法分成三类基于内容的推荐、协同过滤推荐、结合内容与协同过滤的推荐。后来随着技术尤其是社会化网络的发展,出现了基于社交关系的推荐。

用户的偏好既可以显式地获得(比如调查问卷),也可以隐式地获得(比如分析用户的历史行为)。

基于内容的推荐根源于信息检索’和信息过滤的研究。许多基于内容的推荐系统关注的推荐对象是包含文本信息的比如新闻、网页等。通常我们从的内容中抽取一系列的特征用于推荐。基于内容的推荐系统通常推荐的是基于文本的这些通常用一系列的关键词(来表示。下面介绍了TF-IDF算法。

除了基于信息检索的启发式方法,基于内容的推荐还采用了许多机器学习技术,比如贝叶斯分类器,、聚类、决策树、人工神经网络等。这些技术与基于信息检索技术的不同之处在于,它们对效用函数的预测不是基于启发式方法比如夹角余弦相似度),而是基于从己有数据经过统计学习或机器学习所获得的模型。例如,基于一个已标注的网页集合(集合中每个网页都被用户标注为相关或不相关),等人〗用朴素贝叶斯分类器来对未曾标注过的网页进行分类(分成相关、不相关两类)。

协同过滤的假设是:多个用户对一些物品给予相似的评价,那么对另一些物品也会给予相似评价。这和现实生活人们请志趣相投的朋友推荐东西是一个道理,它暗含了志趣相投的人们对其它东西也有相似兴趣的假设。

协同过滤是一种流行而有效的推荐方法,它的一个突出优点是能够处理非结构化的复杂对象。

1.TF-IDF

基于内容的推荐系统通常推荐的是基于文本的这些通常用一系列的关键词(来表示。例如,作为一个向用户推荐网页的系统,的内容推荐组件就用个最重要的关键词来表示网页。关键词的重要性可以用它的权重表示,最为人们所熟知一种度量关键词权重的方法是词频逆文档频率。假设一共有个文档可用于向用户推荐,其中个文档包含关键词设为关键词在文档中出现的次数,那么关键词在文档的词频被定义为:

                          

笔者注:关键词i的TF就是关键词i除以该片文档中出现次数最多的关键词的次数。

2.相似度算法

用杰卡德系数乘以皮尔逊系数得到的最好,JacPCC优于JacCOS、COS、PCC。

                  

Ahn等人提出了PIP相似度算法,以缓解协同过滤中的冷启动问题。冷启动问题是指当新用户或新加入到协同过滤推荐系统中时,由于新用户或的评分数据极其稀少甚至没有,造成该用户得不到推荐结果或者该没有被推荐机会,根据Ahn等人的实验结果,相似度在冷启动问题上效果显著,但在一般场合(非冷启动)效果还不如PCC。

对于协同过滤推荐系统来说,相似度算法是至关重要的,它用于决定用户之间(或产品之间)的相关程度。在协同过滤领域,构建可靠可行的相似度算法是一个非常重要的研究点。我们对传统相似度算法进行了分析,并发现了他们的缺点:忽视用户向量之间(或产品向量之间)的长度差异、忽略共同评分产品或共同打分用户)的数量差异。为了克服这些缺点,我们提出了一种新的相似度算法——杰卡德统一算子距离相似度算法,这种方法基于欧氏距离,考虑了不同维数向量空间相似性度量的特征。我们的方法同时考虑了向量长度差异、共同评分产品数量、被评分的产品数量。与传统方法的性能对比实验结果表明,我们的方法具有更好的预测精度。

笔者注:曾经看过修正的cos是每个值先减去平均值,在用cos;还有人说是减去中位数(最大值与最小值的平均值,该值是理论值,比如评分系统是1到5分,那么久减去3分。)修正cosine相似度的目的是解决cosine相似度仅考虑向量维度方向上的相似而没考虑到各个维度的量纲的差异性,所以在计算相似度的时候,做了每个维度减去均值的修正操作;余弦相似度未考虑到用户评分尺度问题,如在评分区间[1一5]的情况下,对用户甲来说评分3以上就是自己喜欢的,而对于用户乙,评分4以上才是自己喜欢的。通过减去用户对项的平均评分,修正的余弦相似性度量方法改善了以上问题,按这种说法减去的不是均值,而是用户自定的值(上一篇里说道有的用户倾向于差评,非常好的才给4分)。

AdjCOS和PCC不是一样的,差别在于去中心化的方式不同。

下面找了一系列反例,指出各种相似度计算方法的缺点,进而提出新的方法。

        

               

笔者好奇的就是这些特例怎么找到的,或者说怎么生成的,还有就是以前看的相似度计算没评价的取0,这一片里没算,算的话结果会不会有差异。

五、提出新算法JacUOD(杰卡德统一算子距离相似度算法)

               

                   

笔者的疑惑是上图中的内容对吗。

        

类似地可以定义产品相似度

                

验证采用十折交叉验证,分了两个数据集成为data1个data2(我自己起的),然后分别对user-based和item-based算法在不同邻居数目k对不同数据集的时候做了性能(MAE)比较。目录如下:

1.User-based

1.1data1,不同k

1.2data2,不同k

2.User-based

2.1data1,不同k

2.2data2,不同k

对于不同的数据集k的取值是不同的,但是对于1和2每次k的值要一直,就是1.1与2.1一样,但是1.1与2.1不一样。

因为采用10折交叉验证,所以k取10个值。

以后自己验证也用这种方式,然后看一下原作者是如何分析实验结果的。

然后验证正规化因子和杰卡德因子的影响(就是JacUOD与UOD比较验证杰卡德,UOD与ED(欧几里得距离)比较验证正规化因子),实验步骤同上。

然后验证k的影响,发现是对勾曲线,笔者认为这样得出了一个比较好的k值,应用的时候直接用该值就行了。写论文不能写这么简单吧,看一段原作者的结论。

再验证避免零除数函数的影响

这一段作者没做实验,或者说做了没写上,是不是作者偷懒了,还是根本不想做了,自己想的结论。

1.验证采用十折交叉验证

英文名叫做10-fold cross-validation,用来测试算法准确性。是常用的测试方法。将数据集分成十分,轮流将其中9份作为训练数据,1份作为测试数据,进行试验。每次试验都会得出相应的正确率(或差错率)。10次的结果的正确率(或差错率)的平均值作为对算法精度的估计,一般还需要进行多次10折交叉验证(例如10次10折交叉验证),再求其均值,作为对算法准确性的估计。

之所以选择将数据集分为10份,是因为通过利用大量数据集、使用不同学习技术进行的大量试验,表明10折是获得最好误差估计的恰当选择,而且也有一些理论根据可以证明这一点。但这并非最终诊断,争议仍然存在。而且似乎5折或者20折与10折所得出的结果也相差无几。

六、面向Qos感知的服务推荐的归一还原协同过滤

属于服务计算,不做研究

七、面向云环境下开放接口推荐的用户聚类协同过滤

涉及服务计算

时间: 2024-10-14 12:23:49

基于协同过滤的个性化Web推荐的相关文章

基于协同过滤的推荐方法

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

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

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

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

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

中国人工智能学会通讯——电子商务中的个性化推荐技术剖析 1. 基于人生阶段建模的商品推荐

1. 基于人生阶段建模的商品推荐 经典的基于协同过滤的推荐,通常结合用户近期行为,给用户推送已知范围内的商品.随着用户对推荐系统和产品期望的提高,也需要向其呈现部分他们需要,但自己尚不清楚的领域的产品.用户的人生阶段建模及基于它的推荐算法就是针对这类问题研发的.它利用半监督马尔可夫建模技术,利用少量的标注数据,根据用户有行为的类目,去精准预测用户所处的人生阶段,以提供当前或未来所需要的商品.详细算法见KDD'15上我们发表的文章"Life-stage Prediction for Product

面向云环境的移动信息服务情景化协同过滤推荐

面向云环境的移动信息服务情景化协同过滤推荐 张亚明 刘海鸥 如何有效融合用户情景信息参量以实现其在移动信息推荐服务中的无缝耦合,是个性化推荐领域研究的热点问题.针对移动信息服务推荐的情景"缺位"问题,将情景信息引入协同过滤(CF)推荐算法,结合云计算处理技术深入探讨面向云环境的移动信息服务情景化协同过滤推荐机制,并提出Mapreduce化的协同过滤推荐方法.面向云环境的"旅游景点移动信息服务情景化推荐系统"实验结果表明,本文方法可有效改进CF在海量移动数据环境下的执

Spark MLlib中的协同过滤

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

[推荐系统]协同过滤介绍

在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题 1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法.要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐.这就是协同过滤的核心思想. 换句话说

使用Mahout实现协同过滤

Mahout算法框架自带的推荐器有下面这些: GenericUserBasedRecommender:基于用户的推荐器,用户数量少时速度快: GenericItemBasedRecommender:基于商品推荐器,商品数量少时速度快,尤其当外部提供了商品相似度数据后效率更好: SlopeOneRecommender:基于slope-one算法的推荐器,在线推荐或更新较快,需要事先大量预处理运算,物品数量少时较好: SVDRecommender:奇异值分解,推荐效果较好,但之前需要大量预处理运算:

如何使用Spark ALS实现协同过滤

本文主要记录最近一段时间学习和实现Spark MLlib中的协同过滤的一些总结,希望对大家熟悉Spark ALS算法有所帮助. 更新: [2016.06.12]Spark1.4.0中MatrixFactorizationModel提供了recommendForAll方法实现离线批量推荐,见SPARK-3066. 测试环境 为了测试简单,在本地以local方式运行Spark,你需要做的是下载编译好的压缩包解压即可,可以参考Spark本地模式运行. 测试数据使用MovieLens的MovieLens