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

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

一、论文来源

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感知的服务推荐的归一还原协同过滤

属于服务计算,不做研究

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

涉及服务计算

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

  1. 【Machine Learning】Mahout基于协同过滤(CF)的用户推荐

    一.Mahout推荐算法简介 Mahout算法框架自带的推荐器有下面这些: l  GenericUserBasedRecommender:基于用户的推荐器,用户数量少时速度快: l  GenericI ...

  2. 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维

    关键字:SVD.奇异值分解.降维.基于协同过滤的推荐引擎作者:米仓山下时间:2018-11-3机器学习实战(Machine Learning in Action,@author: Peter Harr ...

  3. 基于物品的协同过滤item-CF 之电影推荐 python

    推荐算法有基于协同的Collaboration Filtering:包括 user Based和item Based:基于内容 : Content Based 协同过滤包括基于物品的协同过滤和基于用户 ...

  4. 基于mllib的协同过滤实战(电影推荐)

    //加载需要的包 import org.apache.spark.rdd._ import org.apache.spark.mllib.recommendation.{ALS, Rating, Ma ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. CF(协同过滤算法)

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  7. 协同过滤(CF)算法

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  8. memory-based 协同过滤(CF)方法

    协同过滤(collaborative filtering,CF)算法主要分为memory-based CF 和 model-based CF,而memory-based CF 包括user-based ...

  9. 【转载】协同过滤 & Spark机器学习实战

    因为协同过滤内容比较多,就新开一篇文章啦~~ 聚类和线性回归的实战,可以看:http://www.cnblogs.com/charlesblc/p/6159187.html 协同过滤实战,仍然参考:h ...

随机推荐

  1. 关于Git和SVN的对比

    1.git的提交是一个DAG有向无欢图.可以看到哥哥分支之间的合并关系.SVN的提交是一条直线. 2.git的提交版本号不是一个简单递增的数字,而是一个长达40位的十六进制数字(哈希值) 但是可以适用 ...

  2. 去除ActionBar的方法

    今天做一个播放器项目,由于要去除ActionBar,纠结好久,原来这么简单 记录一下 只需要修改AndroidManifest.xml文件中的主题即可 <application android: ...

  3. Android颜色大全

    <?xml version="1.0" encoding="utf-8"?> <resources> <color name=&q ...

  4. Innosetup打包自动下载.net framework 动态库及替换卸载程序图标.

    在使用了一段时间微软自带的安装包打包工具后,总感觉不太顺利,于是便想着找一种更简单稳定的打包工具,这类工具其实还不少,最终经过各种考量,我们选择了 InnoSetup , 该工具是一个完全免费的Win ...

  5. 项目开发中常用到的SQL语句

    阅读目录 循环示例 循环示例 循环示例 循环示例 1.循环示例 在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时多少会用到一些,但突然问我,很难把自己知 ...

  6. SQL Server 错误检测与修复

    简介 在一个理想的世界中,不会存在任何数据库的损坏,就像我们不会将一些严重意外情况列入我们生活中的日常一样,而一旦这类事情发生,一定会对我们的生活造成非常显著的影响,在SQL Server中也同样如此 ...

  7. struts2中<s:property>的用法

    1,访问Action值栈中的普通属性: <s:property value="attrName"/> 2,访问Action值栈中的对象属性(要有get set方法):  ...

  8. 使用 x3dom 框架及 WebGL 在浏览器上显示 3 维模型

    如果需要在浏览器上显示 3D 画面的话, 现在一般会使用 ​WebGL, 典型的例如 three.js(​http://mrdoob.github.com/three.js/), 但是 WebGL 对 ...

  9. 18_高级映射:一对一查询(使用resultMap)

    [简述] 数据库模型和数据等信息与上一篇博文相同. 需求也同上一篇博文. [工程截图] [User.java]POJO package cn.higgin.mybatis.po; import jav ...

  10. "const wchar_t is incompatible with parameter of type "LPCSTR"

    MessageBox(NULL, L"TEST", L"TEST", MB_OK); You may get this error if you "U ...