智能Web算法
出版信息
Haralambos Marmanis、Dmitry Babenko / 阿稳、陈钢 / 电子工业出版社 / 2011-11 / 65.00元
内容简介
本书涵盖了五类重要的智能算法:搜索、推荐、聚类、分类和分类器组合,并结合具体的案例讨论了它们在Web应用中的角色及要注意的问题。除了第1章的概要性介绍以及第7章对所有技术的整合应用外,第2~6章以代码示例的形式分别对这五类算法进行了介绍。
本书面向的是广大普通读者,特别是对算法感兴趣的工程师与学生,所以对于读者的知识背景并没有过多的要求。本书中的例子和思想应用广泛,所以对于希望从业务角度更好地理解有关技术的技术经理、产品经理和管理层来说,本书也有一定的价值。
作者简介
Haralambos (Babis) Marmanis 博士是一个把机器学习技术应用于工业界的先行者,也是供应管理的世界级专家。Dmitry Babenko曾经为银行、保险、供应链管理与商务智能公司设计过应用与基础架构。
本书拥有者可以通过 www.manning.com/AlgorithmsoftheIntelligentWeb在线获得作者的信息、样例代码与免费的电子版本。
Dr. Haralambos (Babis) Marmanis is a pioneer in the adoption of machine learning techniques for industrial solutions, and also a world expert in supply management. He has about twenty years of experience in developing professional software. Currently, he is the director of R&D and chief architect, for expense management solutions, at Emptoris, Inc. Babis holds a Ph.D. in applied mathematics from Brown University, an M.S. degree in theoretical and applied mechanics from the University of Illinois at Urbana-Champaign, and B.S. and M.S. degrees in civil engineering from the Aristotle University of Thessaloniki in Greece. He was the recipient of the Sigma Xi award for innovative research in 2000, and he is the author of numerous publications in peer-reviewed international scientific journals, conferences, and technical periodicals.
Dmitry Babenko is the lead for the data warehouse infrastructure at Emptoris, Inc. He is a software engineer and architect with 13 years of experience in the IT industry. He has designed and built a wide variety of applications and infrastructure frameworks for banking, insurance, supply-chain management, and business intelligence companies. He received a M.S. degree in computer science from Belarussian State University of Informatics and Radioelectronics.
目录
前言 XV
致谢 XIX
关于本书 XXI
1 什么是智能Web? 1
1.1 智能Web应用实例 3
1.2 智能应用的基本要素 4
1.3 什么应用会受益于智能? 5
1.3.1 社交网络 6
1.3.2 Mashup 7
1.3.3 门户网站 8
1.3.4 维基 9
1.3.5 文件分享网站 9
1.3.6 网络游戏 11
1.4 如何构建智能应用? 11
1.4.1 检查功能和数据 12
1.4.2 获取更多的数据 12
1.5 机器学习、数据挖掘及其他 16
1.6 智能应用中八个常见的误区 17
1.6.1 误区1:数据是可靠的 18
1.6.2 误区2:计算能马上完成 19
1.6.3 误区3:不用考虑数据规模 19
1.6.4 误区4:不考虑解决方案的可扩展性 19
1.6.5 误区5:随处使用同样的方法 19
1.6.6 误区6:总是能知道计算时间 20
1.6.7 误区7:复杂的模型更好 20
1.6.8 误区8:存在无偏见的模型 20
1.7 小结 20
1.8 参考资料 21
2 搜索 22
2.1 用Lucene实现搜索 23
2.1.1 理解Lucene代码 24
2.1.2 搜索的基本步骤 31
2.2 为什么搜索不仅仅是索引? 33
2.3 用链接分析改进搜索结果 35
2.3.1 PageRank简介 35
2.3.2 计算PageRank向量 37
2.3.3 alpha:网页间跳转的影响 38
2.3.4 理解幂方法 40
2.3.5 结合索引分值和PageRank分值 45
2.4 根据用户点击改进搜索结果 47
2.4.1 用户点击初探 48
2.4.2 朴素贝叶斯分类器的使用 50
2.4.3 整合Lucene索引、PageRank和用户点击 54
2.5 Word、PDF等无链接文档的排序 58
2.5.1 DocRank算法简介 58
2.5.2 DocRank的原理 60
2.6 大规模实现的有关问题 65
2.7 用户得到了想要的结果吗?精确度和查全率 67
2.8 总结 69
2.9 To Do 70
2.10 参考资料 72
3 推荐系统 73
3.1 一个在线音乐商店:基本概念 74
3.1.1 距离与相似度的概念 75
3.1.2 走近相似度的计算 80
3.1.3 什么才是最好的相似度计算公式? 83
3.2 推荐引擎是怎么工作的 84
3.2.1 基于相似用户的推荐 85
3.2.2 基于相似条目的推荐 94
3.2.3 基于内容的推荐 98
3.3 推荐朋友、文章与新闻报道 104
3.3.1 MyDiggSpace.com简介 105
3.3.2 发现朋友 106
3.3.3 DiggDelphi的内部工作机制 108
3.4 像Netflix.com那样推荐电影 114
3.4.1 电影数据集的介绍及推荐器 114
3.4.2 数据标准化与相关系数 117
3.5 大规模的实现与评估 123
3.6 总结 124
3.7 To Do 125
3.8 参考资料 127
4 聚类:事物的分组 128
4.1 聚类的需求 129
4.1.1 网站中的用户组:案例研究 129
4.1.2 用SQL order by子句分组 131
4.1.3 用数组排序分组 132
4.2 聚类算法概述 135
4.2.1 基于分组结构的聚类算法分类 136
4.2.2 基于数据类型和结构的聚类算法分类 137
4.2.3 根据数据规模的聚类算法分类 137
4.3 基于链接的算法 138
4.3.1 树状图:基本的聚类数据结构 139
4.3.2 基于链接的算法概况 141
4.3.3 单链接算法 142
4.3.4 平均链接算法 144
4.3.5 最小生成树算法 147
4.4 k-means算法 149
4.4.1 初识k-means算法 150
4.4.2 k-means的内部原理 151
4.5 鲁棒的链接型聚类(ROCK) 153
4.5.1 ROCK简介 154
4.5.2 为什么ROCK这么强大? 154
4.6 DBSCAN 159
4.6.1 基于密度的算法简介 159
4.6.2 DBSCAN的原理 162
4.7 超大规模数据聚类 165
4.7.1 计算复杂性 166
4.7.2 高维度 167
4.8 总结 168
4.9 To Do 169
4.10 参考资料 171
5 分类:把事物放到它该在的地方 172
5.1 对分类的需求 173
5.2 分类器的概述 177
5.2.1 结构分类算法 178
5.2.2 统计分类算法 180
5.2.3 分类器的生命周期 181
5.3 邮件的自动归类与垃圾邮件过滤 182
5.3.1 朴素贝叶斯分类 184
5.3.2 基于规则的分类 197
5.4 用神经网络做欺诈检测 210
5.4.1 交易数据中关于欺诈检测的一个用例 210
5.4.2 神经网络概览 212
5.4.3 一个可用的神经网络欺诈检测器 214
5.4.4 神经网络欺诈检测器剖析 218
5.4.5 创建通用神经网络的基类 226
5.5 你的结果可信吗? 232
5.6 大数据集的分类 235
5.7 总结 237
5.8 To Do 239
5.9 参考资料 242
6 分类器组合 244
6.1 信贷价值:分类器组合案例研究 246
6.1.1 数据的简要说明 247
6.1.2 为真实问题生成人工数据 250
6.2 用单分类器做信用评估 255
6.2.1 朴素贝叶斯的基准线 255
6.2.2 决策树基准线 258
6.2.3 神经网络的基准线 260
6.3 在同一个数据集中比较多个分类器 263
6.3.1 McNemar检验 264
6.3.2 差额比例检验 266
6.3.3 Cochran Q检验与F检验 268
6.4 bagging: bootstrap聚合(bootstrap aggregating) 270
6.4.1 bagging实例 272
6.4.2 bagging分类器底层细节 274
6.4.3 分类器集成 276
6.5 boosting:一种迭代提高的方法 279
6.5.1 boosting分类器实例 280
6.5.2 boosting分类器底层细节 282
6.6 总结 286
6.7 To Do 288
6.8 参考资料 292
7 智能技术大汇集:一个智能新闻门户 293
7.1 功能概览 295
7.2 获取并清洗内容 296
7.2.1 各就位、预备、开抓! 296
7.2.2 搜索预备知识回顾 298
7.2.3 一个抓取并处理好的新闻数据集 299
7.3 搜索新闻 301
7.4 分配新闻类别 304
7.4.1 顺序问题 304
7.4.2 使用NewsProcessor类进行分类 309
7.4.3 分类器 310
7.4.4 分类策略:超越底层的分类 313
7.5 用NewsProcessor类创建新闻分组 316
7.5.1 聚类全部文章 317
7.5.2 在一个新闻类别中聚类文章 321
7.6 基于用户评分的动态内容展示 325
7.7 总结 328
7.8 To Do 329
7.9 参考资料 333
附录A BeanShell简介 334
A.1 什么是BeanShell? 334
A.2 为什么使用BeanShell? 335
A.3 运行BeanShell 335
A.4 参考资料 336
附录B 网络采集 337
B.1 爬虫组件概况 337
B.1.1 采集的步骤 338
B.1.2 我们的简单爬虫 338
B.1.3 开源Web爬虫 339
B.2 参考资料 340
附录C 数学知识回顾 341
C.1 向量和矩阵 341
C.2 距离的度量 342
C.3 高级矩阵方法 344
C.4 参考资料 344
附录D 自然语言处理 345
D.1 参考资料 347
附录E 神经网络 348
E.1 参考资料 349
索引 350