`

推荐系统学习笔记1

阅读更多

什么是推荐系统

遇到了信息过载(Information overflow)的问题,需要一个人或者工具来帮助你做筛选,给出一些建议供你选择这个工具就是个性化推荐系统。

 

    推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己

有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢.

 

为了解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎。和搜索引擎一样,推荐系统也是一种帮助用户快速发现有用信息的工具。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。

因此,从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

 

从物品的角度出发,推荐系统可以更好地发掘物品的长尾(long tail)。美国《连线》杂志主编Chris Anderson2004年发表了“The Long Tail”(长尾)一文并于2006年出版了《长尾理论》一书。该书指出,传统的80/20原则(80%的销售额来自于20%的热门品牌)在互联网的加入下会受到挑战。互联网条件下,由于货架成本极端低廉,电子商务网站往往能出售比传统零售店更多的商品。虽然这些商品绝大多数都不热门,但与传统零售业相比,这些不热门的商品数量极其庞大,因此这些长尾商品的总销售额将是一个不可小觑的数字,也许会超过热门商品(即主流商品)带来的销售额。主流商品往往代表了绝大多数用户的需求,而长尾商品往往代表了一小部分用户的个性化需求。

因此,如果要通过发掘长尾提高销售额,就必须充分研究用户的兴趣,而这正是个性化推荐系统主要解决的问题。推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。

推荐系统是如何工作

向朋友咨询:这种方式在推荐系统中称为社会化推荐social recommendation),即让好友给自己推荐物品。

推荐系统可以将上述过程自动化,通过分析用户曾经看过的电影找到用户喜欢的演员和导演,然后给用户推荐这些演员或者导演的其他电影。这种推荐方式在推荐系统中称为基于内容的推荐 content-based filtering

如果能找到和自己历史兴趣相似的一群用户,看看他们最近在看什么电影,那么结果可能比宽泛的热门排行榜更能符合自己的兴趣。这种方式称为基于协同过滤collaborative filtering)的推荐。

 

推荐算法的本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。现推荐系统就是自动联系用户和物品的一种工具,它能够在信息过载的环境中帮助用户发现令他们感兴趣的信息,也能将信息推送给对它们感兴趣的用户。

 

个性化推荐系统在这些网站中的主要作用是通过分析大量用户行为日志,给不同用户提供不同的个性化页面展示,来提高网站的点击率和转化率。广泛利用推荐系统的领域包括电子商务、电影和视频、音乐、社交网络、阅读、基于位置的服务、个性化邮件和广告等。几乎所有的推荐系统应用都是由前台的展示页面、后台的日志系统以及推荐算法系统3部分构成的。

社交网络中的个性化推荐技术主要应用在3个方面:

 1利用用户的社交网络信息对用户进行个性化的物品推荐;

 2信息流的会话推荐;

 3给用户推荐好友。

 

阅读文章是很多互联网用户每天都会做的事情。个性化阅读同样符合前面提出的需要个性化推荐的两个因素:首先,互联网上的文章非常多,用户面临信息过载的问题;其次,用户很多时候并没有必须看某篇具体文章的需求,他们只是想通过阅读特定领域的文章了解这些领域的动态。

目前互联网上的个性化阅读工具很多,国际知名的有Google Reader,国内有鲜果网等。同时,随着移动设备的流行,移动设备上针对个性化阅读的应用也很多,其中具有代表性的有ZiteFlipboard

Google Reader是一款流行的社会化阅读工具。它允许用户关注自己感兴趣的人,然后看到所关注用户分享的文章。和Google Reader不同,个性化阅读工具Zite则是收集用户对文章的偏好信息。在每篇文章右侧,Zite都允许用户给出喜欢或不喜欢的反馈,然后通过分析用户的反馈数据不停地更新用户的个性化文章列表。Zite推出后获得了巨大的成功,后被CNN收购。

 

广告定向投放(Ad Targeting)个性化广告投放和狭义个性化推荐的区别是,个性化推荐着重于帮助用户找到可能令他们感兴趣的物品,而广告推荐着重于帮助广告找到可能对它们感兴趣的用户,即一个是以用户为核心,而另一个以广告为核心。目前的个性化广告投放技术主要分为3种。

上下文广告 通过分析用户正在浏览的网页内容,投放和网页内容相关的广告。代表系统是谷歌的Adsense

搜索广告 通过分析用户在当前会话中的搜索记录,判断用户的搜索目的,投放和用户目的相关的广告。

个性化展示广告 我们经常在很多网站看到大量展示广告(就是那些大的横幅图片),它们是根据用户的兴趣,对不同用户投放不同的展示广告。雅虎是这方面研究的代表。

 

推荐系统评测

什么才是好的推荐系统?这是推荐系统评测需要解决的首要问题。一个完整的推荐系统一般存在3个参与方:用户、物品提供者和提供推荐系统的网站.

好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户.

从不同角度出发, 指标包括准确度、覆盖度、新颖度、惊喜度、信任度、透明度等.

 

在推荐系统中,主要有3评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。

1. 离线实验

离线实验的方法一般由如下几个步骤构成:

(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;

(2) 将数据集按照一定的规则分成训练集和测试集;

(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;

(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。

这种实验方法的好处是不需要真实用户参与,可以直接快速地计算出来,从而方便、快速地测试大量不同的算法。它的主要缺点是无法获得很多商业上关注的指标,如点击率、转化率等,而找到和商业指标非常相关的离线指标也是很困难的事情

 

2用户调查需要有一些真实用户,让他们在需要测试的推荐系统上完成一些任务。在他们完成任务时,我们需要观察和记录他们的行为,并让他们回答一些问题。最后,我们需要通过分析他们的行为和答案了解测试系统的性能,用户调查也有一些缺点。首先,用户调查成本很高,需要用户花大量时间完成一个个任务,并回答相关的问题。有些时候,还需要花钱雇用测试用户。因此,大多数情况下很难进行大规模的用户调查,而对于参加人数较少的用户调查,得出的很多结论往往没有统计意义。因此,我们在做用户调查时,一方面要控制成本,另一方面又要保证结果的统计意义。

此外,测试用户也不是随便选择的。它的优点是可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后很容易弥补。缺点是招募测试用户代价较大,很难组织大规模的测试用户,因此会使测试结果的统计意义不足

 

3. 在线实验

在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,将它和旧的算法进行比较。

AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能。对AB测试感兴趣的读者可以浏览一下网站http://www.abtests.com/,该网站给出了很多通过实际AB测试提高网站用户满意度的例子,从中我们可以学习到如何进行合理的AB测试。AB测试的优点是可以公平获得不同算法实际在线时的性能指标,包括商业上关注的指标。AB测试的缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果

 

评测指标

1. 用户满意度

用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。

用户调查获得用户满意度主要是通过调查问卷的形式

2. 预测准确度

预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标。该指标可以通过离线实验计算。在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该

数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。

很多提供推荐服务的网站都有一个让用户给物品打分的功能。那么,如果知道了用户对物品的历史评分,就可以从中习得用户的兴趣模型,并预测该用户在将来看到一个他没有评过分的物品时,会给这个物品评多少分。预测用户对物品评分的行为称为评分预测。评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。

 

网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision/召回率(recall)度量。

TopN推荐更符合实际的应用需求。

 

3. 覆盖率

覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。,覆盖率是一个内容提供商会关心的指标

4. 多样性

用户的兴趣是广泛的,在一个视频网站中,用户可能既喜欢看《猫和老鼠》一类的动画片,也喜欢看成龙的动作片。那么,为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性推荐列表的好处用一句俗话表述就是“不在一棵树上吊死”。多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的

5. 新颖性

新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。

6. 惊喜度

惊喜度(serendipity)是最近这几年推荐系统领域最热门的话题,如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。

7. 信任度

度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度(transparency)①,而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较信任。

8. 实时性

在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将它们推荐给用户。推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。

 

9. 健壮性

算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算法比较健壮。

设计推荐系统时尽量使用代价比较高的用户行为。比如,如果有用户购买行为和用户浏览行为,那么主要应该使用用户购买行为,因为购买需要付费,所以攻击购买行为的代价远远大于攻击浏览行为。

 在使用数据前,进行攻击检测,从而对数据进行清理。

一般来说,评测维度分为如下3种。

用户维度 主要包括用户的人口统计学信息、活跃度以及是不是新用户等。

物品维度 包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。

时间维度 包括季节,是工作日还是周末,是白天还是晚上等。

如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。

分享到:
评论

相关推荐

    操作系统学习笔记

    这份"操作系统学习笔记"为初学者提供了深入了解操作系统机制的途径,涵盖了保护模式下的编程、进程管理以及系统初始化等重要概念。 首先,我们来看看"保护模式下编程"。在个人计算机的早期,操作系统主要在实模式下...

    系统架构师学习笔记

    系统架构师的学习笔记,通常是资深架构师或者对架构有深入研究的专业人士根据个人经验和学习总结所撰写的学习资料,它可以帮助开发工程师向系统架构师的职业发展道路上迈进。 从提供的内容来看,系统架构师的学习...

    linux系统管理学习笔记

    linux系统管理学习笔记 linux系统管理学习笔记 linux系统管理学习笔记

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于ssm的云的学习笔记系统-ssm-java代码

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于Web的云的学习笔记系统设计与实现-java代码

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...

    数据库系统原理学习笔记

    这份学习笔记涵盖了数据库系统的基础概念、设计原则以及SQL语言的应用。以下是笔记中的关键知识点: 1. **数据库概述**:数据库是一种有组织地存储和管理数据的系统,提供了数据的结构化存储、数据操作和数据控制等...

    信息系统项目管理师学习笔记.pdf

    信息系统项目管理师学习笔记,原书第三版的学习笔记,个人学习总结,拿出分享,欢迎下载 高项 软考 项目经理 高级 项目管理 十大管理 整体管理 范围管理 进度管理 成本管理 质量管理 人力资源管理 沟通管理 风险管理...

    contiki 学习笔记

    Contiki学习笔记:系统进程etimer_process Contiki学习笔记:深入理解process_run函数 Contiki 进阶学习: Contiki学习笔记:新事件产生及事件处理 Contiki学习笔记:时钟中断处理程序Systick_isr Contiki学习笔记:...

    系统集成项目管理工程师学习笔记

    系统集成项目管理工程师学习笔记系统集成项目管理工程师学习笔记 软考

    数据仓库学习笔记

    数据仓库学习笔记第 1 章讲述了决策支持系统的发展历史和演化过程。 数据仓库学习笔记中提到,决策支持系统(DSS)处理是一个漫长而复杂的演化进程的结果,而且它仍在继续演化。DSS 处理的起源可以追溯到计算机发展...

    操作系统课程学习笔记

    学习笔记中可能还会涵盖操作系统的类型,如批处理系统、分时系统、实时系统、网络操作系统以及分布式操作系统,以及现代操作系统的设计趋势,如微内核、宏内核、混合内核等架构。 最后,操作系统实验是加深理解的...

    第一行代码 android学习笔记 完整版

    Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中系统地介绍了Android...

    RT-Thread物联网实时操作系统学习笔记及相关源码.zip

    RT-Thread物联网实时操作系统学习笔记及相关源码.zipRT-Thread物联网实时操作系统学习笔记及相关源码.zipRT-Thread物联网实时操作系统学习笔记及相关源码.zipRT-Thread物联网实时操作系统学习笔记及相关源码.zipRT-...

    云的学习笔记系统代码 java云的学习笔记系统代码

    1、云的学习笔记系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SSM ④ 架构:B/S、MVC ⑤ 开发环境:IDEA、JDK、Maven、Mysql ⑥ JDK版本:JDK1.8 ⑦ Maven包:Maven3.6 ⑧ ...

Global site tag (gtag.js) - Google Analytics