编辑推荐

适读人群:《集体智慧编程》是Web开发者、架构师、应用工程师等的绝佳选择。

  《集体智慧编程》内容翔实,包括协作过滤技术(实现关联产品推荐功能)、集群数据分析(在大规模数据集中发掘相似的数据子集)、搜索引擎核心技术(爬虫、索引、查询引擎、PageRank算法等)、搜索海量信息并进行分析统计得出结论的优化算法、贝叶斯过滤技术(垃圾邮件过滤、文本过滤)、用决策树技术实现预测和决策建模功能、社交网络的信息匹配技术、机器学习和人工智能应用等。《集体智慧编程》是Web开发者、架构师、应用工程师等的明智之选。

内容简介

  《集体智慧编程》以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信息,并得出有用的结论,通过复杂的算法来从Web网站获取、收集并分析用户的数据和反馈信息,以便创造新的用户价值和商业价值。《集体智慧编程》内容翔实,包括协作过滤技术(实现关联产品推荐功能)、集群数据分析(在大规模数据集中发掘相似的数据子集)、搜索引擎核心技术(爬虫、索引、查询引擎、PageRank算法等)、搜索海量信息并进行分析统计得出结论的优化算法、贝叶斯过滤技术(垃圾邮件过滤、文本过滤)、用决策树技术实现预测和决策建模功能、社交网络的信息匹配技术、机器学习和人工智能应用等。
  《集体智慧编程》是Web开发者、架构师、应用工程师等的优佳选择。

作者简介

  莫映,现供职于IBM中国开发实验室,在软件开发与设计领域里混迹已然10年有余,目前从事商业领域社交软件产品的研发工作。一直关注社交网络以及社交技术在不同领域里的运用,同时也积极活跃于公司内外的各种技术社区之中。

精彩书评

  ★“太棒了!对于初学这些算法的开发者而言,我想不出有比这《集体智慧编程》更好的选择了,而对于像我这样学过Al的老朽而言,我也想不出还有什么更好的办法能够让自己重温这些知识的细节。”
  ——DanRussell,资深技术经理,Google

  ★“Toby的这《集体智慧编程》非常成功地将机器学习算法这一复杂的议题拆分成了一个个既实用又易懂的例子,我们可以直接利用这些例子来分析当前网络上的社会化交互作用。假如我早两年读过这《集体智慧编程》,就会省去许多宝贵的时间,也不至于走那么多的弯路了。”
  ——TimWolters,CTO,CollectiveIntellect

目录

TableofContents
前言viii
第1章集体智慧导言1
什么是集体智慧2
什么是机器学习3
机器学习的局限4
真实生活中的例子5
学习型算法的其他用途5
第2章提供推荐7
协作型过滤7
搜集偏好8
寻找相近的用户9
推荐物品15
匹配商品17
构建一个基于del.icio.us的链接推荐系统19
基于物品的过滤22
使用MovieLens数据集25
基于用户进行过滤还是基于物品进行过滤27
练习28
第3章发现群组29
监督学习和无监督学习29
单词向量30
分级聚类33
绘制树状图38
列聚类40
K-均值聚类42
针对偏好的聚类44
以二维形式展现数据49
有关聚类的其他事宜53
练习53
第4章搜索与排名54
搜索引擎的组成54
一个简单的爬虫程序56
建立索引58
查询63
基于内容的排名64
利用外部回指链接69
从点击行为中学习74
练习84
第5章优化86
组团旅游87
描述题解88
成本函数89
随机搜索91
爬山法92
模拟退火算法95
遗传算法97
真实的航班搜索101
涉及偏好的优化106
网络可视化110
其他可能的应用场合115
练习116
第6章文档过滤117
过滤垃圾信息117
文档和单词118
对分类器进行训练119
计算概率121
朴素分类器123
费舍尔方法127
将经过训练的分类器持久化132
过滤博客订阅源134
对特征检测的改进136
使用Akismet138
替代方法139
练习140
第7章决策树建模142
预测注册用户142
引入决策树144
对树进行训练145
选择最合适的拆分方案147
以递归方式构造树149
决策树的显示151
对新的观测数据进行分类153
决策树的剪枝154
处理缺失数据156
处理数值型结果158
对住房价格进行建模158
对“热度”评价进行建模161
什么时候使用决策树164
练习165
第8章构建价格模型167
构造一个样本数据集167
k-最近邻算法169
为近邻分配权重172
交叉验证176
不同类型的变量178
对缩放结果进行优化181
不对称分布183
使用真实数据——eBayAPI189
何时使用k-最近邻算法195
练习196
第9章高阶分类:核方法与SVM197
婚介数据集197
数据中的难点199
基本的线性分类202
分类特征205
对数据进行缩放处理209
理解核方法211
支持向量机215
使用LIBSVM217
基于Facebook的匹配219
练习225
第10章寻找独立特征226
搜集一组新闻227
先前的方法231
非负矩阵因式分解232
结果呈现240
利用股票市场的数据243
练习248
第11章智能进化250
什么是遗传编程250
将程序以树形方式表示253
构造初始种群257
测试题解259
对程序进行变异260
交叉263
构筑环境265
一个简单的游戏268
更多可能性273
练习276
第12章算法总结277
贝叶斯分类器277
决策树分类器281
神经网络285
支持向量机289
k-最近邻293
聚类296
多维缩放300
非负矩阵因式分解302
优化304
附录A:第三方函数库309
附录B:数学公式316
索引323

