第1章
扩展你的数据挖掘工具箱
面对感官信息时,人类自然想要寻找模式,对其进行区别、分类和预测。这种寻找周围模式的过程是人类的基本活动,人类的大脑对此很擅长。利用这种技能,我们的祖先更好地掌握了狩猎、聚会、烹饪和组织知识。因此,人类最早计算机化的任务是模式识别和模式预测也就不足为奇了,这种渴望一直持续到现在。近来,根据给定项目的目标,使用计算机找出数据中的模式,已经涉及数据库系统、人工智能、统计学、信息检索、计算机视觉和其他各种计算机科学子领域,以及信息系统、数学或者商业等。不管我们将这种活动称作什么—数据库中的知识发现、数据挖掘、数据科学,其主要使命始终是找出有趣的模式。
这一使命听起来似乎有些微不足道,数据挖掘已经存在了很长时间,对其实现已经积累了足够多的变种,但是现在它已经成为了一个广泛而复杂的领域。我们可以想象一所烹饪学校,其中的每位新人首先学习的是如何煮开水,如何使用刀具,然后才转向更高级的技能,如制作松饼或者为鸡肉去骨。在数据挖掘中,也有一些常用的技术,刚入门的数据挖掘人员也要学习它们:如何构建分类器,如何在数据中找到聚类宏。但是,本书的主题是精通Python数据挖掘,所以,作为“精通”级别的书籍,目标是传授给你一些在之前的数据挖掘项目中未曾见过的技术。
在第1章中,我们将介绍如下主题:
什么是数据挖掘?要确定数据挖掘在不断增强的其他相似概念中的位置,还将学习这一学科成长和变化的历史。
我们如何进行数据挖掘?在此,我们将对比数据挖掘项目中常用的几种过程或者方法论。
数据挖掘中使用哪些技术?在这一部分,将总结数据挖掘定义中包含的典型数据分析技术,并强调这本精通级书籍将要涵盖的较为独特却未得到应有重视的技术。
如何建立数据挖掘工作环境?最后,我们将经历建立基于Python开发环境的过程,我们将用这个环境完成本书余下部分中的项目。
1.1 什么是数据挖掘
前文解释了数据挖掘的目标是找出数据中的模式,但是细看之下,这一过分简单的解释就站不住脚。毕竟,寻找模式难道不也是经典统计学、商业分析、机器学习甚至更新的数据科学或者大数据的目标吗?数据挖掘和其他这些领域有什么差别呢?当我们实际上是忙于挖掘模式时,为什么将其称作“数据挖掘”?我们不是已经有数据了吗?
从一开始,“数据挖掘”这一术语就明显有许多问题。这个术语最初是统计学家们对盲目调查的轻蔑叫法,在这种调查中,数据分析人员在没有首先形成合适假设的情况下,就着手寻找模式。但是,这一术语在20世纪90年代成为主流,当时的流行媒体风传一种激动人心的研究,将成熟的数据库管理系统领域与来自机器学习和人工智能的最佳算法结合起来。“挖掘”这一单词的加入预示着这是现代的“淘金热”,执著、无畏的“矿工”们将发现(且可能从中得益)之前隐藏的珍宝。“数据本身可能是珍稀商品”这一思路很快吸引了商业上和技术刊物的注意,使他们无视先驱们努力宣传的、更为全面的术语—数据库中的知识发现(KDD)。
但是,“数据挖掘”这一术语沿用了下来,最终,该领域的一些定义试图改变其解释,认为它指的只是更漫长、更全面的知识发现过程中的一步。今天“数据挖掘”和KDD被视为非常相似、紧密相关的术语。
那么,其他相关术语如机器学习、预测性分析、大数据和数据科学又是怎么回事?这些术语和数据挖掘或者KDD是不是一回事?下面我们比较这些术语:
机器学习是计算机科学中的一个非常特殊的子领域,其焦点是开发能从数据中学习以作出预测的算法。许多数据挖掘解决方案使用了来自机器学习的技术,但是并不是所有数据挖掘都试图从数据中作出预测或者学习。有时候,我们只是想要找到数据中的一个模式。实际上,在本书中,我们所研究的数据挖掘解决方案中只有少数使用了机器学习技术,而更多的方案中并没有使用。
预测性分析有时简称为分析,是各个领域中试图从数据中作出预测的计算解决方案的统称。我们可以思考商业分析、媒体分析等不同术语。有些(但并不是全部)预测性分析解决方案会使用机器学习技术进行预测,但是同样,在数据挖掘中,我们并不总是对预测感兴趣。
大数据这一术语指的是处理非常大量数据的问题和解决方案,与我们是要搜索数据中的模式还是简单地存储这些数据无关。对比大数据和数据挖掘这两个术语,许多数据挖掘问题在数据集很大时更为有趣,所以为处理大数据所开发的解决方案迟早可用于解决数据挖掘问题。但是这两个术语只是互为补充,不能互换使用。
数据科学是最接近于KDD过程的术语,数据挖掘是它们的一个步骤。因为数据科学目前是极受欢迎的流行语,它的含义将随着这一领域的成熟而继续发展和变化。
我们可以查看Google Trends,了解上述术语在一段时期内的搜索热度。Google Trends工具展示了一段时期内人们搜索各种关键词的频度。在图1-1中,新出现的术语“大数据”目前是炙手可热的流行语,“数据挖掘”居于第二位,然后是“机器学习”、“数据科学”和“预测性分析”。(我试图加入搜索词“数据库中的知识发现”,但是结果太接近于0,无法看到趋势线。)y轴以0~100的指数显示了特定搜索词的流行度。此外,我们还将Google Trends给出的2014~2015年每周指数组合为月平均值。