﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Terry.Li-文章分类-推荐引擎</title><link>http://www.blogjava.net/libin2722/category/53383.html</link><description>虚其心，可解天下之问；专其心，可治天下之学；静其心，可悟天下之理；恒其心，可成天下之业。</description><language>zh-cn</language><lastBuildDate>Fri, 08 Mar 2013 06:06:42 GMT</lastBuildDate><pubDate>Fri, 08 Mar 2013 06:06:42 GMT</pubDate><ttl>60</ttl><item><title>个性化推荐技术漫谈</title><link>http://www.blogjava.net/libin2722/articles/396041.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 04 Mar 2013 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/396041.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/396041.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/396041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/396041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/396041.html</trackback:ping><description><![CDATA[
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">如果说过去的十年是搜索技术大行其道的十年，那么个性化推荐技术将成为未来十年中最重要的革新之一。目前几乎所有大型的电子商务系统，如Amazon、CDNOW、Netflix等，都不同程度地使用了各种形式的推荐系统。而近来以“发现”为核心的网站正开始在互联网上崭露头角，比如侧重于音乐推荐的八宝盒，侧重于图书推荐的豆瓣等等。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">那么，一个好的推荐系统需要满足什么目标呢？<br style="margin: 0px; padding: 0px;" />个性化推荐系统必须能够基于用户之前的口味和喜好提供相关的精确的推荐，而且这种口味和喜欢的收集必须尽量少的需要用户的劳动。推荐的结果必须能够实时计算，这样才能够在用户离开网站前之前获得推荐的内容，并且及时的对推荐结果作出反馈。实时性也是推荐系统与通常的数据挖掘技术显著不同的一个特点。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">一个完整的推荐系统由三部分构成：行为记录模块、模型分析模块和推荐模块。行为记录模块负责记录能够体现用户喜好的行为，比如购买、下载、评分等。这部分看起来简单，其实需要非常仔细的设计。比如说购买和评分这两种行为表达潜在的喜好程度就不尽相同完善的行为记录需要能够综合多种不同的用户行为，处理不同行为的累加。模型分析模块的功能则实现了对用户行为记录的分析，采用不同算法建立起模型描述用户的喜好信息。最后，通过推荐模块，实时的从内容集筛选出目标用户可能会感兴趣的内容推荐给用户。因此，除了推荐系统本身，为了实现推荐，还需要一个可供推荐的内容集。比如，对于音乐推荐系统来说，一个音乐库就是这样的内容集。我们对内容集本身需要提供的信息要求非常低，在经典的协同过滤算法下，内容集甚至只需要提供ID就足够。而对于基于内容的推荐系统来说，由于往往需要对内容进行特征抽取和索引，我们就会需要提供更多的领域知识和内容属性。这种情况下，还是拿音乐举例，歌手、流派之类的属性和音频信息就成为必需的内容集信息。<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" /></div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">迄今为止在个性化推荐系统中，协同过滤（Collaborative Filtering）技术是应用最成功的技术。目前国内外互联网上有许多大型网站已经应用这项技术为用户更加智能的推荐内容。如果你想要研究协同过滤，一定不能错过MovieLens（<a href="http://movielens.umn.edu/" style="margin: 0px; padding: 0px; color: rgb(51, 102, 153); text-decoration: none;">http://movielens.umn.edu/</a>）。它是协同过滤最著名的研究项目之一。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">第一代的协同过滤技术，又被称为基于用户（User-based）的协同过滤。基于用户的协同过滤，基本原理是基于用户行为选择的相关性。用户的行为选择这里指的是下载、购买、评价等等能够显式或者隐式体现出用户喜好的行为。在一个典型的基于协同过滤技术的推荐系统中，输入数据通常可以表述为一个m×n 的用户内容矩阵R，m是用户数，n是内容数。矩阵的值与内容的类型有关，通常由行为记录模块决定。如果内容是网上书店中的书，则矩阵的值可以表示用户购买与否，例如1表示购买，0表示没有购买；或者表示用户对它的评价有多高，这样的评价值就可以有几个等级，比如常见的1～5级评价制。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">基于用户的协同过滤，通过比较目标用户的一系列行为选择和其他用户之间的相似性，来识别出一组相互具有类似喜好的用户，又可以称为“同好”。一旦系统能够识别一个用户的同好用户，就能够将他们最感兴趣的内容作为当前用户的推荐结果推荐给这个用户。也就是说，以前的行为选择与你相似的用户，在以后的行为中很可能也会和你相似。因此将这些用户做为基准来向你推荐内容。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">协同过滤的核心问题是寻找与目标用户兴趣相近的一组用户。这种相似用户通常被称为最近邻居（Nearest Neighbor）。用户之间的相似度是通过比较两个用户的行为选择矢量得到的。目前，比较行为选择矢量的相似度计算方法有许多种，比较经典的算法包括泊松相关系数（Person Correlation Coefficient）和余弦相似性（Cosine-based Similarity）。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">“最近邻居”产生后，我们就能够计算得到用户最可能感兴趣的内容集（也叫做TopN推荐集）。为了得到推荐集，分别统计“最近邻居”中的用户对不同内容的兴趣度，取其中排在最前面的内容作为推荐集。下面是一个简化的示例：假如用户张三有两个同好：李四和王五。</div>
		<div style="margin: 0px 0px 0px 21pt; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-indent: 21pt;"> </div>
		<div style="margin: 0px 0px 0px 21pt; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-indent: 21pt;">张三喜欢看电影A；</div>
		<div style="margin: 0px 0px 0px 21pt; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-indent: 21pt;">李四喜欢看电影A，B，C和D；</div>
		<div style="margin: 0px 0px 0px 21pt; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-indent: 21pt;">王五喜欢看电影A，B，D，E和F；</div>
		<div style="margin: 0px 0px 0px 21pt; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-indent: 21pt;"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">这样，推荐系统就能够过滤出相似用户都喜欢的电影B和D作为张三最可能也会喜欢的电影推荐给张三。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">基于用户的协同过滤技术在个性化推荐系统中获得了极大的成功，但它有自身的局限性。推荐集的产生方式意味着一个内容只有已经被用户选择（购买）后才有机会被推荐给其他用户。对于一个网上书店来说，新上架的书因为还没有被相当数量的用户购买或者评价的记录，便很少有机会被用户的“最近邻居”筛选进入推荐集。这个问题，也被称之为协同过滤的“冷启动”问题。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">此外，因为计算用户的相似度时，是通过将目标用户的历史行为记录与其他每一个用户的记录相比较得出的，所以对于一个现实的推荐系统来说，扩展性将成为非常严重的问题。设想一下，对于一个拥有上百万用户的网站来说，每计算一个用户都将涉及到上百万次的比较，更不要说其中会带来的大量数据库IO操作的开销。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">于是第二代基于内容项（Item-based）的协同过滤技术就产生了。与基于用户的技术不同的是，这种方法比较的是内容项与内容项之间的相似度。Item-based 方法同样需要进行三个步骤获得推荐：1）得到内容项（Item）的历史评分数据；2）针对内容项进行内容项之间的相似度计算，找到目标内容项的“最近邻居”；3）产生推荐。这里内容项之间的相似度是通过比较两个内容项上的用户行为选择矢量得到的。举个例子，假设用户和内容项如下：</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" align="center">
				<table style="margin: 0px; padding: 0px; border: medium none; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
						<tbody style="margin: 0px; padding: 0px;">
								<tr style="margin: 0px; padding: 0px; height: 15pt;">
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: 1.5pt medium 1pt; border-style: solid none; border-top-color: green; width: 40.8pt; border-bottom-color: green; height: 15pt;" valign="top" width="54">
												<div style="margin: 0px; padding: 0px;"> </div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: 1.5pt medium 1pt; border-style: solid none; border-top-color: green; width: 51.3pt; border-bottom-color: green; height: 15pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">电影A</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: 1.5pt medium 1pt; border-style: solid none; border-top-color: green; width: 50.45pt; border-bottom-color: green; height: 15pt;" valign="top" width="67">
												<div style="margin: 0px; padding: 0px;">电影B</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: 1.5pt medium 1pt; border-style: solid none; border-top-color: green; width: 51.3pt; border-bottom-color: green; height: 15pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">电影C</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: 1.5pt medium 1pt; border-style: solid none; border-top-color: green; width: 51.3pt; border-bottom-color: green; height: 15pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">电影D</div>
										</td>
								</tr>
								<tr style="margin: 0px; padding: 0px; height: 15.75pt;">
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 40.8pt; height: 15.75pt;" valign="top" width="54">
												<div style="margin: 0px; padding: 0px;">张三</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 50.45pt; height: 15.75pt;" valign="top" width="67">
												<div style="margin: 0px; padding: 0px;"> </div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;"> </div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;"> </div>
										</td>
								</tr>
								<tr style="margin: 0px; padding: 0px; height: 15.75pt;">
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 40.8pt; height: 15.75pt;" valign="top" width="54">
												<div style="margin: 0px; padding: 0px;">李四</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 50.45pt; height: 15.75pt;" valign="top" width="67">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
								</tr>
								<tr style="margin: 0px; padding: 0px; height: 15.75pt;">
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 40.8pt; height: 15.75pt;" valign="top" width="54">
												<div style="margin: 0px; padding: 0px;">王五</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">不喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 50.45pt; height: 15.75pt;" valign="top" width="67">
												<div style="margin: 0px; padding: 0px;"> </div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">不喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border: medium none; width: 51.3pt; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">不喜欢</div>
										</td>
								</tr>
								<tr style="margin: 0px; padding: 0px; height: 15.75pt;">
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: medium medium 1.5pt; border-style: none none solid; width: 40.8pt; border-bottom-color: green; height: 15.75pt;" valign="top" width="54">
												<div style="margin: 0px; padding: 0px;">赵六</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: medium medium 1.5pt; border-style: none none solid; width: 51.3pt; border-bottom-color: green; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: medium medium 1.5pt; border-style: none none solid; width: 50.45pt; border-bottom-color: green; height: 15.75pt;" valign="top" width="67">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: medium medium 1.5pt; border-style: none none solid; width: 51.3pt; border-bottom-color: green; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;"> </div>
										</td>
										<td style="margin: 0px; padding: 0cm 5.4pt; border-width: medium medium 1.5pt; border-style: none none solid; width: 51.3pt; border-bottom-color: green; height: 15.75pt;" valign="top" width="68">
												<div style="margin: 0px; padding: 0px;">喜欢</div>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">可以看出，电影A与D是最相似的。因为张三喜欢A，所以电影D就可以推荐给张三。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">和基于用户的推荐系统相比，基于内容项的推荐系统最大的改进是更具有扩展性。基于内容项的方法通过计算内容项之间的相似性来代替用户之间的相似性。对于通常的互联网应用来说，提供的内容项数量相对较为稳定。比如一个大型网上书店，可能出售的书籍数量也就在几十万上下，而用户数量就可能达到几百万。所以，比起用户，内容项之间的相似性计算需要的计算量要少很多，从而大大降低了在线计算量，提高系统性能。基于内容项的推荐系统应用最为成功的是Amazon。Amazon为此还申请了一项专利叫做”Collaborative recommendations using item-to-item similarity mappings”<a title="" name="_ftnref1" href="http://writeblog.csdn.net/Editor/FCKeditor/editor/fckeditor.html?InstanceName=ctl00_ContentPlaceHolder1_EntryEditor1_richTextEditor_richTextEditor&amp;Toolbar=Default#_ftn1" style="margin: 0px; padding: 0px; color: rgb(51, 102, 153); text-decoration: none;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">[1]</span></span></span></span>。当然，在降低了计算量的同时，完全基于内容项的推荐技术也在推荐的准确度上做了小小的牺牲。大多数情况下，基于用户的推荐技术表现要略好于基于内容项的方法。这是因为基于内容的方法忽略了相似用户之间的组群特征。</a></div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">不论是第一代的基于用户方法，还是第二代的基于内容项方法，都不可避免的遇到数据稀疏的问题。在任何一个网站中，用户的评分记录或者购买记录，相对整个可供选择的内容集来说，都是很小的一部分。所以在许多推荐系统中，每个用户涉及的数据量相当有限，在一些大的系统如Amazon中，用户最多不过就评价过上百万本书的1％，造成评估数据相当稀疏。当用户评价过的内容之间找不到交集时，就难以判断用户的口味是否相似，难以找到相似用户集，导致推荐效果大大降低。为了解决用户数据的稀疏问题，最方便的办法就是将用户对没有选择过的内容项的评分设为一个固定的缺省值，例如用户的平均评分。针对如何预测遗漏的评分业内又提出了很多种方法，不过一般来说采用最简单的改进方法就可以有效地提高协同过滤推荐系统的准确度。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">另外一方面，即便采用了基于内容项的方法，在数据量巨大的时候，计算复杂度仍然成为性能瓶颈。为了进一步解决协同过滤技术的扩展性能问题，目前比较有效的办法是在用户评分数据上做一次聚类分析(clustering)。聚类技术首先将具有相似兴趣爱好的用户分配到相同的分类中。聚类产生之后，它或者将“最近邻居”搜索对象限制在最相近的聚类中，根据类中其他用户的评价预测目标用户的评价，或者用聚类的中心作为近似提取推荐结果。由于用户之间的分类相对变化比较小，因此聚类过程往往可以离线进行，而无需实时计算，这样就大大降低了实时推荐的计算压力，提高推荐系统的速度。一般来说，聚类将用户分为多少个类，推荐系统的整体速度就能够提高多少倍。具体选择什么样的聚类算法，又会因应用领域和数据的分布特性而不同。如果聚类算法选择不当，反而会降低推荐的准确性。近年来，推荐系统的算法技术的发展也有了一些新的方向，比如SlopeOne，SVD等方法，就不一一列举了。</div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"> </div>
		<div style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">在我看来，一个商用推荐系统的尤其关键之处在于对海量用户数据的处理。因为推荐系统是数据优先，数据的积累越多对推荐的精度就越有好处。而当用户的行为数据真正积累到上百万甚至上亿时，如何在合理时间内得出有效的推荐，就是对推荐技术最大的考验。除此之外，一个优秀的推荐系统需要能够结合内容相似与用户行为相。传统的协同过滤方法是忽略内容本身的属性的，这一方面固然是对数据要求少的优点，但另一方面也带来了难以避免的“冷启动”问题。其实，随着标签系统在互联网上的广泛应用，标签本身就不失为是一种很好的内容属性。如何利用也是值得大家探讨的。充分利用到内容本身的属性，将不同的相似性结合起来，这会给基于协同过滤的推荐技术带来新的动力。最后一点，设计良好的推荐技术要能够从用户对推荐内容的反馈中自行调整和学习。因为实际上每个用户对于推荐的内容都有不同的要求，比如有的用户可能偏好比较热门的内容，有的用户更愿意发现冷门的内容。针对不同用户的反馈来不断学习每个用户的特征，才能够避免所采用算法本身先天的偏差，获得较为理想的效果。</div>