前言/序言

  O’ReillyMediaInc.介绍
  O’ReillyMedia通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。自1978年开始,O’Reilly一直都是前沿发展的见证者和推动者。超级极客们正在开创着未来,而我们关注真正重要的技术趋势——通过放大那些“细微的信号”来刺激社会对新科技的应用。作为技术社区中活跃的参与者,O’Reilly的发展充满了对创新的倡导、创造和发扬光大。
  O’Reilly为软件开发人员带来革命性的“动物书”;创建第一个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了Make杂志,从而成为DIY革命的主要先锋;公司一如既往地通过多种形式缔结信息与人的纽带。O’Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O’Reilly现在还将先锋专家的知识传递给普通的计算机用户。无论是通过书籍出版、在线服务或者面授课程,每一项O’Reilly的产品都反映了公司不可动摇的理念——信息是激发创新的力量。
  业界评论
  “O’ReillyRadar博客有口皆碑。”
  ——Wired
  “O’Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。”
  ——Business2.0
  “O’ReillyConference是聚集关键思想领袖的绝对典范。”
  ——CRN
  “一本O’Reilly的书就代表一个有用、有前途、需要学习的主题。”
  ——IrishTimes
  “Tim是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切实地按照YogiBerra的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾过去Tim似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。”
  ——LinuxJournal
  对《集体智慧编程》的赞誉
  PraiseforProgrammingCollectiveIntelligence
  “每年我都要审阅几本图书,自然而然地,在工作当中我阅读了大量的书籍。不得不承认,阅读《集体智慧编程》让我获得了以前从未有过的、相当愉悦的阅读体验。太棒了!对于初学这些算法的开发者而言,我想不出比这《集体智慧编程》更好的选择了,而对于像我这样学过AI的老朽而言,我也想不出还有什么更好的办法能够让自己重温这些知识的细节。”
  ——DanRussell,Google公司资深技术经理
  “Toby的这《集体智慧编程》非常成功地将机器学习算法这一复杂的议题拆分成了一个个既实用又易懂的例子,我们可以直接利用这些例子来分析当前网络上的社会化交互作用。我要是早两年读过这《集体智慧编程》,就会省去许多宝贵的时间,也不至于走那么多的弯路了。”
  ——TimWolters,CollectiveIntellect公司CTO
  “《集体智慧编程》获得了巨大的成功,它为大量相关数据的处理提供了非常丰富的计算方法。更重要的是,它将这些技术应用到了互联网上,而不是在一个个彼此孤立的数据孤岛中寻求价值。如果你是在为互联网开发应用,那么《集体智慧编程》将是你的不二之选。”
  ——PaulTyma,Google公司高级软件工程师
  译者序
  还记得20世纪90年代,当大学校园里的学子们还在为能够通过对等网在不同计算机间相互发送消息而兴奋不已的时候,互联网就已经悄然兴起了。很快,人们就从C/S时代跨入了B/S时代。我们不必再担心每次都要安装复杂的客户端程序,只要有浏览器,就会有绚丽多彩的舞台。然而随着时间的推移,人们又开始有所回归,大家不时地抱怨:为什么不能让浏览器像客户端应用那样具有丰富的表现?为什么每次打开链接都要傻傻地等着空白页面消失?直到有一天,TimO’Reilly向世人宣告了一个新的概念——Web2.0。于是,忽如一夜春风来,大大小小的Web2.0应用如雨后春笋般不断涌现,互联网又迈向了一个新的时代。
  Web2.0使互联网变得异彩纷呈:来自不同地域的人们可以随时修改别人写的文字,这就是维基;你有任何想法或观点都可以尽情地表达并欢迎别人评论,这就是博客;甚至连网页上出现的广告也都是与我们当前所关注的内容密切相关的,这就是GoogleAdSense……所有这一切,都带给我们不同于以往的全新感受。但是,这些应用究竟是怎样实现的?隐藏在它们背后的原理到底是什么?怎样让我们的Web2.0程序变得更加聪明,更加贴心呢?译者相信,《集体智慧编程》必定能够为大家逐一解开萦绕在心中的这些谜团。
  《集体智慧编程》以Web2.0的核心价值观——集体智慧作为出发点,探讨了各种能够让Web2.0程序变得更为智能的算法及其应用。这些算法大多数来自机器学习和计算统计领域,其中的一些算法非常普及,而另一些则属于目前相当前沿的课题。它们包括了过滤器、聚类算法、支持向量机、遗传编程、优化技术,以及非常著名的PageRank算法,等等。将如此众多的优秀算法有效应用于互联网领域,并构造出具有智能特征的Web2.0应用,应该是《集体智慧编程》的一大亮点。同时,这也使《集体智慧编程》有别于以往我们所见过的任何一本纯粹介绍Web2.0技术与概念的书籍。不仅如此,《集体智慧编程》还提供了大量可供运行的示例代码,这些代码具有很好的复用性,只要稍加修改就可以用于实际的应用系统之中。书中代码还大量使用了许多时下流行的开放API,这些API来自于Yahoo!、eBay、FaceBook等众多热门的Web2.0网站,这使得《集体智慧编程》在保有实用价值的同时又不失时效性。
  《集体智慧编程》的英文版虽只有寥寥300多页,比起任何一本大部头的技术书籍都是不足道的,但作为一本为数不多的深入讲解蕴藏于智能Web2.0应用背后的算法原理的书籍,其深度和内涵却远远超出了篇幅的局限。为了尽量将原书的思想内涵以中文形式尽数表达出来,作为译者的我们在《集体智慧编程》翻译期间着实不敢懈怠。在将书稿提交给出版社编辑之前,我们对每一章的译文都进行了不少于两遍的仔细校对。作为补充,中文版还随附了翻译期间译者所用的中英文术语对照表,希望《集体智慧编程》中文版能够得到诸位读者的认可。
  这本译作的完成是团队协作努力的结果,这包括了参与翻译、审校,以及关注和支持《集体智慧编程》翻译的所有人。感谢周筠老师对我们的信任,感谢《集体智慧编程》的前后两位编辑王凡毓与王晓菲,尤其是晓菲,她为《集体智慧编程》的后期审校与编辑加工付出了辛劳,我们的合作非常愉快。此外,还要感谢李唯一,她为《集体智慧编程》的前期翻译提供了诸多帮助。
  由于译者水平所限,译文难免有疏误之处,欢迎读者批评指正。
  为了便于读者阅读理解,特在此附上《集体智慧编程》翻译过程中整理提取的中英文术语对照表,参见表0-1,表中所包含的多为专业领域的技术术语。其中部分术语在不同的文献中往往有不同的译法。《集体智慧编程》为了统一,选择了比较常见的译法,如clustering可译作“聚类”或“聚集”,此处我们选择了“聚类”。类似的还有k-nearestneighbors、cross-product、dot-product,等等。
  另一部分术语,虽有固定译法,但我们结合上下文,采用了更为贴切的翻译。如computation-allyintensive常被译为“计算密集的”,而在此处,我们采用“计算量很大的”。类似的还有data-intensive、solution、crawl,等等。
  此外还有一部分术语,在当下的中文文献中并没有明确的公认译法,因而我们在书中给出了参考翻译,以供大家商榷。如collectiveintelligence被译为“集体智慧”,listcomprehension被译为“列表推导式”,等等。
  表0-1:中英文术语对照表
  莫映王开福


其他推荐