作者简介
Douglas McIlwraith博士,在剑桥大学计算机科学系获得了学士学位,而后在帝国理工大学获得了博士学位。他是一位机器学习专家,目前他在位于伦敦的一家广告网络公司担任数据科学家职位。他在分布式系统、普适计算、通用感知、机器人以及安全监控方面都贡献了研究成果,他为让技术更好地服务人们的生活而无比激动。Haralambos Marmanis博士是将机器学习技术引入工业解决方案的先驱,在专业软件研发方面拥有 25年经验。
Dmitry Babenko,为银行、保险、供应链管理、商业智能企业等设计和开发了丰富的应用和系统架构。他拥有白俄罗斯国立信息和无线电大学计算机硕士学位。
陈运文,计算机博士,达观数据 CEO,ACM和 IEEE会员,中国计算机学会高级会员;在大数据架构设计、搜索和推荐引擎、文本数据挖掘等领域有丰富的研发经验;曾经担任盛大文学首席数据官、腾讯文学数据中心高级总监、百度核心算法工程师等工作,申请有 30余项国家发明专利,多次参加国际 ACM数据算法竞赛并获得冠亚军荣誉。
前言
译者序
人工智能和机器学习技术近年来得到了飞速的发展,并成为计算机界乃至全社会炙手可热的话题。这些优秀的技术让每个人的生活越来越方便和智能,这让从业者感到非常欣喜。智能算法是人工智能的核心技术,不论是我当前创办的达观数据,还是之前在腾讯、盛大、百度等互联网企业的工作,都是围绕智能算法展开的,我对此有深厚的热情。因此当电子工业出版社计算机出版分社的张春雨编辑邀请我翻译这本《智能 Web算法(第 2版)》的时候,虽然深知翻译和审校要付出大量的时间和精力,但还是很愉快地接受了邀请并完成了翻译工作,希望本书中文版的面世,能帮助广大爱好者建立起对 Web数据挖掘和机器学习技术全面且直观的了解。
在众多有关机器学习和数据挖掘的书籍里,本书是颇为经典的一本。其特点之一是内容覆盖面很广,有关网络数据挖掘的方方面面都涵盖到了,从数据采集、存储,到降维运算和结构抽取,以及涉及模式识别的聚类和分类、统计机器学习理论等,还有面向互联网应用的推荐系统、搜索引擎、广告点击预测等,配套的效果评估机制也有专门的章节进行讲解,读者阅读本书后可以形成较为全面的学习体系。特点之二是本书较好地在算法思想、数学原理、应用案例之间找到了平衡点。每个章节作者都由浅入深地讲解了算法的思想,并通过列举一些非常生动的案例来让读者更好地理解算法的原理。例如,列举的 Iris数据集结构的抽取、在线电影推荐系统、金融欺诈检测、广告点击预测等实践案例的讲解都非常清晰易懂。书中对数学公式的使用点到为止,力求简洁。这样既不像很多教科书那样堆砌数学公式,让很多读者望而生畏,又不像很多书籍那样只是罗列程序代码而不讲解背后的算法思想。这和作者既有工程实践经验,又有学术研究背景密不可分的。
与通常的再版书籍只是做些局部修订不同,本书第 2版对第 1版图书的内容进行了全面彻底的升级改写,全书有超过 80%的篇幅与第 1版不同,可以说是脱胎换骨的变化。这些变化具体体现在以下三个方面:首先,增加了近年来数据挖掘领域最新的一些研究成果,例如当下炙手可热的深度学习等,同时删减了一些较为陈旧的内容;其次,调整了全书的组织结构,章节的划分更为合理,每章内容更加丰富,列举的案例也更贴近实战。第三,全书的示例代码不再使用第 1版的小众开发语言 BeanShell,而是改为机器学习界更为常用的 Python,并配合机器学习界知名的开源软件包 scikit-learn,让本书的代码阅读起来更友好,也大大增强了示例代码的实用性。
本书由于篇幅所限,虽然涉及的面很宽广,但是每个章节的内容都没有进一步深入展开。我在翻译过程中,觉得本书有些内容讲得略偏浅显,在所提及的领域都属于入门级的深度,读起来有些意犹未尽。事实上如果深究起来,本书每个章节的内容都足够扩充成一本独立的书籍。好在本书作者提供了很多参考资料,并在相应章节的脚注里细心地进行了标识,对更深入的内容感兴趣的读者,不妨按图索骥,下载相应的论文和著作来一窥究竟。
本书的翻译工作,要深深感谢电子工业出版社的张春雨、刘舫和编辑朋友们给予的大力帮助和耐心指点。同时要感谢我所在的公司——达观数据的各位亲密战友,依靠大家分工协作、共同努力,才顺利完成了全书各个章节的翻译工作,这些同事是于敬、文辉、纪达麒、纪传俊、江永青、冯仁杰、桂洪冠、高翔、王文广、张健、范雄雄、蹇智华、孟礼斌。团结才有力量,大家共同的辛勤工作和智慧结晶,让本书翻译工作顺利完成。
限于译者水平所限,在理解和翻译本书的过程中,一些知识的专递未必到位,所使用的语言也未免生涩,我们力求做到“信、达、雅”,一些不好把握的字句也反复查阅过资料,希望能较为忠实地还原作者的意图,让广大读者能享受通畅的阅读体验。如有疏漏之处,希望读者朋友阅读时多多包涵,并不吝提出各种意见和建议。
人工智能和机器学习技术正在得到越来越多的人的关注,并正在发挥着越来越大的价值。身为其中的一员,我非常荣幸自己能够生于这一历史上最火热的发展时代里,我创办的达观数据,也正在运用本书里所介绍的各种技术,来帮助中国的企
译者序VII
业更好地挖掘数据背后的规律,自动完成很多原本需要大量人力才能实现的功能。创业维艰,本书的很多翻译和校对工作是在出差途中和深夜完成的,感谢家人对我的理解和关怀。期望达观数据的技术服务能让很多企业提升运行效率、降低成本,从原先的粗放型增长转变为技术驱动型的精细化增长。
眼下全球技术竞争愈演愈烈,数据作为人工智能时代的原油,对其进行提炼和挖掘的技术至关重要。我希望包括本书在内的一系列国外优秀书籍被翻译引入后,能够帮助中国的技术人才、工程师、学生乃至企业管理者拓展视野、启发思维,把握业界的技术发展脉搏,成为大数据时代浪尖的弄潮儿。
陈运文达观数据创始人兼 CEO
序言
万维网( World Wide Web)是互联网信息社会里的最根本的基础设施,数以亿计的人们把它作为主要的交互联系工具。互联网上信息服务的发展也带动了工业的进步。今天,随着云计算和无线通信技术的成熟, Web不仅成为人们发布和获取信息的平台,而且成为为数亿人随时随地提供信息服务开发、部署和应用的平台。大数据为构建多样性的服务提供了丰富的内容,也为智能化的服务创造了价值,让 Web上服务的用户体验逐步提升。智能服务的 Web正在改变人们的日常生活:它帮助我们寻找合适的酒店、安排完美的假期旅行,让我们购买到几乎任何商品,以及建立起丰富多彩的社群,而这些智能来自对 Web内容和用户间交互所产生的数据的深度分析。因此建立 Web智能是当今数据科学发展领域里的核心技术。
非常荣幸能由我来为大家介绍这本精彩的《智能 Web算法(第 2版)》,本书由一位年轻但经验丰富的数据科学家 Douglas McIlwraith博士修订,目的是为大家揭示智能 Web应用的精髓:实现智能所依赖的各种算法。这是一个宏伟的目标,但是 Doug博士用朴实无华的语言,在不到 250页的篇幅里成功将丰富的知识通俗易懂地呈现了出来。
本书涵盖了丰富的应用场景和常见的流行算法,并通过严谨的数学推导和简洁的 Python代码对这些算法进行了清晰的介绍。我非常顺畅地通读了本书,也希望能与你一起分享阅读的乐趣。更为重要的是,我希望当你阅读完本书后,发现自己可以用学会的很多知识和技能,打造出更智能的 Web!
Yike Guo教授 &总监数据科学研究所伦敦帝国理工
前言
非常荣幸我们能投身于当今时代最令人激动的一个技术领域。在短短数十年间,稚嫩的互联网就蓬勃发展成如今连接全世界的万维网,让每个身在其中的人随时随地进行通信交流,让大家拥有了瞬间就能得到几乎任何问题答案的能力。
智能算法的研发充分运用了信息的价值,在塑造我们新的生活方式上扮演了重要角色。反过来我们也越来越依赖智能算法来引领我们线上和线下的生活,这也促使我们将更宽的视野和更多的数据用于算法的训练和测试。若干年前神经网络算法还是被学术界所摈弃的方法,但是如今随着大规模高可用的数据技术的发展,神经网络技术再次大放异彩。
我们刚刚进入一个新纪元,在这里我们能与手机对话,让它预测我们的需求、预订我们的约会、建立我们的通信连接。在不久的将来,我们也许能看到无人驾驶汽车和虚拟现实技术的曾及,所有这些应用都牢牢地扎根于计算机科学技术对真实世界问题的回应,智能算法是其中的重要部分,也是本书的核心。
不幸的是,进入机器学习和数据科学的世界看上去令人生畏,这里充满了数学和统计学,你的直觉有时也会误导你!通过修订本书,我们希望介绍第一版面世以来该领域的最新发展,也为新入行的朋友们提供指引。在本书中我们提供了通俗易懂的实例、真实问题的解决方案,以及相应的代码片段。我们尽可能地越过繁复的
数学公式来重点阐述技术的核心思想,希望我们对此拿捏得足够好。
在本书中你将看到,我们把内容划分为 8个章节,每个章节涵盖智能 Web的一个重要的算法领域。本书最后的附录部分讲解了智能 Web应用中的数据处理流程,我们希望通过这部分内容,来为实践者展示在系统中将快速变化的数据有效地运转起来是多么重要且困难。
致谢
感谢在本书撰写过程中参与的各位伙伴:编辑 Marjan Bace以及出版发行团队的所有成员,包括 Janet Vail, Kevin Sullivan, Tiffany Taylor, Dottie Marsico, Linda Recktenwald,以及幕后的很多工作人员。
也感谢参与本书各阶段校对的人员: Nii A-Okine, Tobias Bürger, Marius Butuc, Carlton Gibson, John Guthrie, Pieter Gyselinck, PeterJohn Hampton, Dike Kalu, Seth Liddy, Radha Ranjan Madhav, Kostas Passadis, Peter Rabinovitch, Srdjan Santic, Dennis Sellinger, Dr. Joseph Wang, Michael Williams。感谢你们反复阅读,认真进行校对,你们提供的宝贵意见在本书中得到了充分体现。
本书中引用的很多系统、函数库、程序包并非作者原创,而是来自本领域的众多社区开发者、数据科学家、机器学习专家,在此对以上所有人表示感谢。
回想起最初讨论修订《智能 Web算法》时的情形,记得我当时心里想“嘿,这本书的第一版已经写得很好了,修订的工作量不会很大吧?”但最后结果是,很大。该领域的变化很快,有太多有趣的工作我想拿来与人分享,因此我不得不仔细地选择哪些该舍弃、哪些该删减、哪些该修订、哪些该增加。因此本书花费了比我预料更多的时间,但我很幸运获得了很多优秀的人们的支持、鼓励和忍耐。
首先也是最重要的,我想感谢我的未婚妻, Elly。你的爱心、忍耐、鼓励,是我生命中永恒的存在。如果没有你,本书是难以完成的。我爱你。
其次,我想感谢我的父母和家人,在我遇到挫折时永远呵护和支持我,希望你们能喜欢本书,你们的养育之恩我永远铭记。
第三,感谢我的众多朋友和同事,和杰出的你们在一起工作是一件非常幸运的事,你们让我每一天都过得很开心,谢谢你们!
我还想感谢我的两位编辑 Jeff Bleiel和 Jennifer Stout,你们的指导帮助本书最终完成。Jennifer,你的乐观和热情给了我坚持的动力,谢谢你!
Douglas McIlwraith
我想感谢我的父母 Eva和 Alexander,他们无微不至的关心,让我在夜以继日的写作和研究中,始终保持着好奇心和热情。这是我毕生难忘的恩情。
我衷心感谢我珍爱的妻子 Aurora和我的三个孩子: Nikos, Lukas和 Albert—你们是我人生的骄傲和乐趣。我永远感激你们给予的爱心、耐心和理解。孩子们无尽的好奇心不断地激发我学习的灵感。非常感谢我的岳父母 Cuchi和 Jose,我的姐妹 Maria和 Katerina,以及我最好的朋友 Michael和 Antonio,感谢你们持续的鼓励和无条件的支持。
一定不能遗忘的是感谢 Amilcar Avenda.o博士和 Maria Balerdi博士给予的众多帮助,让我学会了很多心脏学的知识,并打下了我早期的学习基础。感谢 Leon Cooper教授以及布朗大学的众多杰出朋友,你们不仅揭示了很多大脑运行的规律,还鼓励我开展智能应用的工作。
鼓励和支持我进行各种智能相关的积极工作的过去和现在的同事: Ajay Bhadari, Kavita Kantkar, Alexander Petrov, Kishore Kirdat,等等,虽然这里只能写下寥寥数语,但是我对你们的感激之情溢于言表。
Haralambos Marmanis
首先也是最重要的,我想感谢我亲爱的妻子 Elena。
我还想谢谢我过去和现在的同事: Konstandin Bobovich, Paul A. Dennis, Keith Lawless和 Kevin Bedell,你们伴随了我的职业生涯,是我的灵感源泉。
Dmitry Babenko
目录
第1章 为智能Web建立应用1
1.1 智能算法的实践运用:Google Now 3
1.2 智能算法的生命周期5
1.3 智能算法的更多示例6
1.4 不属于智能应用的内容 7
1.4.1 智能算法并不是万能的思考机器 7
1.4.2 智能算法并不能成为完全代替人类的工具8
1.4.3 智能算法的发展并非一蹴而就 8
1.5 智能算法的类别体系9
1.5.1 人工智能 9
1.5.2 机器学习10
1.5.3 预测分析 11
1.6 评估智能算法的效果 13
1.6.1 评估智能化的程度 13
1.6.2 评估预测14
1.7 智能算法的重点归纳 16
1.7.1 你的数据未必可靠 16
1.7.2 计算难以瞬间完成 17
1.7.3 数据规模非常重要 17
1.7.4 不同的算法具有不同的扩展能力 18
1.7.5 并不存在万能的方法 18
1.7.6 数据并不是万能的 18
1.7.7 模型训练时间差异很大18
1.7.8 泛化能力是目标19
1.7.9 人类的直觉未必准确 19
1.7.10 要考虑融入更多新特征 19
1.7.11 要学习各种不同的模型 19
1.7.12 相关关系不等同于因果关系 20
1.8 本章小结20
第2章 从数据中提取结构:聚类和数据变换21
2.1 数据、结构、偏见和噪声 23
2.2 维度诅咒26
2.3 k-means算法27
2.3.1 实践运用 k-means31
2.4 高斯混合模型 34
2.4.1 什么是高斯分布34
2.4.2 期望最大与高斯分布 37
2.4.3 高斯混合模型 37
2.4.4 高斯混合模型的学习实例 38
2.5 k-means和GMM的关系41
2.6 数据坐标轴的变换 42
2.6.1 特征向量和特征值 43
2.6.2 主成分分析 43
2.6.3 主成分分析的示例 45
2.7 本章小结47
第3章 推荐系统的相关内容48
3.1 场景设置:在线电影商店 49
3.2 距离和相似度 50
3.2.1 距离和相似度的剖析 54
3.2.2 最好的相似度公式是什么 56
3.3 推荐引擎是如何工作的57
3.4 基于用户的协同过滤 59
3.5 奇异值分解用于基于模型的推荐 64
3.5.1 奇异值分解 64
3.5.2 使用奇异值分解进行推荐:为用户挑选电影66
3.5.3 使用奇异值分解进行推荐:帮电影找到用户71
3.6 Net.ix竞赛74
3.7 评估推荐系统 76
3.8 本章小结78
第4章 分类:将物品归类到所属的地方79
4.1 对分类的需求 80
4.2 分类算法概览 83
4.2.1 结构性分类算法84
4.2.2 统计性分类算法86
4.2.3 分类器的生命周期 87
4.3 基于逻辑回归的欺诈检测 88
4.3.1 线性回归简介 89
4.3.2 从线性回归到逻辑回归91
4.3.3 欺诈检测的应用94
4.4 你的结果可信吗 102
4.5 大型数据集的分类技术 106
4.6 本章小结 108
第5章 在线广告点击预测.109
5.1 历史与背景 110
5.2 广告交易平台 112
5.2.1 cookie 匹配 113
5.2.2 竞价(bid) 113
5.2.3 竞价成功(或失败)的通知 114
5.2.4 广告展示位 114
5.2.5 广告监测 115
5.3 什么是bidder 115
5.3.1 bidder的需求 116
5.4 何为决策引擎 117
5.4.1 用户信息 117
5.4.2 广告展示位信息 117
5.4.3 上下文信息 117
5.4.4 数据准备 118
5.4.5 决策引擎模型 118
5.4.6 将点击率预测值映射为竞价价格 118
5.4.7 特征工程 119
5.4.8 模型训练 119
5.5 使用Vowpal Wabbit进行点击预测 120
5.5.1 Vowpal Wabbit的数据格式 120
5.5.2 准备数据集123
5.5.3 测试模型 128
5.5.4 模型修正 131
5.6 构建决策引擎的复杂问题132
5.7 实时预测系统的前景 133
5.8 本章小结 134
第6章 深度学习和神经网络.135
6.1 深度学习的直观方法 136
6.2 神经网络 137
6.3 感知机 139
6.3.1 模型训练 141
6.3.2 用 scikit-learn训练感知机142
6.3.3 两个输入值的感知机的几何解释144
6.4 多层感知机146
6.4.1 用反向传播训练 150
6.4.2 激活函数 150
6.4.3 反向传播背后的直观理解152
6.4.4 反向传播理论 153
6.4.5 scikit-learn中的多层神经网络 155
6.4.6 训练出来的多层感知机 158
6.5 更深层:从多层神经网络到深度学习 159
6.5.1 受限玻耳兹曼机 160
6.5.2 伯努利受限玻耳兹曼机 160
6.5.3 受限玻耳兹曼机实战 164
6.6 本章小结 167
第7章 做出正确的选择168
7.1 A/B测试 170
7.1.1 相关的理论170
7.1.2 评估代码 173
7.1.3 A/B测试的适用性174
7.2 多臂赌博机175
7.2.1 多臂赌博机策略 176
7.3 实践中的贝叶斯赌博机策略 180
7.4 A/B测试与贝叶斯赌博机的对比 191
7.5 扩展到多臂赌博机192
7.5.1 上下文赌博机 193
7.5.2 对抗赌博机193
7.6 本章小结 194
第8章 智能Web的未来196
8.1 智能Web的未来应用197
8.1.1 物联网 197
8.1.2 家庭健康护理 198
8.1.3 自动驾驶汽车 198
8.1.4 个性化的线下广告199
8.1.5 语义网 199
8.2 智能Web的社会影响200
附录A 抓取网络上的数据.201