前言 .............. 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
· · · · · · (
收起)