推荐系统实践 项亮

3. 错误!文档中没有指定样式的文字。 1 1 序一 2 推荐在今天互联网的产品和应用中被广泛采用,包括今天大家经常使用的相关搜索、话题推 荐、电子商务的各种产品推荐、社交网络上的交友推荐等。但是,至今还没有一本书从理论上对 它进行系统地分析和论述。《推荐系统实践》这本书恰恰弥补了这个空白。 该书总结了当今互联网主要领域、主要公司、各种和推荐有关的产品和服务,包括: ‰ 亚马逊的个性化产品推荐; 3 ‰ Netflix的视频和DVD推荐; ‰ Pandora的音乐推荐; ‰ Facebook的好友推荐; ‰ Google Reader的个性化阅读; ‰ 各种个性化广告。 4 书的名称虽然是《推荐系统实践》,但作者也阐述了和推荐系统有关的理论基础和评价推荐 系统优劣的各种标准与方法,比如覆盖率、满意度、AB测试等。由于这些评估很大程度上取决于 对用户行为的分析,因此本书也介绍了用户行为分析方法,并且给出了计算机实现的算法。 本书对有兴趣自己开发推荐系统的读者给出了设计和实现推荐系统的方法与技巧,非常具有 指导意义。 本书文笔流畅,可读性较高,是一部值得推荐给IT从业人员的优秀参考书。 5 ——吴军 腾讯副总裁,《数学之美》和《浪潮之巅》作者 6 7
4. 错误!文档中没有指定样式的文字。 1 1 序 2 的书 了。开 作这本书 , 的 是作者,但交 , 了 人。这 了 流 的一个 大 的 子: , , 书 人, 也可 并 为一 。 书, , 然 应。 公司的 友 有没有兴趣参与 一本推荐系统方 的 推荐技 在互联网领域的应用 广泛,但对相关技 系统介绍的 3 书 非常 ,相关的 文书 是 本。但一方 ,对 读者 是 个 题, 一方 ,这些书大 人员为 标读者,并 推荐技 的 。 参与 补这 空白, 乐 为 书开 的 一 个 , 的 的 ,但 各种 为 人 的 务 至 , 在 作上的 , 应要补 , 了了 ,一 自己 这本书 。 的 ,也因为 作 标和本 4 书 的 没法 进 了。这种 , 实在 好意 在作者 了, 有机 了这 。 , Netflix推荐算法 ,虽然 自己 得 自己 在 。 这 ,非常 地 了 计的技 人员 决 一个技 题,并且 决方 公 出 。这为这个领域的 程人员和 人员 意的 了 ,因 产 了很 有价 值的 方法,使很 被 家 的技 被 广泛地 开 ,使 家 读 5 的方法、 算法 的 被 地发 出 。 在Netflix 中有非常出 的 现,书中总结了很 在Netflix 相关 和 程 作中 的分析 与设 计算法的 。虽然 一 在 推荐技 的发 ,在书中 然 很 本 了 的方法,相 读者读 本书也 。 在大家一 论的 程中, 非常 的书 《 经常 程》 一本非常流行的书, 《 实用, 些对推荐技 程》。 理6 了 的读者 实现自己的推荐系统。出于这个 的,本书 可 地用 和 与读者 交流, 可 地用 的 论 公 ,这对于大 程技 人员 应该是 为 乐 的 。 一方 ,可 是因为 的 ,大 论文 推荐 题 评分 测 题, 实 应用中 常 的是TopN推荐,虽然TopN推荐 题可 评分 题,但并 是 种评分 测算法 用 决TopN推荐 题。本书大部分 在 论TopN推荐 题, 这 的 对实 应用的实现应该 大一 。 ,本书比较系统地 论了 推荐技 应 7
5. 2 用 实应用 常 的 题, 可 些有机 经 的技 人员 了 推 荐技 。 一 , 大 互联网公司对个性化服务 视, 个性化技 的 业公 司也在 现,个性化的 方兴 ,相 本书 的技 人员 于这一技 。 本书的 , ,虽然 的 , 实 有这 。 ——
6. 错误!文档中没有指定样式的文字。 1 1 序 2 的 ,可 2010 6 有 大家 论《推荐系统实践》一书 结 的 。实 上 的 论比这还 , 且从 得一 的 在 的 上开 ,一 了 。 论的 在于为 要 一本关于推荐系统的书、从 度 给。 一个 题相对好 。推荐系统是 互联网 常 的 产品 。从电子商务、 3 音乐视频网 , 作为互联网经 的在 广告和 的在 应用推荐, 有推荐系统的 。这些网 和业务的开 者大 是 的 程 , 者有 于 互联网行业的 。 虽然 并非 有相关 的 ,也并非 有在 业中 的经 ,但是大家 的 , 且 满 对 发 推荐系统的 。因此参与 论的 友 从实践者的 度 这本书, 给 一 和实践的 友 。 论并 是空 。在此 , wiki系统, 一发 在上 ,一些 友 开 。经 一的 , 了一个 4 了本书的 。 是在2009 ,当 还是中 的一名 ,一方 参与Netflix 和 推荐系统比 并取得了 的 ,一方 参与 了recsys 。作为一个有 很 业 公司 的 交流 ,recsys在 了很 和程。 业 进 Hulu公司,开 了 业 推荐系统的开发 作,并一如 地 意 、总结和分 。 5 在recsys 了一 关于并行机 技 的 告 , 介绍 了本书的 主要 者。 ,大家 开 本书的 作。 的经 在很大程度上决 了本书的 作 标: 在 了 推荐系统的业 和应用, 方; 程 总结各 方法, 开发出一个推荐系统并 优化 。 推荐系统是一个很大的话题。各种在 至部分 应用中, 有各 各 系统, 论文推荐,大 用户兴趣 的在 广告系统。在 ,相关的 标 一的推荐 可 6 。实 上, 大家还在 论 的机 方法可 给推荐系统 的 化。可是,本书 论是 一本 ,还是一部产品大 , 空泛的 ,对大家 有 。因此, 作者 了大 在 结 上, 覆盖推荐系统的 要 题, 个题 有实 产品介绍,也有技 介绍。为了 可读性,本书 在常 方法和技 ,非 介绍各种 和 。为了 可 作性, 要的算法 有 Python 的 7
7. 2 程。 ,这本实践者 本书的出 和 的技 方法。 给实践者的书, 的 友一 的是作者对 考 和 大 , 大 的 方,是 的 。 的互联网应用 腾讯 —— 中总
8. 错误!文档中没有指定样式的文字。 1 1 2 本书,还要 2010 3 的ResysChina推荐系统大 。在 上, 了 。 的一些推荐系统方 的 , 总结总结, 本 的书。 当 还没有推荐系统方 的书, 经有这方 的 业书了,因此 公司很 出 一 本介绍推荐系统的书。 , 7 于是准 开 这本书。 业, 有 可 总结一 这方 的 作了, 3 这本书的 的有 个。 ,从个人 度 ,虽然 论文 经总结了读 在推荐系统方 的 作,但并没有 部 个推荐系统的各个方 ,因此 很 作这 本书 地阅读一 相关的文 ,并在此基础上总结一 推荐系统各个方 的发 现 , 大家 参考。 , 从 推荐系统 的人 ,这些人中有些 是 程 ,对机 和 实现推荐系统 了 ,有些是在 。因此, ,虽然对 和机 有 了 , 对业 如 4 本书 程 了 推荐系统的相关算法, 了 如 自己了 的算法实现 一个 实的 业系统中 。 一 为,推荐系统这个 领域 于 算法的 出。这 ,推荐系统 20 了。这 ,很 者和公司对推荐系统的发 了 要的推 作用,各种各 的推荐算法 也 出 。本书 这20 的 方法进行总结。但由于方法 ,这些方法的 有很 的方 。比如,可 分 、 、社 化 ,也可 算5 法分 基于 域的算法、基于 的算法、基于 分 者 率 的算法。为了方 读者 , 本书基本采用 分 的方法, 一 介绍了一种可 用于推荐系统设计的、 的用户 ,然 介绍如 各种方法 用该 , 在公开 上评测这些方法。当然, 是 有 有公开的 ,并且 是 有算法 可 进行 评测。因此,在 没有 法进行 评测的 题 ,本书 用了一些 名 者的实 结 为了使本书 程 和在 阅读,本书在 作中 各种方法的 。 使用了 种介绍方法。一种 6 是 用公 ,这 方 有一些理论基础的 很 白算法的 义。 一种是 用 ,这 可 方程 了 算法的 义。 因为本人是 出 , 程经 还 是 ,有 些 得是 ,还 程 。 本书一开 的 有3 作者, 了 还有 的 义和 的 。 是 这方 的 ,在 作 程中 出了很 的意 。但因为 要由 。但书中的很 论述 了大家的 和经 ,是 作实在 , 本书主 很 论的结 。因此在这 7
9. 2 和义 ,还要 , 出了很 书,对这本书 意。 的 作者,虽然 没有 为本书作 。 的意 。 在Hulu的 出 可没, 和 子, 在 作 笔,但对这本书 出了很大的 。 文、 、 天各自 阅了书中部分 和 , 给了 分的 这本 阅了书中的部分 , 出了很 有价值的 程中给 了很大 , 的 出。
10. 1 2 目录 3 4 第 1 章 好的推荐系统 ....................................... 1 1.1 是推荐系统........................................... 1 1.2 个性化推荐系统的应用............................... 4 1.2.1 .......................................... 4 1.2.2 和 ............................... 8 1.2.3 ..................... 10 2.5.1 2.5.2 ........................................ 64 LFM 的 的 ....... 70 5 2.5.3 LFM 和 的 的 .... 72 2.6 基于 的 ............................................ 73 6 2.6.1 数的 ......... 73 2.6.2 的 ......................... 73 7 1.2.4 1.2.5 1.2.6 1.2.7 ........................................ 12 .................................... 15 的 ............................. 16 .................................... 17 第3章 3.1 3.2 推荐系统冷启动问题 ........................ 78 题 介 ........................................ 78 用用户 ..................................... 79 8 1.2.8 .................................... 18 3.3 的 品 用户的兴趣............. 85 9 1.3 推荐系统评测 ............................................ 19 3.4 用 品的 ................................. 89 1.3.1 ......................... 20 3.5 发 家的作用 ........................................ 94 10 1.3.2 1.3.3 指 ........................................ 23 ........................................ 34 第 4 章 利用用户标签数据............................. 96 4.1 UGC 标 系统的 应用 ....................... 97 11 第 2 章 利用用户行为数据............................. 35 2.1 用户行为 介..................................... 36 2.2 用户行为分析 ............................................ 39 4.1.1 Delicious ......................................... 97 4.1.2 CiteULike ....................................... 98 4.1.3 Last.fm ............................................ 98 12 4.1.4 ................................................ 99 2.2.1 和 的 ................................................ 39 4.1.5 Hulu ................................................ 99 4.2 标 系统中的推荐 题........................... 100 13 2.2.2 和 的 ................................................ 41 4.2.1 4.2.2 ................... 100 ........................... 101 14 2.3 实 设计和算法评测................................. 41 4.2.3 样的 ................... 102 2.3.1 数 2.3.2 ............................................ 42 ........................................ 42 4.3 基于标 的推荐系统............................... 103 15 4.3.1 ...................................... 104 2.3.3 指 ........................................ 42 2.4 基于 域的算法......................................... 44 4.3.2 4.3.3 的 的 ....................... 105 .................................. 107 16 2.4.1 的 ............. 44 4.3.4 的 ....................... 110 2.4.2 的 ............. 51 4.3.5 的 ................... 112 17 2.4.3 UserCF 和 ItemCF 的 ...... 59 4.4 给用户推荐标 ...................................... 115 2.5 义 ................................................ 64 4.4.1 ........... 115 18
11. 2 4.4.2 ................... 115 4.4.3 ...................................... 116 4.4.4 的 ............... 119 4.5 阅读 .................................................. 119 第 5 章 利用上下文信息 ............................... 121 5.1 上 文 ...................................... 122 5.1.1 .............................. 122 5.1.2 .............................. 123 5.1.3 的 ................... 125 5.1.4 的 ....................... 127 5.1.5 的 样 ............... 128 5.1.6 文 ................... 130 5.1.7 .............................. 134 5.1.8 ...................................... 136 5.2 地 上 文 ...................................... 139 5.3 阅读 .................................................. 143 第 6 章 利用社交网络数据........................... 144 6.1 取社交网络 的 ....................... 144 6.1.1 ...................................... 145 6.1.2 .............................. 146 6.1.3 的 数 ........................... 146 6.1.4 和 .............................. 146 6.1.5 .............................. 147 6.1.6 ...................................... 147 6.2 社交网络 介................................... 148 数 中的 ................... 149 6.3 基于社交网络的推荐............................... 150 6.3.1 的 ....... 151 6.3.2 的 ........... 152 6.3.3 中的 .............................................. 153 6.3.4 和 ...................................... 155 6.3.5 .................................. 156 6.4 给用户推荐好友 ...................................... 159 6.4.1 6.4.2 的 ........................... 161 的 ........... 161 6.4.3 的 ....... 161 6.4.4 的 .............................................. 164 6.5 阅读 .................................................. 165 第 7 章 推荐系统实例 ................................... 166 7.1 .................................................. 166 7.2 推荐系统 .......................................... 167 7.3 推荐 的 ...................................... 171 7.3.1 7.3.2  ....................... 172 .................... 173 7.3.3 ...................................... 174 7.3.4 ...................................... 174 7.4 阅读 .................................................. 178 第 8 章 评分预测问题 ................................... 179 8.1 实 方法 .......................................... 180 8.2 评分 测算法 .......................................... 180 8.2.1 .......................................... 180 8.2.2 的 ........................... 184 8.2.3 ....... 186 8.2.4 .............................. 192 8.2.5 ...................................... 193 8.2.6 Netflix Prize 的 ..... 195 后记....................................................................... 196
12. 1 2 目录 3 4 图 1-1 推荐系统的基本任务是联系用户和物品,解决信息过载的问题........................................................... 2 5 图 1-2 推荐系统常用的 3 种联系用户和物品的方式 .......................................................................................... 3 图 1-3 亚马逊的个性化推荐列表.......................................................................................................................... 4 6 图 1-4 单击 Fix this recommendation 按钮后打开的页面..................................................................................... 5 图 1-5 基于 Facebook 好友的个性化推荐列表..................................................................................................... 6 7 图 1-6 相关推荐列表,购买过这个商品的用户经常购买的其他商品............................................................... 6 图 1-7 相关推荐列表,浏览过这个商品的用户经常购买的其他商品............................................................... 7 8 图 1-8 亚马逊的打包销售界面.............................................................................................................................. 7 图 1-9 Netflix 的电影推荐系统用户界面.............................................................................................................. 8 图 1-10 视频网站 Hulu 的个性化推荐界面 .......................................................................................................... 9 9 图 1-11 Pandora 个性化网络电台的用户界面 .................................................................................................... 10 图 1-12 Last.fm 个性化网络电台的用户界面 ..................................................................................................... 11 10 图 1-13 豆瓣个性化网络电台的用户界面 .......................................................................................................... 11 图 1-14 Clicker 利用好友的行为给用户推荐电视剧.......................................................................................... 13 11 图 1-15 用户在 Facebook 的信息流..................................................................................................................... 14 图 1-16 不同社交网站中好友推荐系统的界面 .................................................................................................. 14 图 1-17 Google Reader 社会化阅读 ..................................................................................................................... 15 12 图 1-18 Zite 个性化阅读界面............................................................................................................................... 16 图 1-19 FourSquare 的探索功能界面 .................................................................................................................. 17 13 图 1-20 Gmail 的优先级邮箱 ............................................................................................................................... 18 图 1-21 Facebook 让广告商选择定向投放的目标用户 ...................................................................................... 19 14 图 1-22 推荐系统的参与者.................................................................................................................................. 19 图 1-23 AB 测试系统 ........................................................................................................................................... 22 15 图 1-24 Hulu 让用户直接对推荐结果进行反馈,以便度量用户满意度.......................................................... 24 图 1-25 豆瓣网络电台通过红心和垃圾箱的反馈来度量用户满意度............................................................... 24 图 1-26 不同网站收集用户评分的界面 .............................................................................................................. 25 16 图 1-27 Epinion 的信任系统界面 ........................................................................................................................ 31 图 2-1 当当网在用户浏览《数据挖掘导论》时给用户推荐“购买本商品的顾客还买过”的书 ................. 36 17 图 2-2 各种显性反馈界面.................................................................................................................................... 37 图 2-3 物品流行度的长尾分布............................................................................................................................ 40 18
13. 2 图 2-4 用户活跃度的长尾分布............................................................................................................................ 40 图 2-5 MovieLens 数据集中用户活跃度和物品流行度的关系 ......................................................................... 41 图 2-6 用户行为记录举例.................................................................................................................................... 45 图 2-7 物品—用户倒排表...................................................................................................................................... 47 图 2-8 Digg 的 My News 界面 ............................................................................................................................. 51 图 2-9 亚马逊提供的用户购买 iPhone 后还会购买的其他商品........................................................................ 52 图 2-10 Hulu 的个性化视频推荐 ......................................................................................................................... 52 图 2-11 一个计算物品相似度的简单例子 .......................................................................................................... 54 图 2-12 一个简单的基于物品推荐的例子 .......................................................................................................... 56 图 2-13 UserCF 和 ItemCF 算法在不同 K 值下的召回率曲线........................................................................... 61 图 2-14 UserCF 和 ItemCF 算法在不同 K 值下的覆盖率曲线........................................................................... 62 图 2-15 UserCF 和 ItemCF 算法在不同 K 值下的流行度曲线........................................................................... 62 图 2-16 两个用户在豆瓣的读书列表.................................................................................................................. 65 图 2-17 雅虎首页的界面...................................................................................................................................... 71 图 2-18 用户物品二分图模型.............................................................................................................................. 73 图 2-19 基于图的推荐算法示例.......................................................................................................................... 74 图 2-20 PersonalRank 的简单例子....................................................................................................................... 75 图 2-21 不同次迭代中不同节点的访问概率 ...................................................................................................... 76 图 3-1 Pandora 的用户注册界面.......................................................................................................................... 79 图 3-2 IMDB 中不同美剧的评分用户的性别分布 ............................................................................................. 80 图 3-3 一个基于用户人口统计学特征推荐的简单例子 .................................................................................... 81 图 3-4 Lastfm 数据集中男女用户的分布............................................................................................................ 84 图 3-5 Lastfm 数据集中用户年龄的分布............................................................................................................ 84 图 3-6 Lastfm 数据集中用户国家的分布............................................................................................................ 84 图 3-7 Jinni 在新用户登录推荐系统时提示用户需要给多部电影评分 ............................................................ 86 图 3-8 Jinni 让用户选择自己喜欢的电影类别.................................................................................................... 86 图 3-9 Jinni 让用户对电影进行评分的界面 ....................................................................................................... 87 图 3-10 给用户选择物品以解决冷启动问题的例子 .......................................................................................... 88 图 3-11 关键词向量的生成过程.......................................................................................................................... 90 图 3-12 通过 LDA 对词进行聚类的结果 ............................................................................................................ 93 图 3-13 Jinni 中专家给《功夫熊猫》标注的基因.............................................................................................. 94 图 4-1 推荐系统联系用户和物品的几种途径 .................................................................................................... 96 图 4-2 Delicious 中被打上 recommender 和 system 标签的网页........................................................................ 97 图 4-3 Delicious 中“豆瓣电台”网页被用户打的最多的标签 ........................................................................ 97 图 4-4 CiteULike 中一篇论文的标签 .................................................................................................................. 98 图 4-5 Last.fm 中披头士乐队的标签云............................................................................................................... 98 图 4-6 豆瓣读书中《数据挖掘导论》一书的常用标签 .................................................................................... 99 图 4-7 Hulu 中《豪斯医生》的常用标签 ........................................................................................................... 99 图 4-8 标签流行度的长尾分布.......................................................................................................................... 101 图 4-9 著名美剧《豪斯医生》在视频网站 Hulu 上的标签分类..................................................................... 102
14. 3 图 4-10 Jinni 让用户对编辑给的标签进行反馈................................................................................................ 110 图 4-11 简单的用户—物品—标签图的例子 ........................................................................................................ 111 图 4-12 SimpleTagGraph 的例子 ....................................................................................................................... 111 2 图 4-13 豆瓣读书的个性化推荐应用“豆瓣猜”的界面 ................................................................................ 112 图 4-14 Last.fm(左)和豆瓣(右)的标签推荐系统界面 ............................................................................ 115 图 4-15 豆瓣给我推荐的《MongoDB 权威指南》一书的标签....................................................................... 118 3 图 5-1 sourcetone.com 个性化音乐推荐系统,该图右侧的圆盘可以让用户选择现在的心情 ..................... 122 图 5-2 facebook、twitter 和 myspace 3 个词的搜索变化曲线.......................................................................... 123 4 图 5-3 手机品牌的搜索量变化曲线.................................................................................................................. 124 图 5-4 一些食品相关搜索词的搜索量变化曲线 .............................................................................................. 124 5 图 5-5 不同数据集中物品流行度和物品平均在线时间的关系曲线............................................................... 126 图 5-6 相隔 T 天系统物品流行度向量的平均相似度 ...................................................................................... 127 图 5-7 推荐系统实时性举例.............................................................................................................................. 128 6 图 5-8 时间段图模型示例.................................................................................................................................. 134 图 5-9 BlogSpot 数据集的召回率和准确率曲线 .............................................................................................. 137 7 图 5-10 NYTimes 数据集的召回率和准确率曲线............................................................................................ 137 图 5-11 SourceForge 数据集的召回率和准确率曲线 ....................................................................................... 138 8 图 5-12 Wikipedia 数据集的召回率和准确率曲线........................................................................................... 138 图 5-13 YouTube 数据集的召回率和准确率曲线 ............................................................................................ 139 9 图 5-14 左图是大众点评提供的附近商户推荐,右图是街旁网提供的探索功能界面 ................................. 140 图 5-15 Hotpot 地点推荐界面............................................................................................................................ 140 图 5-16 一个简单的利用用户位置信息进行推荐的例子 ................................................................................ 142 10 图 6-1 Facebook 提供的导入电子邮件好友的方式.......................................................................................... 145 图 6-2 Facebook 在用户注册时让用户提供的一部分信息 .............................................................................. 146 11 图 6-3 社交网络(Slashdot)中用户入度的分布 ............................................................................................ 149 图 6-4 社交网络(Slashdot)中用户出度的分布 ............................................................................................ 149 12 图 6-5 视频推荐网站 Clicker 利用 Facebook 好友信息给用户推荐视频........................................................ 150 图 6-6 亚马逊利用 Facebook 好友信息给用户推荐商品 ................................................................................. 150 图 6-7 社交网络图和用户物品二分图的结合 .................................................................................................. 152 13 图 6-8 融合两种社交网络信息的图模型 .......................................................................................................... 153 图 6-9 Twitter 的用户信息流 ............................................................................................................................. 156 14 图 6-10 Facebook 的用户信息流 ....................................................................................................................... 157 图 6-11 Jilin Chen 的用户调查实验结果........................................................................................................... 159 15 图 6-12 Twitter 的好友推荐界面 ....................................................................................................................... 159 图 6-13 LinkedIn 的好友推荐界面 .................................................................................................................... 160 16 图 6-14 Facebook 的好友推荐界面.................................................................................................................... 160 图 6-15 新浪微博利用用户的学校、公司、位置、标签给用户推荐好友..................................................... 161 图 7-1 推荐系统和其他系统之间的关系 .......................................................................................................... 166 17 图 7-2 3 种联系用户和物品的推荐系统 ........................................................................................................... 168 图 7-3 基于特征的推荐系统架构...................................................................................................................... 168 18
15. 4 图 7-4 亚马逊同时给用户推荐电子产品和图书 .............................................................................................. 169 图 7-5 亚马逊的社会化推荐结果中包含了各种物品 ...................................................................................... 170 图 7-6 亚马逊给用户推荐最新加入的物品 ...................................................................................................... 170 图 7-7 豆瓣电台考虑用户来源的上下文(该页面地址链接中加入了 context 参数) ............................ 170 图 7-8 推荐系统的架构图.................................................................................................................................. 171 图 7-9 推荐引擎的架构图.................................................................................................................................. 172 图 7-10 相关物品之间流行度之间的关系 ........................................................................................................ 176 表 1-1 使用了 Facebook Instant Personalization 工具的网站 ............................................................................. 13 表 1-2 离线实验的优缺点.................................................................................................................................... 21 表 1-3 获取各种评测指标的途径........................................................................................................................ 33 表 2-1 显性反馈数据和隐性反馈数据的比较 .................................................................................................... 37 表 2-2 各代表网站中显性反馈数据和隐性反馈数据的例子 ............................................................................ 38 表 2-3 用户行为的统一表示................................................................................................................................ 38 表 2-4 MovieLens 数据集中 UserCF 算法在不同 K 参数下的性能................................................................... 48 表 2-5 两种基础算法在 MovieLens 数据集下的性能 ........................................................................................ 48 表 2-6 MovieLens 数据集中 UserCF 算法和 User-IIF 算法的对比.................................................................... 50 表 2-7 利用 ItemCF 在 MovieLens 数据集上计算出的电影相似度 .................................................................. 54 表 2-8 MovieLens 数据集中 ItemCF 算法离线实验的结果 ............................................................................... 57 表 2-9 MovieLens 数据集中 ItemCF 算法和 ItemCF-IUF 算法的对比.............................................................. 58 表 2-10 MovieLens 数据集中 ItemCF 算法和 ItemCF-Norm 算法的对比......................................................... 59 表 2-11 UserCF 和 ItemCF 优缺点的对比........................................................................................................... 61 表 2-12 惩罚流行度后 ItemCF 的推荐结果性能 ................................................................................................ 63 表 2-13 MovieLens 数据集中根据 LFM 计算出的不同隐类中权重最高的物品.............................................. 69 表 2-14 Netflix 数据集中 LFM 算法在不同 F 参数下的性能 ............................................................................ 70 表 2-15 MovieLens 数据集中 PersonalRank 算法的离线实验结果 ................................................................... 76 表 3-1 年轻用户和老年用户经常看的图书的列表 ............................................................................................ 83 表 3-2 年轻用户比例最高的 5 本书和老年人比例最高的 5 本书..................................................................... 83 表 3-3 4 种不同粒度算法的召回率、准确率和覆盖率 ..................................................................................... 85 表 3-4 常见物品的内容信息................................................................................................................................ 89 表 3-5 MovieLens/GitHub 数据集中几种推荐算法性能的对比 ........................................................................ 91 表 4-1 Delicious 和 CiteULike 数据集的基本信息 ........................................................................................... 103 表 4-2 Delicious 和 CiteULike 数据集中最热门的 20 个标签.......................................................................... 103 表 4-3 基于标签的简单推荐算法在 Delicious 数据集上的评测结果 ............................................................. 107 表 4-4 Delicous 和 CiteULike 数据集上 TagBasedTFIDF 的性能.................................................................... 107 表 4-5 Delicous 和 CiteULike 数据集上 TagBasedTFIDF++的性能 ................................................................ 108 表 4-6 CiteULike 数据集中 recommender_system 的相关标签........................................................................ 108 表 4-7 Delicious 数据集中 google 的相关标签 ................................................................................................. 109 表 4-8 考虑标签扩展后的推荐性能.................................................................................................................. 109 表 4-9 10 个用户最满意的主观类标签 ............................................................................................................. 114
16. 5 表 4-10 10 个用户最满意的客观类标签 ........................................................................................................... 114 表 4-11 3 种标签推荐算法在 N=10 时的准确率和召回率............................................................................... 117 表 4-12 HybridPopularTags 算法在不同线性融合系数D下的准确率和召回率 .............................................. 117 2 表 5-1 离线实验数据集的基本统计信息 .......................................................................................................... 125 表 5-2 美国、英国、德国用户兴趣度最高的歌手 .......................................................................................... 141 表 6-1 3 种不同好友推荐算法的召回率和准确率 ........................................................................................... 163 3 表 6-2 不同好友推荐算法的问卷调查结果 ...................................................................................................... 164 表 7-1 电子商务网站中的典型行为.................................................................................................................. 167 4 表 7-2 离线相关表在 MySQL 中的存储格式 ................................................................................................... 173 表 8-1 评分预测问题举例.................................................................................................................................. 179 5 表 8-2 MovieLens 数据集上不同平均值方法的 RMSE ................................................................................... 184 表 8-3 MovieLens 数据集中对平均值方法采用级联融合后的效果................................................................ 194 表 8-4 Netflix Prize 上著名算法的 RMSE......................................................................................................... 195 6 7 8 9 10 11 12 13 14 15 16 17 18
17. 1第 章 1.1 1 1 2 在 如 设计推荐系统 ,了 的, 在设计推荐系统 是好的推荐系统至关 要。 有了 了优秀推荐系统 实 进行取 。本 分3个 这个 题: 3 ,本 介绍 是推荐系统、推荐系统的主要 务、推荐系统和分 搜索 的 等;然 ,本 领域分 地介绍 业 常 的个性化推荐应用; ,本 介绍推荐系统的评测, 介绍评测指标给出 好 的 义,从 是好的推 荐系统 这个 题。 4 1.1 推荐系统 如 一包 , 有 种 法 设 有一个24 ,可 进 , 有的 , 一 ,然 比较 个 子的 者价 自己 的 子, 4 。如 家 有一家 ,可 进 , 分指 品 在的 , 指 的 ,然 在 上 要的 , 。如 很 , 出 ,可 开当当 者 ,在一个 搜索 的 3个 ,然 户在有 一 的 , 的 子, ,然 等 上 。上 这 个 子 述了用 5 ,对 采用的 。在24 ,因为 很 ,用户 可 自己的经 有 自己 要的 。在 ,商品 经被 在 的 上, 此 用户 要 用分 自己 要的商品。 在 者当当,由于商品 大,用 户 搜索 自己 要的商品。 但是,如 用户没有 的 比如 今天很 , 一部电 。但当 开 5 个 网 , 对100 发行的 的电 , , 该 一部。此 , 了 的 题, 要一个人 者 具 ,给出一些 。如 这 有个 电 的 友在 , 可 推荐 部电 。 ,总 家 给 推荐, 要的是一个自 化的 具,它可 分析 的 兴趣,从 大的电 6 中 部 兴趣的电 。这个 具 是个性化推荐系统。 技 和互联网的发 ,人 从 的 了 information overload 的 。在这个 , 论是 者还是 产者 了很大的 :作为 7 参 http://en.wikipedia.org/wiki/Information_overload。
18. 2 1 的 者,如 从大 中 自己 兴趣的 是一 非常 的 ;作为 产者, 如 自己 产的 出, 广大用户的关 ,也是一 非常 的 。推荐系统 是 决这一 的 要 具。推荐系统的 务 是联系用户和 ,一方 用户发现对自己 有价值的 , 一方 现在对它 兴趣的用户 ,从 实现 者和 产者的 如 1-1 。 本书 统称为 品 , 可 用户 的 。 推荐系统 1-1 推荐系统的基本 务是联系用户和 品, 决 的题 ,为了 决 的 题, 经有 家和 程 出了很 天 的 决方 , 中 性的 决方 是分 和搜索 。 这 种 决方 分 了互联网领域的 家 名公司 和 。 名的互联网公司 分 家, 现在比较 名的分 网 还有 的DMOZ、 的Hao123等。这些 名的网 分 ,从 方 用 户 网 。但是 互联网 的 大,分 网 也 覆盖 的 网 , 满 用户的 。因此,搜索 了。 为 的搜索 可 用户 搜索关 自己 要的 。但是,搜索 要用户主 准 的关 ,因此 决用户的很 ,比如当用户 法 准 述自己 的关 ,搜 索 为 了。和搜索 一 ,推荐系统也是一种 用户 发现有用 的 具。 和搜索 的是,推荐系统 要用户 的 , 是 分析用户的 行为给用 户的兴趣 ,从 主 给用户推荐 满 兴趣和 的 。因此,从 种意义上 , 推荐系统和搜索 对于用户 是 个互补的 具。搜索 满 了用户有 的 的主 , 推荐系统 在用户没有 的的 发现 兴趣的 。 从 品的 度出发,推荐系统可 好地发 品的 long tail 。 《 》 主 Chris Anderson在2004 发 了 The Long Tail 一文并于2006 出 了《 理论》 一书。该书指出, 统的80/20 80%的 自于20%的 品 在互联网的 。互联网 ,由于 本 ,电子商务网 出比统 的商品。虽然这些商品 大 ,但与 统 业相比,这些 的商品 大,因此这些 商品的总 是一个 可 的 ,也 商品 主流商品 的 。主流商品 了 大 用户的 , 商品 了一 部分用户
19. 1.1 3 的个性化 。因此,如 要 发 高 , 分 用户的兴趣, 这 是 1 个性化推荐系统主要 决的 题。推荐系统 发 用户的行为, 用户的个性化 ,从 商品准 地推荐给 要它的用户, 用户发现 些 兴趣但很 发现的商品。 要了 推荐系统是如 作的,可 一 现实社 中用户 对很 决的 程。 然 电 为 ,一 ‰ 友。也 , 可 用如 方 决 电。 开 天 具, 个经常 电 的好 友, 有没有 2 电 可 推荐。 至, 可 开 ,发 一 要 电 ,然 等 人推荐电 。这种方 在推荐系统中称为社 化推荐 social recommendation , 好 友给自己推荐 品。 ‰ 一 有 的 员和导 ,有些人可 开搜索 , 自己 的 员名, 3 然 结 中还有 电 是自己没有 的。比如 非常 的电 ,于 是 搜索 ,发现 的一部电 还没 ,于是 一 。这种方 是 和自己 的电 在 上相 的电 。推荐系统可 上述 程自 化, 分析用户 经 的电 用户 的 员和导 ,然 给用户推荐这些 员 者导 4 的 电 。这种推荐方 在推荐系统中称为基于 的推荐 content-based filtering 。 ‰ 还可 行 ,比如 名的IMDB电 行 , 人在 电,人 电 ,然 一部广 好评的电 。这种方 可 进一 :如 和自己 兴趣相 的一 用户, 在 泛的 行 自己的兴趣。这种方 称为基于 电, 结可比 4 collaborative filtering 的推荐。 从上 3种方法可 出,推荐算法的本 是 一 的方 用户和 品联系 , 的推荐系统 用了 的方 。 1-2 了联系用户和 品的常用方 ,比如 用好友、用 户的 兴趣 用户的 等。 5 5 好友 6 兴趣 注册信息 1-2 推荐系统常用的3种联系用户和 品的方 7
20. 4 1 的 这一 的 论, 可 发现推荐系统 是自 联系用户和 品的一种 具,它 在 的 中 用户发现 兴趣的 ,也 推 给对它 兴趣的用户。 一 推荐系统的实 子 大家 对推荐系统的了 。 1.2 推荐系统的 用 和搜索 ,个性化推荐系统 要 用户的行为 ,因此一 是作为一个应用 在于 网 中。在互联网的各 网 中 可 推荐系统的应用, 个性化推荐系统在这 些网 中的主要作用是 分析大 用户行为 ,给 用户 的个性化 , 高网 的 率和 化率。广泛 用推荐系统的领域包括电子商务、电 和视频、音乐、社交 网络、阅读、基于 的服务、个性化 和广告等。 的网 使用 的推荐系统技 ,但总地 , 有的推荐系统应用 是由 的 、 的 系统 推荐算法系统3部分 的。因此,本 在介绍 的个性 化推荐系统应用 , 这3个 的部分进行。 1.2.1 电子商务网 是个性化推荐系统的一大应用领域。 名的电子商务网 亚马逊是个性化推荐 系统的 应用者和推广者,被RWW 读 网 称为 推荐系统 。 亚马逊的推荐系统 了 各 产品中, 中 主要的应用有个性化商品推荐 和相关商品的推荐 。 1-3是亚马逊的个性化推荐 ,这个 是个性化推荐系统的标准用户 ,它包 个 部分。 取自亚马逊网站,图中相关内容的著 权 著 权人 1-3 亚马逊的个性化推荐 参 读 网的文 A Guide to Recommender Systems 。
21. 1.2 的 5 ‰ 推荐 ‰ 推荐 的标题 的分 告 用户给 推荐的是 。 1 分 应了推荐结 的总 ,也 了大部分用户对这本书 的 法。 ‰ 推荐 亚马逊 用户的 行为给用户 推荐,因此如 它给 推荐了一本 的 ,大 是因为 经在亚马逊上对 方 的书给 马逊对 个推荐结 给出了一个 Fix this recommendation 的 。此 ,亚 , 2 可 推荐理由。如 1-4 ,亚马逊的推荐结 中有一本关于机 的书 Introduction to Machine Learning , 该推荐结 的Fix this recommendaion , 出如 -4 的 括Add to Cart ,该 给用户 了5种对这个推荐结 进行 的方 ,包 Add to Wish List 、Rate this item 给书 3 分 、 I own it 经有这本书了 和Not interested 对这本书没兴趣 。 ,在推荐 结 的 还 了推荐 因,此 是因为 经给Probabilistic Graphical Models: Principles and Techniques和Data Mining:Practical Machine Learning Tools and Techniques, Second Edition这 本书 考 。有些用户可 5分。亚马逊 用户 用推荐理由,这主要是出于 的 4 对 些 品的行为被系统用 推荐结 ,这个 可 用这些行为。 4 对推荐结果的反馈方式 5 5 6 取自亚马逊网站,图中相关内容的著 权 著 权人 1-4 Fix this recommendation 1-3 的个性化推荐 采用了一种基于 品的推荐算法 item-based method ,该算法 给用户推荐 些和 的 品相 的 品。 此 ,亚马逊还有 一种个性化推荐 7
22. 6 1 的 , 是 用户在Facebook的好友关系,给用户推荐 1-5 ,基于好友的个性化推荐 由 品标题、 这 的推荐理由 了 相关 品的用户好友的 的好友在亚马逊上 的 品。如 、 品 分和推荐理由 。 。 取自亚马逊网站,图中相关内容的著 权 著 权人 1-5 基于Facebook好友的个性化推荐 了个性化推荐 ,亚马逊 一个 要的推荐应用 是相关推荐 。当 在亚马逊 一个商品 ,它 在商品 相关的商品。亚马逊有 种相关商品 ,一种是包 了这个商品的用户也经常 的 商品 如 1-6 , 一种是包 这个商品的用 户经常 的 商品 如 1-7 。这 种相关推荐 的 是使用了 用户行为计 算 品的相关性。此 ,相关推荐 要的应用 是 cross selling 。当 在 个 品的 ,亚马逊 告 用户在 这个商品的 也 的 个商品, 然 是要 这些商品。如 了 ,它 这 商品 包 , 有 一 的 ,然 给 如 1-8 。这种 是推荐算法 要的应用, 被很 电子商务网 作为标准的应用。 取自亚马逊网站,图中相关内容的著 权 著 权人 1-6 相关推荐 , 这个商品的用户经常 的 商品 在 商业 亚马逊的推荐产品 ,读者 关 的应该是这些推荐的应用, 。关于这方 的准 ,亚马逊 方并没有 公开 ,但 给亚马逊 了 了一些相关 关于Cross Selling的 参 基 Crossing Selling 。
23. 1.2 的 7 的 。亚马逊的 家Greg Linden在 的 至 有20% 的一 文 为35% 的 经 ,在 开亚马逊的 ,亚马逊 1 自于推荐算法。此 ,亚马逊的 家Andreas Weigend在 经 一 推荐系统的 , 的 ,亚马逊有 20% 30%的 自于推荐系统。 2 3 取自亚马逊网站,图中相关内容的著 权 著 权人 4 1-7 相关推荐 , 这个商品的用户经常 的 商品 4 取自亚马逊网站,图中相关内容的著 权 著 权人 1-8 亚马逊的 包 至于个性化推荐系统对亚马逊的意义, CEO Jeff Bezos在 采 经 对于 电子商务网 的 大优 在于个性化推荐系统,该系统 个用户 的在 商 ,并且 在商 中 自己 兴趣的商品。 5 ,亚马逊相 有一个自己 5 We have 6.2 million customers, we should have 6.2 million stores. There should be the optimum store for each and every customer. 6 有62 用户,因此也应有62 个商 。 应该给 个用户 的商 。 参 Lessons on recommendation Systems, 地 为http://blog.Kiwitobes.com/?p=58。 7 参 Mark Levene的An Introduction to Search Engines and Web Navigation, Second Edition Wiley, 2010 。
24. 8 1 的 1.2.2 网 在电 和视频网 中,个性化推荐系统也是一种 要的应用。它 用户在 的视频 中 兴趣的视频。在该领域 使用推荐系统的一家公司 是Netflix,它和亚马逊 是推荐系统领域 具 性的 家公司。 Netflix 是一家DVD 网 , 这 也开 在 视频业务。Netflix非常 视个 性化推荐技 ,并且在2006 开 名的Netflix Prize推荐系统比 。该比 100 , 人员 Netflix的推荐算法的 测准 度 10%。该比 3 ,由AT&T 的 人员 得了 的大 。该比 对推荐系统的发 了 要的推 作用:一方 该比 给 了一个实 系统中的大 用户行为 40 用户对2 部电 的上 评分 ; 一方 ,3 的比 中,参 者 出了很 推荐算法,大大 了推荐系统的 测 。 此 ,比 了很 优秀的 人员 推荐系统的 中 ,大大 高了推荐系统在业 和 的 。 1-9是Netflix的电 推荐 ,从中可 Netflix的推荐结 包了 个 部分。 ‰ 电 的标题和 。 ‰ 用户 包括Play 、评分和Not Interested 兴趣 3种。 ‰ 推荐理由 因为用户 经 的电 。 取自Netflix网站,图中相关内容的著 权 著 权人 1-9 Netflix的电 推荐系统用户 参 http://netflixprize.com/。
25. 1.2 的 9 从Netflix的推荐理由 ,它 的算法和亚马逊的算法 ,也是基于 品的推荐算法, 1 给用户推荐和 经 的电 相 的电 。至于推荐系统在Netflix中 的作用,Netflix在 中 称,有60% 的用户是 推荐系统 自己 兴趣的电 和视频的。 YouTube作为 大的视频网 , 有大 用户上 的视频 。由于视频 非常大,用 户在YouTube中 的 , 试了很 算法。在YouTube 题。为此,YouTube在个性化推荐领域也进行了 的论文 中, 的 人员 现在使用的也是基于 品 2 的推荐算法。为了 个性化推荐的有 性,YouTube 经 个一个实 ,比较了个性化推荐的 率和 视频 的 率,实 结 个性化推荐的 率是 视频 率的 。 和YouTube , 一家 名的视频网 Hulu也有自己的个性化推荐 。如 1-10 ,Hulu在 推荐结 也 了视频标题、 、视频的 分、推荐理由和用户 3 。 4 4 5 5 取自Hulu网站,图中相关内容的著 权 著 权人 1-10 视频网 Hulu的个性化推荐 参 http://cdn-0.nflximg.com /us/pdf/Consumer_Press_Kit.pdf, Consumer Press Kit。 6 关于这个60%的 和 的与亚马逊有关的30%, 指出的是如 网 推荐系统 在很 要的 , 比如 在 , 这个比 自然 高。但 要 意的是,用户在网 中 了推荐系统,还可 搜索和分 得自己 兴趣的 , 在这3种方 中,如 用推荐系统的比 30% 60%,还是 推荐系统的有 性。当然,如 要 这个 题, 个推荐系统 ,然 对比有推荐系统的网 和 没有推荐系统的网 的 ,当然这种实 发。 7 参 http://dl.acm. org/citation. cfm?id=1864770,The Youtube video recommendation system。
26. 10 1 的 1.2.3 网络 个性化推荐的 应用 要 个 。 一是 在 ,因为如 用户可 很 地从 有 品中 的 品, 要个性化推荐了。 是用户大部分 没有 的 ,因为用户如 有 的 ,可 搜索 兴趣的 品。 在这 个 ,个性化网络电 是 的个性化推荐产品。 ,音乐很 ,用户 可 有的音乐 决 自己 ,且 的 在 很 的 度 ,因此用 户 的 题。 ,人 音乐 ,一 是 音乐作为一种 乐 ,很 有人 的 。对于 用户 , 可 ,要 当的 可 了。因此,个性化音乐网络电 是非常 个性化推荐技 的产品。 有很 名的个性化音乐网络电 。 上 名的有Pandora 参 1-11 和Last.fm 参 1-12 , 的 是 电 参 1-13 。这3种应用虽然 是个性化网络电 , 但 的技 一。 取自Pandora网站,图中相关内容的著 权 著 权人 1-11 Pandora个性化网络电 的用户
27. 1.2 的 11 1 2 3 4 取自Last.fm网站,图中相关内容的著 权 著 权人 1-12 Last.fm个性化网络电 的用户 4 5 5 取自豆瓣个性化网络电台,图中相关内容的著 权 著 权人 1-13 个性化网络电 的用户 从 上 ,这3个个性化网络电 很 。它 用户 , 是给用户 种 方 、 和 。经 用户一 的 ,电 可 从用户的 行为中 6 得用户的兴趣 ,从 使用户的 用户对 的兴趣。 Pandora 的音乐推荐算法主要 自于一个 音乐基因 程的 。这个 于 2000 1 6 ,它的 员包括音乐家和对音乐有兴趣的 程 。Pandora的算法主要基于 , 音乐家和 人员 自 了上 自 的 ,然 对 的 性 比如 、 7
28. 12 1 的 、 和 等 进行标 ,这些标 被称为音乐的基因。然 ,Pandora 家标 的 基因计算 的相 度,并给用户推荐和 的音乐在基因上相 的 音乐。 Last.fm于2002 在 。Last.fm 了 有用户的 用户对 的 ,在 这一基础上计算出 用户在 上的 好相 度,从 给用户推荐和 有相 好的 用户 的 。 ,Last.fm也 了一个社交网络, 用户 和 用户 联系, 也 用户给好友推荐自己 的 。和Pandora相比,Last.fm没有使用 家标 , 是主要 用用户行为计算 的相 度。 音乐推荐是推荐系统 非常 的领域。2011 的Recsys大 了Pandora的 人员 对音乐推荐进行了 。 人总结了音乐推荐的如 。 ‰ 品 很 , 品空 很大,这主要是相对于书和电 ‰ 的 对于在 音乐 ,音乐 是 的, 要 。 ‰ 种 ,有很 的流 ‰ 一 音乐的 本很 , 用户的 , 且用户大 音乐作为 音, 进行 作。 ‰ 用 用户 很 ,这和 品 ,比如用户 一 个电 , 一本书。 ‰ 用户 用户很有 ,一个用户 很 ‰ 上下文 用户的 很 当 上 文的 ,这 的上 文主要包括用户当 的 比如 的 的 和 比如 音乐 。 ‰ 用户 音乐一 是 一 的 一 一 地 。 ‰ 很 用户 很 个人 。 ‰ 用户 音乐 要用户 地 ,很 用户 音乐作为 音。 ‰社 用户 音乐的行为具有很 的社 化 性,比如 和好友分 自己 的音乐。 上 这些 决 了音乐是一种非常 用 推荐的 品。因此, 现在很 推荐系统 是作为一个应用 在于网 中,比如亚马逊的商品推荐和Netflix的电 推荐, 有音乐推荐可 的个性化推荐网 ,比如Pandora、Last.fm和 网络电 。 1.2.4 社交网络 5 ,互联网 人 的产品 于 Facebook和Twitter为 社交网络中,好友 可 互相分 、 。社交网络中的个性化推荐技 ‰ 用用户的社交网络 对用户进行个性化的 品推荐; ‰ 流的 话推荐; ‰ 给用户推荐好友。 的社交网络应用。在 主要应用在3个方 : PPT为Music Recommendation and Discovery, http://www.slideshare.net/plamere/music-recommendation-and-discovery。
29. 1.2 的 13 Facebook 的 有 个,一个是用户 的社交网络关系, 一个是用户的 好 。 1 因此,Facebook推出了一个推荐API,称为Instant Personalization。该 具 用户好友 的 ,给用户推荐 的好友 的 品。很 网 使用了Facebook的API 实现网 的个性 化。 1-1中是使用了Facebook的Instant Personalization的具有 性的网 。 1-14是 名的电 视 推荐网 Clicker使用Instant Personalization给用户进行个性化视频推荐的 。 2 1-1 用 Facebook Instant Personalization 的网 网 Clicker Rotten Tomatoes Docs.com Pandora Yelp Scribd 网 个性化电视推荐 电影评论 式文 编辑 3 个性化音乐网络电台 本地评论 社会化阅读 4 4 5 取自Clicker网站,图中相关内容的著 权 著 权人 5 1-14 Clicker 用好友的行为给用户推荐电视 了 用用户在社交网 的社交网络 给用户推荐本 的各种 品,社交网 本 也 用社交网络给用户推荐 用户在社交网 的 话。如 1-15 , 个用户在Facebook的个人 好友的各种分 ,并且 对这些分 进行评论。 个分 和它的 有评论被称为一 6 个 ,如 给这些 话 是社交网 中的一个 要话题。为此,Facebook开发了EdgeRank 算法对这些 话 ,使用户 的好友的 话。 7 这些网 的 http://www.facebook.com/instantpersonalization/。
30. 14 1 的 取自Facebook,图中相关内容的著 权 1-15 用户在Facebook的 著 权人 流 了 用户的社交网络 用户行为给用户推荐 用户推荐好友。 1-16 了 名社交网 的好友推荐 ,社交网 还 。 个性化推荐服务给 取自Facebook、Twitter、LinkedIn和新浪微博,图中相关内容的著 权 著 权人 1-16 社交网 中好友推荐系统的 上为LinkedIn, 为 上为Facebook, 为Twitter,
31. 1.2 的 15 1.2.5 1 阅读文 是很 互联网用户 天 的 。个性化阅读 出的 要个性化 推荐的 个因 : ,互联网上的文 非常 ,用户 的 题; ,用户很 并没有 具文的 , 是 阅读 领域的文 了 这些领域的 。 2 互联网上的个性化阅读 具很 , 名的有Google Reader, 有 网等。 , 设 的流行, 设 上 对个性化阅读的应用也很 , 中具有 性的有Zite和 Flipboard。 Google Reader是一 流行的社 化阅读 具。它 用户关 自己 兴趣的人,然 3 关 用户分 的文 。如 1-17 ,如 的People you follow 关 的人 , 可 用户分 的文 。 4 4 5 取自Google Reader,图中相关内容的著 权 著 权人 1-17 Google Reader社 化阅读 和Google Reader ,个性化阅读 具Zite 是 用户对文 的 好 。如 1-18 在文 ,Zite 用户给出 的 ,然 分析用户的 地 用户的个性化文 。Zite推出 得了 大的 , 被CNN 。 5 ,6 7
32. 16 1 的 取自Zite,图中相关内容的著 权 著 权人 1-18 Zite个性化阅读 一家 名的 阅读网 Digg也在 试了推荐系统。 Digg 用户的Digg 计算用户 的兴趣相 度,然 给用户推荐和 兴趣相 的用户 的文 。 Digg自己的 统计,在使用推荐系统 ,用户的digg行为 ,digg总 高了40%,用户的好友 了24%,评论 了11%。 1.2.6 的 在中关 , 子 了, 开 机,发现上 给 推荐了 家中关 的 ,价 、 、服务、 如 ,这 是基于 的个性化推荐系统 理 的 了。 设 的 发 ,用户的 经非常 取, 是一种很 要的上 文 ,基 于 给用户推荐 的且 兴趣的服务,用户 有可 。 基于 的服务 和社交网络结 在一 。比如Foursquare推出了 索 ,给用户推荐 好友在 的行为 如 1-19 。 Digg 方 上的文 Digg Recommendation Engine Updates ,地 为http://about.digg.com/blog/digg-recommendation-engine-updates。
33. 1.2 的 17 1 2 3 4 取自FourSquare,图中相关内容的著 权 著 权人 1-19 Foursquare的 索 1.2.7 4 天 大 的 ,这些 有些对 很 要 比如领导交 务的 , 有些比较 要 比如 人 的 ,还有些是 。 可 ,这是一个 的 领域,这 论了。但在 常的 中,如 对用户 要的 用户优 , 大大 高用户的 作 率。 5 实, 在文 中 的 一个推荐系统Tapestry 是一个个性化 推荐系统,它 分析用户阅读 的 行为和 对 进行 ,从 高用户的 作 率。 的 人员在这个 题上也进行了 ,于2010 推出了优 。如 1-20 ,该产品 分析用户对 的 行为, 用户 兴趣的 , 在一个 的 5 。用户 天可 这个 的, 。 的 ,该产品可 用户 6%的 。在如今这个 是的, 6%的 是一大进 。 6 。 参 读 网的 Google Says Priority Inbox Users Spend 6% Less Time on Email(So Are You Using It?) http://www. readwriteweb.com/search?query=google+says+priority+inbox+use&x=0&y=0 者 的论文The Learning Behind Gmail Priority Inbox http://static.googleusercontent.com/external-content/untrusted_dlcp/research.google.com /zh-CN 7 //pubs/archive/36955.pdf 。
34. 18 1 的 取自Gmail,图中相关内容的著 权 著 权人 1-20 Gmail的优 1.2.8 广告是互联网公司 的 本。很 互联网公司的 是基于广告的, 广告的CPC、 CPM 决 了很 互联网公司的 。 ,很 广告 是 机 的, 用户 了, 机 一个广告 给 。这种 的 率 然很 ,比如给 性 化 品广告 者给 性 广告 是一种 。因此,很 公司 于广告 Ad Targeting 的 , 如 广告 给它的 在 户 。个性化广告 经 为了一 的 计算 广告 但该 和推荐系统在很 基础理论和方法上是相 的,比如它 的 的 是联系用 户和 品, 是在个性化广告中, 品 是广告。 个性化广告 和 义个性化推荐的 是,个性化推荐 于 用户 可 兴趣的 品, 广告推荐 于 广告 可 对它 兴趣的用户, 一个是 用户为 , 一个 广告为 。 的个性化广告 技 主要分为3种。 ‰ 上下文 分析用户 在 的网 , 和网 相关的广告。 系 统是 的Adsense。 ‰ 分析用户在当 话中的搜索 , 用户的搜索 的, 和用户 的相关的广告。 ‰ 经常在很 网 大 广告 是 些大的 ,它 是 用户的兴趣,对 用户 的 广告。 是这方 的。 广告的个性化 是很 互联网公司的 技 ,很 公司 。,公 司是个 ,它发 了大 个性化广告方 的论文。 在个性化广告方 得 的 是Facebook,因为它 有大 的用户个人 ,可 很 地 取用户的兴趣, 广告商 自己 对 广告的用户。 1-21 了 Facebook的广告系统 ,该 广告商 自己 的用户 ,然 Facebook 广告 商的 告 这些 广告 覆盖的用户 。
35. 1.3 19 1 2 3 4 取自Facebook,图中相关内容的著 权 著 权人 1-21 Facebook 广告商 的 标用户 1.3 推荐系统评测 4 是好的推荐系统 这是推荐系统评测 要 决的 要 题。一个 的推荐系统一 在3个参与方 如 1-22 :用户、 品 者和 推荐系统的网 。 书推荐为 , ,推荐系统 要满 用户的 ,给用户推荐 些 各出 社的书 被推荐给对 兴趣的用户, 兴趣的 书。 ,推荐系统要 是 推荐 个大 出 社的书。 , 5 好的推荐系统设计, 推荐系统本 高 的用户 , 推荐的 , 用户和网 的交互, 高网 的 。因此在评测一个推荐算法 , 要 考 方的 , 一个好的推荐系统是 方 的系统。 5 6 1-22 推荐系统的参与者 7
36. 20 1 的 在推荐系统的 中,很 人 好的推荐系统 义为 作出准 测的推荐系统。比 如,一个 书推荐系统 测一个用户 《C++ Primer中文 》这本书, 用户 实 了, 这 被 一 准 的 测。 测准 度是推荐系统领域的 要指标 没有 一 。 这个指标的好 是,它可 比较 地 方 计算出 ,从 方 人员 评价和 的推荐算法。但是,很 ,准 的 测并 好的推荐。 比如 ,该用户 准 《C++ Primer中文 》了, 论是 给 推荐, 准 , 这个推荐结 然 是 好的,因为它并 使用户 的书, 是方 用户 一本 本 准 的书。 ,对于用户 , 得这个推荐结 很 , 。 ,对于《C++ Primer 中文 》的出 社 ,这个推荐也没 这本书的 在 人 。 ,这是一个 上 很 好,但 实 很 的推荐。 一个 的 子, 推测系统 测 天 从 方 ,虽 然 测准 率是100%, 是一种没有意义的 测。 ,好的推荐系统 准 测用户的行为, 且 用户的视 , 用户 发现 些 可 兴趣,但 发现的 。 ,推荐系统还要 商家 些被 没在 中的好商品介绍给可 对它 兴趣的用户。这也 是《 理论》的作者 在书中 介绍推荐系统的 因。 为了 评测推荐系统对 方 的 ,本 从 度出发, 出 的指标。这些 指标包括准 度、覆盖度、 度、 度、 度、 度等。这些指标中,有些可 计 算,有些 有在 计算,有些 用户 得。 各 介绍这些指标的出 发 、 义, 一些指标的计算方法。 1.3.1 推荐系统实 在介绍推荐系统的指标 , 一 计算和 得这些指标的主要实 方法。在推荐系统 中,主要有3种评测推荐 的实 方法, 实 offline experiment 、用户 user study 和在 实 online experiment 。 分 介绍这3种实 方法的优 。 1. 实 实 的方法一 由如 个 : (1) 系统 得用户行为 ,并 一 一个标准的 ; (2) 一的 分 和测试 ; (3) 在 上 用户兴趣 ,在测试 上进行 测; (4) 义的 指标评测算法在测试 上的 测结 。 从上 的 可 ,推荐系统的 实 是在 上 的,也 是 它 要一 个实 的系统 它实 , 要有一个从实 系统 中 取的 可。这种实 方法的 好 是 要 实用户参与,可 地计算出 ,从 方 、 地测试大 的算法。 参 Sean M. McNee、John Riedl、Joseph A. Konstan的论文 Being accurate is not enough: how accuracy metrics have hurt recommender systems 。
37. 1.3 它的主要 是 法 得很 商业上关 的指标,如 率、 化率等, 相关的 指标也是很 的 。 1-2 总结了 实 的优 。 1-2 实的 21 和商业指标非常 1 不需要 对实 系统的 权 不需要用户参与实验 度 ,可以测试大量算法 法计算商 上关心的指标 2 离线实验的指标和商 指标存在 2. 用户 3 意, 实 的指标和实 的商业指标 在 ,比如 测准 率和用户满意度 在很大 ,高 测准 率 等于高用户满意度。因此,如 要准 评测一个算法, 要相对比 较 实的 。 好的方法 是 算法 上 测试,但在对算法 用户满意度 有的 的测试。 ,上 测试具有较高的 , 在上 测试 一 要 一 称为用户 4 用户 要有一些 实用户, 在 要测试的推荐系统上 一些 务。在 务, 要和 的行为,并 一些 题。 , 要 分析 的行为和 了 测试系统的性 。 用户 是推荐系统评测的一个 要 具,很 没有 法评测的与用户主 有关 4 的指标 可 用户 得。比如,如 推荐结 是 很 用户 , 好 用户。但是,用户 也有一些 。 ,用户 本很高, 要用户 大 一个个 务,并 相关的 题。有些 ,还 要 用测试用户。因此,大 很 进行大 的用户 , 对于参 人 较 的用户 ,得出的很 结论 5 没有统计意义。因此, 在 用户 ,一方 要 本, 一方 要 结 的统计 意义。 此 ,测试用户也 是 的。 要 测试用户的分 和 实用户的分 相 , 比如 各 , 、 度的分 和 实用户分 相 。此 ,用户 要 5 是 实 , 要 实 人员和用户 测试的 标, 用户的 和实 人员的测试 主 分的 。 用户 的优 也很 。它的优 是可 得很 现用户主 的指标,相对在 实 很 ,出现 很 弥补。 是 测试用户 价较大,很 大 的测试 用户,因此 使测试结 的统计意义 。此 ,在很 设计 实 非常 , 且用户 6 在测试 的行为和 实 的行为可 有 ,因 在测试 的测试指标可 在实 法 现。 3. 实 在 实 和 要的用户 ,可 推荐系统上 AB测试, 它和 的算法进 7
38. 22 1 的 行比较。 AB测试是一种很常用的在 评测算法的实 方法。它 一 的 用户 机分 , 并对 的用户采用 的算法,然 统计 用户的各种 的评测指标比较 算 法,比如可 统计 用户的 率, 率比较 算法的性 。对AB测试 兴趣的 读者可 一 网 http://www.abtests.com/,该网 给出了很 实 AB测试 高网 用户 满意度的 子,从中 可 如 进行 理的AB测试。 AB测试的优 是可 公 得 算法实 在 的性 指标,包括商业上关 的指标。 AB测试的 主要是 比较 , 进行 的实 得 可 的结 。因此一 用 AB测试测试 有的算法, 是用它测试 些在 实 和用户 中 现很好的算法。 , 一个大 网 的AB测试系统的设计也是一 的 程。一个大 网 的 分 和 , 从 给用户的 的算法,中 经 了很 ,这些 由的 , 且 有可 AB测试。如 为 的 分 设计AB测试系统, 的AB测试 互相 。比如,当 进行一个 推荐算法的AB测试, 网 在 推荐 的 AB测试, 的结 是 测试结 是自己算法的 ,还是推荐 的 的。因此, 分流 是AB测试中的关 , 的 这些 的 要从一个统一的地 方 得自己AB测试的流 , 的流 应该是 交的。 1-23是一个 的AB测试系统。用户进 网 ,流 分 系统决 用户是 要被进 行AB测试,如 要的话,流 分 系统 给用户 上在测试中 于 分 的标 。然 用 户 网 , 用户在 网 的行为 被 系统发 的 。此 ,如 用户有测试分 的标 , 该标 也 被发 。在 ,实 人员的 作 是 流 分 系统,决 满 的用户参 的测试。 ,实 人员 要统计 中的 , 评测系统 分 用户的实 告,并比较和评测实 结 。 一 ‰ ‰然 ,一个 ,要 ,要 的推荐算法 实 用户 1-23 AB测试系统 上,要 上 的3个实 。 它在很 指标上优于现有的算法。 它的用户满意度 于现有的算法。
39. 1.3 23 ‰ , 在 的AB测试 它在 关 的指标上优于现有的算法。 1 介绍 3种主要的实 方法 , 一 开 介绍推荐系统常用的实 指标,这些指标大部 分可 本 介绍的3种实 方法 得。 1.3.2 评测 标 2 本 介绍各种推荐系统的评测指标。这些评测指标可用于评价推荐系统各方 的性 。这 些指标有些可 计算,有些 性 述,有些可 实 计算,有些 要 用户 得,还有些 在 评测。对于 要的评测指标, 论如 优化它 , 本 给出指标的 义。但对于一些 要的指标,本 在给出 义的 也 如 优化。 论各个 的指标。 论一 应该 3 1. 用户 用户作为推荐系统的 要参与者, 满意度是评测推荐系统的 要指标。但是,用户满意 度没有 法 用户 计算, 用户 得用户满意度主要是 者在 实 的 得。 。用户对推荐系统的满意度分为 的4 。GroupLens 经 一个论文推荐系统的 ,该 的 题是 话 述 推荐结 的 ‰ 推荐的论文 是 非常 的。 ‰ 推荐的论文很 了, 实是 兴趣的 论文。 4 ‰ 推荐的论文和 的 兴趣是相关的,但 并 。 ‰ 为 推荐这些论文,它 和 的兴趣 没有关系。 由此可 出,这个 是 地 用户对结 是 满意, 是从 的 用户对结 的 个方 还有 。比如,如 满,因 可 很 用户是 满意,用户可 这个 题。因此在设计 为大 满意,但是对 5 要考 用户各方 的 ,这 用户 对 题给出自己准 的 。 在在 系统中,用户满意度主要 一些对用户行为的统计得 。比如在电子商务网 中, 用户如 了推荐的商品, 户的满意度。此 ,有些网 在一 程度上满意。因此, 可 用 率度 用 设计一些用户 用户满意度。比如在视频网 5 Hulu的推荐 如 1-24 和 网络电 如 1-25 中, 有对推荐结 满意 者 满意的 , 统计 种 的 可 度 系统的用户满意度。 一 的 , 可 用 率、用户 和 化率等指标度 用户的满意度。 6 参 Sean M. McNee、 Nishikant Kapoor和 Joseph A. Konstan的论文 Don’t Look Stupid: Avoiding Pitfalls when Re- 7 commending Research Papers 。
40. 24 1 的 取自Hulu,图中相关内容的著 权 著 权人 1-24 Hulu 用户 对推荐结 进行 , 度 用户满意度 取自豆瓣,图中相关内容的著 权 著 权人 1-25 网络电 和 的 度 用户满意度 2. 预测 测准 度度 一个推荐系统 者推荐算法 测用户行为的 。这个指标是 要的推荐 系统 评测指标,从推荐系统 的 一天 , 99%与推荐相关的论文 在 论这个指标。 这主要是因为该指标可 实 计算,方 了很 的 人员 推荐算法。 在计算该指标 要有一个 的 ,该 包 用户的 行为 。然 , 该 分 和测试 。 , 在 上 用户的行为和兴趣 测用 户在测试 上的行为,并计算 测行为和测试 上实 行为的 度作为 测准 度。 由于 的推荐算法有 的 方 ,因此 对 的 方 介绍它 的 测准 度指标。
41. 1.3 25 z 很 推荐服务的网 有一个 用户给 品 分的 如 1-26 。 了用户对 品的 评分, 可 从中 得用户的兴趣 ,并 测该用户在 没有评 分的 品 , 给这个 品评 分。 测用户对 品评分的行为称为 1 ,如 一个 。 2 3 分别 取自Netflix、豆瓣、YouTube、Jinni、Digg和Pandora网站,图中相关内容的著 权 著 权人 1-26 网 用户评分的 评分 测的 测准 度一 方 RMSE 和 对 MAE 计算。对于 测试 中的一个用户u和 品i, rui是用户u对 品i的实 评分, rˆui 是推荐算法给出的 测评 4 分, RMSE的 义为: RMSE ¦ u,iT (rui  rˆui )2 T 4 MAE采用 对值计算 测 ,它的 ¦ MAE = u,iT rui  rˆui 7 5 设 用一个 records 用户评分 , records[i] = [u,i,rui,pui], 中rui是用户u对 品i的实 评分,pui是算法 测出 的用户u对 品i的评分, 的 分 实现了RMSE和MAE的计算 程。 def RMSE(records): return math.sqrt(\ 5 sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])\ / float(len(records))) def MAE(records): return sum([abs(rui-pui) for u,i,rui,pui in records])\ / float(len(records)) 6 关于RMSE和MAE这 个指标的优 , Netflix 为RMSE 大了对 测 准的用户 品评 分的 方 的 ,因 对系统的评测 。 ,如 评分系统是基于 的 用户给的评分 是 , 对 测结 取 MAE的 。 7 Gábor Takács、István Pilászy和 Bottyán Németb的论文 Major components of the gravity recommendation system 。
42. 26 1 的 z TopN 网 在 推荐服务 ,一 是给用户一个个性化的推荐 ,这种推荐 TopN推荐。 TopN推荐的 测准 率一 准 率 precision / 率 recall 度 。 R(u)是 用户在 上的行为给用户作出的推荐 , T(u)是用户在测试 上的行 为 。 ,推荐结 的 率 义为: ¦ ¦ Recall uU R(u)  T (u) uU T (u) 推荐结 的准 率 义为: ¦ ¦ Precision uU R(u)  T (u) uU R(u) 的Python 计算出了一个推荐算法的准 率和 率: def PrecisionRecall(test, N): hit = 0 n_recall = 0 n_precision = 0 for user, items in test.items(): rank = Recommend(user, N) hit += len(rank & items) n_recall += len(items) n_precision += N return [hit / (1.0 * n_recall), hit / (1.0 * n_precision)] 有的 ,为了 评测TopN推荐的准 率和 率,一 取 的推荐 度N, 计算出一 准 率/ 率,然 出准 率/ 率 precision/recall curve 。 z 和TopN 的 评分 测一 是推荐系统 的 , 大 推荐系统的 是基于用户评分 的评 分 测。这主要是因为,一方 推荐系统的 GroupLens的 主要 是基于电 评分 MovieLens进行的, ,Netflix大 也主要 评分 测 题。因 ,很 人员 中在优化评分 测的RMSE上。 对此,亚马逊 家Greg Linden有 的 法。2009 , 在Communications of the ACM 网 发 了一 文 ,指出电 推荐的 的是 用户 有可 兴趣的电 , 是 测用 户 了电 给电 的评分。因此,TopN推荐 实 的应用 。也 有一部电 用户 了 给很高的分 ,但用户 的可 性非常 。因此, 测用户是 一部电 , 应该比 测用户 了电 给它 评分 要。因此,本书主要也是 论TopN推荐。 What is a Good Recommendation Algorithm ,参 http://cacm.acm.org/blogs/blog-cacm/22925-what-is-a-goodrecommendation -algorithm/fulltext。
43. 1.3 27 3. 覆盖率 coverage 述一个推荐系统对 品 的发 。覆盖率有 1 的 义方法, 的 义为推荐系统 推荐出 的 品 总 品 的比 。 设系统的用户 为U, 推荐系统给 个用户推荐一个 度为N的 品 R(u)。 推荐系统的覆盖率可 的 公 计算: 2 Coverage *uU R(u) I 从上 的 义可 ,覆盖率是一个 商 关 的指标。 书推荐为 ,出 社 可 很关 的书有没有被推荐给用户。覆盖率为100%的推荐系统可 个 品 推荐 3 给至 一个用户。此 ,从上 的 义也可 , 行 的推荐覆盖率是很 的,它 推荐 些 的 品,这些 品在总 品中 的比 很 。一个好的推荐系统 要有比较高 的用户满意度,也要有较高的覆盖率。 但是上 的 义 于 。覆盖率为100%的系统可 有 的 品流行度分 。为了 4 地 述推荐系统发 的 , 要统计推荐 中 品出现 的分 。如 有的 品 出现在推荐 中,且出现的 , 推荐系统发 的 很好。因此, 可 品在推荐 中出现 的分 述推荐系统 的 。如 这个分 比 较, 推荐系统的覆盖率较高, 如 这个分 较 , 推荐系统的覆盖率较 。 4 在 论和经 中有 个 名的指标可 用 义覆盖率。 一个是 : H ¦n p(i) log p(i) i1 这 p(i)是 品i的流行度 有 品流行度 和。 个指标是基 系 Gini Index : 5 ¦ G 1 n 1 n j1 (2 j  n 1) p(i j ) 这 ,ij是 品流行度p()从 大 的 品 中 j个 品。 的 可 用 计 算给 品流行度分 的基 系 : 5 def GiniIndex(p): j=1 n = len(p) G=0 for item, weight in sorted(p.items(), key=itemgetter(1)): G += (2 * j - n - 1) * weight 6 return G / float(n - 1) 7 参 Guy Shani和 Asela Gunawardana的 Evaluating Recommendation Systems 。
44. 28 1 的 系数的 首先,我 物品按 热门程度 高排列, 右图 中的 曲线表示最不热门的x%物品的 流行度 系统的比例 y% 这 曲线 定是在y=x曲线之下的, 和y=x曲线相交在 (0,0)和(1,1) SA是A的面 ,SB是B的面 , 基 系数的 定 是SA / (SA + SB), 定 可 ,基 系数 于 间[0,1] 果系统的流行度 平均, 数 果系统物品流行度分 基 系数 会 大 SA 会 不均 , , 基系 SA 会 大, 社 领域有一个 名的马 应, 者 , 者 的 应。如 一个系统 大 品和非 品的流行度 , 的品 , 的品 , 这个系统 有马 应。比如, 的 行 有马 应。进 行 的 是 的 品,但它 因为被 在 的 行 有了 的 机 , 。相 ,没有进 行 的 品得 , 。搜索 的PageRank算法也具有一 的马 应, 如 一个网 的 个 关 名很高,并因此被 在搜索结 的 一 , 它 得 的关 ,从 得 的 ,PageRank 名也 高。 ,推荐系统是 有马 应 推荐系统的 是 马 应,使得各种 品 被 给对它 兴趣的 一 人 。但是,很 现在主流的推荐算法 比如 算法 是具有马 应的。评测推荐系统是 具有马 应的 法 是使用基 系 。如 G1是从 用户行为中计算出的 品流行度的基 系 ,G2是从推荐 中计算出的 品流 行度的基 系 , 如 G2 > G1, 推荐算法具有马 应。 4. 用户的兴趣是广泛的,在一个视频网 中,用户可 《 和 》一 的 , 也 的 作 。 ,为了满 用户广泛的兴趣,推荐 要 覆盖用户 的兴 趣领域, 推荐结 要具有 性。 性推荐 的好 用一 话 述 是 在一 上 。 用户的兴趣在较 的 度中是一 的,但具 用户 推荐系统的 一 , 兴趣 是 一的, 如 推荐 覆盖用户的一个兴趣 , 这个兴趣 是用户这 个 的兴趣 ,推荐 用户满意。 ,如 推荐 比较 ,覆盖了用户 大 的兴趣 , 用户 兴趣 品的 率。因此给用户的推荐 也 要满 用 户广泛的兴趣, 具有 性。 性 述了推荐 中 品 的 相 性。因此, 性和相 性是对应的。 设 s(i, j) [0,1] 义了 品i和j 的相 度, 用户u的推荐 R(u)的 性 义如 : Diversity ¦ 1  i, jR(u),iz j s(i, j) 1 R(u) ( R(u) 1) 2
45. 1.3 29 推荐系统的 性可 义为 有用户推荐 性的 值: 1 Diversity 1 ¦ Diversity(R(u)) U uU 从上 的 义可 , 的 品相 度度 相 度 述 品 的相 度, 可得 s(i, j)可 义 的 性。如 用 性 ,如 用 的相 度 2 述 品 的相 度, 可 得 的性。 关于推荐系统 性 好 程度,可 一个 的 子 。 设用户 作 和 推荐 ,且用户80%的 在 作 ,20%的 在 。 ,可 4种 :A 中有10部 作 ,没有 ;B 中有10部 ,没有 作 ;C 的 中3 有8部 作 和2部 ;D 有5部 作 和5部 。在这个 子中,一 为C 是 好的,因为它具有一 的 性,但 考 了用户的主要兴趣。A满 了用户的主要兴趣, 但 性,D 于 ,没有考 用户的主要兴趣。B 没有考 用户的主要兴 趣,也没有 性,因此是 的。 4 5. 的推荐是指给用户推荐 些 没有 的 品。在一个网 中实现 性的 法是, 些用户 在网 中对 有 行为的 品从推荐 中 。比如在一个视 频网 中, 的推荐 应该给用户推荐 些 经 有些视频可 是用户在 的网 , 者是在电视上 、 分者 ,因此 的视频。但是, 4 本网 中用户有 行为的 品还 实现 性。 O’scar Celma在 论文 Music Recommendation and Discovery in the Long Tail 中 了 度的评测。评测 度的 方法是 用推荐结 的 流行度,因为 的品 可 用户 得 。因此,如 推荐结 中 品的 程度较 , 推荐结 可 有 5 比较高的 性。 但是,用推荐结 的 流行度度 性比较 ,因为 用户 的 是 的。 因此,要准 地统计 性 要 用户 。 关于 性和 性的 推荐系统 人员的关 。ACM的推荐系 5 统 在2011 有一个 的 论推荐的 性和 性。 该 的 者 为, 度 高 性和 性是很 的, 的是如 在 度的 高 性和 性。关 这 个指标的读者可 关 一 这个 发 的论文。 6. 度 serendipity 是 这 推荐系统领域 6 的话题。但 是 度, 度 与 性有 是 要 的 题。 意,这 论的是 度和 度作为推荐指 参 Music Recommendation and Discovery in the Long Tail ,地 为http://mtg.upf.edu/static/media/PhD_ocelma.pdf。 7 参 International Workshop on Novelty and Diversity in Recommender Systems ,地 为http://ir.ii.uam.es/divers2011/。
46. 30 1 的 标在意义上的 , 是这 个 在中文 的 义 因为这 个 是 文 的, 它 在中文 的 义 和 文 的 义 并 相 , 要 大 中关于 这 个 在中文中的基本 义。 可 一个 子 这 种指标的 。 设一名用户 的电 ,然 给推 荐了一部 《 》的电 该电 是1983 由 、 、 作 出的,很 有 人 这部有 出 的电 , 该用户 这部电 , 可 这个推荐具有 性。 但是,这个推荐并没有 度,因为该用户一 了 了这个电 的 员, 得 。 但如 给用户推荐 导 的《 高 》, 设这名用户没有 这部电 , 这部电 可 得很 ,因为这部电 和 的兴趣一 关系也没有,但如 用户 电 得这部电 很 , 可 这个推荐是 用户 的。这个 子的 本 自于 Guy Shani的论文 , 的基本意 是,如 推荐结 和用户的 兴趣 相 ,但 用户 得满意, 可 推荐结 的 度很高, 推荐的 性 取决于用户是 这个 推荐结 。 并没有 公 的 度指标 义方 ,这 给出一种 性的度 方 。上 , 用户 的推荐结 是和用户 上 的 品 相 ,但用户 得满意的推荐。 , 义 度要 义推荐结 和用户 上 的 品的相 度, 要 义用户对推荐结 的满意度。 也 ,用户满意度 者在 实 得, 推荐结 和用 户 上 的 品相 度一 可 用 相 度 义。也 是 ,如 得了一个用户 电 的 ,得 这些电 的 员和导 A,然 给用户推荐一个 于 A的导 和 员 作的电 , 用户 非常满意,这 实现了一个 度很高的推荐。因此 高推荐 度 要 高推荐结 的用户满意度, 推荐结 和用户 兴趣的相 度。 度的 题 得了 的一 关 ,但这方 的 作还 是很 。相关 作 可 参考Yuan Cao Zhang等的论文 和Tomoko Murakami等的论文 ,本书 对该 题进一 开 论了。 7. 信 如 有 个 友,一个人 很 ,一个人经常满 ,如 的 友推荐 个地方 , 很有可 从 的推荐,但如 是 满 的 友推荐 的 地方 , 很有可 。这 个人可 个推荐系统, 的推荐结 相 ,但用 户可产 的 应,这 是因为用户对 有 的 度。 对于基于机 的自 推荐系统, 在 度 trust 的 题,如 用户 推荐系 统, 用户和推荐系统的交互。 是在电子商务推荐系统中, 用户对推荐结 产 参 Guy Shani和 Asela Gunawardana的 Evaluating Recommendation Systems 。 参 Yuan Cao Zhang、Diarmuid Ó Séaghdha、Daniele Quercia和 Tamas Jambor的 Auralist: introducing serendipity into music recommendation. 。 参 Tomoko Murakami、Koichiro. Mori和Ryohei Orihara的 Metrics for evaluating the serendipity of recommendation lists 。
47. 1.3 31 是非常 要的。 的推荐结 , 用户 广告 的方法推荐给用户 可 很 的方 推荐给用户 用户产 的意 。 用户产 ,1 度 推荐系统的 度 的方 , 用户是 推荐系统的推荐结 。 因为本书 的 如 高推荐系统 度的 题,因此这 介绍一 如 高 用户对推荐结 的 度, 关于 度的一些 现 。 高推荐系统的 度主要有 种方法。 要 推荐系统的 度 transparency , 2 推荐系统 度的主要 法是 推荐 。 有 用户了 推荐系统的 行机 , 用 户 推荐系统的 行机 , 高用户对推荐系统的 度。 是考 用户的社交网络 , 用用户的好友 给用户 推荐,并且用好友进行推荐 好友一 比较 ,因此如 推荐的商品是好友 的, 。这是因为用户对 的 对推荐结 相对比较 3 。 关于推荐系统 度的 主要 中在评论网 Epinion的推荐系统上。这是因为Epinion 了一 用户 的 系统 用户 的 关系, 用户 是 当 用户对 一个商品的评论。如 1-27 ,当用户在Epinion上 一个商品 , 用户评论 4 是 该商品。Epinion为了 评论 者广告评论 用户的决 ,在 用户评论 的 了评论作者的 ,并且 用户 是 该评论人还是 名 。如 网 具有Epinion的用户 系统, 可 在给用户 推荐 , 推荐 的 用户评论 的 品。 4 5 5 取自Epinion网站,图中相关内容的著 权 著 权人 6 1-27 Epinion的 系统 参 Henriette Cramer、Vanessa Evers、 Satyan Ramlal、 Maarten van Someren、Lloyd Rutledge、 Natalia Stash、Lora Aroyo和Bob Wielinga的 The effects of transparency on trust in and acceptance of a content-based art recommender 。 7 参 Paolo Massa和 Paolo Avesani的 Trust-aware recommender systems 。
48. 32 1 的 8. 实 在很 网 中,因为 品 、 等 具有很 的 性, 要在 品还具有 性 它 推荐给用户。比如,给用户推荐 天的 然 如给用户推荐今天的 。因此, 在这些网 中,推荐系统的实 性 得至关 要。 推荐系统的实 性包括 个方 。 ,推荐系统 要实 地 推荐 满 用户 的 行为 化。比如,当一个用户 了iPhone,如 推荐系统 给 推荐相关 , 比 天 给用户推荐相关 有价值。很 推荐系统 在 天计算一 用户推 荐 ,然 于在 推荐 给用户。这种设计 然是 法满 实 性的。与用户行 为相应的实 性,可 推荐 的 化 率 评测。如 推荐 在用户有行为 化 大, 者没有 化, 推荐系统的实 性 高。 实 性的 个方 是推荐系统 要 系统的 品推荐给用户。这主要考 了推 荐系统 理 品 的 。关于如 系统的 品推荐给用户,本书 在 的 进行 论, 对于 品推荐 , 可 用用户推荐 中有 大比 的 品是当天 的 评测。 9. 一个 的算法系统 被人 ,这方 的 子 是搜索 。搜索 的作 和 作 常 ,这是因为如 自己的商品 为 搜索 的 一个搜索 , 大的商业 。推荐系统 也 了 的作 题, 性 robust, 性 指标 了一个推荐系统 作 的 。 2011 的推荐系统大 有一个关于推荐系统 性的 程 。作者总结了很 作 方法, 中 名的 是行为 profile injection attack 。 , 大部分推荐系统 是 分析用户的行为实现推荐算法的。比如,亚马逊有一种推荐 商品A的用户也经常 的 商品 。它的主要计算方法是统计 商品A的用户 商品的 。 , 可 很 地 这个算法, 自己的商品在这个推荐 中 得比较高的 名,比如可 很 ,用这些 A和自己的商品。还有一种 主要 对评分系统,比如 的 电 评分。这种 很 , 是 用一 人给自己的商品非常高的评分, 评分行为是推荐系 统 的 要用户行为。 算法 性的评测主要 用 。 ,给 一个 和一个算法,可 用这个算法 给这个 中的用户 推荐 。然 ,用常用的 方法 中 ,然 用算法在 的 上 给用户 推荐 。 , 比较 推荐 的相 度评测算法的 性。如 的推荐 相对于 没有发 大的 化, 算 法比较 。 在实 系统中, 高系统的 性, 了 性高的算法,还有 方法。 参 Neil Hurley的 Tutorial on Robustness of Recommender System ACM RecSys 2011 。
49. 1.3 33 ‰ 设计推荐系统 使用 价比较高的用户行为。比如,如 有用户 行为和用户 1 行为, 主要应该使用用户 行为,因为 要, 行为的 价 大于 行为。 ‰ 在使用 ,进行 测,从 对 进行 理。 10. 目标 很 ,网 评测推荐系统 网 的商业 标是 , 商业 标和网 的 2 是 相关的。一 , 本 的商业 标 是 一个用户给公司 的 。 这 种指标 是很 计算, 是计算一 要比较大的 价。因此,很 公司 自己的 设计 的商业 标。 的网 具有 的商业 标。比如电子商务网 的 标可 是 ,基于 广告 3 的网 商业 标可 是广告 总 ,基于 广告 的网 商业 标可 是广告 总 。因此,设计推荐系统 要考 的商业 标, 网 使用推荐系统的 的 了满 用 户发现 的 ,也 要 用推荐系统 实现商业上的指标。 11. 本 了很 指标, 中有些指标可 4 计算,有些 在 得。但是, 指标很 ,在 指标也很 , 如 优化 指标 高在 指标是推荐系统 的 要 题。关于 这个 题, 然没有 论, 是 系统的 人员有 的 性 。 1-3对 的指标进行了总结。 4 1-3 评测 标的 实 问 实 用户满意度 预测准确度 5 覆盖率 多性 新性 喜度 5 对于可 优化的指标, 个人的 法是应该在给 覆盖率、 性、 性等 , 优化 测准 度。用一个 公 , 实 的优化 标是: 大化 测准 度 6 使得 覆盖率 > A 性>B 性>C 中,A、B、C的取值应该视 的应用 。 7
50. 34 1 的 1.3.3 评测 上一 介绍了很 评测指标,但是在评测系统中还 要考 评测 度,比如一个推荐算法, 虽然 性 好,但可 在 种 性 比较好, 评测 度的 的 是 一个算法 在 性 好。这 可 为 推荐算法取得 好的 性 参考。 一 ,评测 度分为如 3种。 ‰ 用户 主要包括用户的人 统计 、 度 是 是 用户等。 ‰ 包括 品的 性 、流行度、 分 是 是 的 品等。 ‰ 包括 ,是 作 还是 ,是白天还是 上等。 如 在推荐系统评测 告中包 度 的系统评测指标, 地了 推 荐系统性 , 一个 上 比较 的算法的优 ,发现一个 上 比较 的算法的 。
51. 2第 章 2.1 数 35 1 2 为了 推荐结 用户 , 要 》中 , 行 ,也 是 可 了 用户。如 了 一个人 《论 公 用户 的文 和行为了 用户兴趣和 。 3 实现个性化推荐的 理 是用户 在 的 主 告 ,但这种方法有 个 : ,现在的自然 理 技 很 理 用户用 述兴趣的自然 ; ,用户的 兴趣是 化的,但用户 地 兴趣 述; ,很 用户并 自己 , 者很 用 述自己 。因此, 要 算法自 发 用户行为 ,从用 3 户的行为中推测出用户的兴趣,从 给用户推荐满 兴趣的 品。 基于用户行为 的应用 实 在个性化推荐系统 经在互联网上非常流行了, 中 的 是各种各 的 行 。这些 行 包括 行和 行 等。 这些 行 应用 基于 的用户行为统计,但它 在互联网上 得了很 用户的 。因此,用户 4 行为 的分析是很 优秀产品设计的基础,个性化推荐算法 对用户行为的 度分析,可 给用户 好的网 使用 。 用户的行为 是 机的, 是 很 。 一个 的 子,在电子商务网 中, 网 一个 , 电子商务网 , 至 统 业的 包括了 一 分析 务,比如 的 有商品。 分析是很 可 分析 些商品 出现 5 在 中。这 名的 子 是 和 的 子,这个 子是 的经 。这 个 有非常 的 本, 至有人 为这个 本 是一个 。 还是用这个 一 用户行为分析的 要性。这个 的一个 本是 ,有一个 人员发现很 人 和, 为是很 要在家 子, 自己的 , 5 在 的 一 自己 的 ,于是这 个 马 相 的 这 产 联系 了。于是 作人员 和 在了 一个 上,结 这 种商品的 上 了。 人 这个 有 的理 , 从算法设计人员的 度 ,这个 用户行为 中 很是 些 ,从 为产品的设计 的 , 个性化推荐算法的 务 是 指导, 高用户 。 计算机 发现这 6 和 的 在互联网上被发 大。电子商务公司 分析用户的 ,出 如 A商品的用户 B商品 这种 , 在用户 A商品 为 A商品 的用户 的 商品 如 2-1 。 7
52. 36 2 数 取自当当网, 中相关 的 作 2-1 当当网在用户 《 还 的书 作人有 导论》 给用户推荐 本商品的 基于用户行为分析的推荐算法是个性化推荐系统的 要算法, 一 这种 的算法 称为 算法。 名 义, 是指用户可 , 地和网 互 ,使 自己的推荐 自己 兴趣的 品,从 满 自己的 。 2.1 用户行为数据 本 的个性化推荐算法 是基于用户行为 分析设计的,因此本 介绍用户行 为。 用户行为 在网 上 的在 是 。网 在 行 程中 产 大 raw log ,并 在文 系统中。很 互联网业务 种 用户行为 总 话 session log , 中 个 话 一 用户行为和对应的服务。比如,在搜索 和搜索 广告系统中,服务 为 一个 impression log , 中 了 和 结 。如 用户 了 个结 ,这个 被服务 并在 click log 中。 一个并行程 性地 并 和 ,得 的 话 中 个 是一个用户 交 的 、得 的结 。 地,推荐系统和电子商务网 也 总 述用 户行为的 话 。 话 常 在分 中,如 分析的 Hadoop Hive和 在 分析的Google Dremel。这些 了用户的各种行为,如在电子商务网 中这些行 为主要包括网 、 、 、评分和评论等。 用户行为在个性化推荐系统中一 分 种 explicit feedback 和 implicit feedback 。 性 行为包括用户 对 品 好的行为。 2-2 了 网 性 的方 。可 ,这 的主要方 是评分和 / 。很 网 使 用了5分的评分系统 用户 对 品的 好,但也有些网 使用 的 者
53. 2.1 数 37 用户的兴趣。这些 的 性 方 各有 。YouTube 是用5分评分系统 1 性 的,但 的 人员统计了 评分的评分 ,结 发现,用户 常用的 评分是5分, 是1分, 的分 很 有用户 。因此, YouTube 评分系统 了 评分系统 / 。当然, 这个 子并 是试 一种评分系统比 一种好, 是要 的网 YouTube的用户主要 要 自己的 设计评分系统, 在 视频上,因此 有在 是一 满者 网 的设计。 满意 评分, 2 因此 评分系统 了。但如 是评论网 ,用户主要 在评论上,这 评分系 统 是 要的。 3 3 4 分 取自Hulu 、Netflix、Jinni、Pandora、Facebook和Clicker网 , 中 相关 的 作 作人有 2-2 各种 性 和 性 行为相对应的是 性 行为。 性 行为指的是 些 应用户 好 5 的行为。 具 性的 性 行为 是 行为。用户 一个 品的 并 用户 一 这个 的 品,比如可 因为这个 在 ,用户 它。 相比 性 , 性 虽然 ,但 大。在很 网 中,很 用户 至 有 性 , 没有 性 。 2-1从 个 方 比较了 性 和性 。 5 用户兴趣 数量 存储 实时读取 反馈 2-1 数据 数据的 数据 确 较 数据 实时 数据 不确 大 6 分布式文件系统 反馈 7 参 Five Stars Dominate Ratings ,地 为http://youtube-global.blogspot.com/2009/09/five-stars-dominate-ratings.html。
54. 38 2 数 的 性分,用户行为 可 分为 可 分为 和 。 指用户的行为 行为 于指用户 该 品。在 性 中,很 在 性 行为中, 相对比较 。 为了 好地 是性 , 网 中这 种行为的 子。 性 和 性 ,但 于指用户 该 品, 分一个用户行为是 是性 , 2-2 2-2 网 数据 数据的例 的方 分, 指用户的 还是 , 了各个领域的 视频网站 电子商务网站 门户网站 音乐网站 用户对视频的评分 用户对商品的评分 用户对新 的评分 用户对音乐/歌手/专辑的评分 用户观看视频的 购买 、浏览 阅读新 的 歌的 、浏览视频页面的 互联网中的用户行为有很 种,比如 网 、 商品、评论、评分等。要用一个统一的 方 有这些行为是比较 的。 2-3给出了一种 方 ,它 一个用户行为 为6部 分, 产 行为的用户和行为的对 、行为的种 、产 行为的上 文、行为的 和 。 user id item id behavior type context behavior weight behavior content 2-3 用户行为的统 产生行为的用户的 一标 产生行为的对 的 一标 行为的种类(比 是购买还是浏览) 产生行为的上下文,包 时间和地点 行为的权重( 果是观看视频的行为, 这个权重可以是分数) 这个权重可以是观看时长 果是打分行为, 行为的内容( 果是评论行为, 是评论的文本 果是打标签的行为, 是标签) 当然,在很 并 使用统一结 有行为, 是 对 的行为给出 。 且,有些 可 一些 比如上 文 。当然,有些 是 的,比如产 行为的用户和行为的对 是 有行为 包 的。一 ,的 包 的行为, 比较有 性的 有 个。 ‰ 上下文信息的 数据 一 行为 包 用 户 ID 和 品 ID 。 Book-Crossing 是这种 的 。 ‰ 上下文信息的 数据 一 包 用户ID、 品ID和用户对 品的评分。 ‰ 上下文信息的 数据 一 包 用户ID、 品ID和用户对 品产 行 参 Book-Crossing Dataset ,地 为http://www.informatik.uni-freiburg.de/~cziegler/BX/。
55. 2.2 39 为的 。Lastfm ‰ 上下文信息的 是这种 的 。 1 数据 一 包 用户ID、 品ID、用户对 品的评分 和评分行为发 的 。Netflix Prize 的 是这种 的 。 本 使用的 基本 是 一种 , 上文 的性 。 2.2 用户行为分 2 在 用用户行为 设计推荐算法 , 人员 要对用户行为 进行分析,了 中 的一 ,这 对算法的设计 指导作用。本 介绍用户行为 中 的一 ,这些 并 是 在于一 个网 中的 , 是 在于很 网 中的 。3 2.2.1 用户 行 的分 很 关于互联网 的 发现,互联网上的很 分 满 一种称为Power Law 的分 ,这个分 在互联网领域也称 。 3 f (x) D xk 分 实很 被统计 家 意 了。1932 , 大 的 家Zipf在 文 的 频 发现,如 出现的频率 由高 , 个 出现的频率和它在 行 中 名的常 比。这个分 称为Zipf 频 实很 , 有很 的 被经常使用。 。这个现 ,在 文中大部分 的 4 很 人员发现,用户行为 也 这种 。 fu(k)为对k个 品产 行为的用户 , fi(k)为被k个用户产 行为的 品 。 ,fu(k)和fi(k) 满 分 。也 是 : fi k Dik Ei fu k Duk Eu 5 为了 用户行为的 分 , Delicious和CiteULike 一个 的 进行 分析。这 , 没有用Netflix 者MovieLens 是因为这 个 经 了人为的 理, 被 了很 CiteULike 的 , 它 的分 中 品流行度的分 。 网 的 实分 。 2-3 了Delicious和 标是 品的流行度K, 标是流行度为K的 5 品的总 。这 , 品的流行度指对 品产 行为的用户总 。 2-4 了Delicious和 CiteULike 中用户 度的分 。 标是用户的 度K, 标是 度为K的用 户总 。这 ,用户的 度为用户产 行为的 品总 。 6 参 http://www.dtic.upf.edu/~ocelma/MusicRecommendationDataset/lastfm-1K.html。 参 http://netflixprize.com/。 7 参 网络 的Power Law现 ,地 为http://mmdays.com/2008/11/22/power_law_1/。
56. 40 2 数 2-3 品流行度的 分 2-4 用户 度的 分 这 是对 , 分在对 上应该 。这 中的 的 ,从 是 品的流行度还是用户的 度, 于 分, 是 品流行度的 对 ,非常 。
57. 2.3 和 41 2.2.2 用户 行的系 1 一 , 的用户要 是 用户,要 是 网 一 的 用户。 , 度的用户 的 品的流行度是 有 一 为, 用户 于 的 品,因为 对网 还 , 的 品, 用户 开 的 品。 2-5 了MovieLens 中用户 度和 品流行度 的关系, 中 标是用户 度, 2 标是具有 个 度的 有用户评 分的 品的 流行度。如 2-5 , 中 的 ,这 用户 , 于 的 品。 3 3 4 2-5 MovieLens 中用户 度和 品流行度的关系 5 基于用户行为 设计的推荐算法一 称为 算法。 对 算法 进行了 , 出了很 方法,比如 的 neighborhood-based 、 latent factor model 、 的 random walk on graph 等。在这些方法中, 名的、在业 得 广泛应用的算法是基于 域的方法, 基于 域的方法主要包 5 种算法。 ‰ 用户的 这种算法给用户推荐和 兴趣相 的 用户 的 品。 ‰ 的 这种算法给用户推荐和 的 品相 的 品。 介绍上 种算法,然 介绍 义 和基于 的 。 6 2.3 实 评测 文 ,评测推荐系统有3种方法 实 、用户 和在 实 。本 实 方法评测 的算法。 介绍用 的 ,然 介绍采用的实 方法和评测指标。 7
58. 42 2 数 2.3.1 数据 本 采用GroupLens 的MovieLens 介绍和评测各种算法。 MovieLens 有3个 的 本,本 用中等大 的 。该 包 6000 用户对4000 部电 的100 评分。该 是一个评分 ,用户可 给电 评5个 等 的分 1 5分 。本 中的TopN推荐 题,因此 了 中的评分 。也 是 ,TopN推荐 的 务是 测用户 对 部电 评分, 是 测用户在准 对 部电 评分的 给 电 评 分。 2.3.2 实 算法的 实 一 如 设计。 , 用户行为 分 机分 M 本 取M=8 , 一 作为测试 , 的M-1 作为 。然 在 上 用户 兴趣 ,并在测试 上对用户行为进行 测,统计出相应的评测指标。为了 评测指标并 是 的结 , 要进行M 实 ,并且 使用 的测试 。然 M 实 测出的评 测指标的 值作为 的评测指标。 的Python 述了 机分 和测试 的 程: def SplitData(data, M, k, seed): test = [] train = [] random.seed(seed) for user, item in data: if random.randint(0,M) == k: test.append([user,item]) else: train.append([user,item]) return train, test 这, 实 得 M个 的 标。这 主要是 ,为了 取 的k 0 k M1 和相 的 机 种子seed,进行M 和测试 ,然 分 进行实 ,用M 实 的 值作为 实 的结 是 的结 over fitting ,但如 实 地 算法,也可 进行一 实 。 实可 的评测指 大, 2.3.3 评测 标 对用户u推荐N个 品 为R(u) , 用户u在测试 上 准 率/ 率评测推荐算法的 度: ¦ R(u)  T (u) Recall = u ¦ T (u) u 的品 为T(u),然 可 http://www.grouplens.org/node/73。
59. 2.3 和 43 率 述有 的推荐 中有 的计算方法。 ¦ R(u)  T (u) Precision = u ¦ R(u) u 比 的用户 品评分 包 在 的推荐 比 是发 的用户 品评分 。 1 中, 准 率 述 给出了 率和准 率 2 def Recall(train, test, N): hit = 0 all = 0 for user in train.keys(): tu = test[user] 3 rank = GetRecommendation(user, N) for item, pui in rank: if item in tu: hit += 1 all += len(tu) return hit / (all * 1.0) 3 def Precision(train, test, N): hit = 0 all = 0 for user in train.keys(): tu = test[user] rank = GetRecommendation(user, N) for item, pui in rank: 4 if item in tu: hit += 1 all += N return hit / (all * 1.0) 了评测推荐算法的 度,本 还计算了算法的覆盖率,覆盖率 了推荐算法发 ,覆盖率 高, 推荐算法 中的 品推荐给用户。这 , 采用 的5 的 覆盖率 义: 该覆盖率 的推荐 Coverage * uU R(u) I 中包 大比 的 品。如 有的 品 被推荐给至 一个 5 用户, 覆盖率 是100%。如 可 用 计算推荐算法的覆盖率: def Coverage(train, test, N): recommend_items = set() all_items = set() for user in train.keys(): 6 for item in train[user].keys(): all_items.add(item) rank = GetRecommendation(user, N) for item, pui in rank: recommend_items.add(item) return len(recommend_items) / (len(all_items) * 1.0) 7
60. 44 2 数 , 还 要评测推荐的 度,这 用推荐 中 品的 度。如 推荐出的 品 很 , 推荐的 度较 , 流行度度 推荐结 的 推荐结 比较 。 def Popularity(train, test, N): item_popularity = dict() for user, items in train.items(): for item in items.keys() if item not in item_popularity: item_popularity[item] = 0 item_popularity[item] += 1 ret = 0 n=0 for user in train.keys(): rank = GetRecommendation(user, N) for item, pui in rank: ret += math.log(1 + item_popularity[item]) n += 1 ret /= n * 1.0 return ret 这 ,在计算 流行度 对 个 品的流行度取对 ,这是因为 品的流行度分 满 分 ,在取对 ,流行度的 值 。 2.4 的 基于 域的算法是推荐系统中 基本的算法,该算法 在 得了 , 且在 业 得 了广泛应用。基于 域的算法分为 大 ,一 是基于用户的 算法, 一 是 基于 品的 算法。 对这 种算法进行 介绍,对比它 的优 并 出 进方 。 2.4.1 用户的 基于用户的 算法是推荐系统中 的算法。可 了推荐系统的 。该算法在1992 被 出,并应用于 于 。在此 2000 ,该算法 是推荐系统领域 行 介绍, 介绍 基础的算法,然 在此基础上 出 进行评测。 地 ,这个算法的 标 系统,1994 被GroupLens用 名的算法。本 对该算法进 的 进方法,并 实的 1. 应该 开 , 进实 的 总 论文 等。这个 , 一 相 的 题,比如 应该 业书 、 给 出一些推荐。这 是现实中个性化 推荐的一种 子。在这个 子中, 可 很 ,然 出 的 。 ,一方 是因为 有社 关系,互相 且 对方,但 主要的 因是 和 有 的 领域和兴趣。 ,在一个在 个性化推荐系统中,当一个用户A 要个性化推荐 ,可 和 有相 兴趣的 用户,然 些用户 的、 用户A没有 的
61. 2.4 的 45 品推荐给A。这种方法称为 的 。 1 从上 的 述中可 ,基于用户的 算法主要包括 个 。 (1) 和 标用户兴趣相 的用户 。 (2) 这个 中的用户 的,且 标用户没有 的 品推荐给 标用户。 (1)的关 是计算 个用户的兴趣相 度。这 , 算法主要 用行为的相 度 计算兴趣的相 度。给 用户u和用户v, N(u) 用户u 经有 的 品 , N(v) 2 为用户v 经有 的品 。 , 可 如 的Jaccard公 地计算u和v的 兴趣相 度: N (u)  N (v) wuv N (u) * N (v) 3 者 相 度计算: 2-6中的用户行为 N (u)  N (v) wuv N (u) N (v) 为, UserCF计算用户兴趣相 度的 子。在该 3 中,用户A对 品{a, b, d}有 行为,用户B对 品{a, c}有 行为, 用 相 度公 计算用 户A和用户B的兴趣相 度为: {a,b, d}{a,c} 1 wAB {a,b, d} {a,c} 6 4 5 2-6 用户行为 5 理, 可 计算出用户A和用户C、D的相 度: {a,b, d}{b, e} 1 wAC {a,b, d} {b, e} 6 {a,b, d}{c, d, e} 1 6 wAD {a,b, d} {c, d, e} 3 相 度为 ,实现该相 度可 用如 的 : def UserSimilarity(train): W = dict() 7 for u in train.keys():
62. 46 2 数 for v in train.keys(): if u == v: continue W[u][v] = len(train[u] & train[v]) W[u][v] /= math.sqrt(len(train[u]) * len(train[v]) * 1.0) return W 该 对 用户 用 相 度计算相 度。这种方法的 度是O( U * U ),这在 用户 很大 非常 。 实上,很 用户相互 并没有对 的 品产 行为, 很 N (u)  N (v) 0 。上 的算法 很 在了计算这种用户 的相 度上。如 一 个,可 计算出 N (u)  N (v) z 0 的用户对(u,v),然 对这种 分 N (u) N (v) 。 为此,可 品 用户的 ,对于 个 品 对该 品产 行为的用户 。 C[u][v]= N (u)  N (v) 。 , 设用户u和用户v 于 中K个 品对 应的用户 , 有C[u][v]=K。从 ,可 中的 用户对应的C[u][v] 1, 可得 中 个 品对应的用户 , 用户 有用户 为0的C[u][v]。 的 实 现了上 的算法: def UserSimilarity(train): # build inverse table for item_users item_users = dict() for u, items in train.items(): for i in items.keys(): if i not in item_users: item_users[i] = set() item_users[i].add(u) #calculate co-rated items between users C = dict() N = dict() for i, users in item_users.items(): for u in users: N[u] += 1 for v in users: if u == v: continue C[u][v] += 1 #calculate finial similarity matrix W W = dict() for u, related_users in C.items(): for v, cuv in related_users.items(): W[u][v] = cuv / math.sqrt(N[u] * N[v]) return W 2-6中的用户行为为 上 的算法。 , 要 品 用户的 如 2-7 。然 , 一个4 4的用户相 度 W,对于 品a, W[A][B]和W[B][A] 1,对 于 品b, W[A][C]和W[C][A] 1, 此 推。 有品, 可得 的W 。 这 的W是 相 度中的分子部分,然 W 分 可 得 的用户兴趣相 度。
63. 2.4 的 47 1 2 3 3 2-7 品 用户 得 用户 的兴趣相 度 ,UserCF算法 给用户推荐和 兴趣 相 的K个用户 的 品。如 的公 度 了UserCF算法中用户u对 品i的 兴趣程度: p(u, i) ¦ wuv rvi 4 vS (u,K ) N (i) 中,S(u, K)包 和用户u兴趣 的K个用户,N(i)是对 品i有 行为的用户 ,wuv 是用户u和用户v的兴趣相 度,rvi 用户v对 品i的兴趣,因为使用的是 一行为的 , 有的rvi=1。 5 如 实现了上 的UserCF推荐算法: def Recommend(user, train, W): rank = dict() interacted_items = train[user] for v, wuv in sorted(W[u].items, key=itemgetter(1), \ reverse=True)[0:K]: 5 for i, rvi in train[v].items: if i in interacted_items: #we should filter items user interacted before continue rank[i] += wuv * rvi return rank 6 用上述算法,可 给 2-7中的用户A进行推荐。 取K=3,用户A对 品c、e没有 行为, 因此可 这 个 品推荐给用户A。 UserCF算法,用户A对 品c、e的兴趣是: p( A, c) wAB  wAD 0.7416 p( A, e) wAC  wAD 0.7416 7
64. 48 2 数 2-4 MovieLens 上的 实 评测基础算法的性 。UserCF 有一个 要的参 K, 为 个用户 出K个和 兴趣 相 的用户,然 推荐 K个用户 兴趣的 品。因此 实 测 了 K值 UserCF算法的性 指标。 2-4 MovieLens数据 UserCF K 数下的 K 行 5 16.99% 8.21% 51.33% 6.813293 10 20.59% 9.95% 41.49% 6.978854 20 22.99% 11.11% 33.17% 7.10162 40 24.50% 11.83% 25.87% 7.203149 80 25.20% 12.17% 20.29% 7.289817 160 24.90% 12.03% 15.21% 7.369063 为了 该 上 算法的基本性 , 2-5给出了 种基本推荐算法的性 。 中, Random算法 机 10个用户没有产 行为的 品推荐给当 用户,MostPopular算法 品的流行度给用户推荐 没有产 行为的 品中 的10个 品。这 种算法 是 非个性化的推荐算法,但它 了 个 。如 2-5 ,MostPopular算法的准 率和 率 高于Random算法,但它的覆盖率非常 ,结 非常 。可 ,Random算法的准 率 和 率很 ,但覆盖度很高,结 流行度很 。 2-5 MovieLens数据 下的 Random MostPopular 0.631% 12.79% 0.305% 6.18% 100% 2.60% 行 4.3855 7.7244 如 2-4和 2-5 ,UserCF的准 率和 率相对MostPopular算法 高了 1 。 , UserCF的覆盖率 高于MostPopular,推荐结 相对MostPopular 。 可 发现参 K 是UserCF的一个 要参 ,它的 对推荐算法的各种指标 产 一 的 。 ‰ 可 ,推荐系统的 度指标 准 率和 率 并 和参 K 性关系。在MovieLens 中, K=80 得比较高的准 率和 率。因此 的K对于 得高的推荐系统 度比较 要。当然,推荐结 的 度对K也 是 , 要 在一 的 域 , 可 得 的 度。 ‰行 可 ,在3个 上K 大 UserCF推荐结 。这是因为K决 了UserCF在给 推荐 参考 和 兴趣相 的 用户的兴趣, 如 K 大,参 考的人 ,结 于 的 品。 ‰ 可 ,在3个 上,K 大 UserCF推荐结 的覆盖率 。覆盖率的 是因为流行度的 , 流行度 ,UserCF 于推荐 的 品,从 对 品的推荐 ,因此 了覆盖率的 。
65. 2.4 的 49 2. 用户 的 上一 介绍了计算用户兴趣相 度的 的公 1 相 度公 ,但这个公 于 ,本 论如 进该公 高UserCF的推荐性 。 , 书为 ,如 个用户 经 《 》,这 兴趣相 , 因为 大 中 人 《 为 的兴趣比较相 ,因为 有 》。但如 个用户 《 导论》, 可 的人 这本书。 话 , 个用户对 2 品采取 的行为 兴趣的相 度。因此,John S. Breese在论文 中 出了 如 公 , 用户行为计算用户的兴趣相 度: ¦1 iN (u)N (v) log1  N (i) 3 wuv N (u) N (v) 可 ,该公 1 log1 N (i) 了用户u和用户v 兴趣 中 品对 相 度的 。 3 本书 基于上述用户相 度公 的UserCF算法 为User-IIF算法。 的 实现了上述用 户相 度公 。 def UserSimilarity(train): # build inverse table for item_users item_users = dict() 4 for u, items in train.items(): for i in items.keys(): if i not in item_users: item_users[i] = set() item_users[i].add(u) #calculate co-rated items between users 5 C = dict() N = dict() for i, users in item_users.items(): for u in users: N[u] += 1 for v in users: if u == v: 5 continue C[u][v] += 1 / math.log(1 + len(users)) #calculate finial similarity matrix W W = dict() for u, related_users in C.items(): 6 for v, cuv in related_users.items(): W[u][v] = cuv / math.sqrt(N[u] * N[v]) return W 参 John S. Breese、 David Heckerman和 Carl Kadie的论文 Empirical Analysis of Predictive Algorithms for 7 Collaborative Filtering Morgan Kaufmann Publishers,1998 。
66. 50 2 数 ,本 实 评测UserCF-IIF的推荐性 ,并 和UserCF进行对比。在上一 的 实 中,K=80 UserCF的性 好,因此这 的实 取K=80。 如 2-6 ,UserCF-IIF在各 性 上 优于UserCF。这 在计算用户兴趣相 度 考 品的流行度对 推荐结 的 实有 。 UserCF UserCF-IIF 2-6 MovieLens数据 UserCF 25.20% 25.34% 12.17% 12.24% User-IIF 的 20.29% 21.29% 行 7.289817 7.261551 3. 实 系统 用UserCF的例 相比 要 论的基于 品的 算法 ItemCF , UserCF在 的实 应用中使 用并 。 中 名的使用者是Digg,它在2008 对推荐系统进行了 的 试 。Digg使用推 荐系统的 因也是 ,它的 人员经 统计发现, 天大 有15 000 的文 , 个用户的 是有 的, 且兴趣 很大。因此Digg 得应该 推荐系统 用户从这 文中 兴趣的 , 使 文 有机 被 给用户。 Digg的推荐系统设计 如 。用户在Digg中主要 和 如2-8 , 的个 是 和 的 种行为 自己对文 的 法。当用户 了一 文 ,Digg 为该用户对这 文 有兴趣, 且 意 这 文 推荐给 用户。然 ,Digg 有在该用户 文 也 了这一 文 的 用户,然 给 推荐 些人 的 文 。从这 的 述可 ,Digg使用的是UserCF算法的 化 本。 Digg在 中公 了使用推荐系统 的 ,主要指标如 。 ‰ 用户 :用户 和 的行为 了40%。 ‰ 个用户 从34个具相 兴趣的好友 得200 推荐结 。 ‰ 用户和好友的交互 度 了24%。 ‰ 用户评论 了11%。 当然,上 是对比了使用推荐系统 和使用推荐系统 的结 ,并非AB测试的结 ,因 此还 具有 服 ,但还是部分 了推荐系统的有 性。 参 Digg的 方 http://about.digg.com/blog/digg-recommendation-engine-updates,关于Digg的推荐算法的 设计参 http://vimeo.com/1242909?pg=embed&sec=1242909 的 。
67. 2.4 的 51 1 2 3 3 取自Digg网 , 中相关 的 作 作人有 2-8 Digg的My News 4 2.4.2 的 基于 品的 item-based collaborative filtering 算法是 业 应用 的算法。 论是亚马逊网,还是Netflix、Hulu、YouTube, 推荐算法的基础 是该算法。本 的算法开 介绍,然 出算法的 进方法,并 实 评测该算法。 从基础 5 1. 基于用户的 算法在一些网 如Digg 中得 了应用,但该算法有一些 。 , 网 的用户 大,计算用户兴趣相 度 ,算 度和空 度的 和用户 的 于 方关系。 ,基于用户的 很 对推荐结 作 5 出 。因此, 名的电子商务公司亚马逊 出了 一个算法 基于 品的 算法 。 基于 品的 算法 称ItemCF 给用户推荐 些和 的 品相 的 品。 比如,该算法 因为 《 导论》 给 推荐《机 》。 ,ItemCF算法并 用 品的 性计算 品 的相 度,它主要 分析用户的行为 计算 品 的 6 相 度。该算法 为, 品A和 品B具有很大的相 度是因为 品A的用户大 也 品 B。 2-9 了亚马逊在iPhone商品 上 的与iPhone相关的商品, 相关商品 是 参 Linden Greg、Smith Brent和 York Jeremy的 Amazon.com Recommendations: Item-to-Item Collaborative Filtering. 7 IEEE Internet Computing, 2003 。
68. 52 2 数 iPhone的用户也经常 基于 品的 荐《天 部》的 频推荐 用ItemCF给 者 的视频。 的 商品。 算法可 用用户的 行为给推荐结 推荐 ,比如给用户推 可 是因为用户 《 》。如2-10 ,Hulu在个性化视 个推荐结 了一个推荐 , 用于 的视频 是用户 取自亚马逊网 , 中相关 的 作 作人有 2-9 亚马逊 的用户 iPhone 还 的 商品 取自Hulu网 , 中相关 的 作 作人有 2-10 Hulu的个性化视频推荐
69. 2.4 的 53 基于 品的 算法主要分为 。 1 (1) 计算 品 的相 度。 (2) 品的相 度和用户的 行为给用户 推荐 。 2-9上亚马逊 相关 品推荐 的标题是 Customers Who Bought This Item Also Bought 了该商品的用户也经常 的 商品 。从这 话的 义出发, 可 用 的公 义 品的相 度: 2 N (i)  N ( j) wi j N (i) 这 ,分 N(i) 是 品i的用户 , 分子 N (i)  N ( j) 是 。因此,上述公 可 理 为 品i的用户中有 比 的用户也 品i和 品j的用户 品j。 3 上述公 虽然 很有 理,但是 在一个 题。如 品j很 ,很 人 , Wij 很大, 对于 于 1。因此,该公 的推荐系统 品 和 的 品有很大的相 度,这 然 是一个好的 性。为了 推荐出 的 品, 可 用 的公 : 3 N (i)  N ( j) wi j N (i) N ( j) 这个公 了 品j的 ,因此 了 品 和很 品相 的可 性。 从上 的 义可 ,在 ,也 是 个用户 可 中 个 品产 相 度是因为它 被很 用户 4 的 兴趣 给 品 相 度。这 一 个 设, 是 个用户的兴趣 在 个方 ,因此如 个 品 于一个用户的兴趣 , 这 个 品可 于有 的 个领域, 如 个 品 于很 用户的兴趣 , 它 可 于 一个领域,因 有很大的相 度。 和UserCF算法 ,用ItemCF算法计算 品相 度 也可 用户 品 5 对 个用户 一个包 的 品的 ,然 对于 个用户, 品 中的 品 在 现 C中 1。 如 : def ItemSimilarity(train): #calculate co-rated users between items C = dict() 5 N = dict() for u, items in train.items(): for i in users: N[i] += 1 for j in users: if i == j: continue 6 C[i][j] += 1 #calculate finial similarity matrix W W = dict() for i,related_items in C.items(): for j, cij in related_items.items(): W[u][v] = cij / math.sqrt(N[i] * N[j]) 7 return W
70. 54 2 数 2-11是一个 上 的程 计算 品相 度的 , 一行 一个用户 兴趣的 品 。然 ,对于 一,得 一个 。 这些 相 得 上 的C 和 品j的用户 。 , C 一化可 得 品 子。 中 是 的用户行为 个品 , 的品 。 中C[i][j] 了 品i 的 相 度 W。 2-11 一个计算 品相 度的 子 2-7 了在MovieLens 上 用上 的程 计算电 相 度的结 。如 中结 , 在计算 程中没有 用 性,但 用ItemCF计算的结 是可 从 上 出 种相 度的。一 , 系 的电 、 主 的电 、 的电 、 家和地 的电 有比较大的相 度。 2-7 利用ItemCF MovieLens数据 上 的 Aladdin (1992) Aladdin (1992) Aladdin (1992) Aladdin (1992) Aladdin (1992) Drunken Master (1979) Drunken Master (1979) Drunken Master (1979) Lion King, The (1994) Beauty and the Beast (1991) Toy Story (1995) Little Mermaid, The (1989) Forrest Gump (1994) Akira (1988) Hard-Boiled (Lashou shentan) (1992) Rumble in the Bronx (1995) 0.5685 0.5634 0.5292 0.5227 0.4589 0.2086 0.2058 0.1942
71. 2.4 的 55 1 Drunken Master (1979) Drunken Master (1979) Police Story 4: Project S (Chao ji ji hua) (1993) Jackie Chan’s First Strike (1996) 0.1917 0.1911 Toy Story (1995) Toy Story (1995) Toy Story (1995) Toy Story (1995) Toy Story (1995) Groundhog Day (1993) Toy Story 2 (1999) Aladdin (1992) Matrix, The (1999) Back to the Future (1985) 0.5373 2 0.5314 0.5291 0.5012 0.4980 Sixth Sense, The (1999) Sixth Sense, The (1999) Sixth Sense, The (1999) Sixth Sense, The (1999) Sixth Sense, The (1999) Silence of the Lambs, The (1991) American Beauty (1999) Fargo (1996) Being John Malkovich (1999) Usual Suspects, The (1995) 0.5499 3 0.5466 0.5250 0.5242 0.5231 Matrix, The (1999) Terminator 2: Judgment Day (1991) 3 0.6691 Matrix, The (1999) Total Recall (1990) 0.6282 Matrix, The (1999) Men in Black (1997) 0.6210 邮 Matrix, The (1999) Jurassic Park (1993) 0.6130 Matrix, The (1999) Star Wars: Episode IV - A New Hope (1977) 0.6008 电 4 Forrest Gump (1994) Groundhog Day (1993) 0.5568 Forrest Gump (1994) Men in Black (1997) 0.5067 Forrest Gump (1994) As Good As It Gets (1997) 0.5026 Forrest Gump (1994) Ghost (1990) 0.5020 Forrest Gump (1994) Toy Story (1995) 0.4948 5 在得 品 的相 度 ,ItemCF 如 公 计算用户u对一个 品j的兴趣: puj ¦ wji rui iN (u )S ( j,K ) 这 N(u)是用户 的 品的 ,S(j,K)是和 品j 相 的K个 品的 ,wji是 品j和i 的相 度,rui是用户u对 品i的兴趣。 对于 ,如 用户u对 品i有 行为, 可 5 rui=1。 该公 的 义是,和用户 上 兴趣的 品 相 的 品, 有可 在用户的推荐 中 得比较高的 名。该公 的实现 如 。 def Recommendation(train, user_id, W, K): rank = dict() ru = train[user_id] 6 for i,pi in ru.items(): for j, wj in sorted(W[i].items(), / key=itemgetter(1), reverse=True)[0:K]: if j in ru: continue rank[j] += pi * wj return rank 7
72. 56 2 数 2-12是一个基于 品推荐的 子。该 子中,用户 《C++ Primer中文 》和《 程 》 本书。然 ItemCF 为这 本书分 出和它 相 的3本书,然 公的 义计算用户对 本书的 兴趣程度。比如,ItemCF给用户推荐《算法导论》,是因为这本书和《C++ Primer中文 》相 ,相 度为0.4, 且这本书也和《 程 》相 ,相 度是0.5。考 用户对《C++ Primer中文 》的兴趣度是1.3,对《 程 》的兴趣度是0.9, 用户对《算 法导论》的兴趣度 是1.3 0.4 + 0.9 0.5 = 0.97。 2-12 一个 的基于 品推荐的 子 从这个 子可 ,ItemCF的一个优 是可 推荐 , 用用户 上 的 品为现在的推荐结 进行 。如 实现了 的ItemCF算法: def Recommendation(train, user_id, W, K): rank = dict() ru = train[user_id] for i,pi in ru.items(): for j, wj in sorted(W[i].items(), / key=itemgetter(1), reverse=True)[0:K]: if j in ru: continue rank[j].weight += pi * wj rank[j].reason[i] = pi * wj return rank
73. 2.4 的 57 2-8 出了在MovieLens 括算法在 K值 的性 。 上ItemCF算法 实 的各 性 指标的评测结 。该 包 1 2-8中的 可 得出如 结论。 ‰ 可 ItemCF推荐结 的 度也是 和K 相关 者 相 关的,因此 的K对 得 高 度是非常 要的。 ‰ 行 和UserCF ,参 K对ItemCF推荐结 流行度的 也 是 K的 ,结 流行度 高,但当K 一 程度,流行度 相关的。 有 2 化。 ‰ K 系统的覆盖率。 2-8 MovieLens数据 ItemCF 实的 3 K 行 5 21.47% 10.37% 21.74% 7.172411 10 22.28% 10.76% 18.84% 7.254526 20 22.24% 10.74% 16.93% 7.338615 40 21.68% 10.47% 15.31% 7.391163 3 80 20.64% 9.97% 13.64% 7.413358 160 19.37% 9.36% 11.77% 7.385278 2. 用户 的 从 的兴趣 的 论可 ,在 中 个 品产 相 度是因为它 出现在很 用户 4 中。 话 , 个用户的兴趣 对 品的相 度产 。 ,是 是 个 用户的 相 设有这 一个用户, 是开书 的,并且 了当当网上80%的书准 用 自己 。 , 的 包 当当网80%的书。 设当当网有100 本书,也 是 对ItemCF的 论可 ,这意 因为 在这 一个用户,有80 本书 了80 本。从 产 了相 5 度,也 是 , 一个80 80 的 。 可 ,这个用户虽然 ,但是 这些书并非 是出于自 的兴趣, 且这些书覆 盖了当当网 书的很 领域, 这个用户对于 个 了 本自己 的书的文 。 书的 相 度的 应该 于一 5 John S. Breese在论文 中 出了一个称为IUF Inverse User Frequence , 用户 度对 的 的参 , 也 为 用户对 品相 度的 应该 于 的用户, 出应该 IUF 参 品相 度的计算公 : ¦1 uN (i)N ( j) log1  N (u) 6 wij N (i) N ( j) 参 John S. Breese、 David Heckerman和 Carl Kadie的 Empirical Analysis of Predictive Algorithms for Collaborative 7 Filtering Morgan Kaufmann Publishers ,1998 。
74. 58 2 数 当然,上 的公 是对 用户 了一种 性的 上 了当当网80% 书的用户,为了 相 度 的兴趣 , 相 度计算的 ,但对于很 于, 中。 于 的用户,比如 在实 计算中一 def ItemSimilarity(train): #calculate co-rated users between items C = dict() N = dict() for u, items in train.items(): for i in users: N[i] += 1 for j in users: if i == j: continue C[i][j] += 1 / math.log(1 + len(items) * 1.0) #calculate finial similarity matrix W W = dict() for i,related_items in C.items(): for j, cij in related_items.items(): W[u][v] = cij / math.sqrt(N[i] * N[j]) return W 本书 上 的算法 为ItemCF-IUF, 用 实 评测这个算法。在这 考 参 K的 , 是 K 为在 实 中取得 优准 率和 率的值10。 如 2-9 ,ItemCF-IUF在准 率和 率 个指标上和ItemCF相 ,但ItemCF-IUF 高了推荐结 的覆盖率, 了推荐结 的流行度。从这个意义上 ,ItemCF-IUF 实 进了 ItemCF的 性 。 2-9 MovieLens数据 ItemCF ItemCF ItemCF-IUF 22.28% 22.29% 10.76% 10.77% ItemCF-IUF 的 18.84% 19.70% 行 7.254526 7.217326 3. Karypis在 的 中发现如 ItemCF的相 度 大值 一化,可 高推荐的准 率。 ,如 经得 了 品相 度 w, 可 用如 公 得 一化 的相 度 w': wi'j wij max j wij 实, 一化的好 在于 推荐的准 度,它还可 高推荐的覆盖率和 性。 一 , 品总是 于很 的 , 一 中的 品联系比较 。 一个 子, 设在一 参 George Karypis的论文 Evaluation of Item-based Top-N Recommendation Algorithms 。
75. 2.4 的 59 个电 网 中,有 种电 的相 度 者 和 和 。 ,ItemCF算出 的相 度一 是 的相 度大于 和 的相 度。但是 和1 的 相 度和 的相 度 一 相 。 设 品分为 A和B,A 品 的相 度为0.5,B 品 的相 度为0.6, A 品和B 品 的相 度是0.2。在这种 , 如 一个用户 了5个A 品和5个B 品,用ItemCF给 进行推荐,推荐的 是B 品, 因为B 品 的相 度大。但如 一化 ,A 品 的相 度 了1,B 品 2 的相 度也是1, 这种 ,用户如 5个A 品和5个B 品, 的推荐 中A 品和B 品的 也应该是大 相等的。从这个 子可 出,相 度的 一化可 高推荐的 性。 ,对于 个 的 , 的 品 的相 度高, 的 品3 相度 一 ,的 品相 度一 比较大。如 进行 一化, 推荐 比较 的 的 品, 这些 品也是比较 的。因此,推荐的覆盖率 比较 。相 , 如 进行相 度的 一化, 可 高推荐系统的覆盖率。 2-10对比了ItemCF算法和ItemCF-Norm算法的 实 性 。从实 结 可 化 实 高ItemCF的性 , 中各 指标 有了比较 的 高。 ,一 3 2-10 MovieLens数据 ItemCF ItemCF-Norm 的 ItemCF ItemCF-Norm 22.28% 22.73% 10.76% 10.98% 18.84% 23.73% 行 7.254526 4 7.157385 2.4.3 UserCF ItemCF的 UserCF 是 推 荐 系 统 领 域 较 为 的 算 法 , 1992 经在电子 5 的个性化推荐系统 Tapestry中得 了应用,1994 被GroupLens 用 实现 的个性化推荐, 被 名的文 分 网 Digg用 给用户推荐个性化的网络文 。ItemCF 是相对比较 的算法,在 名的电子商 务网 亚马逊和DVD 网 Netflix中得 了广泛应用。 ,为 Digg使用UserCF, 亚马逊网使用ItemCF 5 一 UserCF算法和ItemCF算法的推荐 理。UserCF给用户推荐 些和 有 兴 趣 好的用户 的 品, ItemCF给用户推荐 些和 的 品 的 品。从这个算 法的 理可 ,UserCF的推荐结 于 和用户兴趣相 的 的 , ItemCF 的推荐结 于 系用户的 兴趣。 话 ,UserCF的推荐 社 化, 了用户 在的 6 兴趣 中 品的 程度, ItemCF的推荐 个性化, 了用户自己的兴趣 。 一个 网络 的开 。 参 Linden Greg、Smith Brent 和York Jeremy的 Amazon.com recommendations: item-to-item collaborative filtering 7 IEEE Internet Computing,2003 。
76. 60 2 数 在 网 中,用户的兴趣 是 化, 大 用户 的 。 使是个性 化,也是比较 度的,比如有些用户 ,有些 社 , 度的个性 化一 是 在的。比方 ,很 有用户 个话题的 ,主要是因为这个话题 可 天 有 的 , 这个用户 是 天 要 的。因此,个性化 推荐 , 程度和 性是个性化 推荐的 , 个性化相对于这 要。因 此,UserCF可 给用户推荐和 有相 好的一 用户今天 在 的 ,这 在 和 性的 , 了一 程度的个性化。这是Digg在 推荐中使用UserCF的 要 因。 UserCF 用于 推荐的 一个 因是从技 度考 的。因为作为一种 品, 的 非常 , 有 出现, ItemCF 要 一 品相关度的 ,如 品 很 , 这 也 要很 ,这在技 上很 实现。 大 品相关度 一天 一 ,这在 领域是 可 的。 UserCF 要用户相 性 ,虽然UserCF对于 用户也 要 相 度 ,但在 网 中, 品的 度 于 用户的 度, 且 对于 用户, 可 给 推荐 的 ,因此UserCF 然是 大于 。 但是,在 书、电子商务和电 网 ,比如亚马逊、 、Netflix中,ItemCF 大地发 优 。 ,在这些网 中,用户的兴趣是比较 和 的。一个技 人员可 是在 技 方 的书, 且 对书的 程度并 是 , 实上 是 的技 人员, 的书 可 。此 ,这些系统中的用户大 要流行度 一个 品的 好 , 是可 自己 领域的 自己 品的 。因此,这些网 中个性化推荐的 务是 用户发现和 领域相关的 品。因此,ItemCF算法 为了这些网 的 算法。 此 ,这些网 的 品 度 ,一天一 品相 度 对它 大的 ,是可 的。 ,从技 上考 ,UserCF 要 一个用户相 度的 , ItemCF 要 一个 品 相 度 。从 的 度 ,如 用户很 , 用户兴趣相 度 要很大的空 , 理,如 品很 , 品相 度 价较大。 在 的 中,大部分 人员 是 的用户对大 的 品进行评价,然 用 户兴趣的 。 ,对于 ,因为用户很 ,计算用户兴趣相 度是 也是 的方法。但在实 的互联网中,用户 非常 大, 在 书、电子商务网 中, 品的 是比较 的。此 , 品的相 度相对于用户的兴趣一 比较 ,因此使用ItemCF是 比较好的 。当然, 网 是个 ,在 , 品的相 度 化很 , 品 大, 相 用户兴趣 相对 是 的, 网 的个性化推荐使用UserCF算法的 。 2-11从 的 度对比了UserCF和ItemCF算法。 , 也 的 实结 在 2-13、 2-14和 2-15中。从 中可 ,ItemCF算法在各 指标上 如UserCF, 是 推荐结 的覆盖率和 度 于UserCF,这一 和 论的 。
77. 性能 实时性 冷启动 推荐 2.4 的 61 2-11 UserCF ItemCF 的 1 UserCF ItemCF 用于用户较 的 合, 果用户 多,计算用户 相似度 代 大 用于物品数 显 于用户数的 合, 果物品 多(网页),计算物品相似度 代 大 时效性较 ,用户个性化兴趣不 显的 长尾物品 ,用户个性化需 的 2 用户 新行为,不一定 成推荐结果的 变化 用户 新行为,一定会导 推荐结果的实时变化 在新用户对 的物品产生行为后,不能 对他 新用户 要对一个物品产生行为, 可以给他推 进行个性化推荐,因为用户相似度表是 隔一段时 荐和该物品相关的其他物品 间离线计算的 新物品上线后一段时间,一 用户对物品产生行 法在不离线 新物品相似度表的情 3 为, 可以 新物品推荐给和对 产生行为的用户 下 新物品推荐给用户 兴趣相似的其他用户 提供 用户信 的推荐解 利用用户的 行为给用户 推荐解 ,可以 用户比较信 3 4 5 5 6 2-13 UserCF和ItemCF算法在 K值 的 率 7
78. 62 2 数 2-14 UserCF和ItemCF算法在 K值 的覆盖率 2-15 UserCF和ItemCF算法在 K值 的流行度 要指出的是, 实 ,比如如 要 推荐 用户 ,很 计算用户相 和 率等在 指标 一 的性 , 度 比。 在 推荐算法 并 决 作用。 应该满 产品的 可 得 ItemCF算法。 , 要 实现 价,比如 ,这个 可 得 UserCF算法。 , 指标 且,这 对比的是 的UserCF和ItemCF算法,这 种
79. 2.4 的 63 算法 可 进行各种各 的 进。一 的。 ,这 种算法经 优化 , 得 的 性 是 1 一 分析为 ItemCF算法的覆盖率和 度 高。 利 问题 亚马逊网的 人员在设计ItemCF算法 发现ItemCF算法计算出的 书相关 题, 是很 书 和《 》相关。 也 是 , 一本书的人 在一个 《 2 》。 发现,主要是因为《 》 了, 实是 一本书的人 它。 一 ItemCF计算 品相 度的经 公 : N (i)  N ( j) 3 wij N (i) N ( j) ,如 j非常 , 上 公 的分子 N (i)  N ( j) N (i) 。 上 的公 分 度。 经考 了j的流行度,但在实 应用中, 的j 然 得比较大的相 3 题有 种 决方 。 一种是 的, 可 在分 上 大对 品的 ,比如采用如 公 : N (i)  N ( j) wij N (i) 1D N ( j) D 4 中 D [0.5 ,1] 。 高α, 可 的j。 2-12给出了 的α 品 ,ItemCF算法的推荐性 。这 ,如 α 0.5 是标准的ItemCF算法。从 实 结 可 ,α 有在取值为0.5 导 高的准 率和 率, 论α 0.5 者α 0.5 这 个指标的 高。但是,如 覆盖率和 流 5 行度 可 发现,α 大,覆盖率 高,并且结 的 程度 。因此, 这种方 法可 在 当 准 率和 率的 结 的覆盖率和 性 流行度 高 了 性。 2-12 行 后ItemCF的推荐 5 α 行 0.4 21.94% 10.60% 13.39% 7.4584 0.5 22.28% 10.76% 18.84% 7.2545 0.55 21.71% 10.49% 20.61% 7.1891 6 0.6 20.32% 9.82% 22.78% 7.0688 0.7 15.19% 7.34% 30.18% 6.6117 7 参 Greg Linden的 文http://glinden.blogspot.com/2006/03/early-amazon-similarities.html。
80. 64 2 数 ,上述方法还 地决 题。 个用户一 在 的领域 一 种 品。 电视为 , 联是 天的 , 天基本 联,且 天 的 , 这一种 。此 , 很 是电视 , 视一 8 的电视 。,结是 的电视 和 联 相 , 联和 的相 度很 。 上 的 题 话 是, 个 领域的 品 具有比较高的相 度。这个 , 用户行为 是 决这个 题的,因为用户的行为 这种 品 应该相 度很高。此 , 品的 决这个 题,比如对 领域的 品 等。这些 是 论的 了。 2.5 自从Netflix Prize比 ,LFM latent factor model 义 为推荐系统领 域 的名 。 实该算法 在文本 领域被 出,用于 文本的 义。相关的 名 有LSI、pLSA、LDA和Topic Model。本 对 义 在Top-N推荐中的应用进行 介绍,并 实 的 评测该 。 2.5.1 义是 推荐系统领域 为 的 话题,它的 是 (latent factor)联系用户兴趣和 品。 一个 子 理 一 这个 。 2-16 了 个用户在 的读书 。 从 的阅读 可 出 用户A的兴趣 、 书 一些计算机技 书, 用户B的兴趣比较 中在 和机 方。 如 给A和B推荐 书 ‰ 对于UserCF, 要和 了 书的 用户 兴趣相 的用户 ,然 给 推荐 些用户 的 书。 ‰ 对于ItemCF, 要给 推荐和 经 的书相 的书,比如作者B 了很 关于 的书,可 给 推荐机 者 方 的书。 还有一种方法,可 对书和 品的兴趣进行分 。对于 个用户, 得 的兴趣分 , 然 从分 中 可 的 品。 总结一 ,这个基于兴趣分 的方法大 要 决3个 题。 ‰ 如 给 品进行分 ‰如 用户对 些 的 品 兴趣, 兴趣的程度 ‰ 对于一个给 的 , 些 于这个 的 品推荐给用户, 如 这些 品在 一个 中的 对于 一个 题的 决方 是 给 品分 。 书为 , 本书出 ,
81. 给书一个分 。为了给 书分 ,出 分 系, 给出的分 然具有 2.5 65 中 书分 法 。但是, 使有很系统的 1 。 2 3 3 4 取自 , 中相关 的 作 作人有 2-16 个用户在 的读书 5 ‰ 的意 各种用户的意 。比如,对于《具 》应该 于 分 ,有 人 为应该 于 ,有些人 为应该 于计算机。从 ,这本书是关于 的, 但从用户 ,这本书的读大部分是 计算机出 的。 的分 大部分是从书的 出 发, 是从书的读者 出发。 5 ‰ 很 分 的 度。 分 是有 度的,《 导论》在 度的 分 中可 于计算机技 ,但在 度的分 中可 于 。对于 的用户, 可 要 的 度。比如对于一 者, 度地给 推荐 可 了, 对于一名 人员, 要 的很 分的领域给 个性化推荐。 6 ‰ 很 给一个 品 个分 。有的书 于一个 , 是可 于很 的 。 ‰ 很 给出 度的分 。 ,分 是可 有很 度的,比如 作者分 、 者分 、 出 社分 。比如 的用户 《具 》 因可 ,有些 7 参 http://kkb.hhu.edu.cn/ztfl/zhongtufenlei.htm。
82. 66 2 数 人是因为它是 方 的书 的, 有些人是因为它是大 Knuth的 作 ,因此在 人的 中这本书 于 的分 。 ‰ 很 决 一个 品在 一个分 中的 。比如 可 很 地决 《 导论》 于 书,但这本书在这 书中的 是 的, 很 给出 一个准 的 。 为了 决上 的 题, 人员 出:为 从 出发,自 地 些 ,然 进行个性化推荐 于是, 义分析技 latent variable analysis 出现了。 义分析技 因为采取基于用户行为统计的自 ,较好地 决了上 出的5个 题。 ‰ 的意 各种用户的意 ,但 义分析技 的分 自对用户行为的统 计, 了用户对 品分 的 法。 义分析技 和ItemCF在 品分 方 的 ,如 个 品被很 用户 , 这 个 品 很有可 于 一个 。 ‰ 很 分 的 度,但 义分析技 指 有 个分 ,这个 大,分 的 度 ,分度 。 ‰ 很 给一个 品 个分 , 义分析技 计算出 品 于 个 的 , 因此 个 品 是 性地被分 一个 中。 ‰ 很 给出 度的分 义分析技 给出的 个分 是 一个 度的, 它是基于用户的 兴趣计算出 的,如 用户的 兴趣是 一个 度, LFM给 出的 也是相 的 度。 ‰ 很 决 一个 品在 一个分 中的 ,但 义分析技 可 统计用户 行为决 品在 个 中的 ,如 个 的用户 个 品, 这个 品在这个 中的 可 比较高。 义分析技 从 今天产 了很 名的 和方法, 中和该技 相关且 的名 有pLSA、LDA、 latent class model 、 主题 latent topic model 、 分 matrix factorization 。这些技 和方法在本 上是相 的, 中很 方法 可 用于 个性化推荐系统。本 LFM为 介绍 义分析技 在推荐系统中的应用。 LFM 如 公 计算用户u对 品i的兴趣: Preference(u,i) rui puT qi ¦F pu,k qi,k f1 这个公 中 pu,k 和 qi,k 是 的参 , 中 pu,k 度 了用户u的兴趣和 k个 的关系, qi,k 度 了 k个 和 品i 的关系。 , 的 题 是如 计算这 个参 。 对 优化理论 者机 有 了 的读者,可 对如 计算这 个参 比较 。这 个参 是从 中计算出 的。要计算这 个参 , 要一个 ,对于 个用户u, 包 了用户u 的 品和 兴趣的 品, 这个 , 可 得上 的 参。 推荐系统的用户行为分为 性 和 性 。LFM在 性 也 是评分 上
83. 2.5 67 决评分 测 题并 了很好的 度。 本 主要 论的是 性 是 有 本 用户 品 , 没有 本 用户对 品 ,这种 兴趣 。 的1 ,在 性 上应用LFM 决TopN推荐的 一个关 题 是如 给 个用户 本。 对于这个 题,Rong Pan在文 中进行了 。 对比了如 种方法。 ‰ 对于一个用户,用 有没有 行为的 品作为 本。 2 ‰ 对于一个用户,从 没有 行为的 品中 采 出一些 品作为 本。 ‰ 对于一个用户,从 没有 行为的 品中采 出一些 品作为 本,但采 , 个用户的 本 相当。 ‰ 对于一个用户,从 没有 行为的 品中采 出一些 品作为 本,但采 , 3 采 的 品。 对于 一种方法,它的 是本, 本相 ,因 计算 度很 高, 结 的 度也很 。对于 3种方法,Rong Pan在文 中 种好于 种, 种好于 , 种。 2011 的KDD Cup的Yahoo! Music推荐系统比 , 发现对 本采 3 应该 。 ‰ 对 个用户,要 本的 相。 ‰ 对 个用户采 本 ,要 取 些很 , 用户 没有行为的 品。 一 为,很 用户 没有行为 用户对这个 品 兴趣。因为对于 的 4 品,用户可 是 没在网 中发现这个 品, 上是 兴趣。 的Python 实现了 本采 程 : def RandomSelectNegativeSample(self, items): ret = dict() for i in items.keys(): ret[i] = 1 n=0 for i in range(0, len(items) * 3): item = items_pool[random.randint(0, len(items_pool) - 1)] if item in ret: continue ret[item] = 0 n+=1 if n > len(items): break return ret 在上 的 中,items_pool 了 品的 ,在这个 中, 品i出现的 5 5 6 和 品i的流行度 比。items是一个dict,它 了用户 经有 行为的 品的 。因此, 参 One-Class Collaborative Filtering 。 7 6行 上 设为len(items) * 3,主要是为 、本 。
84. 68 2 数 上的 品的流行度采 出了 些 的、但用户 没有 行为的 品。经 采 ,可 得 一个用户 品 K {(u,i)} , 中如 (u, i)是 要优化如 的 的参 p和q: 本, 有 rui 1 , 有 rui 0 。然 , C ¦ (rui  rˆui )2 ( u ,i )K ¦ ¦ (u,i)K § ¨© rui  K k1 pu,k qi,k ·2 ¸¹  O pu 2 O qi 2 这 , O pu 2  O qi 2 是用 的 化 ,λ可 实 得。要 化上 的 ,可 用一种称为 机 度 法 的算法。该算法是 优化理论 基础的优化 算法,它 参的导 方 ,然 法 地优化参 。 介 绍优化方法的 推导。 上 义的 可得: 有 参 puk和qik, 机 度 法 要 对它 分 导, wC wpuk 2qik  2O puk wC wqik 2 puk  2Oqik 然, 机 度 法, 要 参 方 推进,因此可 得 如 推 公: puk puk  D (qik  O puk ) qik qik  D ( puk  Oqik ) 中, 是 率 learning rate ,它的 取 要 实 得。 的Python 实现了这一优化 程: def LatentFactorModel(user_items, F, N, alpha, lambda): [P, Q] = InitModel(user_items, F) for step in range(0,N): for user, items in user_items.items(): samples = RandSelectNegativeSamples(items) for item, rui in samples.items(): eui = rui - Predict(user, item) for f in range(0, F): P[user][f] += alpha * (eui * Q[item][f] - \ lambda * P[user][f]) Q[item][f] += alpha * (eui * P[user][f] - \ lambda * Q[item][f]) alpha *= 0.9 def Recommend(user, P, Q): rank = dict() for f, puf in P[user].items(): for i, qfi in Q[f].items(): 参 http://en.wikipedia.org/wiki/Stochastic_gradient_descent。
85. 2.5 69 if i not in rank: rank[i] += puf * qfi 1 return rank 我们同样通过 实 评测LFM的性 。 , 在MovieLens 上用LFM计算出用 户兴趣 p和 品 q,然 对于 个 出 大的 品。如 2-13 , 中 了 4个 中 名 高 qik 大 的一些电 。结 , 一 的电 是 理的, 用户 的电 。从 LFM 实可 实现 用户行为 品 的 。 了一 2 2-13 MovieLens数据 据LFM 的 的 1 3 4 5 《 隐 人 》( The Invisible 《大 》(Jaws,1975) 《101 》(101 Dalmatians, 《女 布 》(The Blair 3 Man,1933) 1996) Witch Project,1999) 《 学 人大 人》 《 》(Lethal Weapon, 《回 来》(Back to the 《地 来的 客 》(Pacific ( Frankenstein Meets the 1987) Future,1985) Heights,1990) Wolf Man,1943) 《 斯 》(Godzilla,1954) 《 面回 》(Total Recall, 《 之 》(Groundhog 《 客2之 来》 1990) Day,1993) ( Stir of Echoes: The 3 Homecoming,2007) 《 大 3 士 》《 》(Reservoir Dogs, 《 ( Star Wars: Episode VI - 1992) Return of the Jedi,1983) 》(Tarzan,2003) 《 地 平 线 》( Dead Calm,1989) 《 结者》(The Terminator, 《 人》(Donnie Brasco, 《 猫 记 》( The 《 》(Phantasm ,1979) 4 1984) 1997) Aristocats,1970) 《 》( Village of the 《 天 》(The Fugitive, 《 子2》(The Jungle 《 头 》(Sleepy Hollow, Damned,1995) 1993) Book 2,2003) 1999) 《 》(Alien,1979) 《 3 》( Indiana 《当 利 》(When 《 老 不 是 人 》( The Jones and the Last Crusade, Harry Met Sally ,1989) Faculty,1998) 1989) 5 《 2》(Aliens,1986) 《威 2 :社会》(Menace II 《 Society,1993) 》(Antz,1998) 《 》(The Fly,1958) 《天 集 》( Damien: 《 手 探 》( Lashou 《 与 流 浪 》( Lady 《 》(The Amityville Omen II,1978) shentan,1992) and the Tramp,1955) Horror,1979) 《 》( Rosemary’s 《 实 》( True 《 天 法 》( Flubber , 《 》(The Abyss,1989) 5 Baby,1968) Romance,1993) 1997) , 实 对比了LFM在TopN推荐中的性 。在LFM中, 要的参 有4个: ‰ 的个 F; 6 ‰ 率alpha; ‰ 化参 lambda; ‰ 本/ 本比 ratio。 实 发现,ratio参 对LFM的性 大。因此, F=100、alpha=0.02、 lambda=0.01,然 本/ 本比 ratio对推荐结 性 的 。 7
86. 70 2 数 如 2-14 , 本 的 ,LFM的准 率和 率有 高。 当 ratio>10 ,准 率和 率基本 比较 了。 , 本 的 ,覆盖率 , 推荐结 的流行度 , ratio参 了推荐算法发 的 。如 LFM的结 与 2-6、 2-9、 2-10中ItemCF和UserCF算法的性 相比,可 发现LFM在 有 指标上 优于UserCF和ItemCF。当然,这 是在MovieLens一个 上的结 , 也发现, 当 非常 ,LFM的性 , 至 如UserCF和ItemCF的性 。关于这一 读者可 实 自己 。 ratio 1 2 3 5 10 20 2-14 Netflix数据 LFM 21.74% 24.32% 25.66% 26.94% 27.74% 27.37% 10.50% 11.75% 12.39% 13.01% 13.40% 13.22% F 数下的 51.19% 53.17% 50.41% 44.25% 33.87% 24.30% 行 6.5140 6.5458 6.6480 6.7899 6.9552 7.1025 2.5.2 LFM的实 系统的例 的 人员公 一个使用LFM进行 个性化设计的方 。本 介绍 的设计并 论 的设计方 。 2-17 了 的 。该 包括 的 ,比如 的分 导 、中 的 、的 话题 。 的 人员 为这3个 可 进行一 的个 性化,可 用户的兴趣给 的。 的 人员 CTR作为优化 标, 用LFM 测用户是 一个 。为此, 用户 上对 上 的行为 作为 。 中,如 用户u i, 义(u, i)是 本, rui = 1。如 i 给用户u,但用户u从 没有 , 义(u, i)是 本, rui = 1。然 , 的 人员 用 文 的LFM 测用户是 : rˆui puT ˜ qi 当然, 的 人员在上 的 基础上进行了一些 , 用了一些 进的LFM 。 这些 主要 自Netflix Prize比 ,因此 在8 论这些 。 参 Bee-Chung Chen、Deepak Agarwal、Pradheep Elango和Raghu Ramakrishnan的 Latent Factor Models for Web Recommender Systems 。
87. 2.5 71 1 2 3 3 取自 网 , 中相关 的 作 作人有 2-17 的 但是,LFM 在实 使用中有一个 , 是它很 实现实 的推荐。经 的LFM 要 有的用户行为 ,这 计算出用户 pu 和 品 4 qi 。 且LFM的 要在用户行为 上 得比较好的性 。因此,LFM 的 很 ,一 在实 应用中 天 一 ,并且计算出 有用户的推荐结 。 从 LFM 因为用户行为的 化实 地 推荐结 满 用户 的行为。在 推荐 中, 题非常 。 天 有大 的 。这些 在很 的 得很 人的 5 关 ,但也 在很 的 用户的关 。因此,它 的 很 , 推荐算法 要在 它 的 推荐给对它 兴趣的用户。 ,实 性在 的 个性化推 荐系统中非常 要。为了 决 统LFM 实 化, 产品 要实 性的 , 的 人员 出了一个 决方 。 的 决方 分为 个部分。 , 用 5 的 性关 、 等得 i的 yi。 , 实 地 用户对 的行为,并且用这些 得 i的 qi。然 , 用如 公 测用户u是 i: 中,yi是 品的 rui xuT ˜ yi  puT ˜ qi 性 的,xuk是用户u对 k的兴趣程度,用户 6 xu可 行为 得, 且 天 要计算一 。 pu、qi是 实 的用户 的行为 LFM 得的。因此,对于一个 的 品i,可 xuT ˜ yi 估计用户u对 品i的兴趣,然 经 个 ,可 puT ˜ qi 得 上 的 论 是 阐述了 用的方法,关于 准 的 测值。 具 的方法可 参考 的 告。 7
88. 72 2 数 2.5.3 LFM 的的 LFM是一种基于机 的方法,具有比较好的理论基础。这个方法和基于 域的方法 比 如UserCF、ItemCF 相比,各有优 。 从 的方 对比LFM和基于 域的方法。 ‰ LFM具有比较好的理论基础,它是一种 方法, 优化一个设 的指标 优的 。基于 域的方法 的是一种基于统计的方法,并没有 程。 ‰ 的 基于 域的方法 要 一 的相关 。在 计算相关 的 程中,如 用户/ 品 很 , 很大的 。 设有M个用户和N个 品, 在计算相关 的 程中, 可 得一 比较 的 相关 对 个品 K个 相关的 品,但在中 计算 程中 的相关 是 可 的 , 设是用户相关 , 要O(M*M)的空 , 对于 品相关 , 要O(N*N)的空 。 LFM在 程中,如 是F个 , 它 要的 空 是O(F*(M+N)),这在 M和N很大 可 很好地 计算的 。在Netflix Prize中,因为用户 很 大 40 ,很 有人使用UserCF算法 要30 GB 的 , LFM由于大 了 程中的 要4 GB ,从 为Netflix Prize中 流行的算法。 ‰ 的 设有M个用户、N个 品、K 用户对 品的行为 。 , UserCF计算用户相关 的 度是O(N * (K/N)^2), ItemCF计算 品相关 的 度是O(M*(K/M)^2)。 对于LFM,如 用F个 , S , 它的计算 度 是O(K * F * S)。 ,如 K/N > F*S, UserCF的 度 于LFM,如 K/M>F*S, ItemCF的 度 于LFM。在一 ,LFM的 度要 高于UserCF和ItemCF,这主要是因为该算法 要 。但总 上,这 种算法 在 度上没有 的 。 ‰ 实 推荐 UserCF和ItemCF在 服务算法 要 相关 在 中,然 可 在 进行实 的 测。 ItemCF算法为 ,一 用户 了 的 品, 可 中的相关 和该 品相 的 品推荐给用户。因此,一 用户有了 的行为, 且该行为被实 地 的 系统中, 的推荐 发 化。 从LFM 的 测公 可 ,LFM在给用户 推荐 , 要计算用户对 有 品的兴趣 ,然 名, 大的N个 品。 ,在 品 很 ,这一 程的 度非常高,可 O(M*N*F)。因此,LFM 用于 品 非常 大的系统,如 要用, 也 要一个比较 的算法给用户 计算一个比较 的 ,然 用 LFM 名。 一方 ,LFM在 一个用户推荐 度 ,因此 在 实 计算, 要 有用户的推荐结 计算好 在 中。因此,LFM 进行在 实 推荐,也 是 ,当用户有了 的行为 , 的推荐 发 化。 ‰ 推荐 ItemCF算法 很好的推荐 ,它可 用用户的 行为 推荐结 。 但LFM 法 这 的 ,它计算出的 虽然在 义上 实 了一 兴趣和 品, 很 用自然 述并 现给用户。
89. 2.6 的 73 2.6 的 1 用户行为很 用 分 ,因此很 的算法 可 用 推荐系统中。本 论 如 用户行为用 ,并 用 的算法给用户进行个性化推荐。 2.6.1 用户行为数据的 分 2 基于 的 graph-based model 是推荐系统中的 要 。 实,很 人员 基于 域的 也称为基于 的 ,因为可 基于 域的 基于 的 的 。 在 基于 的 是由一系 , 要 用户行为 的, 中 个 (u, i) 的 。本 论的用户行为 用户u对 品i产 行为。这种 3 很 用一个 分 。 G V,E 用户 品 分 , 中V VU *VI 由用户 VU 和 品 VI 。对于 中 一个 (u, i), 中 有一 对应的 e(vu , vi ) , 中 vu VU 是用户u 对应的 ,vi VI 是 品i对应的 。 2-18是一个 的用户 品 分 ,中 3 用户,方 品, 和方 的 用户对 品的行为。比如 中用户 A和 品 a、b、d相 , 用户A对 品a、b、d产 行为。 4 5 2-18 用户 品 分 5 2.6.2 的推荐 用户行为 为 分 , 的 务 是在 分 上给用户进行个性化推荐。如 个性化推荐算法 分 上, 给用户u推荐 品的 务 可 化为度 用户 6 vu和与vu没有 相 的 品 在 上的相关性,相关性 高的 品在推荐 中的 高。 度 中个 相关性的方法很 ,但一 中 的相关性主要取决于 3 7 参 http://en.wikipedia.org/wiki/Bipartite_graph。
90. 74 2 数 个因 : ‰个 的 ; ‰个 的 度; ‰个 的 经的 。 相关性高的一对 一 具有如 : ‰个 有很 相; ‰ 个 的 度 比较 ; ‰ 个 的 经 出度比较大的 。 一个 的 子,如 2-19 ,用户A和 品c、e没有 相 ,但是用户A和 品c有 度为3的 相 ,用户A和 品e有 度为3的 相 。 , A与e 的相关 性要高于 A与c,因 品e在用户A的推荐 中应该 在 品c ,因为 A与e 有 A, b, C, e 和 A, d, D, e 。 中, A, b, C, e 经 的 的出度为 3, 2, 2, 2 , A, d, D, e 经 的 的出度为 3, 2, 3, 2 。因此, A, d, D, e 经 了一个出度 比较大的 D, A, d, D, e 对 A与e 相关性的 要 于 A, b, C, e 。 2-19 基于 的推荐算法 基于上 3个主要因 , 人员设计了很 计算 中 一种基于 机 的PersonalRank算法 。 相关性的方法 。本 介绍 参 Fouss Francois、Pirotte Alain、Renders Jean-Michel和Saerens Marco的 Random-Walk Computation of Similarities between Nodes of a Graph with Application to Collaborative Recommendation (IEEE Transactions on Knowl edge and Data Eng ineering, 2007)。 参 Taher H .Haveliwala的 Topic-Sensitive PageRank WWW 2002, 2002 。
91. 2.6 的 75 设要给用户u进行个性化推荐,可 从用户u对应的 vu开 在用户 品 分 上进行 1 机。 一个 , 率决是 ,还是 这 并从vu 开 。如 决 , 从当 指的 中 分机一 个 作为 经 的 。这 ,经 很 机 ,个 品 被 的率 一个 。 的推荐 中 品的 是品 的 率。 如 上的述 公 ,可 得 如 公 : 2 PR(v) ¦ ­°°®D v'in(v) PR (v' ) out(v' ) (v z vu ) ¦ °°¯(1  alpha)  D v'in(v) PR (v' ) out(v' ) (v vu ) 3 的Python 实现了上 的公 : def PersonalRank(G, alpha, root): rank = dict() rank = {x:0 for x in G.keys()} 3 rank[root] = 1 for k in range(20): tmp = {x:0 for x in G.keys()} for i, ri in G.items(): for j, wij in ri.items(): if j not in tmp: 4 tmp[j] = 0 tmp[j] += 0.6 * rank[i] / (1.0 * len(ri)) if j == root: tmp[j] += 1 - alpha rank = tmp return rank 5 用上 的 了一 2-20的 子,给A用户进行推荐。 2-21给出了 个的 率。从 中可 ,个 的 率在9 基本上 了。 在这个 子中,用户A没有对 品b、d有 行为。在 的 结 中,d的 率大于b,因 此给A的推荐 是{d, b}。 5 6 2-20 PersonalRank的 子 7
92. 76 2 数 2-21 中 的 率 本 在MovieLens的 上评测了PersonalRank算法,实 结 如 2-15 2-15 MovieLens数据 PersonalRank 的 实 D 0.8 16.45% 7.95% 3.42% 。 行 7.6928 虽然PersonalRank算法可 机 进行比较好的理论 ,但该算法在 度上 有 的 。因为在为 个用户进行推荐 , 要在 个用户 品 分 上进行 , 个 上的 个 的PR值 。这一 程的 度非常高, 法在 实 推荐, 至 推荐结 也很 。 为了 决PersonalRank 要在 并因此 度很高的 题,这 给出 种 决方 。 一种很 ,是 ,在 。这 的 度,但一 大。 一种方法 是从 论出发, 设计算法。 对 算比较 的读者可 PersonalRank 化为 的 。 M为用户 品 分的 率 ,: M (v, v') 1 out(v) , 公 可 化为:
93. 2.6 的 对论 的读者 可 r (1 D )r0  D M T r 出上 的方程,得 : 因此, r (1 D )(1 D M T )1 r0 要计算一 (1 D M T )1 ,这 1 D M T 是 。关于如 对 可 参考 计算方 的书 和论文 ,本书 论了。 77 1 , 2 3 3 4 5 5 6 7 比如Song Li的 Fast Algorithms For Sparse Matrix Inverse Compuataions 2009 。
94. 78 3 3第 章 推荐系统 要 用户的 行为和兴趣 测用户 的行为和兴趣,因此大 的用户行为 为推荐系统的 要 部分和 决 。对于很 度、当当这 的网 ,这 是个 题,因为它 经 了大 的用户 。但是对于很 推荐系统的网 比如Jinni和Pandora , 者很 在开 有个性化推荐应用的网 ,如 在没有 大 用户 的 设计个性化推荐系统并且 用户对推荐结 满意从 意使用推荐系统, 是 的 题。 各 介绍一 题的分 , 如 决 种 的 题。 3.1 冷启动问题 题 cold start 主要分3 。 ‰ 用户冷启动 用户 主要 决如 给 用户 个性化推荐的 题。当 用户 , 没有 的行为 , 也 法 的 行为 测 兴趣,从 法 此给 个性化推荐。 ‰ 冷启动 品 主要 决如 的 品推荐给可 对它 兴趣的用户这一 题。 ‰ 系统冷启动 系统 主要 决如 在一个 开发的网 上 还没有用户,也没有用 户行为, 有一些 品的 设计个性化推荐系统,从 在网 发 用户 个性化推荐服务这一 题。 对于这3种 的 题,有 的 决方 。一 ,可 参考如 决方 。 ‰ 的推荐 非个性化推荐的 子是 行 , 可 给用户推 荐 行 ,然 等 用户 一的 , 为个性化推荐。 ‰ 用用户 的 、性 等 度的个性化。 ‰ 用用户的社交网络 要用户 ,导 用户在社交网 上的好友 ,然 给用户推荐 好友 的 品。 ‰ 要 用户在 对一些 品进行 , 用户对这些 品的兴趣 ,然 给用户 推荐 些和这些 品相 的 品。 ‰ 对于 的 品,可 用 , 它 推荐给 和它 相 的 品的用户。 ‰ 在系统 ,可 家的 , 一 的高 方 品的相关度 。
95. 3.2 79 述 中的 些方 。 1 3.2 利用用户 信息 在网 中,当 用户 商品。但如 是一 , 性, 品,于是 可 给 推荐 性 的 给 推荐一些 的 商品。这也是一种个 2 性化的推荐。当然这个个性化的 度很 ,因为 有 的 性 的 是 的结 ,但相 对于 分 的方 ,这种推荐的 度 经大大 高了。因此, 用用户的 可 很好 地 决 用户的 题。在 大 网 中, 、性 一 是 用户的 。 如3-1 ,个性化电 Pandora的 要 用户 、 和性 等 。Pandora在 3 为 要这些 是为了 用户 和自己 相关的广告。 实,这些 也可 用于 决用户 音乐的 题。 4 6 5 取自Pandora网 , 中相关 的 作 3-1 Pandora的用户 用户的 分3种。 ‰ 统 信息 包括用户的 、性 、 业、 ‰ 用户 的 有一些网 用户用文 述 ‰ 网 的用户 行为数据 比如用户 在得 用户 意的 取用户在 者 6 作人有 6 、 和 地。 的兴趣。 、 的 ,可 的一些行为 和社交网络 。 7
96. 80 3 这一 主要 论如 用户 的人 统计 给用户 度的个性化 推荐。 人 统计 包括 、性 、 作、 、 地、 、 等,这些 对 测用 户的兴趣有很 要的作用,比如 性和 性的兴趣 , 的人兴趣也 。 3-2 了IMDB IMDB网 中给出了 一部电 和电视 的评分人 和性 分 的 中 给 名 评分的 用户 的比 。这 中的 IMDB用户 电视 的性 分 , 因为IMDB网 用户的性 分 本 是 的 性用户较 。如 3-2 ,用户 电视 的行为和性 有很大的相关性,有些电视 比如《实 》和《 主 》 比较 性的 , 一些电视 比如《 大 》和《 》 比较 性的 。 基于人 统计 的推荐系统 是Bruce Krulwich开发的Lifestyle Finder 。 , Bruce Krulwich 人 人 统计 性分 62 ,然 对于 个 用户 的个 人 于 分 , 给 推荐这 用户 的15个 , 中5个 是推荐 的商品,5个 是推荐 的地 , 的5个 是推荐 的商 。 3-2 IMDB中 的评分用户的性 分 为了 用用户人 统计 的推荐结 好于 机推荐的结 ,Krulwich 了一个AB 测试。相对于 用人 统计 的算法,Krulwich设计了一个对 ,该 用户 的推荐结 是 机的。实 结 ,对于 用人 统计 的个性化推荐算法, 用户 率为 89%, 机算法的 率 有27%。对于 用人 统计 的个性化算法,44%的用户 得 推荐结 是 的, 对于 机算法 有31%的用户 得推荐结 是自己 的。因此, 得 一个结论 使用人 统计 相对于 机推荐 得 好的推荐 。当然, Krulwich的实 也有 的 , 没有对比和给用户推荐 的 品的推荐算法。因为 比如《 》 House M.D. 的评分用户性 分 http://www.imdb.com/title/tt0412142/ratings。 参 论文Bruce Krulwich的 Lifestyle finder : intelligent user profiling using large scale demographic data 1997 。
97. 3.2 81 行 作为一种非个性化推荐算法,一 也比 机推荐具有 高的 率。 1 基于 的个性化推荐流程基本如 : (1) 取用户的 ; (2) 用户的 对用户分 ; (3) 给用户推荐 分 中用户 3-3是一个基于用户人 统计 的 品。 推荐的 子。如 ,当一个 的 用户 2 推荐系统 , 从用户 中 的 。比如 3-3中的用户, 是一 28 的 性,是一 理 家。然 , 3 计算好的相关 :一 是性 -电视 相关 ,从中可 性 的电视 ;一 是 -电视 相关 ,从中可 28 用户 的电视 ;一 是 业-电视 相关 ,可 理家 的电视 3 。然 , 可 用这3 相关 出的电视 一 相 ,得 给用户的 推荐 。 4 6 5 6 取自Hulu网 , 中相关 的 作 作人有 6 3-3 一个基于用户人 统计 推荐的 子 当然,实 应用中也可 考 ,比如 性 作为一个 , 者 性 业作 为一个 。 在使用 要 意用户 一 具有 有的 ,因为一 的 系统并 要 用户 有 。 比如有些用户没有 业 7
98. 82 3 由 3-3中的 子可 ,基于用户 的推荐算法 题是计算 种 的用户 的 品。也 是 ,对于 种 f,计算具有这种 的用户对各个 品的 好程度p(f, i)。 p( f ,i) 可 地 义为 品i在具有f的 的用户中的 程度: p( f ,i) N (i) U ( f ) 中 N (i) 是 品i的用户 ,U ( f ) 是具有 f的用户 。 上 这种 义可 比较准 地 测具有 种 的用户是 个 品。但是,在这种 义, 的 品 在各种 的用户中 具有比较高的 。也 是 具有比较高的 N (i) 的 品 在 一 用户中 有比较高的 p( f ,i) 。给用户推荐 品并 是推荐系统的主要 务,推荐系统应该 用户发现 发现的 品。因此, 可 p( f ,i) 义为 品i的用户中具有 f的比 : N (i) U ( f ) p( f ,i) N (i)  D 这 分 中使用参 D 的 的是 决 题。比如有一个 品 被1个用户 , 这个用户 好 有 f, 有 p( f ,i) 1 。但是,这种 并没有统计意义,因此 为 分 上一个比较大的 ,可 这 的 品产 比较大的 。 有 个推荐系统 包 了人 统计 ,一个是BookCrossing , 一个是 Lastfm 。 BookCrossing 包 用户对 书的行为 ,包 3个文 。 ‰ BX-Users.csv,包 用户的ID、 和 。 ‰ BX-Books.csv,包 书的ISBN、标题、作者、发 、出 社和 。 ‰ BX-Book-Ratings.csv 包 用户对 书的评分 。 这个 一 对用户 书的 。 用户,一 是 于25 的,一 是大于50 的。 , 用 p( f ,i) N (i) U ( f ) 统计了这 部分用户 经常 的书,并 一 用户 经常 的5本书 在 3-1中。 N (i) U ( f ) 也 用 p( f ,i) N (i)  D 计算了 用户比 高的5本书和 用户比 高的5本书 如 3-2 。 可 , 3-1中 用户和 用户 的5本书有3本是相 的, 度很高。这3本书 实是 的。在 人 的书中, 有《 和 法 》 Harry Potter and the Sorcerer’s Stone 和《 的 者》 The Catcher in the Rye 是比较 人兴趣的。 在 用户 的书中, 没有 用户 的书。由此可 , p( f ,i) N (i) U ( f ) 很 用 给用户推荐 的 个性化 品。 http://www.informatik.uni-freiburg.de/~cziegler/BX/。 http://www.dtic.upf.edu/~ocelma/MusicRecommendationDataset/lastfm-360K.html。
99. 3-2 可 3.2 83 1 3-1 用户 用户 的的 25 Wild Animus, Rich Shapero, 2004, Too Far 2 The Lovely Bones: A Novel, Alice Sebold, 2002, Little, Brown Harry Potter and the Sorcerer’s Stone (Harry Potter (Paperback)), J. K. Rowling, 1999, Arthur A. Levine Books The Catcher in the Rye, J.D. Salinger, 1991, Little, Brown The Da Vinci Code, Dan Brown, 2003, Doubleday 3 50 Wild Animus, Rich Shapero, 2004, Too Far The Da Vinci Code, Dan Brown, 2003, Doubleday The Lovely Bones: A Novel, Alice Sebold, 2002, Little, Brown 4 A Painted House, John Grisham, 2001, Dell Publishing Company Angels & Demons, Dan Brown, 2001, Pocket Star 3-2 用户 例 的5 例 的5 6 25 The Perks of Being a Wallflower, Stephen Chbosky, 1999, MTV The Catcher in the Rye, J.D. Salinger, 1991, Little, Brown And Then There Were None : A Novel, Agatha Christie, 2001, St. Martin’s Paperbacks Chicken Soup for the Teenage Soul (Chicken Soup for the Soul), Jack Canfield, 1997, Health Communications 5 The Giver (21st Century Reference), LOIS LOWRY, 1994, Laure Leaf 50 The No. 1 Ladies’ Detective Agency (Today Show Book Club #8), Alexander McCall Smith, 2003, Anchor A Painted House, John Grisham, 2001, Dell Publishing Company 6 The Da Vinci Code, Dan Brown, 2003, Doubleday Deception Point, Dan Brown, 2002, Pocket A Thief of Time (Joe Leaphorn/Jim Chee Novels), Tony Hillerman, 1990, HarperTorch Lastfm 包 了 的用户人 统计 ,包括用户的性 、 和 。 3-4给出 6 了该 中用户性 的分 。如 ,该 中 性用户 了 大 大 3/4 。 3-5给出了该 中用户 的分 。如 ,该 中20 25 的用户 了 大 比 。 3-6给出了该 了大 比。 中用户 家的分 。如 ,该 中 、 和 的用户 7
100. 84 3 25 000 20 000 15 000 10 000 5000 0 60 000 50 000 40 000 30 000 20 000 10 000 0 女性 26% 男性 74% 3-4 Lastfm 中 用户的分 3-5 Lastfm 中用户 的分 3-6 Lastfm 中用户 家的分
101. 3.3 的 的 85 准 用该 对比一 使用 的人 统计 测用户行为的 度。这 , 1 分 10 , 9 作 为 ,1 作为测试 。然 , 在 上用 p( f ,i) N (i) U ( f ) 计算 一 用户对 品的兴趣程度 p( f ,i) 。然 在测试 中给 一 用户 推荐 p( f ,i) 高的10个 品,并 准 率和 率计算 测准 度。 , 也 计算推荐 的覆盖率 评测推荐结 。 2 的 度给用户分 ,对比了4种 的算法。 ‰ MostPopular 给用户推荐 的。 ‰ GenderMostPopular 给用户推荐对于和 性 的用户 的 ,这 用 户分 。 ‰ AgeMostPopular 给用户推荐对于和 一个 的用户 的 ,这 3 10 作为一个 , 用户 的 分。 ‰ CountryMostPopular 给用户推荐对于和 一个 家的用户 的。 ‰ DemographicMostPopular 给用户推荐对于和 。 从算法的 述可 ,这4种算法具有 的 性、 、 家的用户 度 , 中 MostPopular 度 的 4 , DemographicMostPopular算法的 度 。一 , 度 , 度和覆盖率也 高。 3-3给出了实 结 。如结 , 实是DemographicMostPopular算法的准 率、 率 和覆盖率 高。这 : , 用的用户人 统计 , 准 地 测用户兴趣。 ,结 6 DemographicMostPopular > CountryMostPopular > AgeMostPopular > GenderMostPopular > MostPopular 3-3 4 的 5 MostPopular GenderMostPopular AgeMostPopular CountryMostPopular DemographicMostPopular 4.81% 4.95% 5.04% 5.58% 6.00% 2.36% 2.43% 2.47% 2.73% 2.94% 0.018% 0.027% 0.062% 6 0.80% 3.85% 这 在 测用户对音乐的兴趣 , 家比 、性 如中 的 人和 的 人 的音乐 是很大的。 大。这一 是 然的,比 6 3.3 的 启动用户的 决用户 题的 一个方法是在 用户 一 推荐系统 , 荐结 , 是给用户 一些 品, 用户 对这些 品的兴趣,然 给用户 推 用户 给 7
102. 86 3 个性化推荐。很 推荐系统采取了这种方 决用户 题。 Jinni为 ,当 用户 推荐系统 ,它 给出一 , 用户 要给 部电 评分 取推荐结 如 3-7 。当用户 给 部电 评分 ,Jinni 一个 用户 的电 如 3-8 ,当用户 了 一个 ,Jinni 个 用户对电 进行 如 3-9 。 3-7 Jinni在 用户 推荐系统 用户 要给 部电 评分 取自Jinni网 , 中相关 的 作 3-8 Jinni 用户 作人有 自己 的电 对于这些 用户对 品进行评分 用户兴趣,从 对用户进行 要 决的 要 题 是如 品 用户进行 。 一 ,用 用户兴趣的 品 要具有 。 ‰ 如 要 用户对一个 品进行 , 是用户 这个 电 为 ,如 一开 用户进行 的电 很 , 用户 和 ,也 法对它 出准 的 。 的系统,它 品是 。 这些电 的
103. 3.3 的 的 87 1 2 3 取自Jinni网 , 中相关 的 作 作人有 4 3-9 Jinni 用户对电 进行评分的 ‰ 分 用户兴趣的 品 是大 化 的,因为这 的 品 对用户的兴趣没有 分性。还 电 为 ,用一部 很高且广 的电 品, 可 的 的是 有用户 这部电 ,因 法 分用户个性化的兴趣。 6 ‰ 启动 在 , 用户的兴趣, 用户兴趣的可 性非常 ,为了 的兴趣, 要 具有很高覆盖率的 品 ,这些 品 覆盖 有主流的用户兴趣。 3-8为 ,Jinni在 用户 没有 电 用户 户 , 是给出了12个电 种 ,这 很好地 中 了 中的6个电 了 品 的 性。 ,用 5 上 这些因 是 品 要考 的,但如 设计一个 品 的系统 Nadav Golbandi在论文 中 了这个 题, 出可 用一个决 决这个 题。 ,给 一 用户,Nadav Golbandi用这 用户对 品评分的方 度 这 用户兴趣的一 6 程度。如 方 很大, 这一 用户的兴趣 一 , 这 用户的兴趣比较一 。 Vu U ' 为用户 U'中 有评分的方 ,Nadav Golbandi的基本 是 如 方 度 一个 品的 分度D(i): 中,N  (i) 是 D(i) 品i的用户 V  V  V uN (i) uN  (i) uN (i) ,N  (i) 是 品i的用户 ,N (i) 是没有对 品 6 i评分的用户 V 。 是 uN  (i) 品i的用户对 品评分的方 V , 是 uN (i) 品i的 Adaptive Bootstrapping of Recommender Systems Using Decision Trees , com/pub/3502。 地 为 http://research.yahoo. 7
104. 88 3 用户对 品评分的方 V , uN (i) 是没有对 品i评分的用户对 品评分的方 。也 是 ,对于 品i,Nadav Golbandi 用户分 3 品i的用户、 品i的用户和 品i的用户 没有给i评分的用户 。如 这3 用户 的用户对 的 品兴趣很 一 , 品i具有较高的 分度。 Nadav Golbandi的算法 从 有用户中 具有 高 分度的 品i,然 用户分 3 。然 在 用户中 具 分度的 品,然 一 用户 各自分为3 ,也 是 总用户分 9 ,然 这 ,可 对一系 品的 法 用户进行分 。 在 ,从 开 用户对该 品的 法,然 用户的 用户 的分 , 进 的 子 ,此 经对用户的兴趣有了比较 的了 ,从 可 开 对用户进行比较准 地个性化推荐。 3-10 一个 的 子 Nadav Golbandi的算法。如 , 设 分析用户 , 发现《 》 有 分度。 在 《 》的用户中《 》 有 分度, 《 》的用户中《 》 有 分度, 《 》的用户中《 》 有 分度。进一 分析, 发现 《 》但 《 》的用户中, 《人 了》 有 分度。 , 设 了一个 用户,系统 对《 》的 法,如 , 对《 》 的 法,如 , 对《人 了》的 法,如 这个 用户 了 , 也大 该用户可 对 比较 兴趣,对 兴趣 大。 取自IMDB网 , 中相关 3-10 给用户 品 的作 决 作人有 题的 子
105. 3.4 的 89 3.4 利用 的 信息 1 品 要 决的 题是如 的 品推荐给对它 兴趣的用户。 品 在 网 等 性很 的网 中非常 要,因为 些网 中 有 的 品, 且 个品 在一 现给用户, 经 一 , 品的价值 大大 了。 2 介绍了 种主要的推荐算法 UserCF和ItemCF算法。 要指出的是,UserCF算 2 法对 品 题并 非常 。因为,UserCF在给用户进行推荐 , 和用户兴趣 相 的一 用户,然 给用户推荐这一 用户 的 品。在很 网 中,推荐 并 是给用 户 的 一 , 当一个 品 ,总 有用户从 些 这些 品,对这 些 品产 。 ,当一个用户对 个 品产 ,和 兴趣相 的 用户的推 3 荐 中 有可 出现这一 品,从 的人 对这个 品产 ,导 的人的推荐 中 出现这一 品,因此该 品 地 开 ,从 对它 兴趣用户的推 荐 中。 但是,有些网 中推荐 可 是用户 取 的主要 UserCF算法 要 决 一推 的 题, 一个用户从 ,比如 网络电 。 对于 发现 的 品。 要有一 部分 4 人 发现并 的 品,UserCF算法 这些 品 的用户中。 决 一推 的方法是 的 品 机 给用户,但这 然 个性化,因此可 考 用 品的 , 品 给经 和它 相 的 品的用户。关于如 用 ,本 在 介绍。 6 对于ItemCF算法 , 品 是一个 的 题了。因为ItemCF算法的 理是给用户 推荐和 的 品相 的 品。ItemCF算法 一 用用户行为计算 品相 度 一 一天计算一 ,在 服务 ItemCF算法 计算好的 品相关度 在 中。 因此,当 品 , 中的 品相关 中 在这个 品,从 ItemCF算法 法推荐 5 的 品。 决这一 题的 法是频 品相 度 ,但基于用户行为计算 品相 度是非常 的 ,主要 因是用户行为 非常 大。 且, 品如 给用户,用户 法 对它产 行为, 行为 计算是计算 出包 品的相关 的。为此, 用 品的 计算 品相关 ,并且频 地 相关 比如 计算一 。 品的 种, 的 品有 的 。如 是电 , 6 一 包括标题、导 、 员、 、 、 、 家、 等。如 是 书, 一包 标题、作者、出 社、 文、分 等。 3-4 了常 品的常用 。 3-4 的 信息 图书 标题、 者、出 社、出 年代、 书名、目录、 文 6 论文 标题、 者、 者单位、关键 、分类、 要、 文 电影 标题、导 、 、编剧、类别、剧情简 、 行公司 新 标题、 文、来源、 者 微博 者、内容、评论 7
106. 90 3 一 , 品的 可 空 ,该 品 一个关 。如 品的 是一些 如导 、 员等实 的话,可 这些实 作为关 。但如 是文本的 , 要 一些理 自然 的技 取关 。 3-11 了从文本 关 的主要 。对于中文, 要对文本进行分 , 流 流,然 从 流中 测出 名实 如人名、地名、 名等 ,这些实 和一些 要的 关 , 对关 进行 名,计算 个关 的 ,从 关 。 3-11 关 的 程 对 品d,它的 一个关 如: di {(e1, w1), (e2 , w2 ),"} 中, ei 是关 , wi 是关 对应的 。如 品是文本, 可 用 索领域 名的TF-IDF公 计算 的 : wi TF(ei ) log DF(ei ) 如 品是电 ,可 员在 中的 要程度 。 , 是 了一些 ,比如关 的关系 。 在 大 对于文本的分 、 、相 度计算 经可 给出 人满意的结 。 在给 品 的 , 品的 相 度可 wij di ˜ d j di d j 空 的优 是 应用中, 空 的 相 度计算: 在具 计算 品 的 度公 计算相 度,如 相度, 的方法当然是对 实现了这种方法: 品 用上 的 相 function CalculateSimilarity(D) for di in D: for dj in D: w[i][j] = CosineSimilarity(di, dj) return w 这 ,D是文 。 但这种算法的 度很高。 设有N个 品, 个 品 算法的 度是 O(N 2m) 。 由m个实 , 这个 在实 应用中,可 关 品的 这一计算 程,关于这一方法 参 基 Vector Space Model 。
107. 3.4 的 91 经在 介绍UserCF和ItemCF算法 介绍 了, 这 给出计算的 : 1 function CalculateSimilarity(entity-items) w = dict() ni = dict() for e,items in entity_items.items(): for i,wie in items.items(): addToVec(ni, i, wie * wie) 2 for j,wje in items.items(): addToMat(w, i, j, wie, wje) for i, relate_items in w.items(): relate_items = {x:y/math.sqrt(ni[i] * ni[x]) for x,y in relate_items.items()} 得 品的相 度 ,可 的 品 相 的 品。 用上一 的ItemCF算法的 ,给用户推荐和 上 3 也 有读者 为, 然 相 度计算 , 频 ,且 决品 题, 为 还要 的算法。为了 算法和 算法的优劣,本 在 MovieLens和GitHub 个 上进行了实 。MovieLens 上一 经 介绍了,它也 了有 的 ,主要包括电 的 作、 等 ,GitHub 包4 开发者对开 的兴趣 ,它的用户是程 员, 品是开 程,如 一名程 员关 个开 程, 有一 行为 。该 中主要的 是开 的 有者名。 3-5比较了 算法ContentItemKNN和 算法ItemCF在MovieLens和GitHub 上的 实 性 。为了对比, 算法作为基准。 了Random和MostPopular 个非个性化的推荐 6 3-5 MovieLens/GitHub数据 推荐 的 Random MostPopular ItemCF ContentItemKNN Random MostPopular ItemCF ContentItemKNN 0.631% 12.79% 22.28% 6.78% 0.000985% 1.18% 2.56% 6.98% MovieLens 0.305% 6.18% 10.76% 3.28% GitHub 0.00305% 4.36% 9.44% 25.75% 100% 2.60% 18.84% 19.06% 84.18% 0.0299% 33.71% 34.44% 行 5 4.3855 7.7244 7.254526 5.8481 6 0.9878 7.1277 2.9119 1.7086 从MovieLens 6 上的结 可 发现,ContentItemKNN的准 率和 率 优于Random 算法, 于ItemCF算法, 至比MostPopular算法还要 。 在覆盖率和流行度指标上 ContentItemKNN 优于ItemCF。这主要是因为 算法 视了用户行为,从 也 视了 品的流行度 , 用户行为中 包 的 , 是 对的。如 GitHub 它的 度比较 ,但结 的 度 比较高。 的结 , 发现 相 的现 Content- 7
108. 92 3 ItemKNN在 有指标上 优于ItemCF。这主要是因为GitHub 了一个非常 的 , 是开 的作者。在GitHub中,程 员 经常 关 一个作者的 ,这一 是GitHub 要的 。 算法由于 的 , 从用户行为中 统计出这一 , 算法 如 用了 的 算法。这一 也 ,如 用户的行为 一 性的 , 的算法还是可 在 度上 算法的。 这 种的 是 有 品 具有的, 且 要 的领域 得, 很 算法的 度比 算法 。 ,这也 ,如 这 种算法 ,一 得比 使用这 种算法 好的 。 ECML/PKDD在2011 一 用品 决 题的比 。该比 了 品的 , 参者 用这些 计算出的相 度 。对 推荐 兴趣的读者可 关 该比 的相关论文。 空 在 可 得比较好的 。 文本为 ,如 是计算 文本的 相 度,用 空 用关 计算相 度 经可 得很高的 度。但是,如 文本很 ,关 很 , 空 很 计算出准 的相 度。 个 子, 设有 论文,它 的标题分 是 推荐系统的 性 和 基于 的 算法 。如 读者对推荐系 统很 ,可 这 文 的 方 是 的,但是它 标题中没有一 的关 。 实, 它 的关 虽然 ,但 是相 的。 和 基于 义相 , 是推 荐系统 的一种算法。 话 ,这 文 的关 虽然 ,但关 的话题是相 的。 在这种 , 要 文 的话题分 ,然 准 地计算文 的相 度。如 文 、话题和关 的关系是话题 topic model 的。 性的话题 有LDA。 关于该 的理论文 经很 了,本书 准 论 的 题, 这 准 用 的 介绍一 LDA,并用 程 很 的方法介绍这个算法。 关于LDA的 理论介绍可 参考DM Blei的论文 Latent Dirichlet Allocation 。 有一个 设,LDA作为一种 ,对一 文 产 的 程进行了 。话 题 的基本 是,一个人在 一 文 的 , 这 文 要 论 些话题,然 考这些话题应该用 述,从 用 一 文 。因此,文 和 是话 题联系的。 LDA中有3种 , 文 、话题和 。 一 文 现为 的 ,这称为 (bag of words)。 个 在一 文 中 于一个话题。 D为文 ,D[i]是 i 文 。w[i][j] 是 i 文 中的 j个 。z[i][j]是 i 文 中 j个 于的话题。 LDA的计算 程包括 化和 部分。 要对z进行 化, 化的方法很 , 设一 有K个话题, 对 i 文 中的 j个 ,可 机给它 一个话题。 ,用 参 http://tunedit.org/challenge/VLNetChallenge。 参 David M. Blei、 Andrew Y. Ng、 Michael I. Jordan的 Research 3, 2003 。 Latent dirichlet allocation Journal of Machine Learning
109. 3.4 的 93 NWZ(w,z) w被 话题z的 ,NZD(z,d) 文 d中被 话题z的 的个 。 1 foreach document i in range(0, D ): foreach word j in range(0, D(i) ): z[i][j] = rand() % K NZD[z[i][j], D[i]]++ NWZ[w[i][j], z[i][j]]++ NZ[z[i][j]]++ 2 在 化 ,要 使话题的分 一个 理的分 上 。 如 : while not converged: foreach document i in range(0, D ): foreach word j in range(0, D(i) ): NWZ[w[i][j], z[i][j]]-NZ[z[i][j]]-NZD[z[i][j], D[i]]-z[i][j] = SampleTopic() NWZ[w[i][j], z[i][j]]++ NZ[z[i][j]]++ NZD[z[i][j], D[i]]++ LDA可 很好地 的话题。这 3 4 用David M. Blei在论文中给出的一个实 结 。 用了一个 论文 要的 ,该 包 16 333 , 23 075个 的 。 LDA, 计算出100个话题并且在论文中给出了 中4个话题 名 高 也 是p(w z) 大 的15个 。从 3-12 的 结 可 的相关 。 ,LDA可 较好地对 进行 , 个 6 5 6 3-12 LDA对 进行 的结 6 在使用LDA计算 品的 相 度 , 可 计算出 品在话题上的分 ,然 用 个 品的话题分 计算 品的相 度。比如,如 个 品的话题分 相 , 为 个 品具 有较高的相 度, 为 个 品的相 度较 。计算分 的相 度可 用KL 度 : 7 参 http://en.wikipedia.org/wiki/Kullback-Leibler_divergence。
110. 94 3 ¦ p(i) DKL ( p q) p(i)ln i q(i ) 中p和q是 个分 ,KL 度 大 分 的相 度 。 3.5 的用 很 推荐系统在 , 没有用户的行为 ,也没有 的 品 计算准 的 品相 度。 ,为了在推荐系统 用户得 比较好的 ,很 系统 用 家进 行标 。这方 的 系统是个性化网络电 Pandora和电 推荐网 Jinni。 Pandora是一个给用户 音乐的个性化电 应用。 ,计算音乐 的相 度是比 较 的。 ,音乐是 ,如 从音频分析 计算 的相 度, 技 很高, 且也很 计算得 人满意。 , 用 的 、 等 性 很 得 人满意的 相 度 ,因为一名 、一部 有一 好 。为了 决这个 题,Pandora 用了一 计算机的音乐人进行了一 称为音乐基因的 。 了 名 的 ,并对 这些 的各个 度进行标 。 , 使用了400 个 Pandora称这些 为 。标 有的 , 可 为一个400 的 ,然 常 的 相 度算法可 计算出 的相 度。 Pandora 网 对电 基因 Jinni 进行了介绍 。 3-13是Jinni中 家给《 Jinni 》标 的基因。 取自Jinni网 , 中相关 的 作 3-13 Jinni中 家给《 作人有 》标 的基因 参 About The Music Genome Project ,地 为http://www.pandora.com/mgp.shtml。 参 http://en.wikipedia.org/wiki/List_of_Music_Genome_Project_attributes。 参 http://www.jinni.com/movie-genome.html。
111. 3.5 的作 95 可 ,这 的基因包括如 分 。 1 ‰ Mood 用户 电 的 ,比如对于《 》 得很 , 很兴 。 ‰ Plot 包括电 的标 。 ‰ Genres 电 的 ,主要包括 、 、 作 等分 。 ‰ Time/Period 电 发的 。 2 ‰ Place 电 发 的地 。 ‰ Audience 电 的主要 。 ‰ Praise 电 的 和评价 。 ‰ Style 、 等。 3 ‰ Attitudes 电 述 的 度。 ‰ Look 电 的 技 ,比如《 》是用电 作的。 ‰ 标记 Flag 主要 电 有没有 和 。 Jinni在电 基因 程中采用了 人 、 自 的方 。 ,它 家对电 进行标 , 4 个电 有大 50个基因,这些基因 自大 1000个基因 。然 ,在 家标 一 的 本 , Jinni 使用自然 理 和机 技 , 分析用户对电 的评论和电 的一些 性对 电 是 电 进行自己的标 。 ,Jinni也设计了 用户对基因进行 的 , 用户 进电 基因系统。 6 总 ,Jinni 家和机 相结 的方法 决了系统 题。 5 6 6 7
112. 96 4 数 4第 章 推荐系统的 的是联系用户的兴趣和 品,这种联系 要 的 介。GroupLens在一 文中 流行的推荐系统基本上 3种方 联系用户兴趣和 品。如 4-1 , 一种方 是 用用户 的 品,给用户推荐与 的 品相 的 品,这 是 的基于 品的算法。 种方 是 用和用户兴趣相 的 用户,给用户推荐 些和 兴趣 好相 的 用户 的 品,这是 的基于用户的算法。 了这 种方法, 种 要的方 是 一些 feature 联系用户和 品,给用户推荐 些具有用户 的 的 品。这 的 有 的 现方 ,比如可 现为 品的 性 比如对于 书, 性 包括作者、出 社、主题和关 等 ,也可 现为 义 latent factor vector ,这可 出的 义 得 。本 论一种 要的 现方 标。 本 Tagsplanations : Explaining Recommendations using Tags 一文中的 ,本 的 作 作人有 4-1 推荐系统联系用户和 品的 种 基 的 义 , 是一种 化结 的、用 述 的关 ,它可 用 述 品的 义。 给 品 标 的人的 ,标 应用一 分为 种:一种是 作者 者 家给 品 标 ; 一种是 用户给 品 标 ,也 是UGC User Generated Content,用 户的 的标 应用。UGC的标 系统是一种 用户兴趣和 品 义的 要方 。当一 个用户对一个 品 上一个标 ,这个标 一方 述了用户的兴趣, 一方 了 品的 义,从 用户和 品联系了 。因此本 主要 论UGC的标 应用, 用户给 品 标 的行为, 如 分析这种行为给用户进行个性化推荐。 文 名是 Tagsplanations : Explaining Recommendations using Tags 。 参 http://en.wikipedia.org/wiki/Tag_(metadata)。
113. 4.1 UGC 的 97 4.1 UGC 标签系统的 用 1 UGC标 系统是很 Web 2.0网 的 要 部分,本 论使用UGC标 系统的 网 UGC标 系统的 Delicious、论文书 网 CiteULike、音乐网 Last.fm、视频网 Hulu、 书和电 评论网 等。 分 介绍这些应用。 2 4.1.1 Delicious Delicous可算是标 系统 的开 ,它 用户给互联网上的 个网 标 ,从 标 ,这些网 个互联网。 4-2是Delicious中被用户 上recommender、system标 应了用户 中和推荐系统 相关的网 。 4-3是Delicious中 电 的网 这个 3 网 被用户 的 的标 ,可 这些标 实从各个 度准 地 述了 电 这个 品。 4 6 5 6 取自Delicious, 中相关 的 作 作人有 4-2 Delicious中被 上recommender和system标 的网 6 取自Delicious, 中相关 的 作 作人有 4-3 Delicious中 电 网 被用户 的 的标 7
114. 98 4 数 4.1.2 CiteULike CiteULike是一个 名的论文书 网 ,它 人员 交 者 自己 兴趣的论文并 且给论文 标 ,从 用户 好地发现和自己 领域相关的优秀论文。 ,人 员搜索自己 领域 值得参考的论文是很 的 作, CiteULike , 个 人员对自己了 的论文进行标 , 此 人员 好 地发现自己 兴趣的论 文。 4-4 了CiteULike中一 有关推荐系统评测的文 用户给这 文 的标 , 可 发现, 的 个标 是collaborative-filtering 和evaluate 评测 , 实比较准 地 应了这 论文的主要 。 取自CiteULike网 , 中相关 的 作 作人有 4-4 CiteULike中一 论文的标 4.1.3 Last.fm Last.fm是一家 名的音乐网 ,它 分析用户的 行为 测用户对音乐的兴趣,从 给 用户推荐个性化的音乐。作为 ,音乐 文本 可 很 地分析 。为了在 进行 音频分析的 得音乐的 ,Last.fm 了UGC标 系统, 用户用标 标 音乐和 。 4-5 了 乐 在Last.fm中的标 tag cloud 。从这个标 可 , 应该是一个 british 的 统 乐 classic rock ,流行于20 60 60s 。 取自Last.fm网 , 中相关 的 作 作人有 4-5 Last.fm中 乐 的标
115. 4.1 UGC 的 99 4.1.4 1 是中 名的评论和社交网 , 也是中 个性化推荐领域的领 业 一。 在 个性化推荐领域进行了广泛 试,标 系统也是 试的领域 一。它 用户对 书和电 标 , 此 得 书和电 的 和 义,并用这种 推荐 。 4-6 了《 导论》在 被用户 标 的 。如 , 的 个标 分 是 、计算机、 2 计算机 、 分析、IT 分析等。这些标 准 地 括了这本书的 。 3 4 取自 , 中相关 的 作 作人有 4-6 读书中《 导论》一书的常用标 4.1.5 Hulu 6 Hulu是 名的视频网 。视频作为一种 为 的 , 取它的 是 的,因此Hulu也 了用户标 系统 用户对电视 和电 进行标 。 4-7 了 《 》的常用标 ,可 ,Hulu对标 了分 并 了 一 的标 。从 Genre ,《 》是一部 medical ;从 ,这部 开 于2004 ;从人 ,5 这部 的主 是hugh laurie, 在 中 的人 是greg house。 6 6 取自Hulu网 , 中相关 的 作 4-7 Hulu中《 作人有 》的常用标 从 的各种应用可 ,标 系统在各种各 的 音乐、视频和社交等 网 中 得 了广泛应用。标 系统的 大优 在于可 发 的 , 得对 品 比较准 的关 7
116. 100 4 数 述, 准 的 是 个性化推荐系统性 的 要 。 关于标 系统的作用,GroupLen的Shilads Wieland Sen在MoveLens电 推荐系统上 了 为 的、基于 的 。在 论文 中, 了标 系统的 作用, 种作用 大的人 ,如 。 ‰ 标 系统 对 品的 法。 30%的用户 意。 ‰ 标 的电 。 23%的用户 意。 ‰ 标 对电 的了 。 27%的用户 意。 ‰ 标 系统使 发现 的电 。 19%的用户 意。 ‰ 标 系统 是 一部电 。 14%的用户 意。 上的 ,标 系统 实 用户发现可 的电 , 这 是个性化推荐系 统的使 一。因此,本 对如 发 标 在个性化推荐中的作用进行 。 4.2 标签系统 的推荐问题 标 作为一种 要的用户行为, 了很 用户兴趣 ,因此 的行为可 很好地指导 进个性化推荐系统的推荐 。 ,标 的 于很 算法 理。 标 系统中的推荐 题主要有 个。 ‰ 如 用用户 标 的行为为 推荐 品 基于标 的推荐 ‰ 如 在用户给 品 标 为 推荐 该 品的标 标 推荐 为了 上 的 个 题, 要 3个 题。 ‰ 用户为 要 标 ‰ 用户 标 ‰ 用户 的标 和 用用户 标 非常 , 4.2.1 用户为 行标 在设计基于标 的个性化推荐系统 , 要 了 用户的标 行为 标 的行 为 , 用户为 要标 ,用户 标 , 有 了 用户的行为, 基于这个行 为设计出 满意的个性化推荐系统。 Morgan Ames 分 网 中用户标 的 机 题,并从 个 度进行 。 是社 度,有些用户标 是给 上 者使用的 于上 者 自己的 , 有些用户标 是 给广大用户使用的 于 用户 。 一个 度是 度,有些标 用于 好地 ,方 用户 的 , 一些标 用于 种 ,比如 的 和地 等。 论文为 Nurturing Tagging Communities 。 参 Morgan Ames和 Mor Naaman的 Why we tag: motivations for annotation in mobile and online media 2007 。 CHI 2007,
117. 4.2 中的 101 4.2.2 用户 标签 1 在互联网中, 个用户的行为 是 机的,但 实这些 机的行为 很 。这一 Delicious 总结用户标 行为中的一些统计 。 人员公 一个很 大的Delicious Delicious用户4.2 标 行为 。本 用该 ,该 包 2003 9 2007 12 2007 一个 的 进行分析,对该 2 的统计 性进行 。 ,用户行为 中用户 度和 品流行度的分 分 Power Law分 。因此, 一 标 流行度的分 。 义的一个标 被一个用户使用在 一个 品上,它的流行度 一。如 计算了 个标 的流行度。 3 def TagPopularity(records): tagfreq = dict() for user,item,tag in records: if tag not in tagfreq: tagfreq[tag] = 1 else: 4 tagfreq[tag] += 1 return tagfreq 如 4-8 , 标是流行度k, 标是 中流行度为k的标 总 n(k) 。标 的流 行度分 也 现非常 的 分 ,它的 对 是一 。 log n(k) D log k  E log kD ˜ eE 6 n(k) eE ˜ kD J ˜ kD 5 6 6 4-8 标 流行度的 分 7 参 http://www.dai-labor.de/en/competence_centers/irml/datasets/
118. 102 4 数 4.2.3 用户 的标签 在用户 一个 品 , 的标 是 准 述 品 性的关 ,但用 户 是 的 法 作, 是可 给 品 上各种各 的标 。 Scott A. Golder 总结了Delicious上的标 , 它 分为如 。 ‰ 比如是一 , 有“ 这个 的标 ;是 的 , 有一个 标 ;是 的 , 有个标 。 ‰ 的 比如在Delicious的书 中, 一个网 的标 包括 article 文 、 blog 、 book 书 等。 ‰ 比如很 的标 中 包括 的作者等 。 ‰ 用户的 比如用户 为网 很有趣, 上标 funny 有趣 , 为很 , 上标 boring 。 ‰ 用户 的标签 比如 my favorite 的 、my comment 的评论 等。 ‰ 用户的 比如 to read 阅读 、job search 作 等。 很 的网 也设计了自己的标 分 系统,比如Hulu对视频的标 了分 。 4-9 是 名的 《 》的标 。可 ,Hulu 电视 的标 分 了如 。 取自Hulu网 , 中相关 的 作 4-9 名 《 作人有 》在视频网 Hulu上的标 分 ‰ Genre 主要 这个电视 的 ,比如《 medical drama 。 ‰ Time 主要包括电视 发 的 ,有 也包括电视 如20 90 。 》于 中 发的 ,比
119. 4.3 的 103 ‰ People 主要包括电视 的导 、 员和 中 要人 等。 1 ‰ Place 发 的地 , 者视频 的地 等。 ‰ Language 这部电视 使用的 。 ‰ Awards 这部电视 得的相关 。 ‰ Details 包 上 各 中的 有标 。 2 4.3 标签的推荐系统 用户用标 述对 品的 法,因此标 是联系用户和 品的 ,也是 应用户兴趣的 要 ,如 用用户的标 高个性化推荐结 的 是推荐系统 的 要 题。 3 很好地 用了标 ,它 标 系统 了 个产品 中。 ,在 本书的 上, 了一个 员常用标 的应用,它给出了这本书上用户 常 的标 。 ,在用户给书 评价 , 也 用户给 书 标 。 ,在 的个性化推荐结 , 用标 用户的推荐结 了 , 了对 标 用户的推荐结 ,从 荐的 性和可 性。 了推 4 一个用户标 行为的 一 由一个 的 , 中 (u, i, b) 用户u给 品i 上了标 b。当然,用户的 实标 行为 比 的要 ,比如用户 标 的 、用户的 性 、 品的 性 义的 的 , 用户的 一 等。但是本 为了 中 论标 ,考 上 标 行为 用一个 用户、 品、标 。6 本 采用 个 的 评测基于标 的 品推荐算法。一个是Delicious ,一 个是CiteULike 。Delicious 中包 用户对网 的标 。它 一行由4部分 , 、用户ID、网 URL、标 。本 取了 中用户对一些 名 网 网 Wordpress、 BlogSpot、TechCrunch 的标 。CiteULike 包 用户对论文的标 ,它 行也由 5 4部分 , 品ID、用户ID、 、标 ,本 取了 中 的部分。 个 的 统计 如 4-1 , 的20个标 4-2。 Delicious CiteULike 4-1 Delicious CiteULike数据 的 信息 用户数 11 200 12 466 数 8791 7318 标签数 42 233 23 068 记录数 6 405 665 409 220 4-2 Delicious CiteULike数据 的20 标签 Delicious wordpress CiteULike 6 review blog network blogs bioinformatics design evolution google networks 7
120. 104 4 数 Delicious howto plugin web2.0 plugins tutorial blogging tips art music linux photography webdesign themes ubuntu software CiteULike tagging software sequencing social genome genomics statistics ngs folksonomy human mirna microarray expression clustering metagenomics 4.3.1 实 本 机分 10 。这 分 的 值是用户和 品, 包括标 。也 是 ,用户 对 品的 个标 要 被分进 ,要 被分进测试 , 一部分在 ,一 部分在测试 中。然 , 1 作为测试 , 的9 作为 , 中的 用户标 测测试 上用户 给 品 标 。对于用户u, R(u)为给用户u的 度为N 的推荐 , 包 为用户 标 的 品。 T(u)是测试 中用户u实 上 标 的 品 。然 , 用准 率 precision 和 率 recall 评测个性化推荐算法的 度。 R(u)  T (u) Precision R(u ) R(u)  T (u) Recall T (u) 上 的实 进行10 , 的测试 ,然 实 的准 率和 率的 值作为 的评测结 。 为了 评测个性化推荐的性 , 评测了推荐结 的覆盖率 coverage 、 性 diversity 和 度。 覆盖率的计算公 如 : * R(u) Coverage uU I 关于 性, 在 1 中 论 , 性的 义取决于相 度的 义。在本 中,
121. 4.3 的 105 用 品标 品i的标 的 相 度度 品 的相 度。对于 个 品i,item_tags[i] 了 1 , 中item_tags[i][b]是对 品i 标 b的 , 品i和j的 相 度 可 如 程 计算。 def CosineSim(item_tags, i, j): ret = 0 for b,wib in item_tags[i].items(): 2 if b in item_tags[j]: ret += wib * item_tags[j][b] ni = 0 nj = 0 for b, w in item_tags[i].items(): ni += w * w 3 for b, w in item_tags[j].items(): nj += w * w if ret == 0: return 0 return ret / math.sqrt(ni * nj) 在得 品 的相 度度 , 如 公 计算一个推荐 的 性。 4 ¦ ¦ Sim(item _ tags[i],item _ tags[ j]) Diversity 1  iR(u) jR(u), jzi § R(u) · ¨ ¸ ©2¹ 6 如 用程 实现, 如 : def Diversity(item_tags, recommend_items): ret = 0 n=0 for i in recommend_items.keys(): 5 for j in recommend_items.keys(): if i == j: continue ret += CosineSim(item_tags, i, j) n += 1 return ret / (n * 1.0) 6 推荐系统的 性为 有用户推荐 性的 值。 至于推荐结 的 性, 地用推荐结 的 程度 AveragePopularity 度 。 对于 品i, 义它的流行度item_pop(i)为给这个 品 标 的用户 。 对推荐系统, 义它的 度如 : ¦ ¦ log(1 item _ pop(i)) 6 ¦ ¦ AveragePopularity = u iR(u) 1 u iR(u ) 7
122. 106 4 数 4.3.2 的 了用户标 行为 ,相 大家 可 一个 的个性化推荐算法。这个算法的 述如 。 ‰ 统计 个用户 常用的标 。 ‰ 对于 个标 ,统计被 这个标 的 品。 ‰ 对于一个用户, 常用的标 ,然 具有这些标 的 品推荐给这 个用户。 对于上 的算法,用户u对 品i的兴趣公 如 : ¦ p(u, i) nu,b nb,i b B(u) 户u B(i) i被 nu,b是用户u 标 b 的 ,nb,i是 品i被 标 b的 。本 用SimpleTagBased标 这个算法。 在Python中, 如 : ‰ 用 records 标 的 , 中records[i] = [user, item, tag]; ‰ 用 user_tags nu,b, 中user_tags[u][b] = nu,b; ‰ 用 tag_items nb,i, 中tag_items[b][i] = nb,i。 如 程 可 从records中统计出user_tags和tag_items: def InitStat(records): user_tags = dict() tag_items = dict() user_items = dict() for user, item, tag in records.items(): addValueToMat(user_tags, user, tag, 1) addValueToMat(tag_items, tag, item, 1) addValueToMat(user_items, user, item, 1) 统计出user_tags和tag_items , 可 如 程 对用户进行个性化推荐: def Recommend(user): recommend_items = dict() tagged_items = user_items[user] for tag, wut in user_tags[user].items(): for item, wti in tag_items[tag].items(): #if items have been tagged, do not recommend them if item in tagged_items: continue if item not in recommend_items: recommend_items[item] = wut * wti else: recommend_items[item] += wut * wti return recommend_items 在Delicious 上对上 的算法进行评测,结 如 4-3 。
123. 4.3 的 107 4-3 标签的 推荐 Delicious数据 上的评测 1 CiteULike Delicious 7.45% 7.19% 2.25% 1.24% 49.79% 0.7088 3.33 19.05% 0.6073 5.22 2 4.3.3 的 一 上 出的 算法,该算法 如 公 测用户u对 品i的兴趣: ¦ p(u, i) b nu,b nb,i 上 的公 可 发现很 , 分析该算法的 3 并 出 进意 。 1. TF-IDF 这个公 于给 标 对应的 品很大的 ,因此 推荐 的 品给 用户,从 推荐结 的 性。 ,这个公 用用户的标 个标 是用户使用 的标 , 标 的 是用户使用该标 的 对用户兴趣 , 中 。这种 方法的 4 是给 标 大的 ,从 应用户个性化的兴趣。这 可 TF-IDF的 , 对这一公 进行 进: ¦ p(u, i) b nu ,b log(1 nb(u) ) nb,i 6 这 , nb(u) 了标 b被 个 的用户使用 。这个算法 为TagBasedTFIDF。 4-4给出了TagBasedTFIDF在Delicious和CiteULike 个 上的 实 性 。和 4-3 的实 结 相对比,可 该算法在 有指标上相比SimpleTagBased算法 有 高。 5 4-4 Delicous CiteULike数据 上TagBasedTFIDF的 CiteULike Delicious 11.02% 8.33% 3.32% 1.43% 63.92% 23.95% 0.7469 0.6455 3.20 5.08 6 理, 也可 TF-IDF的 对 品进行 ,从 得 如 公 : ¦ p(u, i) nu ,b nb,i b log(1  n(u) b ) log(1  n(u) i ) 中, ni(u) 了 品i被 个 的用户 标 。这个算法 为TagBasedTFIDF++。 6 4-5 了TagBasedTFIDF++算法的 实 性 。和TagBasedTFIDF算法相比, 了 性有 , 指标 有 高。这一结 ,当 标和 品,在 进推 荐结 个性化的 并 推荐结 的 度。 7
124. 108 4 数 4-5 Delicous CiteULike数据 上TagBasedTFIDF++的 CiteULike Delicious 11.79% 8.88% 3.56% 1.53% 75.68% 0.7346 2.83 36.98% 0.6338 4.83 2. 数据 在 的算法中,用户兴趣和 品的联系是 B(u)  B(i) 中的标 的。但是,对于 用户 者 品,这个 B(u)  B(i) 中的标 很 。为了 高推荐的准 率, 可 要对标 ,比如 用户 经用 推荐系统 这个标 , 可 这个标 的 相标也 用户标 中,比如 个性化 、 等标 。 进行标 有很 方法, 中常用的有话题 topic model , 这 的 介绍一种基于 域的方法。 标 的本 是对 个标 和它相 的标 ,也 是计算标 的相 度。 的相 度可 是 义 。如 有一个 义 ,可 这个 进行标 。如 没有 这个 , 可 从 中统计出标 的相 度。 如 为 一个 品上的 标 具有 种相 度, 当 个标 出现在很 品的 标 中, 可 为这 个标 具有较大的相 度。对于标 b, N(b)为有标 b的 品的 ,n_{b,i}为给 品i 上标 b的用户 , 可 如 相 度公 计算标 b和标 b'的相 度: sim(b, b' ) ¦ n n iN (b) N (b' ) b,i b',i ¦ ¦ n2 iN (b) b,i n2 iN (b' ) b' ,i 4-6 了 用上述公 计算出的、CiteULike 中recommender_system标 的相关标 。可 ,相关标 中 一个 是该标 的 , 的标 包 该 的 recsys、 collaborative_filter , 是和recommender_system非常相关的一些标 。 , 4-7 了 用Delicious 计算的和标 google相关的标 。如 ,这些相关标 包 如 search、indexing这些和 的业务非常相关的标 。 4-6 CiteULike数据 标签 recommender_systems recommender recommendation recsys cf multidimensional recommend collaborative_filtering music_recommendation recommenation_systems recommender_system的 标签 0.558 394 161 0.415 820 788 0.387 596 911 0.351 025 321 0.328 168 796 0.324 232 233 0.318 880 412 0.318 210 024 0.305 214 504 0.281 284 339
125. 4.3 的 4-7 Delicious数据 标签 search searchengine robots.txt indexing googlebot search_engines indexation bots opt-in/opt-out web_index google的 标签 0.533 522 0.458 06 0.394 027 0.391 894 0.382 861 0.379 196 0.375 179 0.375 179 0.375 08 0.375 08 109 1 2 3 为了 进行标 是 高推荐系统的性 ,本 进行了实 。对于 经 的标 于20的用户, 标 的相关标 ,然 中 20个标 作为用户相关的标 。 4-8 了考 标 这些标 , 结 的推荐算法性 。和 4-3相 4 比,进行标 实 高基于标 的 品推荐的准 率和 率,但可 推荐 结 的覆盖率和 度。 4-8 标签 后的推荐 6 CiteULike Delicious 12.38% 9.04% 3.74% 1.55% 74.60% 0.7133 2.92 37.09% 0.6261 4.85 3. 标签 5 是 有标 应用户的兴趣。比如,在一个视频网 中,用户可 对一个视频 了一 个 的标 ,比如 好 ,但 因此 为用户对 好 有兴趣,并且给用 户推荐 具有 好 这个标 的视频。相 ,如 用户对视频 这个标 , 可 此 为用户对 的电 兴趣,从 给用户推荐 的电 。 ,标 系统 6 经常出现 、 义相 的标 ,比如recommender system和recommendation engine 是 个 义。 标 理的 一个 要意义在于 标 作为推荐 。如 要 标 现给用户, 作为给用户推荐 一个 品的 ,对标 的 义的 者 的 , 这些推荐 要 很高。 ,这些标 包 很 意义相 的 包 没有意 。 6 一 有如 标 理方法: ‰ 频很高的 ; ‰ 因 ‰ 因分 的 义 ,比如 recommender system和recommendation system; 的 义 ,比如 collaborative_filtering和collaborative-filtering。 7
126. 110 4 数 为了 标 的 ,很 网 也采用了 用户进行 的 , 用户告 系统 个标 是 。MovieLens在实 系统中 采用了这种方法。关于这方 的 可 参考GroupLens 的Shilad Wieland Sen 的 论文 。此 ,电 推荐网 Jinni也采用了这种方 如 4-10 。当然,Jinni 于UGC的标 系统,它给电 的标 是 家 的,因此它 用户对标 进行 实是 家和广大用户的 。 取自Jinni网 , 中相关 4-10 Jinni 用户对 的作 作人有 给的标 进行 4.3.4 的推荐 论的 算法很 ,也 实现,但 是 系统化和理论化。因此,在这一 中 主要 论如 用 基于标 的个性化推荐。 , 要 用户 标 的行为 一 上。 , 是由 、 和 上的 的。 在用户标 上,有3种 的 , 用户、 品和标 。因此, 要 义3种 的 , 用户 、 品 和标 。然 ,如 得 一个 用户u 给 品i 了标 b的用户标 行为(u,i,b), 自然的 法 是在 中 3 , 要在 用户u对应的 v(u)和 品i对应的 v(i) 一 如这个 经有 相 , 应该 的 1 , 理,在v(u)和v(b) 要 一 ,v(i)和v(b) 也 要 相 。 4-11是一个 的用户 品 标 的 子。该 包 3个用户 A、B、C 、3个 品 a、 b、c 和3个标 1、2、3 。 在 义出用户 品 标 , 可用2 的PersonalRank算法计算 有 品 参 Shilad Wieland Sen的 Nurturing Tagging Communities 。
127. 相对于当 用户 N个 品。 在 上的相关性,然 4.3 的 111 相关性从大 的 ,给用户推荐 名 高的 1 2 4-11 的用户 品 标 的 子 3 用 的 在介绍了 , 可 基于 考 的 算法。在 个算法中,用 户对 品的兴趣公 如 : P(i u) ¦ P(i b)P(b u) 4 b 这个公 用户对 品的兴趣 标 ,因此这个公 可 一个比本 介绍 的 的 为SimpleTagGraph 。给 用户标 行为 (u,i,b),SimpleTagGraph 有 ,一 由用户 v(u)指 标 v(b), 一 由标 v(b)指 品 v(i)。从这个 义可 ,SimpleTagGraph相对于 用户 品 标 了用户 和 6 品 的。 4-12 是一个 的SimpleTagGraph 子。在 了SimpleTagGraph , 用 的 PersonalRank算法, K = 1,并给出 的 义, 等价于 出的 推荐算法。 5 6 6 4-12 SimpleTagGraph的 子 7
128. 112 4 数 4.3.5 标签的推荐 基于标 的推荐 化推荐系统。 4-13 大好 是可 用标 推荐 ,这方 的 了 读书的个性化推荐 。 性应用是 的个性 取自 , 中相关 的 作 作人有 4-13 读书的个性化推荐应用 的 如 4-13 , 读书推荐结 包括 部分。上 是一个标 , 用户的兴趣分 , 标的 大, 用户对这个标 相关的 书 兴趣。从 中上方的标 可 , 为 对 程、机 、 开发 兴趣,这是因为 了很 IT技 方 的 书, 为对 兴趣,是因为 了好 本 的 , 因为 对人文 比较 兴趣, 为对 、 文化 比较 兴趣。 标 中的 一个标 , 可 在标 方得 和这个标 相关的 书推荐,比如 4-13 标 了机 相关的 书推荐。 这 推荐结 有很 好 , 是 高了推荐结 的 性。 ,一个 用户的兴趣在 是很广泛的,但在 一天 比较具 。因此, 如 在 一天 中用 户当天的兴趣,是非常 的。 标 , 了用户的 有兴趣,然 用户自己
129. 4.3 的 113 今天的兴趣 相关的标 ,得 推荐结 ,从 荐结 满 用户 的兴趣。 大地 高了推荐结 的 性,使得推 1 ,标 也 了推荐 。用户 这个 可 给自己推荐的 一本 书 是基于它 为自己对 个标 兴趣。 对于 个标 ,用户总 自己 的行为 自己是 的对这个标 兴趣。 ,要 用户 上 推荐结 有 理是很 的, 推荐结 的可 性 2 分 了 部分, 用户 得标 是有 理的,然 用户 得从 个标 推荐出 本书 也是有 理的。因为 用户 得有 理的标 比 用户 得有 理的推荐 书 ,标 和书的关系 理的。 用户 得有 理,从 用户 得推荐出 的书也是很有 3 GroupLens的 人员Jesse Vig对基于标 的 进行了 。 和4.3.2 出的算法 ,Jesse Vig 用户和 品 的关系 了用户对标 的兴趣 tag preference 和标 与 品 的相关度 tag relevance ,然 作者用 一种推荐算法给用户推荐 品,但设计了4种标 的 。 ‰ RelSort 对推荐 品 使用的是用户 4 使用 且 品上有的标 ,给出了用户 对标 的兴趣和标 与 品的相关度,但标 和 品的相关度 。 ‰ PrefSort 对推荐 品 使用的是用户 使用 且 品上有的标 ,给出了用 户对标 的兴趣和标 与 品的相关度,但标 用户的兴趣程度 。 6 ‰ RelOnly 对推荐 品 使用的是用户 使用 且 品上有的标 ,给出了标 与 品的相关度,且标 和 品的相关度 。 ‰ PrefOnly 对推荐 品 使用的是用户 使用 且 品上有的标 ,给出了用 户对标 的兴趣程度,且标 然 ,作者对用户设计了3种 用户的兴趣程度 。 。 是关于推荐 的 ,作者 了如 3 5 个 题: ‰ 推荐 理 这部电 为 被推荐给 :对于这个 题用户 为RelSort> PrefOnly>=PrefSort>RelOnly。 ‰ 推荐 是 推荐的电 :对于这个 题用户 为RelSort>PrefSort> 6 PrefOnly>RelOnly。 ‰ 推荐 这部电 是 现在的兴趣:对于这个 题用户 为 RelSort>PrefSort>RelOnly >PrefOnly。 然 ,作者 了用户对 标 的 法。作者 标 分为主 比如对电 的 法, 6 如 4-9 和 比如对电 的 述,如 4-10 。作者对 种 的标 了上 3个 题。 参 Jesse Vig、Shilad Wieland Sen和 John Riedl的 Tagsplanations: Explaining Recommendations Using Tags ACM 7 2009 Article,2009 。
130. 114 4 数 ‰ 这个标 理 这部电 为 被推荐给 :用户 为 标 优于主 标 。 ‰ 这个标 是 推荐的电 :用户 为 标 优于主 标 。 ‰ 这个标 这部电 是 现在的兴趣:用户 为 标 优于主 标。 从上 的结 可 发现, 实 的标 优于主 标。 ,作者 了用户对4种 推荐 的总 满意度,结 PrefOnly > RelSort > PrefSort > RelOnly。 4-9 10 用户 的 标签 标签 great soundtrack fanciful funny poignant witty dreamlike whimsical dark surreal deadpan 为 标签好的 例 90.9% 90.9% 90.0% 88.9% 88.0% 87.5% 87.5% 87.3% 86.7% 84.2% 4-10 10 用户 的 标签 标签 afi-100 fantasy world world war ii sci-fi action psychology disney satirical drama satire 为 标签好的 例 100.0% 100.0% 100.0% 95.2% 94.4% 93.8% 91.7% 88.5% 87.5% 86.4% 总结 的结 ,作者得出了 结论: ‰ 用户对标 的兴趣对 用户理 为 给 ‰ 用户对标 的兴趣和 品标 相关度对于 的作用; 推荐 个 品 有 用户 自己是 ; 被推荐 品具有 该 用自Jesse Vig、Shilad Wieland Sen和John Riedl的论文 Tagsplanations: Explaining Recommendations Using Tags 。 上。
131. 4.4 115 ‰ 品标 相关度对于 用户 被推荐 品是 当 的兴趣 有 ; 1 ‰ 实 标 相比主 标 对用户 有作用。 4.4 用户推荐标签 当用户 个 品 ,标 系统非常 用户 给这个 品 上高 的标 ,这 2 进标 系统的 性 。因此,很 标 系统 设计了标 推荐 给用户推荐标 。 4-14 了音乐网 Last.fm和 的标 推荐系统。 3 4 取自Last.fm和 , 中相关 的 作 作人有 4-14 Last.fm 和 的标 推荐系统 6 4.4.1 为 用户推荐标签 在 论如 给用户推荐标 , 要了 为 要给用户推荐标 。一 为,给用 5 户推荐标 有 好 。 ‰ 用户 标签 用户从 标 用户 标 的 度,这 很 用 户 意给 品 标 ,因此 要一个 具 用户 标 的 度,从 高用户 标 的参与度。 ‰ 标签 一个 义 的用户可 用 的 6 。这些 义 使标 的 得很 大, 且 使计算相 度 准 。 使用推荐标 , 可 对 进行 , 出现 的 义 , 出现的 是一些比较 的、有 性的 。 6 4.4.2 用户推荐标签 用户u给 品i 标 , 有很 方法可 给用户推荐和 品i相关的标 。比较 的方 法有4种。 0种方法 是给用户u推荐 个系统 的标 这 这个算法称为PopularTags , 7
132. 116 4 数 称为 0种,是因为这个算法 了, 至于 为标 b的 程度, 这个算法的实现如 : 称为一种标 推荐算法。 tags[b] def RecommendPopularTags(user,item, tags, N): return sorted(tags.items(), key=itemgetter(1), reverse=True)[0:N] 1种方法 是给用户u推荐 品i上 的标 item_tags[i][b]为 品i被 上标 b的 , 这 这个算法称为ItemPopularTags 。 这个算法的实现很 ,具 如 : def RecommendItemPopularTags(user,item, item_tags, N): return sorted(item_tags[item].items(), key=itemgetter(1), reverse=True)[0:N] 2种方法是给用户u推荐 自己经常使用的标 这 这个算法称为UserPopularTags 。 user_tags[u][b]为用户u使用标 b的 , 这个算法的实现如 : def RecommendUserPopularTags(user,item, user_tags, N): return sorted(user_tags[user].items(), key=itemgetter(1), reverse=True)[0:N] 3种算法是 种的 推荐结 性 ,然 这 为HybridPopularTags ,该方法 一个系 的推荐结 。这个算法的实现 如 : 上的 def RecommendHybridPopularTags(user,item, user_tags, item_tags, alpha, N): max_user_tag_weight = max(user_tags[user].values()) for tag, weight in user_tags[user].items(): ret[tag] = (1 – alpha) * weight / max_user_tag_weight max_item_tag_weight = max(item_tags[item].values()) for tag, weight in item_tags[item].items(): if tag not in ret: ret[tag] = alpha * weight / max_item_tag_weight else: ret[tag] += alpha * weight / max_item_tag_weight return sorted(ret[user].items(), key=itemgetter(1), reverse=True)[0:N] 意在上 的实现中, 在 的好 是 于 个对 结 的 , 者因为用户非常 个 结的 没 性相 个 , 至于因为 品非常 品对推荐结 的 。 大值 了 一化,这 没用户对推荐 4.4.3 实 和 的实 一 , 用 的方法 用户标 的 。 要 意的是,这 分 user、item、tag为主 。为了 好的理 如 分 def SplitData(records, train, test): for user,item, tag in records: if random.randint(1,10) == 1: test.append([user,item,tag]) else: train.append([user,item,tag]) return [train, test] 9 1分 和测试 ,然 是 user、item为主 , 是 , 参考 的Python :
133. 4.4 117 对于测试 中的 一个用户 品对(u,i), 推荐N个标 给用户u作参考。 R(u,i)为 1 给用户u推荐的应该在 品i上 的标 , T(u,i)为用户u实 给 品i 的标 的 , 可 用准 率和 率评测标 推荐的 度: Precision ¦ (u,i)Test R(u, i)  T (u, i) ¦ (u,i)Test R(u, i) 2 Recall ¦ (u,i)Test R(u, i)  T (u, i) ¦ (u,i)Test T (u, i) 实 4-11 出了PopularTags、UserPopularTags、ItemPopularTags 3种算法在N = 10 的准 率 3 和 率。 准率 率 准率 率 4-11 3 标签推荐 N=10 的 Delicious 4 PopularTags UserPopularTags ItemPopularTags 7.32% 11.84% 23.80% 19.88% 32.16% 64.63% CiteULike 6 2.21% 10.85% 12.94% 7.75% 38.00% 45.33% 如 中结 ,ItemPopularTags具有 好的准 率和 率,这一 和 法是 因为用户的兴趣是广泛的, 设用户对 程和 有兴趣, 用户在给一本 的。 5 标 , 参考自己对 程书 的标 , 地参考关于 的常用标 。因此 ItemPopularTags 比UserPopularTags的 度要高。 一 HybridPopularTags算法, 4-12给出了HybridPopularTags算法在 性 系 D 的准 率和 率。 6 4-12 HybridPopularTags 系数 α下的 Delicious α 0.0 11.84% 32.16% CiteULike 6 10.85% 38.00% 0.1 15.27% 41.48% 12.71% 44.53% 0.2 16.71% 45.39% 13.82% 48.42% 0.3 18.93% 51.41% 14.85% 52.04% 7
134. 118 4 数 Delicious α 0.4 21.14% 57.42% 0.5 22.74% 0.6 23.99% 0.7 24.82% 0.8 25.15% 61.75% 65.15% 67.42% 68.30% 0.9 24.95% 67.77% 1.0 23.80% 64.63% CiteULike 15.57% 16.01% 16.24% 16.07% 15.45% 14.60% 12.94% 54.55% 56.07% 56.90% 56.29% 54.12% 51.15% 45.33% 如 4-12 ,在 =0.8的 ,HybridPopularTags取得了 好的准 度 准 率=25.15%, 率=68.30% 。 且这个 度 了 的ItemPopularTags和UserPopularTags算法的 度。考 70%的 度 经很高了,因此很 应用在给用户推荐标 给出用户 常用的标 , 品 经常被 的标 。比如 如 4-15 ,在 《MongoDB 指 》 一书 ,它给 推荐的标 分为 。一 是 的标 , 常用的标 ,可 这一 中包 如 、 等和MongoDB 关系的标 。 一 是常用标 , 的用户给 MongoDB 的 的标 ,可 这 有的标 是和MongoDB相关的。 取自 , 中相关 的 作 作人有 4-15 给 推荐的《MongoDB 指 》一书的标 , 的基于统计用户常用标 和 品常用标 的算法有一个 , 是对 用户 者 的 品很 有推荐结 。 决这一 题有 个 。 一个 是从 品的 中 取关 作为标 。这方 的 很 , 是在上 文广告领域 。本书3.4 也介绍了 关 的一些方法。 参 Wen-tau Yih、Joshua Goodman和 Vitor R. Carvalho的 Finding Advertising Keywords on Web Pages ACM 2006 Article,2006 。
135. 4.5 119 个 是 对有结 ,但结 的 。比如《MongoDB 指 》一书 有一 1 个用户 经给它 一个标 nosql,这个 可 一些关 , 一些和nosql相关的 标 ,比如 、 程等。实现标 的关 是计算标 的相 度。关于这一 ,4.3.3 经进行了 。 4.4.4 的标签推荐 2 可 用于标 推荐。在 用户 标 的行为 如 4-11 , 可 用PersonalRank算法进行 名。但这 的 题和 。这 的 题是,当用户u 品i , 给 品i 的标 。因此, 可 ­D (v(k) v(u)) rv(k ) °®1D (v(k) v(i)) °¯0 ( ) 义的 率,如 :3 也 是 , 有用户u和 品i对应的 有非0的 率, 的 在上 的 义中,v(u)和v(i)的 率并 相 ,v(u)的 率是a, v(i)的 率 为0。 率是1a。 4 参可 实 。 4.5 6 本 主要 论了UGC标 在推荐系统中的应用。标 作为 述 义的 要 介, 论是对于 述用户兴趣还是 品的 有很 要的意义。标 在推荐系统中的应用主要 中在 个 题上,一个是如 用用户 标 的行为给用户推荐 品, 一个是如 给用户推荐标 。本 在 分析用户标 行为的基础上对这 个 题进行了 。 关于标 的 题, 在 得了广泛关 。ECML/PKDD在2008 5 经推出 基 于标 的推荐系统比 。在这些 中 现了很 的方法,比如 分 tensor factorization 、基于LDA的算法 、基于 的算法 等。 这些算法很 具有较高的 度,在 实 系统中应用 还有很 实 的 要 决。 GroupLens的 人员给MovieLens系统 了很 标 方 的 作。Shilad Sen在论文 中 6 比 介绍 http://www.kde.cs.uni-kassel.de/ws/rsdc08/program.html。 参 Panagiotis Symeonidis、Alexandros Nanopoulos和Yannis Manolopoulos的 Tag recommendations based on tensor dimensionality reduction ACM 2008 Article,2008 。 6 参 Ralf Krestel、 Peter Fankhauser和Wolfgang Nejdl的 Latent dirichlet allocation for tag recommendation ACM 2009 Article,2009 。 参 Andreas Hotho、 Robert Jäschke、 Christoph Schmitz和Gerd Stumme的 Folkrank: A ranking algorithm for folksonomies Proc. FGIR 2006,2006 。 参 Shilad Wieland Sen、 Jesse Vig和John Riedl的 Tagommenders: Connecting Users to Items through Tags ACM 7 2009 Article,2009 。
136. 120 4 数 了如 用标 标 如 用标 联系用户和 品并给用户进行个性化电 推荐。Jesse Vig在论文 中 了如 进行推荐 , 用户和 品 的关系 化为用户对标 的兴趣 tag preference 和 品的相关度 tag relevance 种因 。 了如 对标 进行 理 , 的标 进行 。 参 Jesse Vig、Shilad Wieland Sen和John Riedl的 Tagsplanations: Explaining Recommendations Using Tags ACM 2009 Article,2009 。 参 Shilad Wieland Sen、F. Maxwell Harper、Adam LaPitz和John Riedl的 The quest for quality tags” ACM 2007 Article,2007 。
137. 5第 章 5.1 文 121 1 2 本 的推荐系统算法主要 中 了如 联系用户兴趣和 品, 用户兴趣 的 品推荐给用户,但这些算法 了一 , 是用户 的上 文 context 。这些上 文 3 包括用户 推荐系统的 、地 、 等,对于 高推荐系统的推荐系统是非常 要的。比 如,一个 服的推荐系统在 天和 天应该给用户推荐 种 的服 。推荐系统 因为用 户在 天 T , 在 天也给该用户推荐 的T 。 个 子,当用户在中关 开一个 推荐系统 ,如 这个推荐系统推荐的 是中关 的, 然推荐结 4 用户满意。上 文 用户兴趣的 子还有很 ,比如用户上 和 的兴趣 有 ,用户在 和 的兴趣 有 ,用户和 在一 与和 在一 的兴趣有 , 至用户在上 阅读的文 和在 公 阅读的文 也是 的。因此,准 了 用户的上 文 ,并 该 应用于推荐算法是设计好的推荐系统的关 关于上 文推荐的 ,可 参考Alexander Tuzhilin 。 的一 5 述 Context Aware Recommender Systems 。Alexander Tuzhilin 和的 对上 文相关的推荐算法 进行了 。 在论文中 了一个上 文推荐系统的 子 Sourcetone音乐推荐系统 如 5-1 。该系统 用户 自己现在的 ,然 它 音乐。这 , 是一种 要的上 文,用户在 的 用户 的 给用户推荐 的音乐。当然,当用户 6 在个 使用推荐系统 ,系统很 出用户当 是 。因此Sourcetone采取了 用户主 告 系统 现在 的方 ,然 系统 用户当 的 并 考 兴趣推 荐 要的 。 和 的上 文还有很 , 视频为 。用户是在上 还是在 ,用户 6 是在家 还是在 ,用户是自己一个人 还是和好友一 ,用户是和 一 还是和 一 ,用户是 还是 ,这些 是上 文 , 且这些上 文对用户 当 电视 有很大 。 本 主要 论 上 文,并 推荐算法中,从 推荐系统 介绍一 地 上 文, 论如 准 测用户在 个 和地 6 地 的兴趣。本 然 TopN推荐, 如 给用户 一个 度为N的推荐 , 该 包 了用户在 一 者 个地方 可 的 品。 7 个人主 为http://people.stern.nyu.edu/atuzhili/。
138. 122 5 文 取自Sourcetone, 中相关 的 作 作人有 5-1 sourcetone.com个性化音乐推荐系统,该 的可 用户 现在的 5.1 上下文信息 本 论上 文 中 应,然 如 这些 应 的。 要的 上 文 。本 推荐系统的 中, 介绍各种 的 实 对比 5.1.1 是一种 要的上 文 ,对用户兴趣有 广泛的 。一 为, 对 用户兴趣的 现在 个方 。 ‰ 用户 的 这 的用户兴趣 化是因为用户自 因发 的 化。比 如 的 ,用户 , 大了 文 。一 程 员 作 的 , 从阅读 书 阅读 业书 。一个人参 作了, 作 的兴趣和 的兴趣相比发 了 化。 ,如 要准 测用户现在的兴 趣, 应该关 用户 的行为,因为用户 的行为 现 现在的兴趣。当然, 考 用户 的兴趣 对 的用户兴趣, 对 的用户兴趣很 作用,比如 用户 然中 了。 ‰ 的 一部电 上 的 可 被很 人关 ,但是经 的电 是很 的,很 电 上 被人 了。此 , 品也可 的 ,比如一部 经被 的电 因为 然被 个 。因此,
139. 5.1 文 123 当 决 在 个 给 个用户推荐 个 品 , 要考 该 品在该 了。比如, 给一个NBA 推荐10 的 个NBA 然是 是 经1 的 当然 这也 一 ,比如用户当 是在 的NBA 。 系统的 品具有 的 ,比如 的 很 ,电的 相对较 。 ‰ 天 应主要 了 ,天T,天 本 对用户兴趣的 。当然, 也 。比如人 天 , 有 好的人 在,但大 2 部分用户 是 这个 的。 此 , 也是一种 应: 的 ,人 要 ;的 ,人 要关 电 。2011 ACM推荐大 的一个 经 一 上 文相关的电 推荐算法比 ,该比 要 参 者 测 中用户在 的行为。关 应的读者可 关 一 这个 3 上发 的相关论文。 5.1.2 例 一些 子 一 对用户兴趣的 。 Google Insights 具对 4 应进行一些分析。Google Insights 了 个搜索 自2004 的搜索频率 , 可 该 发现一些用户兴趣 化的 子。 5-2 了3个 名的社交网 名 自2004 在google上的搜索 化 ,从 中可 ,facebook的搜索 也在 ,但 上 , myspace在2007 开 ,twitter的搜索 5 于facebook。这种 化的产 主要 于用户兴趣的 化。 6 6 6 5-2 facebook、twitter和myspace 3个 的搜索 化 http://2011.camrachallenge.com/。 7 5-2中标 为 的 对应facebook,标 为 的 对应myspace,标 为 的 对应twitter。 者
140. 124 5 文 5-3 了2004 名 机品 是自2006 ,iPhone的搜索 是 有品 的 机在 搜索 ,因此这是一种 的 应。 的搜索 化 。从 中可 ,了 的用户开 有一个 ,这是因为 个现 。 一 iPhone。 一个现 机的 大 5-3 机品 的搜索 化 5-4 用户在 天 天和 ,这也 了一些 品的搜索 化 。该 了 应对用户行为的 。比如, (该 由 用户统计得出,如 是 的 大 亚,结论应该是相 的 , 。对于巧 ,可 个 ,一个是 , 一个是 人 现了巧 的 具有 的 应。 5-4 一些 品相关搜索 的搜索 化 标 为 的 对应iphone,标 为 的 对应samsung,标 为 的 对应nokia。 者 标 为 的 对应coffee ,标 为 的 对应chocolate 巧 ,标 为 的 对应soup , 标 为 的 对应ice cream 。 者
141. 5.1 文 125 5.1.3 系统 的分 1 在给 ,推荐系统从一个 系统 了一个 的系统, 用户行为 也 了 。 一个 系统, 要 这个系统的 性。本 的 用户行为 ,中个 网的 性。包 的用户行为 由一系 (u,i,t) 了用户u在 t对 品i产 行为。在给 ,本 2 统计如 系统的 性。 ‰ 数据 用户数的 有些网 于 ,它 天的 用户 在性 至指 。 有些网 于 , 天的 用户 比较 。还有一些网 于 , 天的用户 在流 。在3种 的系统中用户行为是 3 一 的,因此 要 系统的 。 ‰ 系统的 有些网 ,比如 网 , 天 出现大 的 , 的 ,今天 的 也 天 被人 了 。 ‰ 用户 问 有些网 用户 一 网 用户 天 。为了度 这些 性, 了,有些网 用户 可 统计用户的 一 , 有些 天 , 也可 4 统计相 T天 系统的用户的 度。 1. 数据 的 本 用Delicious 进行 实 评测 算法的 测 度。该 包 950 000 个用户在2003 9 2007 12 对网 标 的行为。该 中包 132 000 000个标 和 5 420 000 000 标 行为 。该 行是一 标 行为 ,由4部分 用户ID、 、网 URL和标 , 了一个用户在 一天对 个网 上了 个标 的行为。因为网 由 URL标 ,因此可 域名 网 分 的 。本 取了5个域名对应的网 , 个 分 5个 的 。这5个域名是nytimes.com、sourceforge.net、blogspot.com、 6 wikipedia.org、youtube.com。 5-1给出了本 用 的基本统计 。 数据 nytimes youtube wikipedia sourceforge blogspot 5-1 实 数据 的 用户数 4947 4551 7163 8547 8703 统 信息 数 7856 7526 14770 5638 10107 99.65% 99.72% 99.86% 99.65% 99.82% 2. 的 系统的 网 的 品具有 的 ,比如 的 。 可 用如 指标度 网 中 品的 。 很 ,电 的 6 6 很 7 参 The Lifespan of a link ,地 为http://bits.blogs.nytimes.com/2011/09/07/the-lifespan-of-a-link/?ref=technology。
142. 126 5 文 ‰ 数 如 一个 品在 天被至 一个用户产 行为, 义该 品在 这一天在 。因此, 可 品的 在 天 度 一 品的 。考 品的 在 天 和 品的流行度应该 比,因此给 一个 , 品 流行度分 20 ,然 计算 一 品的 在 天 。 5-5 了5个 中 品流行度和 品在 天 的关系。 标是 一 品的 流行度, 是 该 品的 在 天 。如 , 中的 具有 的 率。对于流行 度相 的 品, 基 的 品在 天 很 , 的 品在 天 很 。这 这 个网 具有 的 性。 等 网 性很 , 一 很, 也很 , 它 的 品 很。基 的 ,它 和 书的 一 ,经常 被用户 ,因此具有比较 的 。 5-5 中 品流行度和 品 在 的关系 ‰ T 系统 行 的 取系统中相 T天的 天,分 计算这 天 的 品流行度,从 得 个流行度 。然 ,计算这 个 的 相 度,如 相 度大, 系统的 品在相 T天的 没有发 大的 化,从 系统的 性 , 品的 在 较 。 法,如 相 度很 , 系统中的 品在相 T 天的 发 了很大 化,从 系统的 性很 , 品的 在 很。 5-6 了5个 中相 T天 品流行度 的 相 度。 标是T, 标是 系统中t 品流行度 和t+T 品流行度 的 相 度 取 的t计算相 度,取 值 。 5-6中的结 了T 大,系统 品流行度分 大 这一 是 然的。 ,可 , 有的 中相 度 T的 ,但 率 是 的。在 的 中,相 度 很 , 系统中 品流行度分 化很 ,系统 性很 。 基 的 中,相 度的 相 对比较 , 系统中 品流行度分 化较 ,系统 性比较 。
143. 5.1 文 127 1 2 3 4 5-6 相 T天系统 品流行度 的 相 度 5.1.4 推荐系统的实 用户兴趣是 化的, 化 现在用户 5 的 行为中。一个实 的推荐系统 要 实 应用户 的行为, 推荐 化,从 满 用户 化的兴趣。 如 一 亚马逊网的推荐系统, 可 发现它是一个实 的推荐系统。如 5-7 , 搜索 开亚马逊网的推荐系统 ,大家可 关于MongoDB的一本书, 了Liked 亚马逊网给 推荐的 书。然 , 。, 亚马逊网 6 的推荐系统 ,发现 的推荐 化了, 了一本Mahout in Action, fix this recommendation 此推荐 ,可 亚马逊网给 推荐这本书的理由:因为 为MongoDB: The Definitive Guide 了Linked。 这一 发 在 。为了 亚马逊网 是 机 推荐 , 经 6 一 亚马逊网的推荐 ,发现并没有 化。但一 产 了 的行为, 化 发 了。当然,并非 的 行为 导 推荐 的 化,比如如 是了 MongoDB: The Definite Guide一书的网 ,推荐 并 化,但 的 有 性 行为 导 推荐 的 化。 6 实现推荐系统的实 性 了对用户行为的 取有实 性要 ,还要 推荐算法本 具有实 性, 推荐算法本 的实 性意 : ‰ 实 推荐系统 天 给 有用户 计算推荐结 ,然 在 天计算出 的 结。 算推荐 ,要 在 个用户 。 推荐系统 , 用户这个 的行为实 计 7
144. 128 5 文 ‰ 推荐算法 要 考 用户的 为 现的兴趣 化, 对用户兴趣 测的 性。 行为和 推荐 行为, 要 推荐 用户 行为的 应出用户 行 ,要 推荐 Like 取自亚马逊网 , 中相关 的作 作人有 5-7 推荐系统实 性 5.1.5 推荐 的 很 推荐系统的 人员经常 一个 题, 是 天给用户的推荐结 化。推荐系统 天推荐结 的 化程度被 义为推荐系统的 性。 荐系统中用户 经常 的推荐结 。 ,没有 性高的推
145. 5.1 文 129 推荐系统的 高用户的满意度 为了 性和用户满意度 是 在关系 性高是 1 这些 题, 人员进行了一 实 , 设计了3种推荐系统。 A 给用户推荐 的10部电 。 B从 的100部电 中推荐10部给用户,但 了 性, 有7部电 推荐 结 在上 的推荐 中。 C 从 有电 中 机 10部推荐给用户。 2 对比这3种算法可 ,A算法 天给用户的推荐结 一 ,没有 性,B算法 了 一的 性, 推荐结 也是比较 的电 ,C算法具有 的 性,因为它 推荐 是从 有电 中 机 的,但是它并没有考 电 的 程度。 然 , 人员进行了用户 实 。 给用户 30个推荐结 分 自3个 3 的算法 然 用户给这些推荐结 评分。经 5 的实 , 人员统计了 一 算 法的推荐结 的 评分,发现了如 现 具 结 分析 参考 的论文 。 ‰ A、B算法的 分 高于C算法。这 的 机推荐虽然具有 高的 性, 但 推荐的 度。 ‰ A算法的 分 , B算法的 分 基本 4 。这 A算法 因为没有 性,从 用户满意度 ,从 也 了 性的 要性。 在了 高推荐结 的 性对推荐系统的 性。 意义 , 的 题 是如 在 度的 5 高推荐结 的 性 要分 决: , 要 推荐系统 在用户有了 的 行为 推荐结 ,使推荐结 满 用户 的兴趣; , 要 推荐系统在用户没 有 的行为 也 经常 化一 结 ,具有一 的 性。 对于 一 , 可 分 种 进行分析。 一是从推荐系统的实 性 度分析。有些推 6 荐系统 天 对 有用户的推荐结 ,然 在 这些结 给用户。这种 的系统 然 法 在用户有了 行为 推荐结 。 , 使是实 推荐系统,由 于使用的算法 ,也具有 的 性。对于 算法的 性,Neal Lathia 在 论文中进行了 ,这 ,如 用户没有行为,如 述了。 给用户的推荐结 具有一 的 6 性 一的 有 种。 ‰ 在 推荐结 一 的 机性。比如从推荐 20个结 中 机 10个结 给用户, 者 推荐 品的 采 10个结 给用户。 ‰ 用户 天 的推荐结 ,然 在 天给用户进行推荐 ,对 天 很 6 参 Neal Lathia、Stephen Hailes、Licia Capra和Xavier Amatriain的 Temporal Diversity in Recommender Systems SIGIR 2010 。 参 Neal Lathia 的 Evaluating Collaborative Filtering Over Time , 论 文 lathia/thesis.html。 为 http://www.cs.ucl.ac.uk/staff/n. 7
146. 130 5 文 的推荐结 进行 当地 。 ‰ 天给用户使用 的推荐算法。可 设计很 推荐算法,比如 算法、 算法等,然 在 天用户 推荐系统 机 一种算法给 进行推荐。 当然, 性也 是 对的。推荐系统 要 推荐的 度,在此基础上 当地考 性。在实 应用中 要 的实 程度的 性对系统是 好的。 5.1.6 上下文推荐 上一 介绍了很 应,本 主要 论如 这些 应应用 系统中。 有很 方法,本 分 介绍 的方法,并 实 对比这些方法。 1. 在没有 的 中, 可 给用户推荐 上 的 品。 在 得用户行 为的 , 的非个性化推荐算法 是给用户推荐 的 品了。给 T, 品i 的流行度 ni (T ) 可 义为: ¦1 ni (T ) (u,i,t)Train,tT 1  α(T  t) 这 ,α是 参。 的Python 实现了上 的计算公 : def RecentPopularity(records, alpha, T): ret = dict() for user,item,tm in records: if tm >= T: continue addToDict(ret, item, 1 / (1.0 + alpha * (T - tm))) return ret 2. 上下文 的ItemCF 基于 品 item-based 的个性化推荐算法是商用推荐系统中应用 广泛的,从 的 论可 ,该算法由 个 部分 : ‰ 用用户行为 计算 品 的相 度; ‰ 用户的 行为和 品相 度 ,给用户 在 个性化推荐。 在上 个 部分中 有 要的应用,这 现在 种 应上。 ‰ 用户在相 很 的 的 品具有 高相 度。 电 推荐为 , 用户今天 的电 和用户 天 的电 相 度在统计意义上应该大于用户今天 的电 和用户一 的电 的相 度。 ‰ 推荐 用户 行为相比用户很 的行为, 现用户现在的兴趣。因此在 测用户现在的兴趣 ,应该 用户 行为的 ,优 给用户推荐 些和 的 品相 的 品。
147. 5.1 文 131 一 的基于 品的 算法,它 如 公 计算 品的相 度: 1 sim(i, j) ¦ 1 uN (i)N (i) N (i) N ( j) 在给用户u 推荐 ,用户u对 品i的兴趣p(u,i) 如 公 计算: p(u,i) ¦ sim(i, j) 2 jN (u ) 在得 用户对 品产 行为的 ,可 ¦ sim(i, j) f uN (i) N (i) tui  tuj N (i) N ( j) 如 公 进相 度计算: 3 意,上 的公 在分子中 了和 有关的 f tui  tuj , 中 tui 是用户u对 品i 产 行为的 。f 的 义是,用户对 品i和 品j产 行为的 , f tui  tuj 。 可 很 ,本 使用如 : 4 f tui  tuj 1 1 D tui  tuj D是 参 ,它的取值在 系统中 取比较大的D , 要取比较 的D 。 。如 一个系统用户兴趣 化很 , 应该 5 进 ItemCF的相 度可 如 实现: def ItemSimilarity(train, alpha): #calculate co-rated users between items C = dict() N = dict() 6 for u, items in train.items(): for i,tui in items.items(): N[i] += 1 for j,tuj in items.items(): if i == j: continue C[i][j] += 1 / (1 + alpha * abs(tui - tuj)) 6 #calculate finial similarity matrix W W = dict() for i,related_items in C.items(): for j, cij in related_items.items(): W[u][v] = cij / math.sqrt(N[i] * N[j]) return W 了考 对相关 的 , 也应该考 用户现在的行为应该和用户 的行为关系 大。因此, 对 测公 的 可 如方 6 。一 , 测公 : ¦1 p(u, i) sim(i, jN (u)S (i,K ) j)1 E t0  tuj 7
148. 132 5 文 中, t0 是当 荐 中 得 高的 荐算法可 如 。上 的公 名。E 是 实现。 , tuj t0 ,和 品j相 的 品 在用户u的推 参 ,要 的 的值。上 的推 def Recommendation(train, user_id, W, K, t0): rank = dict() ru = train[user_id] for i,pi in ru.items(): for j, wj in sorted(W[i].items(), \ key=itemgetter(1), reverse=True)[0:K]: if j,tuj in ru.items(): continue rank[j] += pi * wj / (1 + alpha * (t0 - tuj)) return rank 3. 上下文 的UserCF 和ItemCF算法一 ,UserCF算法 可 用 高 测的准 率。 , 一 关于UserCF算法的基本 :给用户推荐和 兴趣相 的 用户 的 品。从这个基本 出发, 可 在 个方 用 进UserCF算法。 ‰ 用户 在 3 的 义中 , 个用户兴趣相 是因为 相的 品, 者对相 的 品产 行为。但是,如 个用户 相 的 品, 这 个用户应该有 大的兴趣相 度。比如用户A在2006 对C++ 兴趣,在2007 对Java 兴趣,用户B在2006 对Java 兴趣,2007 对C++ 兴趣, 用户C和A一 ,在2006 对C++ 兴趣,在2007 对Java 兴趣。 , 3 的 义,用户A和用户B的兴 趣相 度等于用户A和用户C的兴趣相 度。但 然,在实 , 为用户A和C 的兴趣相 度要大于用户A和B。 ‰ 用户的 行为 在 和当 用户u兴趣相 的一 用户 ,这 用户 的 兴趣 然相比这 用户很 的兴趣 用户u今天的兴趣。也 是 , 应该 给用户推荐和 兴趣相 的用户 的 品。 在 推荐系统中, 在UserCF中的作用非常 。 设 今天要给一个NBA 推荐 。 , 要 一 和 一 的NBA ,然 这 人在当 阅 读 的 推荐给当 用户, 是 这 人 阅读的 推荐给当 用户,因为 阅读 的 在现在 然 了。 一 UserCF的推荐公 。UserCF 如 公 计算用户u和用户v的兴趣相 度: N (u)  N (v) wuv N (u) * N (v) 中N(u)是用户u : 的品 ,N(v)是用户v 的品 。可 用如 方 考
149. 5.1 文 133 wuv ¦1 D 1  iN (u)N (v) tui  tvi N (u) * N (v) 1 上 公 的分子对于用户u和用户v 的 品i 了一个 因子。用户u和用户 v对 品i产 行为的 , 这 个用户的兴趣相 度 。 2 def UserSimilarity(train): # build inverse table for item_users item_users = dict() for u, items in train.items(): for i,tui in items.items(): if i not in item_users: item_users[i] = dict() 3 item_users[i][u] = tui #calculate co-rated items between users C = dict() N = dict() for i, users in item_users.items(): for u,tui in users.items(): N[u] += 1 4 for v,tvi in users.items(): if u == v: continue C[u][v] += 1 / (1 + alpha * abs(tui - tvi)) #calculate finial similarity matrix W W = dict() 5 for u, related_users in C.items(): for v, cuv in related_users.items(): W[u][v] = cuv / math.sqrt(N[u] * N[v]) return W 在得 用户相 度 ,UserCF 如 公 测用户对 品的兴趣: ¦ p(u, i) wuv rvi 6 vS (u,K ) 中,S(u,K)包 了和用户u兴趣 的K个用户。如 用户v对 品i产 行为, rvi 1 , rvi 0 。 如 考 和用户u兴趣相 用户的 兴趣, 可 设计如 公 : 6 ¦1 p(u, i) vS (u,K ) wuv rvi 1  D (t0  tvi ) def Recommend(user, T, train, W): rank = dict() interacted_items = train[user] 6 for v, wuv in sorted(W[u].items, key=itemgetter(1), reverse=True)[0:K]: for i, tvi in train[v].items: if i in interacted_items: #we should filter items user interacted before continue rank[i] += wuv / (1 + alpha * (T - tvi)) 7 return rank
150. 134 5 文 5.1.7 基于 的 在 中得 了广泛应用。在 个性化推荐系统中,它 然得 了广泛 应用。 在KDD 上 经 出 一个 ,试 决如 中的方法, 取得了 的 。 G(U , SU , I , SI , E, w,V ) 也是一个 分 。U是用户 , SU 是用户 。一个用户 vut  SU 和用户u在 t 的 品 相 。I是 品 ,SI 是 品 。一个 品 vit  SI 和 有在 t 品i的用户 相 。E是 ,它包 了3种 :(1)如 用户u对 品i有行为, 在 e(vu , vi )  E ; (2)如 用户u在t 对 品i有行为, 在 e(vut , vi ), e(vu , vit )  E 。w(e) 义了 的 , V (e) 义了 的 。 5-8是一个 的 。在这个 子中,用户A在 2对 品b产 了行为。 因此, 4个 , 用户 A、用户 A:2、 品 b、 品 b:2。然 , 中 3 , (A, b)、(A:2, b)、(A, b:2)。这 (A:2, b:2) 这 ,一方 是因为 这 对结 有 进, 一方 是因为 一 的空 度和 上算法的 度。 5-8 义 的结 , 的 法是可 用 化推荐。但是因为这个算法 要在 上进行 计算, 了一种称为 的方法, 该算法 度 上 一 , 上 个相关性比较高的 一 具有如 ‰个 有很 相; ‰个 的 比较 ; 的PersonalRank算法给用户进行个性 度比较高。因此 出 个 的相关性。 : 参 Liang Xiang、Quan Yuan、Shiwan Zhao、Li Chen、Xiatian Zhang、Qing Yang和Jimeng Sun的 Temporal recommendation on graphs via long- and short-term preference fusion ACM 2010 Article,2010 。
151. 5.1 文 135 ‰个 从这3 的 出发, 经 出度比较大的 。 算法 取出 个 度 于一个 值的 有 1 , 然 经的 给 一的 , 个 有的 和作为 个 的相关度。 设 P ^v1, v2 ,", vn` 是 v1 和 vn 的一 ,这 的 *(P) 取决于这 2 经的有 和: – *(P) V (vn ) n 1 i1 V (vi ) ˜ w(vi , vi1 out(vi ) U ) 这 out(v)是 v指 的 , out(v) 是 v的出度,V (vi )  (0,[email protected] 义了 w(vi , vi1)  (0,[email protected] 义了 e(vi , vi1) 的 。上 的 义 上 3 的 。 的 ,3 ,因为 V (vi ) ˜ w(vi out(vi ) , vi U 1 )  (0,1 , n 大, *(P) 。 ,如 经 了出度大的 v', 因为 out(v') 比较大, *(P) 也 比较 。 在 义了一 的 ,可 义 的相关度。对于 v和v', p(v, vc, K ) 为 4 这个 于K的 有 , 这 个 的相关度可 义为: d (v, vc) ¦ *(P) PP(v,vc,K ) 对于 ,有的 义为1, 的 V (v) 义如 : 5 ­1D (v U ) V (v) °°®°1D (v E  (v SU  ) I) °¯ E (v  SI ) 6 这 , D , E >@ 是 个参 , 了 的。 算法可 基于 上的广度优 搜索算法实现, 的Python 实现了 算法。 def PathFusion(user, time,G,alpha) 6 Q = [] V = set() depth = dict() rank = dict() depth['u:' + user] = 0 depth['ut:' + user + '_' + time] = 0 rank ['u:' + user] = alpha 6 rank ['ut:' + user + '_' + time] = 1 - alpha Q.append('u:' + user) Q.append('ut:' + user + '_' + time) while len(Q) > 0: v = Q.pop() if v in V: 7 continue
152. 136 5 文 if depth[v] > 3: continue for v2,w in G[v].items(): if v2 not in V: depth[v2] = depth[v] + 1 Q.append(v2) rank[v2] = rank[v] * w return rank 5.1.8 实 为了 上 文 对推荐系统至关 要,本 用 实 对比使用 推荐算法的 性 。 1. 实 在得 由 用户、 品、 的 ,可 如方 和测试 。对 一个用户, 品 该用户对 品的行为 从 ,然 用户 一个产 行为的 品作为测试 ,并 这 的用户对 品的行为 作为 。推荐算法 用户兴趣 ,给 个用户推荐N个 品,并且 用准 率和 率评测推荐算 法的 度。本 取 的N(10,20, ,100)进行10 实 ,并 出 的准 率和 率 , 该 比较 算法的性 。 ¦ R(u, N )  T (u) [email protected] u ¦ T (u) u ¦ R(u, N )  T (u) [email protected] u ¦ R(u, N ) u 这 ,R(u,N)是推荐算法给用户u 的 度为N的推荐 ,T(u)是测试 中用户 的 品。 本的 实 对比如 算法, 它 的 率和准 率 在一 上。 ‰ Pop 给用户推荐当天 的 品。 ‰ TItemCF 的ItemCF算法。 ‰ TUserCF 的UserCF算法。 ‰ ItemCF 考 的ItemCF算法。 ‰ UserCF 考 的UserCF算法。 ‰ SGM 。 ‰ USGM 品 为0的 。 ‰ ISGM 用户 为0的 。 这 , 没有对比 参 各个算法的性 , 的实 结 是在 优参 得 的。 5-9、 5-10、 5-11、 5-12、 5-13 了5个 上各个算法的 率和准
153. 率。 5.1 文 137 1 2 3 4 5-9 BlogSpot 的 率和准 率 5 6 6 6 5-10 NYTimes 的 率和准 率 7
154. 138 5 文 5-11 SourceForge 的 率和准 率 5-12 Wikipedia 的 率和准 率
155. 5.2 文 139 1 2 3 4 5-13 YouTube 的 率和准 率 的 率和准 率 可 发现,这些 的 分了 。一 是BlogSpot、YouTube、NYTimes, 一 是Wikipedia和SourceForge。在 一 中,有4个算法 SGM、ISGM、TUserCF、Pop 算法的 率和准 率 交 在一 ,并 好于 4个算法, 在 分开。 且,在 一 中, 5 中, 使 是非个性化推荐算法Pop也优于很 个性化推荐算法 TItemCF、USGM 。这主要是因为 一 的 性很 ,因此用户兴趣的个性化 是 ,天 的品经 了大 用户的 , 中的 品很 得 用户的关 。 6 5.2 上下文信息 了 ,地 作为一种 要的空 ,也是一种 要的上 文 。 地 的用户兴趣 有 ,用户 了 的地方,兴趣也 有 。在中关 了, ,6 可 考 个因 ,包括 、价 、 和 , 在这些因 , 要的因 可 是 。 因此,很 基于 的服务 LBS 了推荐 和商 的 如 5-14 。 在2010 推出了一个 Hotpot 的服务,该服务 用户对自己 的地 评分,然 用户评分给用户推荐地 如 5-15 。Hotpot 用了用户在 地 上标 和评论的5 个 的地 , 的是 用户 方 地 可 兴趣的地方,这些地方包括 6 、、 和 等。 Hotpot 网 为http://places.google.com/rate 7 参 读 网上的文 Google Launches Hotpot, A Recommendation Engine for Places 。
156. 140 5 文 取自大 评和 网, 中相关 的 作 作人有 5-14 是大 评 的 商户推荐, 是 网 的 索 取自 网 , 中相关 的 作 作人有 5-15 Hotpot地 推荐 电 的 人员 经设计 一个基于 的电 推荐系统,并且 了 告 。该 告 地介绍了如 在iPhone上开发一个推荐系统,如 在电 推荐中 , 兴趣的读者可 阅读 的 告。 的技 用户的 参 Geolocated Recommendations ,地 为http://xavier.amatriain.net/pubs/GeolocatedRecommendations.pdf。
157. 5.2 文 141 的推荐 1 大 的 人员 出 一个称为LARS Location Aware Recommender System, 推荐系统 的和用户地 相关的推荐系统。该系统 品分 ,一 是有空 性 的,比如 、商 、 等, 一 是 空 性的 品,比如 书和电 等。 用户也分 ,一 是有空 性的,比如给出了用户现在的地 家、 、 ,它 等, 2 一 用户并没有相关的空 性 。它使用的 有3种 的 。 ‰ , , , ,一 了 一个地 的用户对 品的评分。它 使用的是MovieLens 。该 给出了用户的 ,从 可 用户的大 地 。 ‰ ,, , ,一 了用户对 个地方的 品的评分。LARS 3 使用了FourSquare的 ,该 包 用户对 地方的 、 、商 的评分。 ‰ , ,, , ,一 了 个 的用户对 个 的 品的评分。 LARS ‰ 种 ,发现了用户兴趣和地 相关的 种 。 地方的用户兴趣 在 很大的 。 家和地 用户的兴趣 在 4 一 的 性。LARS一文 MovieLens 上的用户 统计发现, 的用户 的电 和 的用户 的电 在很大 。关于这一 , 经发 一 文 ,它给出了 个 地 的用户使用Netflix的 。在 文 中,它给出了 电 在 地 的DVD 。 2 的5 Lastfm ,也可 得 家用户对 兴趣的 如 5-2 。 ‰动 一个用户 在 的地 。 分析Foursqure的 , 人员发 现45%的用户 10 , 75%的用户 50 。因 此,在基于 的推荐中 要考 推荐地 和用户当 地 的 , 给用户推 6 荐 的地方。 5-2 用户 的 Die Ärzte(德国 著名的 乐队) girl talk(美国音乐人) Biffy Clyro( 格 乐队) 6 Clueso(德国歌手) They Might Be Giants(成 于1982年的美 Feeder(威 士的 代 乐 国 代 乐队) 队) Peter Fox(德国 的Hip hop音乐人) Guster(美国 士 的 代 乐队) Idlewild( 格 乐队) Deichkind(德国 的乐队) K.I.Z.(德国 的hip hop乐队) Saves the Day(美国 斯 的 乐队) Elbow(英格 乐队) 6 Spoon(美国 斯 的 乐队) Girls Aloud(英格 和 的 流行女子乐 ) 参 A Peek Into Netflix Queues , 地 为 http://www.nytimes.com/interactive/2010/01/10/nyregion/20100110- netflix-map.html。 7 1 1.609 344 。 者
158. 142 5 文 对于 一种 ,LARS的基本 是 用户的 分 很 子 。因为 是一个 结 ,比如 家、 、 、 的结 。因此, 也 分 一个 结 。 然 ,给 一个用户的 , 可 分 一个 子 中, 该 子 包 了 有和 一个 的用户的行为 。然 ,LARS 用这个 子 上的用户行为 , ItemCF给用户进行推荐。 这 的 是, 个 子 上的用户 可 很 ,因此 的行为 可 于 ,从 法 出一个好的推荐算法。为此, 可 从 出发,在 子 的 程 中, 用 个中 上的 出一个推荐 ,然 给用户 推荐 。 的推荐 结 是这一系 推荐 的 。文 的作者 这种算法 为 字 , 的度 了推荐系统的性 ,因 度是这个算法的一个 要指标。 文用LARS-U 该算法。 一个 的 子,如 5-16 , 设有一个 自中 的用户。 有用户的行为 用 种推荐算法 设是ItemCF 给 推荐 ,然 用中 用户的行 为给 个推荐 , 此 推, 用中 的用户行为给该用户 个推荐 ,并 用中 的用户行为给该用户 个推荐 。然 , 一的 这4个推荐 性相 ,从 得 给该用户的 推荐 。 5-16 一个 的 用用户 进行推荐的 子 对于 种 , 用户行为 为 用户对 个 的 品给了 种评分。对于这种 用ItemCF算法计算用户u对 品i的兴趣P(u,i),但 用户、 品、 品 ,LARS 品i在用户u的推荐 RecScore(u,i) P(u,i)  TravelPenalty(u,i) 、评分 , 了 品的 , 中的 义为: 在该公 中,TravelPenalty(u,i) 了 Penalty(u,i)的基本 是对于 品i与用户u 者 值 。关于如 度 地 上 的 , 有 的 ,因为人 是 可 地 上的 品i的 对用户u的 价。计算Travel- 评分的 有 品的 计算 的 值 的是基于 。当然, 从一 一 的。比较好的度 方 参 Gísli R. Hjaltason和Hanan Samet的 Distance browsing in spatial databases ACM 1999 Article,1999 。
159. 5.3 143 是 用交 网络 , 人 实 要 的 作为 度 。 1 为了 计算用户对 有 品的TravelPenalty,LARS在计算用户u对 品i的兴趣度 RecScore(u,i) , 对用户 一个 经评 分的 品 一 是 、商 、 ,和 于一个 值d的 有 品,然 这些 品的 作为 ,然 用上 的 公 计算 对于 的RecScore。 种 ,LARS一文没有 论。 ,从 种 的 义可 ,2 它相对于 种 了用户当 这一 。 在给 了这一 , 应该 推 荐的 品应该 用户当 比较 ,在此基础上 用户的 行为给用户推荐 且 兴趣的 品。 为了 兴趣本地化和 本地化 种 应,作者在FourSquare和MovieLens 个 上3 进行了 实 。作者使用TopN推荐的Precision作为评测指标。 作者 在FourSquare 上对比了ItemCF算法和考 了TravelPenalty 的算法 称 为LARS-T 。结 考 TravelPenality 实 高TopN推荐的 准 率,LARS-T算法 优于ItemCF算法。 然 ,作者在FourSquare 和MovieLens 上对比了 4 的ItemCF算法和考 用户 的 的LARS-U算法。 ,作者对比了 度对LARS-U算法的 。实 , 的 度对LARS-U算法很 要, 在 大 度的 ,LARS-U算法在 个 上 优于 的ItemCF算法。 5 5.3 上 文 在Netflix Prize中得 了广泛关 ,很 参 者 了如 用这一 。 这方 名的文 是Koren的 collaborative filtering with temporal dynamics ,该文系统地 6 总结了各种使用 的方 ,包括考 用户 行为的 ,考 的 性等。 大 的Neal Lathia在读 对 上文 推荐系统的 应进行了 。 在 Temporal Diversity in Recommender Systems 一文中 分析了 性对 推荐系统的 。 的 论文 Evaluating Collaborative Filtering Over Time 论述了各种 6 推荐算法是如 化的。 如 要 系 统 地 与 上 文 推 荐 相 关 的 作 , 可 参 考 Alexander Tuzhili 的 作 http://pages.stern.nyu.edu/~atuzhili/ , 在 和 对上 文推荐 题进行了 。 6 参 Jie Bao、Chi-Yin Chow、Mohamed F. Mokbel和Wei-Shinn Ku的 Efficient Evaluation of k-Range Nearest Neighbor 7 Queries in Road Networks MDM,2012 。
160. 144 6 数 6第 章 自从搜索 ,大家 在 论互联网的 一个 是 。现在, 有的人 为 是社交网络。 2010 的 告,用户在互联网上22%的 在社交网 和社交 上 。Facebook和Twitter作为 种 社交网络的 ,是 互联网 的 。 公司也 , 推出了很 社交网络产品 Buzz和Google Plus 。 的互联网 为 ,也 了很 人的 。 基于社交网络的推荐可 很好地 现实社 。在现实社 中,很 是 友 得推荐。 名的 方 机 了 用户相 个推荐的因 。 结 ,90%的用户相 友对 的推荐,70%的用户相 网上 用户对广告商品的评论。从 该可 ,好友的推荐对于 用户对推荐结 的 度非常 要。 为了进一 实好友推荐对用户的 , 和Facebook 作进行了一 个性化广告实 。 测试了 一个品 的3种 的广告。 一种广告和 种广告 是 广告, 但 者的推荐理由 。 一种广告的推荐理由没有社 化 , 是 该品 了 51 930个用户的关 , 种广告的推荐理由是用户的 些好友关 了这个广告。 种广告 比较 ,它是在用户的好友关 该品 , 在用户的 流中 一 ,告 用户 的 个好友关 了一个品 。 在 AB测试, 发现 种广告的 高于 种, 种广告的 高于 一种,从 了社 化推荐对于 用户对广告的 和 意 具有非常 的作用。 ,该 本 论如 用社交网络 给用户进行个性化推荐。本 论如 用社交 网络给用户推荐 品, 且 论如 用社交网络给用户推荐好友。 6.1 社交网络数据的 现在互联网上 各种各 一 ,有如 方 。 有社交性 的网 。 ,从 方可 得社交网络 参 Social Media Accounts for 22% of Time Online , http://blog.nielsen.com/nielsenwire/onlinemobile/socialmedia-accounts-for-22-percent-of-time-online/。 参 Global Advertising Consumers Trust Real Friends and Virtual Strangers the Most ,http://blog.nielsen.com/nielsenwire/consumer/global-advertising-consumers-trust-real-friends-and-virtual-strangers-the-most/。
161. 6.1 数的 145 6.1.1 1 电子 于1971 ,因此它的 比因 网还要 。但 是这个互联网 的应 用, 实是一种社交 具。 可 分析用户的联系人 了 用户的好友 , 且可 进一 个用户 的 频 程度度 个用户的 程度。 ,电子 是一个 的系统,一 的 人员很 得 用户的联系人 和用户 2 的 。 对电子 中社交关系的 中在一些有大 电子 系统的公司中。比如, 在2010 的KDD 上发 了一 文 , 中 了如 Gmail系统中、一些 的 测用户 的社交关系, 给用户推荐好友的 题。 实,如 得了用户的 ,也可 得 一 的社交关系 。一 3 , 名是[email protected]的 。如 用户用的是公司 , 可 些用户是 一家公司的。 一家公司的用户可 互相 ,因 也可 得一种 性的社交关 系。 是由于电子 系统包 了用户的大 社交 ,很 社交网 如 6-1 在用户 了 用户从电子 联系人中导 好友关系的 ,用 决社交网络的 题。 4 5 6 6 6 取自Facebook网 , 中相关 的 作 作人有 6-1 Facebook 的导 电子 好友的方 参 Maayan Roth、Assaf Ben-David、David Deutscher、Guy Flysher、Ilan Horn、Ari Leichtberg、Naty Leiser、Yossi 7 Matias、Ron Merom的 Suggesting Friends Using the Implicit Social Graph ACM 2010 Article,2010 。
162. 146 6 数 6.1.2 用户 信息 有些网 要用户在 一些 如公司、 等 如 6-2 。有了这些 , 可 些用户 经在 一家公司 作 , 些用户 经在 一个 。这 也是一种 性的社交网络 。 取自Facebook网 , 中相关 6-2 Facebook在用户 的作 作人有 用户 的一部分 6.1.3 用户的 数据 在网 上 的用户 是IP地 。对于 机等 设 , 可 的GPS 。 也是一种 用户社交关系的 。一 ,在给 用户 的地 。这种地 在 些 , 有些 可 的 者 家公司。 , 也可 理地 设 一家公司的用户可 有好友关系。 ,可 ,但在 一 6.1.4 论 是Web 1.0的产品,它 用户在一个 论 一 话题进行 论。比如, 上有 很 ,个 包 一些 的人。如 个用户 了很 的, 可 为这 个用户很可 互相了 者具有相 的兴趣。如 个用户在 论 中 经 一 个 子 进行 论, 的 程度 兴趣相 度很高。
163. 6.1 数的 147 6.1.5 1 和电子 一 , 天 具也是一个 于Facebook和Twitter的 互联网社交应用。它 可 用户在网上实 地 文 、 音和视频等方 进行交流。很 天具 和电 子 系统 度 ,比如MSN、GTalk 于自己的电子 系统, 产的 天 具QQ 也 了QQ 系统。 2 和电子 系统一 ,用户在 天 具上也 有一个联系人 , 且 还 给联系 人进行分 。 这个 和分 , 可 用户的社交网络关系, 统计用户 天的频 程度,可 度 出用户 的 程度。 但是, 常 的,这 天 具和电子 在很 一 ,也是一个 的系统, 取用户的 天 是非 3 题。一 , 大部分用户 公开 的联系人 和 天。 6.1.6 社交网 4 上述各种 取用户社交关系的 ,要 是因为 题很 取,要 是虽然 取,但 是 性社交关系 ,很 推 出用户 的 性社交关系。在Facebook和Twitter ,社 化应用 论是电子 系统还是 天系统 于 。用户 和自己的 好友进行交流, 部分用户 法了 好友 它 公开 用作 的 , 且用户 用。 交流的 是非常 的,大 5 但 Facebook和Twitter为 的 一 社交网络 了这个 。它 用户 一个公 开的 介绍自己,并且 公开用户的好友 当然用户可 指 些好友公开,但如 用户 指 , 是公开的 , 用户基于它 论的话题也很 一些社 分 一些 、音乐、视频和 话。 个人 ,大 是 论 6 社交网 的 一个好 是自然地 了 题。在社交网 中, 可 好友给 自己 。比如, 关 些和 兴趣相 的好友, 阅读 分 的 ,因此可 阅读很 和自己 关的 。个性化推荐系统可 用社交网 公开的用户社交网络和行 为 , 用户 好地 自己 兴趣的 。 的 务, 好地 和自己兴趣相 的好友, 地 6 1. 社 Facebook和Twitter作为社交网 中的 个 ,它 实 了 的社交网络结 。在 Facebook ,人 的好友一 是自己在现实社 中 的人 ,比如 、 、 等, 6 且Facebook中的好友关系是 要 方 的。在Twitter ,人 的好友 是现实中自己 参 Friends & Frenemies: Why We Add and Remove Facebook Friends ,地 为http://blog.nielsen.com/nielsenwire/ 了online_mobile/friends-frenemies-why-we-add-and-remove-facebook-friends/, 的这个 告 82%的用户 7 因为在现实社 中 在Facebook中 好友。
164. 148 6 数 的, 是出于对对方 论的兴趣 好友关系,好友关系也是 的关 关系。 Facebook为 的社交网络称为 social graph , Twitter为 的社交网络称为 interest graph 。 关于这 种社交网络的分 实 在19 被社 家 了。19 , 社 家 Ferdinand Tönnies 为社 分为 种,一种是 人 的 兴趣 和 的, 这种社 称为Gemeinschaft, Gemeinschaft这个 被 是community, 中的社 。 一种社 是由于人 的 关系, 作关系 的, 称 为Gesellschaft, 文 为society, 中的 社 。因此, 的Gemeinschaft 是兴趣 , Gesellschaft 是社 。 但是, 个社 化网 是 的社交 者兴趣 。一 为,Facebook中的 大 用户联系基于社交 , Twitter中的 大 用户联系基于兴趣 。但是,在Twitter 者 中, 也 关 现实中的 好友,在Facebook中 也 和一部分好友有 的 兴趣。 6.2 社交网络数据 社交网络 义了用户 的联系,因此可 用 义社交网络。 用 G(V,E,w) 义一个 社交网络, 中V是 ,个 一个用户,E是 关系, 有一 e(va , vb ) 的社交网络。一种 Facebook为 这 个用户, w(va , vb ) ,它的 友关系是 要 ,如 用户va和vb有社交网络 义了 的 。业 有 种 名 的,因此在这种社交网络上 可用 有社交网络关系的用户。 一种 Twitter为 ,它的 友关系是 的,因 此可 用有 这种社交网络上的用户关系。 此 ,对 G中的用户 u, 义out(u)为 u指 的 如 用 中的 , out(u) 是用户u关 的用户 , 义in(u)为指 u的 也 是关 用户u的用户 。 ,在Facebook这种 社交网络中 然有out(u)=in(u)。 一 ,有3种 的社交网络 。 ‰ 的社交网络数据 在 Facebook和人人网为 的社交网络中,用户A和B 好友关系 要 方的 。因此,这种社交网络一 可 。 ‰ 的社交网络数据 在 Twitter和 为 的社交网络中,用户A可 关 用户B 要得 用户B的 ,因此这种社交网络中的用户关系是 的,可 有 。 ‰ 社 的社交网络数据 还有一种社交网络 ,用户 并没有 的关系,但是 这种 包 了用户 于 社 的 。比如 , 于 一个 可 了 用户兴趣的相 性。 者在论文 中, 一 文 的 作者也 在 一 的社交 关系。 者是在 一家公司 作的人, 是 一个 业的人等。
165. 6.2 数 149 社交网络数据 的 分 1 和 2 的用户 度分 和 品流行度分 ,社交网络中用户的 度 in degree 和出度 out degree 的分 也是满 分 的。 本 用了Slashdot的社交网络 统计了用户 度和出度的分 。Slashdot的社交网络 于Twitter,是一个有 结 。因此,用户的 度 了用户的社 。如 6-3 , 2 用户的 度 分 ,这 在一个社交网络中 大的用户总是 。 3 4 6-3 社交网络 Slashdot 中用户 度的分 , 6-4 了Slashdot社交网络中用户出度的分 , 出度 ,该 在一个社交网络中,关 很 人的用户 ,大 5 了一个用户关 的用户 用户 关 很 的人。 6 6 6 6-4 社交网络 Slashdot 中用户出度的分 7 自Stanford Large Network Dataset Collection,参 http://snap.stanford.edu/data/。
166. 150 6 数 6.3 社交网络的推荐 很网 用Facebook的社交网络 给用户 社 网 Clicker 用用户在Facebook的好友 给用户推荐好友 。如 6-6 ,亚马逊网 用用户在Facebook的好友 也使用好友进行了推荐 。 化推荐。如 6-5 ,视频推荐 的视频,并且用好友进行了推荐 给用户推荐好友 的商品, 取自Clicker网 , 中相关 的 作 作人有 6-5 视频推荐网 Clicker 用Facebook好友 给用户推荐视频 取自亚马逊网 , 中相关 的 作 6-6 亚马逊 用Facebook好友 作人有 给用户推荐商品 社 化推荐 很 网 的 视,是 于如 优 。 ‰ 好 推荐 推荐的信 好友 是用户 的。用户 一 计算 机的 ,但 好 友的推荐。 是给用户推荐《天 部》, 的基于 品的 算法 是因为用户 《 》, 好友推荐 是因为用户 有8个好友 非常 《天 部》。对比这 种 , 种 一 用户 ,从 者 《天 部》。 ‰ 社交网络 冷启动问题 当一个 用户 者Facebook 网, 可 从社交网 中 取用户的好友 ,然 给用户推荐好友在网 上 的 品。 从 可 在没有用户行为 给用户 较高 的推荐结 ,部分 决了推 荐系统的 题。 当然,社 化推荐也有一些 , 中 主要的 是很 并一 高推荐算法的
167. 6.3 的 151 度 准 率和 率 。 是在基于社交 的推荐系统中,因为用户的好友关系 1 是基于 兴趣产 的, 用户好友的兴趣 和用户的兴趣并 一 。比如, 和自己 的兴趣 很大。 ,因为社 化推荐算法 一 度, 且包 社交网 络 和用户行为 的 ,因此本 准 实 社 化推荐的优 。 2010 ,ACM推荐系统大 的一个 论 CAMRa 经 一个关于社交网络的推荐系统 比 。该比 参者 用用户 的好友关系给用户推荐电 ,并且 用准 率相关 2 的指标评测参 者的推荐算法。对社 化推荐 兴趣的读者可 关 一 该 的相关论文。 6.3.1 的社 推荐 如 给 一个社交网络和一 用户行为 。 中社交网络 义了用户 3 的好友关系, 用 户行为 义了 用户的 行为和兴趣 。 的 算法是给用户推荐 好友 的 品 。 用户u对 品i的兴趣pui可 如 公 计算。 ¦ pui rvi 4 vout (u ) 中out(u)是用户u的好友 ,如 用户v 品i, rvi=1, rvi=0。 用户u的好友, 的好友和用户u的 程度和兴趣相 度也是 的。因此, ,使是 应该在推荐 算法中考 好友和用户的 程度 兴趣相 度: pui ¦ wuvrvi 5 vout (u ) 这 ,wuv 由 部分相 度 ,一部分是用户u和用户v的 程度, 一部分是用户u和用 户v的兴趣相 度。用户u和用户v的 程度 familiarity 述了用户u和用户v在现实社 中的 程度。一 ,用户 相 自己 度。 度可 用用户 的 好友比 的好友的推荐,因此 要考 用户 的 6 度 。也 是 如 用户u和用户v很 , 一 应该有很 的好友。 out(u)  out(v) familiarity(u, v) out(u) * out(v) 6 了 程度,还 要考 用户 的兴趣相 度。 和 很 ,但很 和 的兴趣 相 ,因此也 的 品。因此,在度 用户相 度 还 要考 兴趣相 度 similarity , 兴趣相 度可 和UserCF 的方法度 , 如 个用户 的品 度很高, 个用户的兴趣相 度很高。 6 N (u)  N (v) similiarity(u, v) N (u) * N (v) 中N(u)是用户u 的 品 。 7 参 http://www.dai-labor.de/camra2010/。
168. 152 6 数 的 实现社 化推荐的 。在 中,familiarity 了 个用户 的K个 好友和 的 程度,similarity 了和 个用户兴趣 相关的K好友和 的兴趣相 度。train 了 个用户的行为 , 中train[u] 了用户u 的 品 。 def Recommend(uid, familiarity, similarity, train): rank = dict() interacted_items = train[uid] for fid,fw in familiarity[uid]: for item,pw in train[fid]: # if user has already know the item # do not recommend it if item in interacted_items: continue addToDict(rank, item, fw * pw) for vid,sw in similarity[uid]: for item,pw in train[vid]: if item in interacted_items: continue addToDict(rank, item, sw * pw) return rank 6.3.2 的社 推荐 了如 在推荐系统中使用 ,比如用户 品 分 、用户- 品-标 等。从 的介绍可 , 的优 是可 各种 和关系 上 。在 社交网 中 在 种关系,一种是用户对 品的兴趣关系,一种是用户 的社交网络关系。本 主要 论如 这 种关系 中,从 实现对用户的个性化推荐。 用户的社交网络可 为社交网络 ,用户对 品的行为可 为用户 品 分 , 这 种 可 结 一个 。 6-7是一个结 了社交网络 和用户 品 分 的 子。该 上 有用户 和品 方 种 。如 用户u对 品i产 行为, 个 有 相 。比如该 中用户A对 品a、e产 行为。如 用户u和用户v是好友, 也 有一 这 个用户,比如该 中用户A 和用户B、D是好友。 6-7 社交网络 和用户 品 分 的结
169. 6.3 的 153 在 义 中的 用户 相 度的 D 户对 品 程度的 E 和 , 要 义 的 。 中用户和用户 包括 程度和兴趣相 度 , 用户和 品 。D 和 E 要 应用的 。如 的 可 义为 1 的 可 义为用 用户好友的行为对 推荐结 产 比较大的 , 可 比较大的 D 。相 ,如 用户的 行为 对推荐结 产 比较大的 , 可 在 义 中的 、 和 的 比较大的 E 。 , 可用 的PersonalRank 2 算法给 个用户 推荐结 。 在社交网络中, 了常 的、用户和用户 的社交网络关系,还有一种关系, 个 用户 于 一个社 。Quan Yuan等 了这 种社交网络关系 , 系称为friendship, 种社交网络关系称为membership。如 要在 一种社交网络关 的基于 域的 3 社 化推荐算法中考 membership的社交关系,可 用 个用户 的社 度计算用户 相 度,然 给用户推荐和 相 的用户 的 品。但是,如 用 , 很 对friendship和membership 。如 6-8 ,可 一种 社 一 的 , 如 用户 于 一社 , 中 有一 联系用户对应的 和社 对应的 。 4 在 , 可 的基于 的推荐算法 比如PersonalRank 给用户 推荐 品。 5 6 6 6-8 种社交网络 的 6.3.3 实 系统 的社 推荐 6.3.1 出的基于 域的社 化推荐算法 非常 ,但在实 系统中 是很 6 作 的,这主要是因为该算法 要 用户 有好友的 行为 , 这一 作在实 系统中是比 参 Quan Yuan、Li Chen和Shiwan Zhao的 Factorization vs. regularization: fusing heterogeneous social relationships in 7 top-n recommendation ACM 2011 Article,2011 。
170. 154 6 数 较 的 作。因为大 网 中用户 非常 大,用户的 行为 也非常 大, 可 用户的 有行为 在 中, 在 一个 的 。如 要比 较实 的 ,这个 中的 要比较频 地 ,因 了 的。 , 一 是很 的, 是 对行为很 的用户 是如此。 ,如 一个算法 给一个 用户 推荐 , 要 有好友的 行为 ,这在实 中是比较 的。 如 一 ItemCF可 发现,ItemCF算法 要当 用户的 行为 和 品的相关 可 推荐结 。对于 品 是 的网 ,可 很 地 品相关 在 中, 因此 相关 品的 价很 , ItemCF算法很 在实 实现。 当然, 可 从 个方 进基于 域的社 化推荐算法, 它 具有比较 的 应 。 进的方 有 种,一种是 标 本的方法。 地 , 是可 。一 是在 用户好友 并 出用户 有的好友, 是 出和用户相 度 高的N个好友。 这 N可 取一个比较 的 。从 给该用户 推荐 可 N 用户 行为 。此 , 在 个用户的 行为 ,可 用户 1个 的行为,这 可 在用户行为 中 用户的 行为 ,从 用户 行为 的 度。此 ,还可 一 的实 性, 中用户行为 的频率。 种 决方 要 设计 。 的分析可 发现,社 化推荐中关 的 作 是 用户 有好友的行为 ,然 一的 给用户。如 对 一 , 可 发现 中 个用户 有一个 ,这个 上实 用户关 的 有好友的 。因此,如 实现这个 , 实现社 化推荐算法。Twitter的 决方 是给 个用户 一个 message queue ,当一个用户发 一 , 有关 的用户的 中 这 。这个实现的优 是用户 取 可 读 , 用户的读 作很 。 这个实现也有 ,当一个用户发 了一 , 发很 作,因为要 有关 的用户的 , 是当一个人被很 人关 , 有 大 的 作。Twitter 大 的 决了这一 题。具 的 可 参考InfoQ对Twitter 的介绍 。 如 Twitter的 社 化推荐系统中, 可 如 方 设计系统: ‰ ,为 个用户 一个 ,用于 的推荐 ; ‰ 当一个用户 一个 品 , 品ID、用户ID和 这 关 该用户 的推荐 中; ‰ 当用户 推荐系统 ,读出 的推荐 ,对于这个 中的 个 品, 计算该 品的 。计算 要考 品在 中出现的 , 品对应的用 户和当 用户的 程度、 品的 。 ,计算出 个 品被 些好友 , 用这些好友作为 品的推荐 。 参 Twitter, an Evolving Architecture ,地 为http://www.infoq.com/news/2009/06/Twitter-Architecture。
171. 6.3 的 155 6.3.4 社 推荐系统 推荐系统 1 关于社 化推荐系统的 评测可 参考Georg Groh和Christian Ehmig的 作 。 社 化推荐系统的 很 实 评测,因为社 化推荐的优 在于 测准 度, 是在于 用户的好友 结 。此 ,很 社交网 用户对推荐结 的 度,从 用户 些很 的推荐 是基于社交 的社交网 中具有好友关系的用户并 一 2 有相 的兴趣。因此, 用好友关系有 并 评测的准 率和 率。因此,很 人员 用用户 和在 实 的方 评测社 化推荐系统。 对社 化推荐系统进行用户 的 性 作 是Rashmi Sinha和Kirsten Swearingen对比 社 化推荐系统和 推荐系统的论文 。这一 一 有19个人参 了实 , 自大 介绍一 的 作方法和结 。 3 分 , 为20~35 , 中6名 性 13名 性,9名实 人员从 互联网技 相关的 作, 10 从 的 作和互联网技 关。 Sinha 进行 一 务:评测3个 实的电 推荐系统 Amazon、MovieCritic、 Reel.co 和3个 实的 书推荐系统 Amazon.com、 RatingZone、 Sleeper 。在评测 一个 实 推荐系统 ,参试者 要 如 实。 4 ‰ 用一个 的 推荐系统,从 这些 没有 行为。 ‰用 的 给电 、 书进行评分。 ‰ 推荐 。 ‰ 如 一开 的推荐 中没有 用户兴趣的 品,用户 被要 从该网 中搜索 至 5 一个 兴趣的 品,如 实在 ,可 搜索。 ‰ 。 在 实推荐系统的评测 务 ,参试者还 要评测社 化推荐系统。实 ‰ 个参试者 要 3个 为了 兴趣的好友的 。 如。 6 ‰ 实 人员给 个好友发 ,要 给参试者推荐3本书和3部电 ,并且要 这些书 和电 是参试者 和 论 的, 是参试者 告 并 的 品。 ‰ 参试者 好友推荐的书和电 的 一 的介绍。 6 ‰ 。 作者 分析用户实 的 程和 的 ,社 化推荐系统推荐结 的用户 满意度 高于主要基于 算法的 个 实推荐系统。具 的 可 参考作者的论文。 这 用亚马逊网的 书推荐和好友推荐的结 对比。60%的参试者 为亚马逊网的 书推荐 6 是好的推荐,32%的参试者 为亚马逊网的 书推荐是有用的推荐。与 对比的是,90%的 参试者 为好友的 书推荐是好的推荐,78%的参试者 为好友的 书推荐是有用的推荐。从这 参 Recommendations in Taste Related Domains: Collaborative Filtering vs. Social Filtering ,2007 。 7 参 Comparing Recommendations Made by Online Systems and Friends ,2001 。
172. 156 6 数 个 可 出,好友推荐结 的用户满意度 高于基于 的亚马逊推荐系统。 作者也 实 在一些 题。 中 个主要的 题如 : ‰ 是 实 ,参试者 结 自基于 的推荐系统, 结 自好友 的推荐; ‰ 参试者在实 中的行为可 和 的 实行为 。 此 ,上述实 结 自对19个用户的 , 本 。因此,对于上 的结 要 分 读,还是应该在自己的系统中进行AB测试,得 为 的 。 6.3.5 信息 推荐 流推荐是社 化推荐领域的 兴话题,它主要 对Twitter和Facebook这 种社交网 。 在这 种社交网 中, 个用户 有一个 如 6-9、 6-10 , 了用户好友 的 论。这个 经是个性化的,但是 还是 了很 。这主要是因为 并关 关 的好友的 有 论, 关 的 论中和自己相关的部分。虽然 在 关 经考 了关 对 和自己兴趣的相 度,但 然 法 和自己兴趣 一 的人。因此, 流的个性化推荐要 决的 题 是如 进一 用户从 上 有用的 。 取自Twitter, 中相关 的 作 作人有 6-9 Twitter的用户 流
173. 6.3 的 157 1 2 3 4 5 取自Facebook, 中相关 的 作 作人有 6-10 Facebook的用户 流 6 流行的 流推荐算法是Facebook的EdgeRank,该算法 考 了 流中 个 话 的 、 度与用户兴趣的相 度。EdgeRank算法比较 ,没有相关的论文, TechCrunch 经公开 它的主要 。Facebook 称为edge, 一 话的 义为: 用户对当 用户 流中的 话产 行为的行为 6 ¦ uewede edges e 中: ‰ ue 指产 行为的用户和当 用户的相 度,这 的相 度主要是在社交网络 中的 度; 6 ‰ we 指行为的 ,这 的行为包括 、评论、like 、 标 等, 的行为有 的。 参 EdgeRank: The Secret Sauce That Makes Facebook’s News Feed Tick ,地 为http://techcrunch.com/2010/ 7 04/22/facebook-edgerank/。
174. 158 6 数 ‰ de 指 参 , 的行为对 的 。 从上 的 述中可 得出如 结论:如 一个 话被 的好友 产 要的行为, 它 有比较高的 。 ,EdgeRank算法的个性化因 是好友的 度,它并没有考 子 和用户兴趣 的相 度。 EdgeRank 考 了 用户的社 化兴趣, 没有 视 个人的个 性化兴趣。为此,GroupLens的 人员Jilin Chen 了 流推荐中社 兴趣和个性化兴 趣 的关系。 的 名算法考 了如 因 。 ‰的 的 话包括 的 。 ‰题 度 了 话中主要话题和用户兴趣 的相关性。这 Jilin Chen用了 的TF-IDF 用户 兴趣的关 和当 话的关 ,然 用这 个 的相 度度 话题相关性。 ‰ 用户 主要度 了 话中 的用户 比如 话的 者、 论者等 和当 用户的 程度。对于如 度 用户的 程度 一 介绍。计算 度的主要 是考 用户 的 好友 等。 为了 算法的性 ,Jilin Chen 也设计了一个用户 。 , 用户分 种 。 一种 的用户使用Twitter的 的是 ,也 是 Twitter 一种 和 。 种用户使用Twitter的 的是了 好友的 和好 友 天。然 , 参试者对如 5种算法的推荐结 给出1~5分的评分, 中1分 ,5分 。 ‰ Random 给用户 机推荐 话。 ‰ Length 给用户推荐比较 的 话。 ‰ Topic 给用户推荐和 兴趣相关的 话。 ‰ Tie 给用户推荐和 的好友参与的 话。 ‰ Topic+Tie 考 话和用户的兴趣相关度 用户好友参与 话的程度。 用户 ,Jilin Chen发现 如 6-11 ,对于 有用户 算法的 得分是: Topic+Tie > Tie > Topic > Length > Random 对于主要 的是 的用户, 算法的得分是: Topic+Tie Topic > Length > Tie > Random 对于主要 的是交友的用户, 算法的得分是: Topic+Tie > Tie > Topic > Length > Random 实结 , 考 用户的社 兴趣和个人兴趣对于 高用户满意度是有 的。因此, 当 在一个社交网 中设计推荐系统 ,可 考 这 个因 , 的参 用户的社 兴趣和个人兴趣,从 给用户 满意的推荐结 。 参 Jilin Chen、Rowan Nairn和Ed H. Chi的 Speak Little and Well: Recommending Conversations in Online Social Streams ACM 2011 Article, 2011 。
175. 6.4 159 1 2 3 6-11 Jilin Chen的用户 实 结 6.4 用户推荐好 4 好友关系是社 化网 的 要 部分,如 用户的好友很 , 社 化的好 。因此好友推荐是社 化网 的 要应用 一。好友推荐系统的 的是 用户现有的好友、 用户的行为 给用户推荐 的好友,从 个社交网络的 程度和社交网 用户的 5 度。 6-12、 6-13和 6-14分 了3个 名社交网 Twitter、LinkedIn和Facebook的好友推 荐 。由此可 ,好友推荐 经 为社交网 的标准 一。 6 6 6 取自Twitter, 中相关 的 作 作人有 6-12 Twitter的好友推荐 7 本 用自Jilin Chen的论文 Recommending Conversations in Online Social Streams CHI 2011 。
176. 160 6 数 取自LinkedIn, 中相关 的 作 6-13 LinkedIn的好友推荐 作人有 取自Facebook, 中相关 的作 作人有 6-14 Facebook的好友推荐 好友推荐算法在社交网络上被称为 测 link prediction 。关于 测算法 的 文 是Jon Kleinberg的 Link Prediction in Social Network 。该文对各种用户好友关系的 测方 法进行了系统地 和对比。本 介绍 中一些比较 和 的算法。 参 Learn more about People You May Know ,地 为http://blog.linkedin.com/2008/04/11/learn-more-abou-2/。
177. 6.4 161 6.4.1 的 可 给用户推荐和 有相 常用的 性。 ‰ 用户人 统计 性,包括 ‰ 用户的兴趣,包括用户 的 ‰ 用户的 ,包括用户的 性的用户作为好友 如 6-15 。 、性 、 业、 业 和 作 品和发 的 论等。 、IP地 和 等。 等。 1 给出了 2 3 取自 , 中相关 的 作 作人有 6-15 用用户的 、公司、 、标 给用户推荐好友 4 用 计算用户的相 度和 论的 用 计算 品的相 度 。 6.4.2 的好 推荐 在Twitter和 为 的 兴趣 为主的社交网络中,用户 关 对于一个人是 在 5 现实社 中 , 关 是 和 有 的兴趣 好。因此,在这种网 中 要给用户推荐 和 有 兴趣的 用户作为好友。 在 3 介绍基于用户的 算法 UserCF 经 介绍了如 计算用户 的兴趣相 度, 主要 是如 用户 相 的 品, 具有相 的兴趣。在 6 中,可 品,如 个用户 经评论 者 发 的 , 具有相 的兴趣。在Facebook中,因为有大 用户Like 的, 用UserCF算法计算用 户的兴趣相 度。关于这方 的算法可 参考 3 。 此 ,也可 用户在社交网络中的发 取用户的兴趣标 , 计算用户的兴趣相 度。 6 关于如 分析用户发 的 、 取文本的关 、计算文本的相 度,可 参考 4 。 6.4.3 社交网络 的好 推荐 在社交网 中, 得用户 现有的社交网络 ,然 可 基于现有的社交网络给用 6 户推荐 的好友,比如可 给用户推荐好友的好友。 的好友推荐算法是给用户推荐好友的好友。在人人网, 经常可 这个 很 自己的 。在 开 用人人网 , 有 的好友,因为 的好友有 。虽然 友的 友 个 ,但 些 的人。 个 的 ,在这种 ,可 7
178. 162 6 数 基于好友的好友推荐算法可 络中没有联系的 用户。 对于用户u和用户v, 可 用 给用户推荐 在现实社 中互相 介绍3种基于社交网络的好友推荐算法。 用 好友比 计算 的相 度: out(u)  out(v) wout (u, v) out(u) out(v) , 在当 社交网 的 实现了这种相 度: def FriendSuggestion(user, G, GT): suggestions = dict() friends = G[user] for fid in G[user]: for ffid in GT[fid]: if ffid in friends: continue if ffid not in suggestions: suggestions[ffid] = 0 suggestions[ffid] += 1 suggestions = {x: y / math.sqrt(len(G[user]) * len(G[x]) for x,y in suggestions} wout (u,v) 公 中out(u)是在社交网络 中用户u指 的 好友的 。 也可 义in(u) 是在社交网络 中指 用户u的用户的 。在 社交网络 中,out(u)和in(u)是相 的 。 但在 这种有 社交网络中,这 个 了,因此也可 in(u) 义 一种相 度: in(u)  in(v) win (u, v) in(u) in(v) def FriendSuggestion(user, G, GT): suggestions = dict() for fid in GT[user]: for ffid in G[fid]: if ffid in friends: continue if ffid not in suggestions: suggestions[ffid] = 0 suggestions[ffid] += 1 suggestions = {x: y / math.sqrt(len(GT[user]) * len(GT[x]) for x,y in suggestions} 这 种相 度的 义有 的 义, 用 中的关 这 种相 度。如 用户 u关 了用户v, v 于out(u), u 于in(v)。因此, wout (u,v) 大 用户u和v关 的 用户 度 大, win (u, v) 大 关 用户u和关 用户v的用户的 度 大。 种相 度 是对称的,也 是 win (u, v) win (v,u) , wout (u, v) wout (v,u) 。 , 还可 义 种有 的相 度: out(u)  in(v) wout,in (u, v) out(u) 这个相 度的 义是用户u关 的用户中,有 大比 也关 了用户v。但是,这个相 度有 一个 , 是在该相 度的 义 有人 和名人有很大的相 度。这是因为这个相 度在分
179. 6.4 163 的部分没有考 in(v) 的大 。因此, 可 用如 公 进上 的相 度: 1 wocut,in (u, v) out(u)  in(v) out(u) in(v) def FriendSuggestion(user, G, GT): suggestions = dict() 2 for fid in GT[user]: for ffid in G[fid]: if ffid in friends: continue if ffid not in suggestions: suggestions[ffid] = 0 suggestions[ffid] += 1 3 suggestions = {x: y / math.sqrt(len(GT[user]) * len(GT[x]) for x,y in suggestions} 论的这些相 度 是基于一些 计算公 给出的。这些相 度的计算 论 度还是空 度 是很高,非常 在 应用使用。 实 本 4 一些 实 评测本 出的 种相 度,评测 种相 度 好地 测用户 的好友关系。互联网上有很 社交网络 , 中比较 名的是 大 的大 网络 。该 包很 结 ,包括社交网络 、互联网 、 交 网络、用户行为网络、论文 用网络等。这 , 使用该 中 网络 。该 是一个有 ,包 82 168个 和948 464 。 的Slashdot社交 5 为了测试 好友推荐算法的性 ,本 9:1分 和测试 。然 ,给 用户u, 用 中的社交网络给用户 度为10的好友推荐 R(u), 中R(u) 中的用户 包 用户u在 中的好友。 6-1 了 好友推荐算法的 率和准 率。 6-1 3 好 推荐 的 6 Slashdot Epinion wout win wout,in w' out,in 14.09% 12.32% 8.62% 9.12% 3.63% 3.17% 2.22% 2.35% 7.40% 1.87% 7.20% 1.82% 6 11.94% 3.02% 8.77% 2.21% 从 中结 可 , 上 算法的性 并 相 。在Slashdot 上 win 取得 6 了 好的性 , 在Epinion 上 wout,in 取得了 好的性 。 ,在实 系统中 要在 自己的 上对比 的算法, 自己 的好友推荐算法。 7 参 http://snap.stanford.edu/data/。
180. 164 6 数 6.4.4 用户 的好 推荐 对于 3 出的 种 的好友推荐算法,上一 的GroupLen的Jilin Chen也进行了 。 用户 对比了 算法的用户满意度 , 中算法 这 使用了 的 名 如。 ‰ InterestBased 给用户推荐和 兴趣相 的 用户作为好友。 ‰ SocialBased 基于社交网络给用户推荐 好友的好友作为好友。 ‰ Interest+Social InterestBased算法推荐的好友和SocialBased算法推荐的好友 一 。 ‰ SONA SONA是IBM 部的推荐算法,该算法 用大 用户 了IBM员 的 社交网络。这些 包括 在的部 、 发 的文 、 的Wiki、IBM的 部社交 网络 、 作的 等。 然 ,Jilin Chen在IBM 的基础上用上述算法 4种 的好友推荐系统,然 给 个 参 测试的用户 12个推荐结 , 中 个算法 了3个推荐结 。也 是 ,参试者并 个结 自 个算法。然 ,Jilin Chen 参试者对 个推荐结 4个 题。 ‰是 这个人 ‰ 是 得这是一个好的推荐结 ‰ 是 得推荐理由 决 ‰ 这个推荐结 决 进行 种行为 : „ 主 和这个人交 友; „ 人 这个人介绍自己; „ 也。 结 如 6-2 。 ,从结 可 发现,对推荐结 的 性 算法的 名如 : InterestBased > Interest+Social > SocialBased > SONA 6-2 好 推荐 的问 InterestBased SocialBased Interest+Social SONA 好 19.5% 55.4% 31.8% 75.9% 好 3.0% 5.2% 4.4% 10.0% 好 30.1% 23.8% 24.9% 6.6% 好 41.5% 15.5% 38.9% 7.6% SONA因为用 了部 、 论文和发 的 , 推荐的好友大部分 是用 参 Jilin Chen、Werner Geyer、Casey Dugan Michael Muller、Ido Guy的 Recommending People on Social Networking Site CHI 2009 。 此 用自Jilin Chen的论文。 Make New Friends, but Keep the Old
181. 6.5 165 户 的,因此 度 ,结 如 荐结 , 如 用户 从用户 为推荐结 高。 用户 推荐结 中的人, 大部分用户 推荐结 中的人, 大 人 得推荐结 是 好的比 , 算法的 名如 : SONA > SocialBased > Interest+Social > InterestBased SONA 名 高是因为它 了 的 。 1 得这是一个好的推 好。 2 6.5 社交网络分析的 经有很 的 了。 中关于社交网络 人 的结论 是 3 度 理。 的是社 中 意 个人 可 6个人的 相互 ,如 化为 的 , 是社交网络 的 为6。 的读者一 好 度 理的 性。 度 理在 机 上 经得 了 ,对此 兴趣的读者可 参考Random Graph 一书。很 对社交网络的 论的相关 。 是基于 机 理论的,因此 社交网络 机理 4 社交网络 中有 个 名的 题。 一个是如 度 人的 要性,也 是社交网络 的中 度 centrality , 个 题是如 度 社交网络中人和人 的关系,也 是 测。 这 个 题的 有 的实 意义,因此得 了业 和 兴趣的读者可 参考社交网络分析方 的书 。 的广泛关 。对这 个 题 5 对于基于社交网络的推荐算法,因为 的 ,的 是基于Epinion的用户 网络的。Ma Hao在Epinion 上 出了很 基于 分 的社 化推荐算法用 决评分 测 题 , 主要 是在 分 中 具有比较高的相 度。 化 , 具有社交关系的用户的 义 6 ACM推荐系统大 在2010 经 一个社 化推荐比 ,该比 社交网络 一种 上 文, 参 者 用社交网络 高推荐系统的性 。关 社交化推荐的读者可 关 一 该比 发出的论文 。 6 6 比如 Social Network Analysis: Methods and Applications 和 Social Network Analysis: A Handbook 。 参 Hao Ma、Haixuan Yang、Michael R. Lyu和Irwin King的 SoRec: Social Recommendation Using Probabilistic Matrix Factorization ACM 2008 Article , 2008 。 7 CAMRa201: Challenge on Context-aware Movie Recommendation。
182. 166 7 7第 章 介绍了各种各 的 和基于这些 的推荐算法。在实 系统中, 的 大 在,因此如 设计一个 实的推荐系统 理 的 , 的 设计算法, 并 这些算法 一个系统当中是本 论的主要 题。本 介绍推荐系统的 ,然 介绍推荐系统的 ,并对 中 个 的设计进行 论。 7.1 这一 主要 论推荐系统是如 和网 的 系统 的。 7-1 了推荐系统和网 系统的关系。一 , 个网 有一个UI系统,UI系统 给用户 网 并和用户交 互。网 系统 用户在UI上的各种各 的行为 用户行为 中。 可 在 ,也可 在 中,也可 在文 系统中。 推荐系统 分析用户的 行为 ,给用户 推荐 , 网 的 上。 7-1 推荐系统和 系统 的关系 从上 的结 可 ,推荐系统要发 大的作用, 了推荐系统本 ,主要还 于 个 和用户行为 。关于如 设计推荐系统的 ,笔者没有 的发 。 ,如 流行的推荐系统 ,可 这些 有一些 性。 ‰ 一方 品,主要包括 品的标题、 和介绍等。 ‰ 很 推荐 了推荐理由,理由可 用户对推荐结 的 度。 ‰ 推荐 还 要 一些 用户对推荐结 进行 ,这 推荐算法 用户的个性化推荐 。 在设计推荐 ,可 考 网 的设计并结 自己网 的 。
183. 7.2 167 论如 和 用户 。 1 数据 个性化推荐算法 于用户行为 , 在 一个网 中 在 各种各 的用户行为 。如 务网 上的 取这些 用户行为 是推荐系统 要 决的 要 题。 7-1 了一个 的电子商 2 。如 ,从产 行为的用户 度 ,有些行为是 有 用户 产 的, 有些行为是 有用户 可 产 的。从 上 , 网 、搜索 的 很大,因为这种行为 有用户 产 , 且 个用户 产 很 这些行为。 、 行为 中等,因为 有 它 相对于评论 用户 产 这种行为,但 大,但相对于网 行为 行为 是电商网 的主要行为, 要得, 的行为是 3 用户 的一 部分人 有的, 很大。从实 取的 度上 , 、 、评 论、评分、分 等行为 是 要实 取的,因为 要用户有了这些行为, 上 要 现出 ,比如用户 了商品 ,用户的个人 比如 网 的行为和搜索行为并 要实 中应 取。 用户 的商品。 有些行为, 4 7-1 网 的 行为 行为 用户 实 网 /名 大 5 商品 中 商品 中 商品 中 评论商品 给商品评分 6 搜索商品 /名 大 搜索结 /名 大 分 商品 的 和是 要实 取, 的行为 被 在 的 介中。一 7 , 要实 取的 在 和 中, 大 的非实 地 取 在分 文 系统 如HDFS 中。 实 取在推荐系统中非常 要,因为推荐系统的实 性主要 于 实 用户的 行为。 有 大 用户的 行为,推荐系统 实 地 应用户当 的 , 6 给用户进行实 推荐。 7.2 推荐系统 推荐系统是联系用户和 品的 介, 推荐系统联系用户和 品的方 主要有3种 7
184. 168 7 如 7-2 。如 这3种方 户 , 者和用户兴趣相 的 一 可 发现,如 为用户 的 品也是一种用 用户也是一种用户 , 用户 和 品 相联系。 7-2 3种联系用户和 品的推荐系统 上 的 ,可 设计一种基于 推荐系统 要为用户 ,然 对 个 荐 。因 ,推荐系统的 务被 个是如 品。 的推荐系统 。如 7-3 ,当用户 , 和 相关的 品,从 用户的推 部分,一个是如 为给 用户 ,一 用户 7-3 基于 的推荐系统 用户的 种 非常 ,主要包括如 。 ‰统 包括用户的 、性 、 和 等用户在 的。
185. 7.2 169 ‰ 用户的行为 包括用户 的分 等用户行为相关的 。 品、 ,用户行为从 品、给 品 1 上也可 分为用户 的行为和 的行为。 ‰ 用户的 题 可 用户的 行为 用话题 topic model 电视 和电 》、《 的话题,并且计算出 》和《 》, 个用户对 话题 可 为用户对 兴趣。比如用户如 了《 电 这个话题 兴趣。 2 推荐系统的推荐 务也有很 种,如 。 ‰ 的 品推荐给用户。 ‰ 商业上 要 的 品推荐给用户。 ‰ 给用户推荐 种 的 品,比如亚马逊 推荐 书、音 、电子产品和服 等 如 3 7-4 。 4 5 6 取自亚马逊网 , 中相关 的 作 作人有 7 7-4 亚马逊 给用户推荐电子产品和 书 ‰ 给用户 推荐,有 要 书和音 品 一个推荐 中 给用户 如 -5 。 ‰ 对于 的产品推荐 6 度的 品。比如在 给用户 比较 的推荐结 , 在推荐系统 给用户 中的 品 如 7-6 。 ‰ 考 用户 推荐系统的上 文,比如当 在 音乐 , 有 一个 告 可 在 的音乐 考 了 电 。 这个上 文 如 7-7 了这个 。 , 电 给 推荐 7
186. 170 7 取自亚马逊网 , 中相关 的 作 作人有 7-5 亚马逊的社 化推荐结 中包 了各种 品 取自亚马逊网 , 中相关 的 作 7-6 亚马逊给用户推荐 作人有 的品 取自 , 中相关 的 作 作人有 7-7 电 考 用户 的上 文 该 地 中 了context参
187. 7.3 的 171 如 要在一个系统中 上 且很 文方地 的各种 和 务 统 考 , 系统 非常 , 1 和 务的 。因此,推荐系统 要由 个推荐 , 个推荐 一 和一种 务, 推荐系统的 务 是 推荐 的结 一 者优 并、 然 如 7-8 。 2 3 7-8 推荐系统的 4 这 还有 个好 。 ‰可 方 地 / , 对推荐结 的 。对于 大 , 要 的 实现。 ‰ 可 实现推荐 的用户可 的用户 。 一个推荐 的推荐 。有些用户可 实 了一种推荐 , 用 的 性 作出的推荐,有 5 些用户可 比较 的和 兴趣相关的视频,有些用户 比较 的推荐, 有些用户 于一个 域的推荐,有些用户 的推荐。 可 一种 设计 一个推荐 ,然 推荐出 的结 ,从 对 分析用户对推荐结 的 的用户给出 的 了 用户比较 。 些 6 推荐系统 分 推荐 ,如 设计一个推荐 了推荐系统设计的 部 分。 一 论推荐 的设计方法。 7.3 推荐 的 7 上一 ,推荐 使用一种 种用户 , 一种推荐 一种 品的推 荐 。 7-9 了 个具 推荐 的 。 如 7-9 ,推荐 ‰ 该部分 从 主要包括3部分。 者 中 用户行为 , 分析 行为, 当 用户 6 的 。 如 是使用非行为 , 要使用行为 取和分析 了。该 的 出是用户 。 ‰ 该部分 用户的 - 品相关 化为 推荐 品 。 ‰ 该部分 对 的推荐 进行 、 名等 理,从 的推荐结 。 7
188. 172 7 7-9 推荐 的 一 对各个 的部分分 。 7.3.1 用户 一 ,用户的 包括 种,一种是用户的 中可 取出 的,主要包括用户 的人 统计 。对于使用这种 的推荐 ,如 ,可 这些 的 在 中,在推荐 用户的 并 。 了这种 , 一种 主要是从用户的行为中计算出 的,本 论如 。 一个 由 的 ,在 用用户行为计算 要考 因。 ‰ 用户行为的 在一个网 中,用户可 对 品产 很 种 的行为。用户可 品、 品的 、 品、给 品 分、 品、评论 品、给 品 上 的标 、和好友分 品、搜索 的关 等。这些行为 对 品 的 产 ,但 行为的 ,大 很 行为 要,一 的标 准 是用户 出 价 大的行为 高。比如, 品 要用户 , 用户一 行,因此 行为 为 要。相 , 品的网 价很 , 这种 行为对 用户的 实兴趣的 很 。 ‰ 用户行为 的 一 ,用户 的行为比较 要, 用户很 的行为相 对比较 要。因此,如 用户 一个 品, 这个 品对应的 具 有比较高的 。
189. 7.3 的 173 ‰ 用户行为的 数 有 用户对一个 品 产 很 行为。比如用户 一 很 , 1 一部电视 的很 等。因此用户对 一个 品的 一种行为发 的 也 了用 户对 品的兴趣,行为 的 品对应的 高。 ‰的 如 用户对一个很 的 品产 了行为, 用户的个性, 因为用户可 是在 ,可 对该 品并没有 大兴趣, 产了 要的行为 比如 行为 , 是在用户对一个 品 用户对这个 品可 没有 2 兴趣,可 是因为这个 品的 是,很 。 ,如 用户 对一个 的 品产 了行为, 了用户的个性 。因此,推荐 在 用 户 品对应的 的 。 3 7.3.2 推荐 在得 用户的 可 在MySQL中, src_id ID ,可 如 7-2 的相关 得 。 7-2 MySQL 的 dst_id 品ID 的 品推荐 。 相关 4 weight 5 对于 个 , 可 在相关 中 和它 相关的N个 品的ID。 在 使用的  品相关 一 一 。 论文 的相关 为 ,计算论文 的 相关性 可 使用 3 出的 算法 如 论文的读者 度很大 部电视 相 ,也可 计算 比如有相 的作者、关 、相 的标题等 。 使是 , 也可 的用户行为 得 的相关 。比如可 用户的 分行为计算论文 6 的相关性,也可 用户的 行为计算论文 的相关性。总 ,对于一个推荐 可 在 文 中 很 相关 它 的 , 在 服务在 这些相关 的 相 ,然 的相关 在 中, 在给用户进行推荐 ,用的 经是 的相关 了。 7 从上 的 可 , 品相关推荐 还可 一个 品。 品 的 的是 推荐结 包 品 中的 品。它的应用 一 是产品 些 的电视 推荐给用户。比如有些产品要 给用户推荐 一 的 品, 品 包括 一 的 品。 也 有读者 ,为 在 中 的电视 6 , 要在相关推荐 中理 品 这 一个 的 子 因。 ,一 对于 算法 计算出的相关 , 个 品 于和比较 的 品具有较高的相 度。 设用户 品A, 关品 中 中包 了 品B,A和B相关,但A比B 。 ,一 ,B在A的相 在的 设 在 10名 , A在B的相关 品 中 在 的 7
190. 174 7 设 在 1名 。 ,如 推荐算法是给用户推荐和A 相关的5部电视 , B 出现在用户的推荐 中。但是,如 算法在给 用一种 的方 进行推荐,比 如如 用户 和B 相关的5部电视 中的 一部, B推荐给用户, 这种 B出 现在推荐 中了。 一 ,如 要在一个 的 品 中给用户推荐 品, 可 考 上述方法。 但如 是要在一个很大的 品 中给用户推荐 品, 可 考 在 推荐 中 在 品 中 品的方法。 品相关推荐 了给用户 品推荐 ,还 要给推荐 中的 个推荐结 产 一个 , 这个 品是因为 些 推荐出 的。 的 给出了相关推荐 的大 作流程。 def RecommendationCore(features, related_table): ret = dict() for fid, fweight in features.items() for item, sim in related_table[fid].items(): ret[item].weight += sim * fweight ret[item].reason[fid] = sim * fweight return ret 7.3.3 在得 的推荐 ,还 这个 现给用户, 要 产品 对结 进 行, 些 要 的 品。一 , 品。 ‰ 用户 行为 因为推荐系统的 的是 用户发现 品,因此没 要给用 户推荐 经 的 品,这 可 推荐结 的 性。 ‰ 的 品 一 有 个 ,一个是产品 。比如在 可 要 的 品推荐给用户,因此 要在 中 满 这一 的 品。 一个 是用户自己的 ,比如用户 了 一个价 , 这个 价 的 品, 要 满 用户 的 品。 ‰ 的 为了 高用户的 ,推荐系统 要给用户推荐 好的 品, 对于一些 大 用户评论 很 的 品,推荐系统 要 。这种 一 用户的 评分为 ,比如 分在2分 的 品。 7.3.4 经 好地 介绍。 1. 性 的推荐结 用户满意度,一 给用户一 也没有 名 要包括很 名 的 的是给用户 推荐 题,但如 对它 进行一些 名, 可 的子 , 对的分 的、 中的 品。虽然 的
191. 7.3 的 175 经 了用户 经有 行为的 品, 了一 程度的 性,但是用户在当 网 对 1 个 品没有行为并 用户 这个 品,比如用户可 经在 的 这个 品了。 要准 了 用户是 经 个 品是非常 的,因此 种 的方 ,比如对推荐结 中 的 品进行 ,比如使用如 公 : pui pui log(1 D ˜ popularity(i)) 2 ,要实现推荐结 的 性, 在 对 品进行 是 的, 应在推荐 的各个部分考 性 题。 本 的推荐系统 算法的基本公 : 主要是基于 品的推荐算法的,因此可 一 基于 品的推荐 3 pui ¦ wji ruj jN (u)S (i,K ) 在这个公 中,j 是联系用户和推荐 品的 。可 个参 wji 和 ruj 。 中, ruj 在 用户行为 用户 品相 度。如 要 高推荐结 的 性,在计算这 个 , pui 的大 主要取决于 计算, wji 是 计算的 4 要考 性。 ,如 使用ItemCF算法, 的 论可 计算出的相 度 中, 品于 和 品相 。 也 是 ,如 用户对一个 品j产 了很 行为,有很大的 ruj , 和这个 品相 的 高推荐结 的 度, 品 在用户的推荐 中 在 的 要对 ruj 进行 ,比如使用如 公 : 。因此,如 要 5 ruj ruj log(1 D ˜ popularity( j)) 对于相 度部分, , 7-10 了MovieLens 中 用ItemCF算法计算 品相 度 6 , 个 品和它 相 品 流行度 的关系。从这个 可 发现, 品 于和 品相 , 品 于和 品相 。也 是 ,如 用户 一个 的 品,ItemCF 算法也很 给 推荐一个 的 品。因此可 如 的设计。 ,考 推荐系统是为了给 用户介绍 相 的且比j 的 品, 可 设如 用户 了 品j,对 品j产 行为, 和j 的 品用户应该也有比较大的 率 ,因此可 这种 品的 ,比如: 7 w ji w ji log(1 D ˜ popularity(i)) popularity(i) > popularity( j) 此 ,也可 相 度 ,因为 相 度 中和 个 品相 的 品 是很 , 相度 也 高 推荐结 的 度。 6 用上 种考 性的方法, 可 参D 推荐结 的 度。 2. 性也是推荐系统的 要指标 一。 趣。当然,这 要指出的是 高 性并 是 性可 推荐结 覆盖 可 的用户兴 很好。比如在个性化网络电 中,因 7
192. 176 7 为用户 一 用户 的兴趣是 的, 的 , 这些 可 是 的。 ,本 主要 论如 要 高 性,应该 高。 7-10 相关 品 流行度 的关系 一种 高 性的方法是 推荐结 种 品的 性分 ,然 在 个 中 该 中 名 高的 品 的推荐 。比如,如 是电 ,可 电的 、作、 等 对推荐结 中的电 分 ,然 种 出 部电 的推荐结 。 这种方法的好 是比较 ,但这种方法也有 的 。 , 的 性进行分 对结 的 很大。 , 算 了 种 ,但 品是 于 个 是 的,并 一 得 用户的公 。比如 的电 ,有人 为是 ,有人 为是 , 人 法 一。 因此, 种 高推荐结 性的方法是 推荐结 的推荐理由出现的 。本 出的推荐系统对于 个推荐出 的 品 有一个推荐理由,这个推荐理由一 是产 推荐结 的 要 。 ,要 高推荐结 的 性, 要 推荐结 自 的 ,具有 的推荐理由, 是 有的推荐结 对应一个理由。 的 推荐理由 推荐结 的 性,这 的recommendations是 从大 的,程 中 出一个推荐结 ,如 这个结 经被用 了, 对推荐结 的 2 这具 可 在实 应用中自己 , 推荐结 从大 。 def ReasonDiversity(recommendations): reasons = set() for i in recommendations:
193. 7.3 的 177 if i.reason in reasons: i.weight /= 2 1 reasons.add(i.reason) recommendations = sortByWeight(recommendations) 3. 性主要是为了 , 高推荐系统的 用户 要 天 推荐系统 性要从 个地方 。 要 的推荐结 。在 5 经 推荐系统的实 性,在用户有 2 行为 实 推荐结 满 用户 的 。这一 ,在本 的推荐系统设计中 经考 了。如 用户有实 行为发 , 行为 取和分析 实 行为 并 化为 的 ,然 经 了用户 行为的 品相关 。 高推荐结 和 性的 相关的 品,因 推荐 中 应 个方 是要在用户没有 的行为 ,也要 3 推荐结 天 有 化。要实现这一 , 如方。 ‰ 用户 推荐系统 的推荐结 。 ‰ 这些结 发 系统。这种 要实 ,要 于一天的 了。 ‰ 在用户 用户 天 的推荐结 4 ,从当 推荐结 中 用户 经 的推荐结 。 4. 用户 名 要的部分 是用户 。用户 主要 的交互 , 测用户 对 的推荐结 比较 兴趣。 分析用户 和推荐结 5 如 推荐系统的 标是 高用户对推荐结 的 率, 可 用 click model 测用户是 推荐结 。 在很 领域得 了广泛应用,比如搜索结 的 测、 搜索广告的 结是 测 、上 文广告的 测。 测的主要 题是 测用户 个推荐 。 要进行 率 测, 要 取 。在推荐系统的 率 测中可 6 用如 测用户u 品i: ‰ 用户u相关的 ,比如 、性 、 程度、 有没有 行为; ‰ 品i相关的 ,比如流行度, 分, 性; ‰ 品i在推荐 中的 。用户的 推荐 中的 对 测用户是 和用户 的设计有很高的相关性,因此 品i在 7 很 要; ‰ 用户 是 和推荐 品i具有 推荐 的 推荐结 ; ‰ 用户 是 和推荐 品i 自 推荐 的 推荐结 。 要 计算好,在 中。为了 高在 测的 率,一 可 6 参 论文 A dynamic bayesian network click model for web search ranking ,作者为Olivier Chapelle和Ya Zhang。 参 论文 Online learning from click data for sponsored search ,作者为Massimiliano Ciaramita、Vanessa Murdock 和Vassilis Plachouras。 参 论文 Contextual advertising by combining relevance with click feedback ,作者为Deepayan chakrabarti、Deepak 7 Agarwal和Vanja Josifovski。
194. 178 7 使用 性 。 7.4 关于推荐系统 方 的文 很 , 介绍 的技 告 。 名公司亚马逊和 Netflix等 给出了一些 的 索。本 的推荐系统 主要是基于 在Hulu 作 使用 的 发 出 的,对于Hulu 兴趣的读者可 参考Hulu的技 。 MyMedia 是一个比较 名的开 推荐系统 。它是由 人员开发的一个推荐系统 开 。该 评分 测和TopN推荐, 各种 和各种算法,对该 兴趣的用户可 该 的网 http://www.mymediaproject.org/default.aspx。 本 出的推荐系统 基本上是从基于 品的推荐算法 出 的,因此本 的 并 用 决社 化推荐 题。如 要了 社 化推荐方 的 ,可 参考Twitter公开的一些 文。 http://tech.hulu.com/blog/2011/09/19/recommendation-system/。 http://mymediaproject.codeplex.com/。
195. 8第 章 8.1 179 1 2 本书 为 ,使该推荐 是在 论TopN推荐, 给 一个用户,如 给 一个 度为N的推荐 满 用户的兴趣和 。本书 如此 视TopN推荐,是因为 3 它非常 于满 实 系统的 ,实 系统 大 是给用户 一个包括N个 品 的个性化推荐 。 但是,很 从 推荐系统 的 的 是评分 测 题。从GroupLens Netflix Prize Yahoo! Music的KDD Cup,评分 测 题 是推荐系统 的 。评分 测 题 基本 4 的 是用户评分 。该 由用户评分 , 一 评分 是一个 (u, i, r), 用户u给 品i 了评分r,本 用 rui 有 品 评分,因此评分 测 题 是如 用户u对 品i的评分。因为用户 可 对 的用户 评分 测 的用户评分 。 8-1是一个评分 测 题的 子,在该 子中 个用户 对一些电 给出了评分,比如用 5 户A给《 》评了1分,给《 大 》评了5分,给《 》评了4分,给《大话 》评了5分。但是, 个用户 没有对 有电 评分,比如用户A没有给《 》和《 》评分。 ,当用户 网 并 《 》和《 》, 给 用户一个分 为用户是 这部电 , 这个分 也可 用户决 是 要 这部电 , 如 高这个分 的 测 度 是评分 测要 决的主要 题。 6 8-1 评分预测问题 例 A 1 ? 5 4 5 ? 7 B 4 2 ? 3 ? 5 C ? 4 ? 3 ? 5 D 5 ? 5 ? 2 ? E ? 5 ? ? 4 4 8 本 主要 论评分 测这一推荐领域的经 题。因为这一 题的 中在 , 本 的介绍也比较 ,相对 各 一些公 和理论的 论。 9
196. 180 8 8.1 实 评分 测 题基本 实 进行 。在给 用户评分 , 人员 一 的方 分 和测试 ,然 测试 用户兴趣 测测试 中的用 户评分。对于测试 中的一对用户和 品 u, i ,用户u对 品i的 实评分是 rui , 推荐算法 测的用户u对 品i的评分为 rˆui , 一 可 用 方 RMSE度 测的 度: RMSE ¦ (u,i)T (rui  rˆui )2 Test 评分 测的 的 是 好的 化测试 的RMSE。 关于如 分 和测试 ,如 是和 关的 测 务,可 分 机分 , 对 个用户, 机 一些评分 作为测试 , 的 作为测试 。如 是和 相关的 务, 要 用户的 行为作为 , 用户的 行为作为测试 。Netflix 如方 分 , 个用户的评分 从 进行 ,然 用户 10% 的评分 作为测试 , 90%的评分 作为 。 8.2 评分预测 自从Netflix Prize大 Prize的 是用了上 有 性的算法,并给出它 , 家的 人员 出了很 个的 取得了 的 。本 在Netflix 上的 。 评分 从 测算法, Netflix 地介绍具 8.2.1 的评分 测算法是 用 值 测用户对 品的评分的。 各 分 介绍各种 的 值。 1. 在值 的是 值。它的 义为 中 P ¦ r (u,i)Train ui ¦ 1 (u,i)Train 的测 可 义为: rˆui P 2. 用户评分 用户u的评分 值 ru 义为用户u在 ru 中 有评分的 ¦ r iN (u) ui ¦ 1 iN (u) 有评分 值: 的评分 值:
197. 8.2 181 的 测 可 义为: 1 rˆui ru 3. 评分 品i的评分 值 ri 义为 品i在 中 的 有评分的 值: ri ¦ r uN (i) ui ¦ 1 uN (i) 2 的 测 可 义为: rˆui ri 4. 用户分 设有 个分 分的 ,一个是用户分 I ,一个是 品分 M 。 I(u) 义了用户u 3 的 , M(i) 义了 品i 的 。 , 可 用 中 用户对 品评分 的 值 测用户对 品的评分, : rˆui ¦ r (v, j)Train,I (u ) I (v),M (i) M ( j) vj ¦ 1 (v, j )Train,I (u) I (v),M (i) M ( j ) 4 出的 值,用户评分 值和 品评分 值 是 值的一种 。 ‰ 如 义 I(u) 0, M(i) 0 , rˆui 是 值。 ‰如 ‰如 义 I(u) u, M(i) 0 , 义 I(u) 0, M(i) i , rˆui 是用户评分 rˆui 是 品评分 值。 值。 5 了这3种 的 值,在用户评分 上还可 义很 的分 。 ‰ 用户 的 分 对于一个用户,可 计算 的评分 分。然 有用户 评分 分从 大 ,并 用户 分。 分 分 N 。 品也可 用 的方 6 ‰ 用户 行 对于一个用户, 评分的 品 义为 的 度。得 用户 度 ,可 用户 度从 大 ,然 分为N 。 品的流 行度 义为给 品评分的用户 , 品也可 流行度 分 N 。 的Python 给出了 值的计算方法。 7 def PredictAll(records, user_cluster, item_cluster): total = dict() count = dict() for r in records: if r.test != 0: continue 8 gu = user_cluster.GetGroup(r.user) gi = item_cluster.GetGroup(r.item) basic.AddToMat(total, gu, gi, r.vote) basic.AddToMat(count, gu, gi, 1) for r in records: gu = user_cluster.GetGroup(r.user) 9 gi = item_cluster.GetGroup(r.item)
198. 182 8 average = total[gu][gi] / (1.0 * count[gu][gi] + 1.0) r.predict = average 在这 中,user_cluster.GetGroup 一个用户ID,然 一 的算法 用户的 。item_cluster.GetGroup 一个 品的ID,然 一 的算法 品的 。total[gu][gi]/count[gu][gi] 了 gu 用户给 gi 品评分的 分。 上文 ,user_cluster和item_cluster有很 的 义方 , 的Python 给 出了 的user_cluster和item_cluster 义方 。 中,Cluster是基 ,对于 用户和 品,它的GetGroup 0,因此如 user_cluster和item_cluter 是Cluster , 的测 是 值。IdCluster的GetGroup 一个ID, 这个ID, 如 user_cluster是Cluster , item_cluster是IdCluster , 的 测 给出的 是 品 值。 此 推, 8-2 了MovieLens 中用 值方法 得 的RMSE,实 结 对用户使用UserVoteCluster,对 品采用ItemVoteCluster, 可 得 的RMSE。 class Cluster: def __init__(self,records): self.group = dict() def GetGroup(self, i): return 0 class IdCluster(Cluster): def __init__(self, records): Cluster.__init__(self, records) def GetGroup(self, i): return i class UserActivityCluster(Cluster): def __init__(self, records): Cluster.__init__(self, records) activity = dict() for r in records: if r.test != 0: continue basic.AddToDict(activity, r.user, 1) k=0 for user, n in sorted(activity.items(), \ key=itemgetter(1), reverse=False): c = int((k * 5) / (1.0 * len(activity))) self.group[user] = c k += 1 def GetGroup(self, uid): if uid not in self.group: return -1 else: return self.group[uid]
199. 8.2 class ItemPopularityCluster(Cluster): def __init__(self, records): Cluster.__init__(self, records) popularity = dict() for r in records: if r.test != 0: continue basic.AddToDict(popularity, r.item, 1) k=0 for item, n in sorted(popularity.items(), \ key=itemgetter(1), reverse=False): c = int((k * 5) / (1.0 * len(popularity))) self.group[item] = c k += 1 def GetGroup(self, item): if item not in self.group: return -1 else: return self.group[item] class UserVoteCluster(Cluster): def __init__(self, records): Cluster.__init__(self, records) vote = dict() count = dict() for r in records: if r.test != 0: continue basic.AddToDict(vote, r.user, r.vote) basic.AddToDict(count, r.user, 1) k=0 for user, v in vote.items(): ave = v / (count[user] * 1.0) c = int(ave * 2) self.group[user] = c def GetGroup(self, uid): if uid not in self.group: return -1 else: return self.group[uid] class ItemVoteCluster(Cluster): def __init__(self, records): Cluster.__init__(self, records) vote = dict() count = dict() for r in records: if r.test != 0: continue basic.AddToDict(vote, r.item, r.vote) basic.AddToDict(count, r.item, 1) k=0 183 1 2 3 4 5 6 7 8 9
200. 184 8 for item, v in vote.items(): ave = v / (count[item] * 1.0) c = int(ave * 2) self.group[item] = c def GetGroup(self, item): if item not in self.group: return -1 else: return self.group[item] 8-2 MovieLens数据 上 UserGroup Cluster IdCluster Cluster UserActivityCluster UserActivityCluster Cluster IdCluster UserActivityCluster UserVoteCluster UserVoteCluster Cluser IdCluster UserVoteCluster ItemGroup Cluster Cluster IdCluster Cluster IdCluster ItemPopularityCluster ItemPopularityCluster ItemPopularityCluster Cluster IdCluster ItemVoteCluster ItemVoteCluster ItemVoteCluster 的RMSE Train RMSE 1.1171 1.0289 0.9754 1.1100 0.9740 1.0902 1.0004 1.0860 1.0370 0.9209 0.9841 0.9055 0.9272 Test RMSE 1.1167 1.0351 0.9779 1.1093 0.9914 1.0891 1.0258 1.0847 1.0425 0.9441 0.9864 0.9449 0.9342 8.2.2 的 基于用户的 域算法和基于 品的 域算法 可 应用 评分 测中。基于用户的 域算法 为 测一个用户对一个 品的评分, 要参考和这个用户兴趣相 的用户对该 品的评分, : rˆui ¦ ¦ ru  w (r vS (u,K ) N (i) uv vi  rv ) w vS (u,K ) N (i) uv 这 ,S(u, K)是和用户u兴趣 相 的K个用户的 ,N(i)是对 是用户v对 可 品i的评分,rv 是用户v对 评 分的 有 品评分的 逊系 计算: wuv ¦ iI (rui  ru ) ˜ (rvi  rv ) ¦ ¦ iI (rui  ru )2 iI (rvi  rv )2 品i评 分的用户 值。用户 的相 , rvi 度 wuv
201. 8.2 185 的Python 实现了用户相 度的计算和 的 测 : 1 def UserSimilarity(records): item_users = dict() ave_vote = dict() activity = dict() for r in records: addToMat(item_users, r.item, r.user, r.value) addToVec(ave_vote, r.user, r.value) 2 addToVec(activity, r.user, 1) ave_vote = {x:y/activity[x] for x,y in ave_vote.items()} nu = dict() W = dict() for i,ri in item_users.items(): for u,rui in ri.items(): 3 addToVec(nu, u, (rui - ave_vote[u])*(rui - ave_vote[u])) for v,rvi in ri.items(): if u == v: continue addToMat(W, u, v, \ (rui - ave_vote[u])*(rvi - ave_vote[v])) for u in W: 4 W[u] = {x:y/math.sqrt(nu[x]*nu[u]) for x,y in W[u].items()} return W def PredictAll(records, test, ave_vote, W, K): user_items = dict() for r in records: addToMat(user_items, r.user, r.item, r.value) for r in test: r.predict = 0 norm = 0 for v,wuv in sorted(W[r.user].items(), \ key=itemgetter(1), reverse=True)[0:K]: if r.item in user_items[v]: rvi = user_items[v][r.item] r.predict += wuv * (rvi - ave_vote[v]) norm += abs(wuv) if norm > 0: r.predict /= norm r.predict += ave_vote[r.user] 基于 品的 域算法在 测用户u对 品i的评分 , 参考用户u对和 品i相 的 5 6 品7 的评分, : rˆui ¦ ¦ ri  w (r jS (u,K )N (u) ij uj  ri ) w jS (i,K ) N (u ) ij 这 ,S(i, K)是和i 相 的 品 ,N(u)是用户u评 分的 品 , wij 是 品 8 的相 度, ri 是 品i的 分。对于如 计算 品的相 度,Badrul Sarwar等在论文 了的 参 Badrul Sarwar、George Karypis、Joseph Konstan和John Riedl的 Item-based Collaborative Filtering Recommendation 9 Algorithms ACM 2001 Article,2001 。
202. 186 8 ,文 比较了3种主要的相 度。 一种是 的 相 度 cosine similarity : wij ¦ uU rui ˜ ruj ¦ ¦ r2 uU ui r2 uU uj 种是 逊系 pearson correlation): wij ¦ uU (rui  ri ) ˜ (ruj  rj ) ¦ ¦ uU (rui  ri )2 uU (ruj  rj )2 种被Sarwar称为 的 相 度 adjust cosine similarity : wij ¦ uU (rui  ru ) ˜ (ruj  ru ) ¦ ¦ uU (rui  ru )2 uU (ruj  ru )2 Sarwar 用MovieLens 的 对3种相 度进行了对比 ,并 MAE作为评测指标。实 结 用 的 相 度进行评分 测可 得 优的MAE。 要 的是, 在一个 上的实 并 意 在 上也 得相 的结 。 8.2.3 分 这 机 和 的人经常 的各种名 , Latent Class Model 、 义 Latent Factor Model 、pLSA、LDA、Topic Model、Matrix Factorization、Factorized Model。 这些名 在本 上应该是 一种 系的 。在推荐系统领域, 的 的 是 义和分 。 实,这 个名 的是一 , 是如 的方法 评分 补。 用户的评分行为可 一个评分 R, 中R[u][i] 是用户u对 品i的评分。但是,用 户 对 有的 品评分, 这个 有很 是空的,这些空的 称为 missing value 。因此,评分 测从 种意义上 是 空,如 一个用户对一个 品没有评 分, 推荐系统 要 测这个用户是 是 对这个 品评分 评 分。 1. 统的SVD分 对于如 补 一个 , 上有 很 的 。一个空的 有很 种补 方法, 要 的是一种对 的补 方法。 算是对 一 为,如 补 的 值和补 的 值相 大, 算是 比较 。 , 的 分 是从 上的SVD 值分 开 的。 给 m个用户和n个 品,和用户对 品 参 Badrul Sarwar、George Karypis、Joseph Konstan和John Riedl的 Item-based Collaborative Filtering Recommendation Algorithms ACM 2001 Article,2001 。 参 Daniel Billsus和Michael J. Pazzani的 Learning Collaborative Information Filters 1998 。
203. 8.2 187 的评分 R  mun 。 要对评分 中的 值进行 地补 ,比如用 值, 1 者用户/ 品 值补 ,得 补 的 R'。 ,可 用SVD分 R'分 如 : Rc U T SV 中U  kum , V  kun 是 个 交 , S  kuk 是对 ,对 上的 一个 是 的 值。为了对R'进行 ,可 取 大的f个 值 对 Sf,并且 这f个 值中 个值在U、V 中对应的行和 ,得 Uf、Vf,从 可 得 一个 的评分 : 2 Rcf U T f S f V f 中, Rcf (u,i) 是用户u对 品i评分的 测值。 SVD分 是 推荐系统 实 系统中应用。 常用的 分 方法, 该方法具有 ,因此很 在 3 ‰ 该方法 要用一个 的方法补 评分 。一 ,推荐系统中的评分 是非常 的,一 有95% 上的 是 的。 一 补 ,评分 一 个 ,从 使评分 的 是可 的。 要非常大的空 ,这种空 的 在实 系统中 4 ‰ 该方法 的SVD分 方法的计算 度很高, 是在 的大 上 是非常 。一 ,这 的SVD分 用于1000 上的 经非常 了, 实 系统 是上 的用户和 的 品, 这一方法 法使用。如 关于这一方 法的论文可 发现,实 是在 个用户、 个 品的 上进行的。 5 2. Simon Funk SVD 是由于上 的 个 ,SVD分 算法 出 在推荐系统领域 没有得 广泛的关 。 2006 Netflix Prize开 ,Simon Funk在 上公 了一个算法 称为Funk-SVD , 一子 了 对 分 方法的关 。 且,Simon Funk的 也 为了很 论文 经常 用的对 。Simon Funk 出的 分 方法 被Netflix Prize的 Koren称为Latent 6 Factor Model 称为LFM 。 3 经 介绍 LFM在TopN推荐中的应用,因此这 介绍这一方 的 。从 分 的 度 ,如 评分 R分 为 个 相: Rˆ PT Q 7 中 P   f um 和 Q   f un 是 个 的 。 ,对于用户u对 品i的评分的 测值 Rˆ (u,i) rˆui ,可 如 公 计算: ¦ rˆui puf qif f 中 puf P(u, f ) , qi f Q(i, f ) 。 ,Simon Funk的 很 :可 的 值 用 化RMSE P、Q 。 8 中 9 参 Simon Funk的 ,文 地 为http://sifter.org/~simon/journal/20061211.html。
204. 188 8 Simon Funk 为, 然 用RMSE作为评测指标, 如 的P、Q 化 的 测 , 应该也 化测试 的 测 。因此,Simon Funk 义 为: C( p, q) ¦ (rui  rˆui )2 ( u .i )Train ¦ ¦ § ¨ rui © ( u .i )Train  F f1 puf qif ·2 ¸ ¹ 优化上 的 可导 的 ,因此还 要 O( pu 2  qi 2 ) , 中 O 是 化参 ,从 得 : C( p, q) ¦ ¦ § ¨ rui © ( u .i )Train  F f1 puf qif ·2 ¸ ¹ O pu 2  qi 2 要 化上 的 , 可 用 机 度 法 。该算法是 优化理论 基础 的优化算法,它 参的导 方 ,然 法 地优化参 。 介绍优化方法的 推导。 上 义的 可得: 有 参 puf和qif , 法 要 对它 分 导, wC wpuf 2qik  2O puk wC wpif 2 puk  2Oqik 然, 机 度 法, 要 参 方 推进,因此可 得 如 推 公: 中,D 是 puf puf  D (qik  O puk ) qi f qi f  D ( puk  Oqik ) 率 learning rate ,它的取值 要 实 得。 的 实现了 LFM 的 程。在LearningLFM 中, train是 中的用户评分 ,F是 的 ,n是 。 def LearningLFM(train, F, n, alpha, lambda): [p,q] = InitLFM(train, F) for step in range(0, n): for u,i,rui in train.items(): pui = Predict(u, i, p, q) eui = rui - pui for f in range(0,F): p[u][k] += alpha * (q[i][k] * eui - lambda * p[u][k]) q[i][k] += alpha * (p[u][k] * eui - lambda * q[i][k]) alpha *= 0.9 return list(p, q) 如上 的 ,LearningLFM主要包括 。 , 要对P、Q 进行 化,然 参 http://en.wikipedia.org/wiki/Stochastic_gradient_descent。
205. 8.2 189 要 机 度 法的 得 的P、Q 。在 , 要在 一 对 参 D 1 进行 (alpha *= 0.9),这是 机 度 法算法要 的, 的是使算法 。如 一 是,如 要在一个 域 值,一开 可 要大 搜索,但 搜索的进 行,搜索 。 化P、Q 的方法很 ,一 是 这 个 用 机 ,但 机 的大 还是 有 的, 经 , 机 要和1/sqrt(F) 比。 的 实现了 化 。 2 def InitLFM(train, F): p = dict() q = dict() for u, i, rui in train.items(): if u not in p: 3 p[u] = [random.random()/math.sqrt(F) \ for x in range(0,F)] if i not in q: q[i] = [random.random()/math.sqrt(F) \ for x in range(0,F)] return list(p, q) 4 测用户u对 品i的评分可 如 实现: def Predict(u, i, p, q): return sum(p[u][f] * q[i][f] for f in range(0,len(p[u])) LFM 出 得了很大的 , 很 名的 是 对LFM 补补 得的, 的各 分 介绍一 进LFM的各种方法。这些 进有些是对 的 进,有些是 的 5 当中。 3. 后的LFM 一 上一 出的LFM 测公 : ¦ rˆui puf qif 6 f 这个 测公 用户和 品联系在了一 。但是,实 ,一个评分系统有些 有 性和用户 品 关, 用户也有些 性和 品 关, 品也有些 性和用户 关。因此, Netflix Prize中 出了 一种LFM, 测公 如 : rˆui P  bu  bi  puT ˜ qi 7 这个 测公 中 了3 P 、 bu 、 bi 。本 这个 称为BiasSVD。这个 中 的 的作用如 。 ‰P 品 中 有 的评分的 ,网 的 评分分 也 。在 网 中,因为网 和的 出一些 。比如有些网 中的用户 是 8 高分, 一些网 的用户 是 分。 可 网 本 对用户评 分的 。 ‰ bu 用户 user bias 。这一 因 。比如有些用户 是比较 ,对 了用户的评分 中和 品没有关系的 种 要 很高, 的评分 ,9
206. 190 8 有些用户比较 ,对 得, 的评分 高。 ‰ bi 品 item bias 因 。比如有些 品本 。这一 了 品 的评分中和用户没有 很高,因此 得的评分相对 比较高, 有些 很 ,因此 得的评分相对 比较 。 的3个参 中, 有 bu 、 bi 是要 机 法 这 个参 , 对LearningLFM 出 的。 可 导,然 ,可 BiasLFM : 关系的 品本 用度 def LearningBiasLFM(train, F, n, alpha, lambda, mu): [bu, bi, p,q] = InitLFM(train, F) for step in range(0, n): for u,i,rui in train.items(): pui = Predict(u, i, p, q, bu, bi, mu) eui = rui - pui bu[u] += alpha * (eui - lambda * bu[u]) bi[i] += alpha * (eui - lambda * bi[i]) for f in range(0,F): p[u][k] += alpha * (q[i][k] * eui - lambda * p[u][k]) q[i][k] += alpha * (p[u][k] * eui - lambda * q[i][k]) alpha *= 0.9 return list(bu, bi, p, q) bu 、 bi 在一开 要 化 0的 。 def InitBiasLFM(train, F): p = dict() q = dict() bu = dict() bi = dict() for u, i, rui in train.items(): bu[u] = 0 bi[i] = 0 if u not in p: p[u] = [random.random()/math.sqrt(F) for x in range(0,F)] if i not in q: q[i] = [random.random()/math.sqrt(F) for x in range(0,F)] return list(p, q) def Predict(u, i, p, q, bu, bi, mu): ret = mu + bu[u] + bi[i] ret += sum(p[u][f] * q[i][f] for f in range(0,len(p[u])) return ret 4. 的LFM 的LFM 中并没有 地考 用户的 在Netflix Prize比 中 出了一个 , 用户 该 称为SVD++。 在介绍SVD++ , 论一 如 行为对用户评分 测的 。为此,Koren 评分的 品 了LFM 中,Koren 基于 域的方法也 LFM 设计 一个可 参 Yehuda Koren的 Factor in the Neighbors: Scalable and Accurate Collaborative Filtering ACM 2010 Article,2010 。
207. 8.2 191 的 。 实很 , 可 ItemCF的 测算法 如 方 : 1 rˆui ¦ 1 N (u) wij jN (u) 这 , wij 是 ItemCF算法计算出的 品相 度 , 是一个和P、Q一 的参 , 它可 优化如 的 进行优化: 2 C(w) ¦ ¦ § ¨ rui © ( u ,i )Train  jN (u) wij ruj ·2 ¸ ¹  O wi2j ,这个 有一个 , 是w 是一个比较 的 , 它 要比较大的空 。 此 ,如 有n个 品, 该 的参 个 是n2个,这个参 个 比较大, 的 。因此,Koren 出应该对w 也进行分 , 参 个 2*n*F个, 结 3 如: rˆui ¦ 1 N (u) xiT jN (u) yj ¦ 1 N (u) xiT jN (u ) yj 这 , xi 、 y j 是 个F 的 。由此可 ,该 用 xiT y j 了 wij ,从 大大 的 和 空。 进一 , 可 的LFM和上 的 相 ,从 得 如 : 了参 4 Koren SVD++ 出,为了 ¦ rˆui P  bu  bi  puT ˜ qi  1 N (u) xiT jN (u) yj 参 ,可 x = q,从 得 的SVD++ : 5 ¦ rˆui P  bu  bi  qiT ˜ ( pu  1 N (u) xiT jN (u ) yj) 对各个参 导 , 也可 推导出 公 。这 , 给出了 的实现 ,如 。 6 def LearningBiasLFM(train_ui, F, n, alpha, lambda, mu): [bu, bi, p, q, y] = InitLFM(train, F) z = dict() for step in range(0, n): for u,items in train_ui.items(): z[u] = p[u] 7 ru = 1 / math.sqrt(1.0 * len(items)) for i,rui in items items(): for f in range(0,F): z[u][f] += y[i][f] * ru sum = [0 for i in range(0,F)] for i,rui in items items(): 8 pui = Predict() eui = rui - pui bu[u] += alpha * (eui - lambda * bu[u]) bi[i] += alpha * (eui - lambda * bi[i]) for f in range(0,F): sum[k] += q[i][k] * eui * ru p[u][k] += alpha * (q[i][k] * eui \ 9
208. 192 8 - lambda * p[u][k]) q[i][k] += alpha * ((z[u][k] + p[u][k]) * eui \ - lambda * q[i][k]) for i,rui in items items(): for f in range(0,F): y[i][f] += alpha * (sum[f] - lambda * y[i][f]) alpha *= 0.9 return list(bu, bi, p, q) 8.2.4 信息 论是MovieLens 还是Netflix Prize 包 ,对于用户 的评分行为, 给出了行为发 的 。因此,在Netflix Prize比 ,很 人员 出了 用 测 的方法。 用 的方法也主要分 种,一种是 应用 基于 域的 中, 一种 是 应用 分 中。 分 介绍这 种算法。 1. 的 因为Netflix Prize 信息 中用户 大, 基于用户的 域 很 被使用,主要是因为 用户相 度 非常 。因此,本 主要 论如 基于 品的 域 中。 Netflix Prize的参 BigChaos在技 告中 了一种 的基于 域的 ,本 这个 称为TItemCF。该算法 如 公 测用户在 一个 给品 评分: 这 ,'t 是一个考 了 rˆuit ¦ jN (u)S (i,K ) f (wij , 't)ruj ¦ jN (u)S (i,K ) f (wij , 't) tui  tuj 是用户u对 品i和 品j评分的 ,wij 是 的相 度 ,它的主要 的是 高用户 品i和j的相 度, f (wij , 't) 的评分行为对推荐结 的 ,BigChaos在 中采用了如 的 f : f (wij , 't) V (G ˜ wij ˜ § exp ¨©  't E · ¸¹  J ) V (x) 1 1 exp(x) 这 , V (x) 是sigmoid ,它的 的是 相 度 可 发现, 't , f (wij , 't) ,也 是 评分的 。 0,1 用户很 中。从上 的 义 的行为对 测用户当 2. 分的 信息 在 ,用户评分 是一个 , 是 了一个 。,
209. 8.2 193 可 分 这 ,P 可 的方 对 进行分 。 一 rˆui P  bu  bi  puT ˜ qi 对 的 分 ,bu 、bi 可 对 的BiasSVD : 1 的一 分 , puT ˜ qi 可 对 的 分 。 这种分 , 可 用户 品 ¦ rˆuit P  bu  bi  bt  puT ˜ qi  xuT ˜ yt  siT zt  gu, f hi, f lt, f f 如分: 2 这 bt 应, siT zt 了系统 了品 分 分 化的 应, xuT ˜ yt 了用户 分 化的 应, ¦ f gu, f hi, f lt, f 了用户兴趣 化的 的 应。这个 也可 很 地 用 出的 机 度 法进行 。本 这个 为TSVD。 3 Koren在SVD++ 的基础上也 了 应 , 一 SVD++ : ¦ rˆui P  bu  bi  qiT ˜ ( pu  1 N (u) jN (u) y j ) 可 对这个 这 , tu 是用户 。该 可 如进 : ¦ rˆuit P  bu (t)  bi (t)  qiT ˜ ( pu (t)  1 N (u) jN (u) y j ) bu (t) bu  Du ˜ devu (t)  but  bu,period(t) devu (t) sign(t  tu )˜ t  tu E bi (t) bi  bit  bi,period(t) puf (t) puf  putf 有评分的 。 period(t) 考 了 应,可 机 度 法进行优化。 义为 4 5 t 在的 6 8.2.5 Netflix Prize的 上 个 的结 取得了 的 。由此可 对 高评分 测的 度至关 要。本 论 的种 技。 7 1. 设 经有一个 测 rˆ(k) ,对于 个用户 品对(u, i) 给出 测值, 可 在这个 测 的基础上设计 一个 测 rˆ(k 1) 化 : C ¦ rui  rˆu(ik )  rˆu(ik 1) 2 ( u ,i )Train 8 由上 的 述可 发现, 联 很 Adaboost算法。和Adaboost算法 ,该方法 产 参 Liang Xiang和Qing Yang的 Time-Dependent Models in Collaborative Filtering Based Recommender System , WI-IAT 09。 9 参 Yehuda Koren的 Collaborative Filtering with temporal dynamics ACM 2009 Article,2009 。
210. 194 8 一个 , 一 的参 上 ,从 使 并 对 本 采 , 对 些 测 的 本, 是 测,但 使用的 有。 一 , 联 的方法 用于 的 测 ,比如 Python 实现了 用 值 测 进行 联 的方法。 化。 的是,这 还是 用 本 进行 的 值测。 的 def Predict(train, test, alpha): total = dict() count = dict() for record in train: gu = GetUserGroup(record.user) gi = GetItemGroup(record.item) AddToMat(total, gu, gi, record.vote - record.predict) AddToMat(count, gu, gi, 1) for record in test: gu = GetUserGroup(record.user) gi = GetUserGroup(record.item) average = total[gu][gi] / (1.0 * count[gu][gi] + alpha) record.predict += average 8-3 了MovieLens 对比 可 发现,采用 联 是 用 的算法进行 联 上对 值方法采用 联 ,测试 的RMSE从0.9342 ,也 得 比较 的评分 测 的RMSE。如 和 8-2的结 了0.9202。由此可 , 使 。 8-3 MovieLens数据 用 UserGroup Cluster IdCluster Cluster UserActivityCluster Cluster UserVoteCluster Cluser UserVoteCluster UserActivityCluster ItemGroup Cluster Cluster IdCluster Cluster ItemPopularityCluster Cluster ItemVoteCluster ItemVoteCluster ItemPopularityCluster 后的 Train RMSE 1.1171 1.0282 0.9186 0.9165 0.9164 0.9142 0.9140 0.9123 0.9121 Test RMSE 1.1167 1.0344 0.9274 0.9254 0.9253 0.9222 0.9221 0.9205 0.9202 2. 设 有K个 的 测 {rˆ(1) , rˆ(2) , ", rˆ(K )} ,本 主要 论如 它 的测 。 的 算法 是 性 , 的 测 rˆ 是这K个 测 的 性 ¦K rˆ Dk rˆ(k ) k1 一 ,评分 测 题的 决 要在 上 K个 的 测 ,然 出 测。但是,如 在 上 K个 测 ,得 性 系 , : 在测试 得 上作
211. 8.2 195 的 题。因此,在 一 采用如 方法。 ‰设 经被分为了 A和测试 B, 1 要 A 相 的分 方 法分为A1和A2, 中A2的 方法和B的 方法一 ,且大 相 。 ‰ 在A1上 K个 的 测 ,在A2上作出 测。因为 A2上的 实评分值, 可 在A2上 用 法 计算出 性 系 Dk 。 ‰ 在A上 K个 的 测 ,在B上作出 测,并且 这K个 测 在B上的 测结 2 经得 的 性 系 ,得 的 测结 。 了 性 ,还有很 的 方法,比如 用人 经网络的 算法。 实, 题 是一个 的 题,因此 有的 算法 可 用于 。 3 8.2.6 Netflix Prize的 实 Netflix Prize比 的 ,很 人员在 一个 上 实了 的 各种算法。因此,本 用 的实 结 对比各个算法的性 。Netflix Prize采用RMSE评 测 测准 度,因此本 的评测指标也是RMSE,具 8-4。 4 8-4 Netflix Prize上 的RMSE 数 RMSE Global Average Item Average ItemCF RSVD Bias-RSVD SVD++ TimeSVD++ K = 25 F = 96 F = 96 F = 50 F = 50 1.1296 1.0526 5 0.9496 0.9094 0.9039 0.8952 0.8824 6 7 可 参考 基 对 法的介绍,地 为http://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA %8C %E4%B9%98%E6%B3%95。 8 参 Arkadiusz Paterek的 Improving regularized singular value decomposition for collaborative filtering ACM International Conference on Knowledge Discovery and Data Mining,2007,39-42。 上。 参 Yehuda Koren的 Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model ACM SIGKDD international conference on Knowledge discovery and data mining,2008,426-434。 9 参 Yehuda Koren的 Collaborative Filtering with Temporal Dynamics ACM 2009 Article,2009 。
212. 196 9总 本书 介绍了推荐系统的各种算法设计和系统设计的方法,并且 用一些公开的 评测了各种算法。对于 法 评测 算法性 的 ,本书 用了很 名的用户 实 比较 的算法。 要 ,本书的很 实 是在一 个 上 的, 本书得 的 有结 论 是 论,可 一个 得 相 的结论。这主要是因为 网 中的用户行 为有很大的 , 推荐系统很 有 准的结论。因此本书非常 读者在自己的 上 本书的实 , 得 自己具 的结论。这也是本书书名中 实践 一 的。 , 用2009 ACM推荐系统大 上Strand 人员 的一个 告 推荐系统 ,在这个 告中Strand的 人员总结了 设计推荐系统的经 , 出了10 在设计推荐系 统中 的经 和 。 (1) 的 要推荐系统。推荐系统 有在用户 要。如 的网 品 , 者用户兴趣 比较 一, 也 并 要推荐系统。 要 结于推荐系统 这个 , 要为了 推荐系统 推荐系统, 是应该从用户的 度出发,设计出 用户发现 的系统, 论这个系统算法是 ,要 用户, 是一个好的系统。 (2) 商业 标和用户满意度 的关系。对用户好的推荐系统 商业上有用的推荐 系统,因此要 用户满意的推荐系统和商业上 的 。一 ,有些 用户满意 和商业 并 。但是一 ,用户满意度总是 业的 ,因此这一 的主 要 是要 业的 和 的关系。 (3) 的开发人员。一 ,如 是一家大公司,应该 用自己的开发人员 进行推荐系统的开发。 (4) 的 题。 地 ,互联网上有 要的 。 要用户 的产 品, 的。 (5) 和算法 的关系。使用 的用户 对推荐系统至关 要。对用户行为 的 理 是设计好推荐系统的 要 ,因此分析 是设计系统中 要的部分。 分 析决 了如 设计 , 算法 是决 了 如 优化 。 (6) 相关的 品很 ,但是 种方 它 现给用户是很 的。 要为了 推荐 推荐。
213. (7) 要 计算相 兴趣的用户,可 用社 网络 。 (8) 要 地 算法的 性。 (9) 的用户 方 。 (10) 设计 理的评测系统, 关 推荐系统各方 的性 。 197 1 2 3 4 5 6 6 6 9