<img src ="http://www.blogjava.net/libin2722/aggbug/396041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2013-03-04 16:39 <a href="http://www.blogjava.net/libin2722/articles/396041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探索推荐引擎内部的秘密，第 1 部分: 推荐引擎初探</title><link>http://www.blogjava.net/libin2722/articles/396035.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 04 Mar 2013 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/396035.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/396035.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/396035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/396035.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/396035.html</trackback:ping><description><![CDATA[
		<div id="dw-summary-article" style="width: 930px; background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 255, 255)), to(rgb(236, 236, 236))); background-color: rgb(255, 255, 255); margin-top: 3px; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; color: rgb(0, 0, 0); font-family: Simsun; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-position: initial initial; background-repeat: initial initial;">
				<div class="ibm-container-body ibm-two-column" style="overflow: visible; height: 169.3125px;">
						<div class="ibm-column ibm-first" style="width: 500px; float: left; padding-left: 14px; margin-bottom: 10px;">
								<p style="font-family: arial, nsimsun, sans-serif; font-size: 0.76em; margin: 0em; padding: 0em 0em 1em;">
										<strong>简介：</strong> 随着 Web 技术的发展，使得内容的创建和分享变得越来越容易。每天都有大量的图片、博客、视频发布到网上。信息的极度爆炸使得人们找到他们需要的信息将变得越来越难。传统的搜索技术是一个相对简单的帮助人们找到信息的工具，也广泛的被人们所使用，但搜索引擎并不能完全满足用户对信息发现的需求，原因一是用户很难用恰当的关键词描述自己的需求，二是基于关键词的信息检索在很多情况下是不够的。而推荐引擎的出现，使用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的上下文信息更丰富的信息发现。</p>
						</div>
						<div class="ibm-column ibm-second" style="width: 380px; float: right; padding-right: 10px;">
								<p class="leading" style="font-family: arial, nsimsun, sans-serif; font-size: 0.76em; margin: 0em; padding: 0em 0em 1em; line-height: 18px;">
										<b style="font-size: 1em; font-weight: bold;">发布日期：</b> 2011 年 3 月 16 日<span class="Apple-converted-space"> </span><br /><b style="font-size: 1em; font-weight: bold;">级别：</b> 高级<span class="Apple-converted-space"> </span><br /><strong>访问情况 ：</strong> 65031 次浏览<span class="Apple-converted-space"> </span><br /><strong>评论：</strong> <span id="nCmts">11 (<a class="dw-view-comment" href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#icomments" style="padding: 0px 0px 3px 15px; background-image: url(http://www.ibm.com/i/v16/icons/d_bold.gif); margin-left: -4px; color: rgb(153, 102, 153); background-repeat: no-repeat no-repeat;">查看</a> | <a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#" style="color: rgb(153, 102, 153);">添加评论</a><span class="Apple-converted-space"> </span>- 登录)</span></p>
								<div id="art-rating-summary" style="font-family: arial, sans-serif !important; font-size: 0.76em !important;">
										<img alt="平均分 5 星 共 236 个评分" src="http://dw1.s81c.com/developerworks/i/stars120x20-5b.jpg" class="dw-avg-rating" style="border: 0px; vertical-align: -4px; padding: 0px !important;" />
										<span class="Apple-converted-space"> </span>平均分 (236个评分)<br /><a class="dw-view-comment" href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#iratings" style="padding: 0px 0px 3px 15px; background-image: url(http://www.ibm.com/i/v16/icons/d_bold.gif); margin-left: -4px; color: rgb(153, 102, 153); background-repeat: no-repeat no-repeat;">为本文评分</a></div>
								<br />
						</div>
				</div>
		</div>
		<div id="ibm-content-body" style="background-image: none; background-attachment: scroll; background-color: rgb(255, 255, 255); width: 930px; padding: 15px 0px; clear: both; color: rgb(0, 0, 0); font-family: Simsun; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-position: 0px 0px; background-repeat: no-repeat no-repeat;">
				<div id="ibm-content-main" style="float: left; clear: left; width: 710px; padding-left: 10px;">
						<div class="ibm-container" style="margin: 0px 0px 1.2em; width: 710px;">
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">“探索推荐引擎内部的秘密”系列将带领读者从浅入深的学习探索推荐引擎的机制，实现方法，其中还涉及一些基本的优化方法，例如聚类和分类的应用。同时在理论讲解的基础上，还会结合 Apache Mahout 介绍如何在大规模数据上实现各种推荐策略，进行策略优化，构建高效的推荐引擎的方法。本文作为这个系列的第一篇文章，将深入介绍推荐引擎的工作原理，和其中涉及的各种推荐机制，以及它们各自的优缺点和适用场景，帮助用户清楚的了解和快速构建适合自己的推荐引擎。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major1">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">信息发现</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">如今已经进入了一个数据爆炸的时代，随着 Web 2.0 的发展， Web 已经变成数据分享的平台，那么，如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">在这样的情形下，搜索引擎（Google，Bing，百度等等）成为大家快速找到目标信息的最好途径。在用户对自己需求相对明确的时候，用搜索引擎很方便的通过关键字搜索很快的找到自己需要的信息。但搜索引擎并不能完全满足用户对信息发现的需求，那是因为在很多情况下，用户其实并不明确自己的需要，或者他们的需求很难用简单的关键字来表述。又或者他们需要更加符合他们个人口味和喜好的结果，因此出现了推荐系统，与搜索引擎对应，大家也习惯称它为推荐引擎。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">随着推荐引擎的出现，用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的信息发现。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">如今，随着推荐技术的不断发展，推荐引擎已经在电子商务 (E-commerce，例如 Amazon，当当网 ) 和一些基于 social 的社会化站点 ( 包括音乐，电影和图书分享，例如豆瓣，Mtime 等 ) 都取得很大的成功。这也进一步的说明了，Web2.0 环境下，在面对海量的数据，用户需要这种更加智能的，更加了解他们需求，口味和喜好的信息发现机制。</p>
								<p class="ibm-ind-link ibm-back-to-top" style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 5px; font-size: 0.76em; clear: both; text-align: right; height: 15px;">
										<a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#ibm-pcon" class="ibm-anchor-up-link" style="color: rgb(153, 102, 153); display: inline; margin: 0px; padding: 0px 0px 0px 18px; text-decoration: none; background-image: url(http://1.www.s81c.com/i/v16/icons/u_bold.gif); font-weight: bold; background-position: 0px -1px; background-repeat: no-repeat no-repeat;">回页首</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major2">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">推荐引擎</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">前面介绍了推荐引擎对于现在的 Web2.0 站点的重要意义，这一章我们将讲讲推荐引擎到底是怎么工作的。推荐引擎利用特殊的信息过滤技术，将不同的物品或内容推荐给可能对它们感兴趣的用户。</p>
								<br />
								<a name="fig1">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 1. 推荐引擎工作原理图</b>
								</a>
								<br />
								<img alt="图 1. 推荐引擎工作原理图" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image003.jpg" style="border: 0px; padding: 0.3em 5px 0.7em;" height="296" width="403" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">图 1 给出了推荐引擎的工作原理图，这里先将推荐引擎看作黑盒，它接受的输入是推荐的数据源，一般情况下，推荐引擎所需要的数据源包括：</p>
								<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">要推荐物品或内容的元数据，例如关键字，基因描述等；</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">系统用户的基本信息，例如性别，年龄等</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">用户对物品或者信息的偏好，根据应用本身的不同，可能包括用户对物品的评分，用户查看物品的记录，用户的购买记录等。其实这些用户的偏好信息可以分为两类：</li>
								</ul>
								<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">显式的用户反馈：这类是用户在网站上自然浏览或者使用网站以外，显式的提供反馈信息，例如用户对物品的评分，或者对物品的评论。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">隐式的用户反馈：这类是用户在使用网站是产生的数据，隐式的反应了用户对物品的喜好，例如用户购买了某物品，用户查看了某物品的信息等等。</li>
								</ul>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">显式的用户反馈能准确的反应用户对物品的真实喜好，但需要用户付出额外的代价，而隐式的用户行为，通过一些分析和处理，也能反映用户的喜好，只是数据不是很精确，有些行为的分析存在较大的噪音。但只要选择正确的行为特征，隐式的用户反馈也能得到很好的效果，只是行为特征的选择可能在不同的应用中有很大的不同，例如在电子商务的网站上，购买行为其实就是一个能很好表现用户喜好的隐式反馈。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">推荐引擎根据不同的推荐机制可能用到数据源中的一部分，然后根据这些数据，分析出一定的规则或者直接对用户对其他物品的喜好进行预测计算。这样推荐引擎可以在用户进入的时候给他推荐他可能感兴趣的物品。</p>
								<p class="ibm-ind-link ibm-back-to-top" style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 5px; font-size: 0.76em; clear: both; text-align: right; height: 15px;">
										<a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#ibm-pcon" class="ibm-anchor-up-link" style="color: rgb(153, 102, 153); display: inline; margin: 0px; padding: 0px 0px 0px 18px; text-decoration: none; background-image: url(http://1.www.s81c.com/i/v16/icons/u_bold.gif); font-weight: bold; background-position: 0px -1px; background-repeat: no-repeat no-repeat;">回页首</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major3">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">推荐引擎的分类</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">推荐引擎的分类可以根据很多指标，下面我们一一介绍一下：</p>
								<ol style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;" type="1">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">推荐引擎是不是为不同的用户推荐不同的数据<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0px 0px; font-size: 1em;">根据这个指标，推荐引擎可以分为基于大众行为的推荐引擎和个性化推荐引擎</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 1em;"><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">根据大众行为的推荐引擎，对每个用户都给出同样的推荐，这些推荐可以是静态的由系统管理员人工设定的，或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。</li><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">个性化推荐引擎，对不同的用户，根据他们的口味和喜好给出更加精确的推荐，这时，系统需要了解需推荐内容和用户的特质，或者基于社会化网络，通过找到与当前用户相同喜好的用户，实现推荐。</li></ul><p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0px 0px; font-size: 1em;">这是一个最基本的推荐引擎分类，其实大部分人们讨论的推荐引擎都是将个性化的推荐引擎，因为从根本上说，只有个性化的推荐引擎才是更加智能的信息发现过程。</p></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">根据推荐引擎的数据源<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0px 0px; font-size: 1em;">其实这里讲的是如何发现数据的相关性，因为大部分推荐引擎的工作原理还是基于物品或者用户的相似集进行推荐。那么参考图 1 给出的推荐系统原理图，根据不同的数据源发现数据相关性的方法可以分为以下几种：</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 1em;"><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">根据系统用户的基本信息发现用户的相关程度，这种被称为基于人口统计学的推荐（Demographic-based Recommendation）</li><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">根据推荐物品或内容的元数据，发现物品或者内容的相关性，这种被称为基于内容的推荐（Content-based Recommendation）</li><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">根据用户对物品或者信息的偏好，发现物品或者内容本身的相关性，或者是发现用户的相关性，这种被称为基于协同过滤的推荐（Collaborative Filtering-based Recommendation）。</li></ul></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">根据推荐模型的建立方式<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0px 0px; font-size: 1em;">可以想象在海量物品和用户的系统中，推荐引擎的计算量是相当大的，要实现实时的推荐务必需要建立一个推荐模型，关于推荐模型的建立方式可以分为以下几种：</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 1em;"><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">基于物品和用户本身的，这种推荐引擎将每个用户和每个物品都当作独立的实体，预测每个用户对于每个物品的喜好程度，这些信息往往是用一个二维矩阵描述的。由于用户感兴趣的物品远远小于总物品的数目，这样的模型导致大量的数据空置，即我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时为了减小计算量，我们可以对物品和用户进行聚类， 然后记录和计算一类用户对一类物品的喜好程度，但这样的模型又会在推荐的准确性上有损失。</li><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">基于关联规则的推荐（Rule-based Recommendation）：关联规则的挖掘已经是数据挖掘中的一个经典的问题，主要是挖掘一些数据的依赖关系，典型的场景就是“购物篮问题”，通过关联规则的挖掘，我们可以找到哪些物品经常被同时购买，或者用户购买了一些物品后通常会购买哪些其他的物品，当我们挖掘出这些关联规则之后，我们可以基于这些规则给用户进行推荐。</li><li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">基于模型的推荐（Model-based Recommendation）：这是一个典型的机器学习的问题，可以将已有的用户喜好信息作为训练样本，训练出一个预测用户喜好的模型，这样以后用户在进入系统，可以基于此模型计算推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型，从而提高推荐的准确度。</li></ul></li>
								</ol>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">其实在现在的推荐系统中，很少有只使用了一个推荐策略的推荐引擎，一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果，例如 Amazon 的推荐，它将基于用户本身历史购买数据的推荐，和基于用户当前浏览的物品的推荐，以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户，让用户可以从全方位的推荐中找到自己真正感兴趣的物品。</p>
								<p class="ibm-ind-link ibm-back-to-top" style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 5px; font-size: 0.76em; clear: both; text-align: right; height: 15px;">
										<a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#ibm-pcon" class="ibm-anchor-up-link" style="color: rgb(153, 102, 153); display: inline; margin: 0px; padding: 0px 0px 0px 18px; text-decoration: none; background-image: url(http://1.www.s81c.com/i/v16/icons/u_bold.gif); font-weight: bold; background-position: 0px -1px; background-repeat: no-repeat no-repeat;">回页首</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major4">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">深入推荐机制</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">这一章的篇幅，将详细介绍各个推荐机制的工作原理，它们的优缺点以及应用场景。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="minor4.1">
												<span class="smalltitle" style="font-size: 1.2em; font-weight: bold;">基于人口统计学的推荐</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于人口统计学的推荐机制（Demographic-based Recommendation）是一种最易于实现的推荐方法，它只是简单的根据系统用户的基本信息发现用户的相关程度，然后将相似用户喜爱的其他物品推荐给当前用户，图 2 给出了这种推荐的工作原理。</p>
								<br />
								<a name="fig2">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 2. 基于人口统计学的推荐机制的工作原理</b>
								</a>
								<br />
								<img alt="图 2. 基于人口统计学的推荐机制的工作原理" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image005.jpg" style="border: 0px; padding: 0.3em 5px 0.7em;" height="213" width="351" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">从图中可以很清楚的看到，首先，系统对每个用户都有一个用户 Profile 的建模，其中包括用户的基本信息，例如用户的年龄，性别等等；然后，系统会根据用户的 Profile 计算用户的相似度，可以看到用户 A 的 Profile 和用户 C 一样，那么系统会认为用户 A 和 C 是相似用户，在推荐引擎中，可以称他们是“邻居”；最后，基于“邻居”用户群的喜好推荐给当前用户一些物品，图中将用户 A 喜欢的物品 A 推荐给用户 C。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">这种基于人口统计学的推荐机制的好处在于：</p>
								<ol style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;" type="1">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">因为不使用当前用户对物品的喜好历史数据，所以对于新用户来讲没有“冷启动（Cold Start）”的问题。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">这个方法不依赖于物品本身的数据，所以这个方法在不同物品的领域都可以使用，它是领域独立的（domain-independent）。</li>
								</ol>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">那么这个方法的缺点和问题是什么呢？这种基于用户的基本信息对用户进行分类的方法过于粗糙，尤其是对品味要求较高的领域，比如图书，电影和音乐等领域，无法得到很好的推荐效果。可能在一些电子商务的网站中，这个方法可以给出一些简单的推荐。另外一个局限是，这个方法可能涉及到一些与信息发现问题本身无关却比较敏感的信息，比如用户的年龄等，这些用户信息不是很好获取。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="minor4.2">
												<span class="smalltitle" style="font-size: 1.2em; font-weight: bold;">基于内容的推荐</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于内容的推荐是在推荐引擎出现之初应用最为广泛的推荐机制，它的核心思想是根据推荐物品或内容的元数据，发现物品或者内容的相关性，然后基于用户以往的喜好记录，推荐给用户相似的物品。图 3 给出了基于内容推荐的基本原理。</p>
								<br />
								<a name="fig3">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 3. 基于内容推荐机制的基本原理</b>
								</a>
								<br />
								<img alt="图 3. 基于内容推荐机制的基本原理" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image007.jpg" style="border: 0px; padding: 0.3em 5px 0.7em;" height="220" width="357" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">图 3 中给出了基于内容推荐的一个典型的例子，电影推荐系统，首先我们需要对电影的元数据有一个建模，这里只简单的描述了一下电影的类型；然后通过电影的元数据发现电影间的相似度，因为类型都是“爱情，浪漫”电影 A 和 C 被认为是相似的电影（当然，只根据类型是不够的，要得到更好的推荐，我们还可以考虑电影的导演，演员等等）；最后实现推荐，对于用户 A，他喜欢看电影 A，那么系统就可以给他推荐类似的电影 C。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">这种基于内容的推荐机制的好处在于它能很好的建模用户的口味，能提供更加精确的推荐。但它也存在以下几个问题：</p>
								<ol style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;" type="1">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">需要对物品进行分析和建模，推荐的质量依赖于对物品模型的完整和全面程度。在现在的应用中我们可以观察到关键词和标签（Tag）被认为是描述物品元数据的一种简单有效的方法。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">物品相似度的分析仅仅依赖于物品本身的特征，这里没有考虑人对物品的态度。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">因为需要基于用户以往的喜好历史做出推荐，所以对于新用户有“冷启动”的问题。</li>
								</ol>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">虽然这个方法有很多不足和问题，但他还是成功的应用在一些电影，音乐，图书的社交站点，有些站点还请专业的人员对物品进行基因编码，比如潘多拉，在一份报告中说道，在潘多拉的推荐引擎中，每首歌有超过 100 个元数据特征，包括歌曲的风格，年份，演唱者等等。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="minor4.3">
												<span class="smalltitle" style="font-size: 1.2em; font-weight: bold;">基于协同过滤的推荐</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">随着 Web2.0 的发展，Web 站点更加提倡用户参与和用户贡献，因此基于协同过滤的推荐机制因运而生。它的原理很简单，就是根据用户对物品或者信息的偏好，发现物品或者内容本身的相关性，或者是发现用户的相关性，然后再基于这些关联性进行推荐。基于协同过滤的推荐可以分为三个子类：基于用户的推荐（User-based Recommendation），基于项目的推荐（Item-based Recommendation）和基于模型的推荐（Model-based Recommendation）。下面我们一个一个详细的介绍着三种协同过滤的推荐机制。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<strong>基于用户的协同过滤推荐</strong>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于用户的协同过滤推荐的基本原理是，根据所有用户对物品或者信息的偏好，发现与当前用户口味和偏好相似的“邻居”用户群，在一般的应用中是采用计算“K- 邻居”的算法；然后，基于这 K 个邻居的历史偏好信息，为当前用户进行推荐。下图 4 给出了原理图。</p>
								<br />
								<a name="fig4">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 4. 基于用户的协同过滤推荐机制的基本原理</b>
								</a>
								<br />
								<img alt="图 4. 基于用户的协同过滤推荐机制的基本原理" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image009.jpg" style="border: 0px; padding: 0.3em 5px 0.7em;" height="210" width="287" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">上图示意出基于用户的协同过滤推荐机制的基本原理，假设用户 A 喜欢物品 A，物品 C，用户 B 喜欢物品 B，用户 C 喜欢物品 A ，物品 C 和物品 D；从这些用户的历史喜好信息中，我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的，同时用户 C 还喜欢物品 D，那么我们可以推断用户 A 可能也喜欢物品 D，因此可以将物品 D 推荐给用户 A。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度，并基于“邻居”用户群计算推荐，但它们所不同的是如何计算用户的相似度，基于人口统计学的机制只考虑用户本身的特征，而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度，它的基本假设是，喜欢类似物品的用户可能有相同或者相似的口味和偏好。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<strong>基于项目的协同过滤推荐</strong>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于项目的协同过滤推荐的基本原理也是类似的，只是说它使用所有用户对物品或者信息的偏好，发现物品和物品之间的相似度，然后根据用户的历史偏好信息，将类似的物品推荐给用户，图 5 很好的诠释了它的基本原理。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">假设用户 A 喜欢物品 A 和物品 C，用户 B 喜欢物品 A，物品 B 和物品 C，用户 C 喜欢物品 A，从这些用户的历史喜好可以分析出物品 A 和物品 C 时比较类似的，喜欢物品 A 的人都喜欢物品 C，基于这个数据可以推断用户 C 很有可能也喜欢物品 C，所以系统会将物品 C 推荐给用户 C。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">与上面讲的类似，基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐，只是相似度计算的方法不一样，前者是从用户历史的偏好推断，而后者是基于物品本身的属性特征信息。</p>
								<br />
								<a name="fig5">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 5. 基于项目的协同过滤推荐机制的基本原理</b>
								</a>
								<br />
								<img alt="图 5. 基于项目的协同过滤推荐机制的基本原理" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image011.jpg" style="border: 0px; padding: 0.3em 5px 0.7em;" height="213" width="301" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">同时协同过滤，在基于用户和基于项目两个策略中应该如何选择呢？其实基于项目的协同过滤推荐机制是 Amazon 在基于用户的机制上改良的一种策略，因为在大部分的 Web 站点中，物品的个数是远远小于用户的数量的，而且物品的个数和相似度相对比较稳定，同时基于项目的机制比基于用户的实时性更好一些。但也不是所有的场景都是这样的情况，可以设想一下在一些新闻推荐系统中，也许物品，也就是新闻的个数可能大于用户的个数，而且新闻的更新程度也有很快，所以它的形似度依然不稳定。所以，其实可以看出，推荐策略的选择其实和具体的应用场景有很大的关系。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<strong>基于模型的协同过滤推荐</strong>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于模型的协同过滤推荐就是基于样本的用户喜好信息，训练一个推荐模型，然后根据实时的用户喜好的信息进行预测，计算推荐。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">基于协同过滤的推荐机制是现今应用最为广泛的推荐机制，它有以下几个显著的优点：</p>
								<ol style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;" type="1">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">它不需要对物品或者用户进行严格的建模，而且不要求物品的描述是机器可理解的，所以这种方法也是领域无关的。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">这种方法计算出来的推荐是开放的，可以共用他人的经验，很好的支持用户发现潜在的兴趣偏好</li>
								</ol>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">而它也存在以下几个问题：</p>
								<ol style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;" type="1">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">方法的核心是基于历史数据，所以对新物品和新用户都有“冷启动”的问题。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">推荐的效果依赖于用户历史偏好数据的多少和准确性。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">在大部分的实现中，用户历史偏好是用稀疏矩阵进行存储的，而稀疏矩阵上的计算有些明显的问题，包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">对于一些特殊品味的用户不能给予很好的推荐。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">由于以历史数据为基础，抓取和建模用户的偏好后，很难修改或者根据用户的使用演变，从而导致这个方法不够灵活。</li>
								</ol>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="minor4.4">
												<span class="smalltitle" style="font-size: 1.2em; font-weight: bold;">混合的推荐机制</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">在现行的 Web 站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略，他们往往是将多个方法混合在一起，从而达到更好的推荐效果。关于如何组合各个推荐机制，这里讲几种比较流行的组合方法。</p>
								<ol style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;" type="1">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">加权的混合（Weighted Hybridization）: 用线性公式（linear formula）将几种不同的推荐按照一定权重组合起来，具体权重的值需要在测试数据集上反复实验，从而达到最好的推荐效果。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">切换的混合（Switching Hybridization）：前面也讲到，其实对于不同的情况（数据量，系统运行状况，用户和物品的数目等），推荐策略可能有很大的不同，那么切换的混合方式，就是允许在不同的情况下，选择最为合适的推荐机制计算推荐。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">分区的混合（Mixed Hybridization）：采用多种推荐机制，并将不同的推荐结果分不同的区显示给用户。其实，Amazon，当当网等很多电子商务网站都是采用这样的方式，用户可以得到很全面的推荐，也更容易找到他们想要的东西。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;">分层的混合（Meta-Level Hybridization）: 采用多种推荐机制，并将一个推荐机制的结果作为另一个的输入，从而综合各个推荐机制的优缺点，得到更加准确的推荐。</li>
								</ol>
								<p class="ibm-ind-link ibm-back-to-top" style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 5px; font-size: 0.76em; clear: both; text-align: right; height: 15px;">
										<a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#ibm-pcon" class="ibm-anchor-up-link" style="color: rgb(153, 102, 153); display: inline; margin: 0px; padding: 0px 0px 0px 18px; text-decoration: none; background-image: url(http://1.www.s81c.com/i/v16/icons/u_bold.gif); font-weight: bold; background-position: 0px -1px; background-repeat: no-repeat no-repeat;">回页首</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major5">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">推荐引擎的应用</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">介绍完推荐引擎的基本原理，基本推荐机制，下面简要分析几个有代表性的推荐引擎的应用，这里选择两个领域：Amazon 作为电子商务的代表，豆瓣作为社交网络的代表。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<strong>推荐在电子商务中的应用 – Amazon</strong>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">Amazon 作为推荐引擎的鼻祖，它已经将推荐的思想渗透在应用的各个角落。Amazon 推荐的核心是通过数据挖掘算法和比较用户的消费偏好于其他用户进行对比，借以预测用户可能感兴趣的商品。对应于上面介绍的各种推荐机制，Amazon 采用的是分区的混合的机制，并将不同的推荐结果分不同的区显示给用户，图 6 和图 7 展示了用户在 Amazon 上能得到的推荐。</p>
								<br />
								<a name="fig6">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 6. Amazon 的推荐机制 - 首页</b>
								</a>
								<br />
								<img alt="图 6. Amazon 的推荐机制 - 首页" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image013.gif" style="border: 0px; padding: 0.3em 5px 0.7em;" height="329" width="511" />
								<span class="Apple-converted-space"> </span>
								<br />
								<br />
								<a name="fig7">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 7. Amazon 的推荐机制 - 浏览物品</b>
								</a>
								<br />
								<img alt="图 7. Amazon 的推荐机制 - 浏览物品" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image015.gif" style="border: 0px; padding: 0.3em 5px 0.7em;" height="339" width="475" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">Amazon 利用可以记录的所有用户在站点上的行为，根据不同数据的特点对它们进行处理，并分成不同区为用户推送推荐：</p>
								<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">今日推荐 (Today's Recommendation For You): 通常是根据用户的近期的历史购买或者查看记录，并结合时下流行的物品给出一个折中的推荐。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">新产品的推荐 (New For You): 采用了基于内容的推荐机制 (Content-based Recommendation)，将一些新到物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息，所以基于内容的推荐能很好的解决这个“冷启动”的问题。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">捆绑销售 (Frequently Bought Together): 采用数据挖掘技术对用户的购买行为进行分析，找到经常被一起或同一个人购买的物品集，进行捆绑销售，这是一种典型的基于项目的协同过滤推荐机制。</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">别人购买 / 浏览的商品 (Customers Who Bought/See This Item Also Bought/See): 这也是一个典型的基于项目的协同过滤推荐的应用，通过社会化机制用户能更快更方便的找到自己感兴趣的物品。</li>
								</ul>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">值得一提的是，Amazon 在做推荐时，设计和用户体验也做得特别独到：</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">Amazon 利用有它大量历史数据的优势，量化推荐原因。</p>
								<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">基于社会化的推荐，Amazon 会给你事实的数据，让用户信服，例如：购买此物品的用户百分之多少也购买了那个物品；</li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">基于物品本身的推荐，Amazon 也会列出推荐的理由，例如：因为你的购物框中有 ***，或者因为你购买过 ***，所以给你推荐类似的 ***。</li>
								</ul>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">另外，Amazon 很多推荐是基于用户的 profile 计算出来的，用户的 profile 中记录了用户在 Amazon 上的行为，包括看了那些物品，买了那些物品，收藏夹和 wish list 里的物品等等，当然 Amazon 里还集成了评分等其他的用户反馈的方式，它们都是 profile 的一部分，同时，Amazon 提供了让用户自主管理自己 profile 的功能，通过这种方式用户可以更明确的告诉推荐引擎他的品味和意图是什么。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<strong>推荐在社交网站中的应用 – 豆瓣</strong>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">豆瓣是国内做的比较成功的社交网站，它以图书，电影，音乐和同城活动为中心，形成一个多元化的社交网络平台，自然推荐的功能是必不可少的，下面我们看看豆瓣是如何推荐的。</p>
								<br />
								<a name="fig8">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 8 . 豆瓣的推荐机制 - 豆瓣电影</b>
								</a>
								<br />
								<img alt="图 8 . 豆瓣的推荐机制 - 豆瓣电影" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image017.gif" style="border: 0px; padding: 0.3em 5px 0.7em;" height="259" width="336" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">当你在豆瓣电影中将一些你看过的或是感兴趣的电影加入你看过和想看的列表里，并为它们做相应的评分，这时豆瓣的推荐引擎已经拿到你的一些偏好信息，那么它将给你展示如图 8 的电影推荐。</p>
								<br />
								<a name="fig9">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 9 . 豆瓣的推荐机制 - 基于用户品味的推荐</b>
								</a>
								<br />
								<img alt="图 9 . 豆瓣的推荐机制 - 基于用户品味的推荐" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image019.gif" style="border: 0px; padding: 0.3em 5px 0.7em;" height="333" width="395" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">豆瓣的推荐是通过“豆瓣猜”，为了让用户清楚这些推荐是如何来的，豆瓣还给出了“豆瓣猜”的一个简要的介绍。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<em>“</em>
										<em>你的个人推荐是根据你的收藏和评价自动得出的，每个人的推荐清单都不同。你的收藏和评价越多，豆瓣给你的推荐会越准确和丰富。</em>
										<br />
										<em>每天推荐的内容可能会有变化。随着豆瓣的长大，给你推荐的内容也会越来越准。</em>
										<em>”</em>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">这一点让我们可以清晰明了的知道，豆瓣必然是基于社会化的协同过滤的推荐，这样用户越多，用户的反馈越多，那么推荐的效果会越来越准确。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">相对于 Amazon 的用户行为模型，豆瓣电影的模型更加简单，就是“看过”和“想看”，这也让他们的推荐更加专注于用户的品味，毕竟买东西和看电影的动机还是有很大不同的。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">另外，豆瓣也有基于物品本身的推荐，当你查看一些电影的详细信息的时候，他会给你推荐出“喜欢这个电影的人也喜欢的电影”， 如图 10，这是一个基于协同过滤的应用。</p>
								<br />
								<a name="fig10">
										<b style="font-size: 0.76em; font-weight: bold; padding: 0.3em 5px 0.7em; font-family: arial, sans-serif;">图 10 . 豆瓣的推荐机制 - 基于电影本身的推荐</b>
								</a>
								<br />
								<img alt="图 10 . 豆瓣的推荐机制 - 基于电影本身的推荐" src="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/image021.gif" style="border: 0px; padding: 0.3em 5px 0.7em;" height="199" width="356" />
								<span class="Apple-converted-space"> </span>
								<br />
								<p class="ibm-ind-link ibm-back-to-top" style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 5px; font-size: 0.76em; clear: both; text-align: right; height: 15px;">
										<a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#ibm-pcon" class="ibm-anchor-up-link" style="color: rgb(153, 102, 153); display: inline; margin: 0px; padding: 0px 0px 0px 18px; text-decoration: none; background-image: url(http://1.www.s81c.com/i/v16/icons/u_bold.gif); font-weight: bold; background-position: 0px -1px; background-repeat: no-repeat no-repeat;">回页首</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major6">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">总结</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">在网络数据爆炸的年代，如何让用户更快的找到想要的数据，如何让用户发现自己潜在的兴趣和需求，无论是对于电子商务还是社会网络的应用都是至关重要的。推荐引擎的出现，使得这个问题越来越被大家关注。但对大多数人来讲，也许还在惊叹它为什么总是能猜到你到底想要些什么。推荐引擎的魔力在于你不清楚在这个推荐背后，引擎到底记录和推理了些什么。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">通过这篇综述性的文章，你可以了解，其实推荐引擎只是默默的记录和观察你的一举一动，然后再借由所有用户产生的海量数据分析和发现其中的规律，进而慢慢的了解你，你的需求，你的习惯，并默默的无声息的帮助你快速的解决你的问题，找到你想要的东西。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">其实，回头想想，很多时候，推荐引擎比你更了解你自己。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">通过第一篇文章，相信大家对推荐引擎有一个清晰的第一印象，本系列的下一篇文章将深入介绍基于协同过滤的推荐策略。在现今的推荐技术和算法中，最被大家广泛认可和采用的就是基于协同过滤的推荐方法。它以其方法模型简单，数据依赖性低，数据方便采集，推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”。本文将带你深入了解协同过滤的秘密，并给出基于 Apache Mahout 的协同过滤算法的高效实现。Apache Mahout 是 ASF 的一个较新的开源项目，它源于 Lucene，构建在 Hadoop 之上，关注海量数据上的机器学习经典算法的高效实现。</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">感谢大家对本系列的关注和支持。</p>
								<p class="ibm-ind-link ibm-back-to-top" style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 5px; font-size: 0.76em; clear: both; text-align: right; height: 15px;">
										<a href="http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html#ibm-pcon" class="ibm-anchor-up-link" style="color: rgb(153, 102, 153); display: inline; margin: 0px; padding: 0px 0px 0px 18px; text-decoration: none; background-image: url(http://1.www.s81c.com/i/v16/icons/u_bold.gif); font-weight: bold; background-position: 0px -1px; background-repeat: no-repeat no-repeat;">回页首</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="major7">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">声明</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">本人所发表的内容仅为个人观点，不代表 IBM 公司立场、战略和观点。</p>
								<br />
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<a name="resources">
												<span class="atitle" style="font-size: 1.5em; font-weight: bold;">参考资料</span>
										</a>
								</p>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<b style="font-size: 1em; font-weight: bold;">学习</b>
								</p>
								<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.slideshare.net/antiraum/recommender-engines-seminar-paper" style="color: rgb(153, 102, 153);">Recommendation Engines Seminar Paper</a>, Thomas Hess, 2009: 推荐引擎的总结性文章，Thomas 给出推荐引擎的模型，各种推荐机制的工作原理，并分析了推荐引擎面临的众多问题。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://portal.acm.org/citation.cfm?id=1070751" style="color: rgb(153, 102, 153);">Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions</a>, Adomavicius, G.; Tuzhilin, A., 2005：2005 年的论文，对现今流行的推荐技术进行总结，深入具体的实现技术方法，同时也提出了对下一代推荐引擎的展望。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.springerlink.com/index/KK844421T5466K35.pdf" style="color: rgb(153, 102, 153);">A Taxonomy of RecommenderAgents on the Internet</a>, Montaner, M.; Lopez, B.; de la Rosa, J. L., 2003, 对互联网上推荐引擎进行总结，给出的不同推荐方法的分类和特点，帮助读者对推荐引擎有全面的认识。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">Amazon:<span class="Apple-converted-space"> </span><a href="http://www.amazon.com/" style="color: rgb(153, 102, 153);">www.amazon.com</a>：推荐技术的先驱，Amazon 在 B2C 领域的推荐技术值得大家参考。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">豆瓣：<a href="http://www.douban.com/" style="color: rgb(153, 102, 153);">www.douban.com</a>：作为国内社交网络的先驱，豆瓣在推荐技术上也处于领先的位置，同时对于不同内容的推荐策略有深入的研究。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://blog.csdn.net/java060515/archive/2007/04/19/1570243.aspx" style="color: rgb(153, 102, 153);">个性化推荐技术漫谈</a>：对个性化推荐技术的基本原理进行简要介绍，提出了作者对优秀的个性化推荐的多角度认识<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="https://groups.google.com/group/resys" style="color: rgb(153, 102, 153);">Google Recommender System Group</a>：推荐系统的 Google 讨论组，有很多关于推荐引擎的有趣讨论<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.deitel.com/ResourceCenters/Web20/RecommenderSystems/RecommenderSystemAlgorithms/tabid/1317/Default.aspx" style="color: rgb(153, 102, 153);">Recommender System Algorithms</a>：关于推荐引擎算法的资源<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.slideshare.net/rashmi/design-of-recommender-systems" style="color: rgb(153, 102, 153);">Design of Recommender System</a>：关于推荐引擎的设计方法的介绍<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.slideshare.net/blueace/how-to-build-a-recommender-system-presentation" style="color: rgb(153, 102, 153);">How to build a recommender system</a>：这个演示给出了如何构建一个推荐引擎，并结合例子详细介绍了基于协同过滤的推荐策略。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.ibm.com/developerworks/cn/web/" style="color: rgb(153, 102, 153);">developerWorks</a>
												<a href="http://www.ibm.com/developerworks/cn/web/" style="color: rgb(153, 102, 153);">Web</a>
												<a href="http://www.ibm.com/developerworks/cn/web/" style="color: rgb(153, 102, 153);">技术专区</a>：数百篇关于 Web 编程各个方面的文章。<span class="Apple-converted-space"> </span><br /><br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.ibm.com/developerworks/cn/ajax/" style="color: rgb(153, 102, 153);">developerWorks Ajax 资源中心</a>：这是有关 Ajax 编程模型信息的一站式中心，包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">
												<a href="http://www.ibm.com/developerworks/cn/web20/" style="color: rgb(153, 102, 153);">developerWorks Web 2.0 资源中心</a>，这是有关 Web 2.0 相关信息的一站式中心，包括大量 Web 2.0 技术文章、教程、下载和相关技术资源。您还可以通过<span class="Apple-converted-space"> </span><a href="http://www.ibm.com/developerworks/cn/web20/newto/" style="color: rgb(153, 102, 153);">Web 2.0 新手入门</a>栏目，迅速了解 Web 2.0 的相关概念。<br /><br /></li>
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">查看<span class="Apple-converted-space"> </span><a href="http://www.ibm.com/developerworks/cn/web/lp/html5/" style="color: rgb(153, 102, 153);">HTML5 专题</a>，了解更多和 HTML5 相关的知识和动向。<br /><br /></li>
								</ul>
								<p style="font-family: arial, nsimsun, sans-serif; margin: 0px; padding: 0.3em 5px 0.7em; font-size: 0.76em;">
										<b style="font-size: 1em; font-weight: bold;">讨论</b>
								</p>
								<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;">
										<li style="font-family: arial, nsimsun, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;">加入<span class="Apple-converted-space"> </span><a href="http://www.ibm.com/developerworks/cn/community/" style="color: rgb(153, 102, 153);">developerWorks 中文社区</a>。</li>
								</ul>
						</div>
				</div>
		</div>
<img src ="http://www.blogjava.net/libin2722/aggbug/396035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2013-03-04 14:30 <a href="http://www.blogjava.net/libin2722/articles/396035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>