译者序

译者序

随着计算机性能的提升和通信技术的发展,分布式计算、图形处理单元上的通用计算、云计算等领域的产业化日臻成熟,大数据的处理能力已今非昔比。互联网行业依托于服务业的内在属性,每时每刻都在产生大量交易、定位、评价等种类繁多的数据。这些数据积累沉淀成体量庞大的信息资产,让我们能理性地洞悉各种现象,给予我们更多探寻其本源的方法,指引我们进行未来的决策。现今,互联网行业蓬勃发展,几乎把我们身边的一切细枝末节都纳入了掌控,现代生活的个体无一例外都成了大数据的一部分,因而无时无刻不在享受着大数据时代的红利。正如马克斯·韦伯所言:“只要人们想知道,他们任何时候都能够知道;从原则上说,再也没有什么神秘莫测、无法计算的力量在起作用,人们可以通过计算掌握一切。”可以说,我们已经步入了大数据时代。大数据不仅完成了对世界的祛魅,其本身也逐渐褪去虚无缥缈的概念外衣,回归实用主义的手段与方法,完成了对自身的祛魅。本书就是从这样的实用角度出发,由一系列实战案例入手,来讲解一门能从数据中发现知识与规律的技术——数据挖掘。

数据挖掘是计算机科学的一个分支,也是一个多学科交叉的领域,涉及统计学、语言学、机器学习、神经网络等多学科的知识。在具体的应用实践中,由于我们不仅需要了解具体领域的专业知识,还要应对数据本身的问题所带来的挑战,因而想要取得优异的成果绝非易事。不过不必担心,由于本书是面向程序员群体的,因而将尽量绕开晦涩难懂的数学语言,平铺直叙、化繁为简。本书的各章将以问题为导向,通过实例介绍关联规则学习、分类、聚类等常见的数据挖掘任务。你可以跟随本书实际动手,逐一剖析问题的内核,不断尝试、比较不同的方法,从而体会解决问题的思路,一探数据挖掘的究竟。学完本书,想必你会对数据挖掘的理论和实际应用有清晰而具体的理解。

本书以Python为媒介,解析了数据挖掘任务中的各个步骤。Python是一门解释型的通用编程语言,支持多种编程范式,拥有动态类型系统和简明可读的语法,且易于上手。其自带的标准库功能广泛,可谓“开箱即用”(batteries included)。此外,Python社区气氛活跃,第三方库不可胜数,能应对各种各样的应用场景。本书采用Jupyter Notebook作为开发代码、运行应用、展现结果的环境。与专注于开发的IDE(集成开发环境)不同,它是一个Web形式的笔记本,交互性强、灵活性好、易于分享,大大简化了工作流程,因而备受数据挖掘领域的青睐。

本书第2版在第1版基础上进行了扩充,其章节安排基本一致。除了丰富了动手实验的部分以外,还紧跟技术发展潮流,换用了3.5版本的Python。当然,书中还会出现Keras和TensorFlow的身影。这两个库在深度学习领域可谓大名鼎鼎。

本书中的示例涵盖了数个行业的应用场景,也引入了结构迥异的不同数据集,其中就包括在数据挖掘领域颇有名气的鸢尾数据集、MovieLens数据集、CIFAR-10数据集等。另外,还有从Twitter、reddit等网站采集的数据集。你在第8章还要动手生成一个数据集。本书各章以数据集为起点,探究数据集的源头与处理方法,解决数据集本身带来的问题,为顺利执行数据挖掘任务打下了坚实的基础。

本书针对商品推荐、结果预测、内容聚类等形形色色的现实问题,不仅运用了包括决策树、朴素贝叶斯、支持向量机、k-均值算法在内的经典数据挖掘算法,还跟随时代潮流,利用云计算和MapReduce模型带来的性能优势搭建深度神经网络,出色地完成了数据挖掘任务。此外,本书还介绍了多种距离度量、评估指标以及测试方法与工具,并在那些性能攸关的地方给出提示,详细解读了关键代码的工作原理。在本书的最后,作者还不忘为你进一步的学习指明方向。

我与Python结缘是在大学时。我虽然不在计算机专业,却因对Web开发感兴趣接触了Django和Flask两个框架。从此,我被Python的魅力所吸引,并把它作为我的主力编程语言,帮助我完成了包括通信系统仿真在内的各种任务。我还翻译了Flask和相关库的文档,并因翻译中遇到的问题,给Python的文档构建工具Sphinx提交补丁,成为了Sphinx项目的简体中文本地化团队协调员。

虽然我有过翻译技术文档的经历,但总归不够正式,也未尝试过翻译话题如此广泛的图书。在翻译本书的过程中,我得到了身边亲友的大力支持。能完成这样一本书的翻译,实属荣幸。在此,我要感谢南京大学软件学院研究生李雪菲同学,她给了我很多指导和帮助,尤其是提供了一些数据挖掘领域的专业见解。感谢我的好友周慧群全程帮助我审读译稿,排查错误。感谢我的父母给予我莫大的支持和鼓励。衷心感谢图灵公司的各位编辑细致入微的审阅,辛苦了!

书中的部分术语尚无固定译法,我尽量参照了现有的科学技术名词规范或惯用译法,但难免有不当之处。译文中的错误和疏漏之处,敬请批评指正。

亦念

目录

  • 版权声明
  • 译者序
  • 前言
  • 致谢
  • 第 1 章 数据挖掘入门
  • 第 2 章 用scikit-learn估计器解决分类问题
  • 第 3 章 用决策树预测获胜球队
  • 第 4 章 用亲和性分析推荐电影
  • 第 5 章 特征与scikit-learn转换器
  • 第 6 章 用朴素贝叶斯算法探索社交媒体
  • 第 7 章 用图挖掘实现推荐关注
  • 第 8 章 用神经网络识别验证码
  • 第 9 章 作者归属问题
  • 第 10 章 聚类新闻文章
  • 第 11 章 用深度神经网络实现图像中的对象检测
  • 第 12 章 大数据处理
  • 附录 A 下一步工作