导读:在本文中,我们将介绍如下主题:
什么是数据挖掘?要确定数据挖掘在不断增强的其他相似概念中的位置,还将学习这一学科成长和变化的历史。
我们如何进行数据挖掘?在此,我们将对比数据挖掘项目中常用的几种过程或者方法论。
数据挖掘中使用哪些技术?在这一部分,将总结数据挖掘定义中包含的典型数据分析技术,并强调这本精通级书籍将要涵盖的较为独特却未得到应有重视的技术。
作者:梅甘·斯夸尔
如需转载请联系华章科技
01 什么是数据挖掘
数据挖掘的目标是找出数据中的模式,但是细看之下,这一过分简单的解释就站不住脚。
毕竟,寻找模式难道不也是经典统计学、商业分析、机器学习甚至更新的数据科学或者大数据的目标吗?数据挖掘和其他这些领域有什么差别呢?当我们实际上是忙于挖掘模式时,为什么将其称作“数据挖掘”?我们不是已经有数据了吗?
从一开始,“数据挖掘”这一术语就明显有许多问题。这个术语最初是统计学家们对盲目调查的轻蔑叫法,在这种调查中,数据分析人员在没有首先形成合适假设的情况下,就着手寻找模式。
但是,这一术语在20世纪90年代成为主流,当时的流行媒体风传一种激动人心的研究,将成熟的数据库管理系统领域与来自机器学习和人工智能的最佳算法结合起来。
“挖掘”这一单词的加入预示着这是现代的“淘金热”,执著、无畏的“矿工”们将发现(且可能从中得益)之前隐藏的珍宝。“数据本身可能是珍稀商品”这一思路很快吸引了商业上和技术刊物的注意,使他们无视先驱们努力宣传的、更为全面的术语——数据库中的知识发现(KDD)。
但是,“数据挖掘”这一术语沿用了下来,最终,该领域的一些定义试图改变其解释,认为它指的只是更漫长、更全面的知识发现过程中的一步。今天“数据挖掘”和KDD被视为非常相似、紧密相关的术语。
那么,其他相关术语如机器学习、预测性分析、大数据和数据科学又是怎么回事?这些术语和数据挖掘或者KDD是不是一回事?下面我们比较这些术语:
- 机器学习是计算机科学中的一个非常特殊的子领域,其焦点是开发能从数据中学习以作出预测的算法。许多数据挖掘解决方案使用了来自机器学习的技术,但是并不是所有数据挖掘都试图从数据中作出预测或者学习。有时候,我们只是想要找到数据中的一个模式。实际上,我们所研究的数据挖掘解决方案中只有少数使用了机器学习技术,而更多的方案中并没有使用。
- 预测性分析有时简称为分析,是各个领域中试图从数据中作出预测的计算解决方案的统称。我们可以思考商业分析、媒体分析等不同术语。有些(但并不是全部)预测性分析解决方案会使用机器学习技术进行预测,但是同样,在数据挖掘中,我们并不总是对预测感兴趣。
- 大数据这一术语指的是处理非常大量数据的问题和解决方案,与我们是要搜索数据中的模式还是简单地存储这些数据无关。对比大数据和数据挖掘这两个术语,许多数据挖掘问题在数据集很大时更为有趣,所以为处理大数据所开发的解决方案迟早可用于解决数据挖掘问题。但是这两个术语只是互为补充,不能互换使用。
- 数据科学是最接近于KDD过程的术语,数据挖掘是它们的一个步骤。因为数据科学目前是极受欢迎的流行语,它的含义将随着这一领域的成熟而继续发展和变化。
我们可以查看Google Trends,了解上述术语在一段时期内的搜索热度。Google Trends工具展示了一段时期内人们搜索各种关键词的频度。
在图1-1中,新出现的术语“大数据”目前是炙手可热的流行语,“数据挖掘”居于第二位,然后是“机器学习”“数据科学”和“预测性分析”。(我试图加入搜索词“数据库中的知识发现”,但是结果太接近于0,无法看到趋势线。)
y轴以0~100的指数显示了特定搜索词的流行度。此外,我们还将Google Trends给出的2014~2015年每周指数组合为月平均值。
▲图1-1 5个常用数据相关术语的Google Trends搜索结果
02 如何进行数据挖掘
由于数据挖掘传统上被视为KDD全过程中的一步,并且越来越成为数据科学过程的一部分,在本文中我们将熟悉其所涉及的步骤。进行数据挖掘有多种流行的方法。
1. Fayyad等人的KDD过程
知识发现和数据挖掘过程的早期版本之一由Usama Fayyad、Gregory Piatetsky-Shapiro和 Padhrc Smyth在1996年的一篇论文(The KDD Process for Extracting Useful Knowledge from Volumes of Data)中定义。
这篇论文在当时很重要,它将快速变化的KDD方法论精炼为具体的一组步骤。如下步骤以原始数据开始,以知识作为结束:
- 数据选择。这一步的输入是原始数据,输出是较小的数据子集,称为目标数据。
- 数据预处理。目标数据得到清理,删除异常值,处理缺失数据。这一步的输出是预处理数据或清理后数据。
- 数据变换。清理后的数据组织成适合于挖掘步骤的格式,如果有必要,精简特征或者变量的数量。这一步的输出是变换后数据。
- 数据挖掘。用适合于问题的一种或者多种数据挖掘算法对变换后数据进行挖掘,这一步的输出是发现的模式。
- 数据解释/评估。评估所发现模式解决手上问题的能力。这一步的输出是知识。
由于这一过程从原始数据得出知识,因此,这些作者对“数据库中的知识发现”这一术语作出了真正的贡献,而不仅仅是简单的数据挖掘。
2. 韩家炜等人的KDD过程
韩家炜、Micheline Kamber和裴健所著的流行数据挖掘教科书《Data Mining: Concepts and Techniques》描述了知识发现过程的另一个版本,其中的步骤也是从原始数据导出知识:
- 数据清理。这一步的输入是原始数据,输出是清理后的数据。
- 数据整合。在这一步中,清理后数据被整合(如果它们来自多个来源)。这一步的输出是整合数据。
- 数据选择。数据集被精简为仅包含手上问题所需的数据。这一步的输出是较小的数据集。
- 数据变换。较小的数据集被合并为一种适合于将来的数据挖掘步骤的形式,称为变换后数据。
- 数据挖掘。变换后的数据由设计用于发现数据中模式的智能算法处理。这一步的输出是一种或者多种模式。
- 模式评估。评估所发现模式的兴趣度和解决手上问题的能力。这一步的输出是适用于每个模式(代表知识)的兴趣度计量。
- 知识表示。在这一步中,通过各种手段(包括可视化)将知识传达给用户。
在Fayyad和韩的方法中,都预计该过程在必要时需要多次重复这些步骤。例如,如果在变换步骤中,分析人员发现需要再进行一次数据清理或者预处理,这两种方法都规定分析人员应该按原路返回,完成前面未完成步骤的第二次迭代。
3. CRISP-DM过程
KDD过程的第3种流行版本称为CRISP-DM,其用于许多商业和应用领域,它的全称是CRoss-Industry Standard Process for Data Mining(跨行业数据挖掘标准过程),包含如下步骤:
- 业务理解。在这一步中,分析人员花时间从业务视角理解数据挖掘项目的动机。
- 数据理解。在这一步中,分析人员熟悉数据及其潜在优势和不足,并开始生成假设。分析人员的任务是在必要时重新评估第1步的业务理解。
- 数据准备。这一步包含其他模型作为单独步骤列举的选择、整合、变换和预处理步骤。CRISP-DM模型对这些任务的执行顺序没有要求。
- 建模。这一步中对数据应用算法以发现模式。这一步骤最接近于其他KDD模型中的数据挖掘步骤。分析人员的任务是在建模和挖掘步骤需要的时候重新评估第3步的数据准备。
- 评估。评估模型和发现的模式在回答手上的业务问题中的价值。分析人员的任务是在必要时重温第1步的业务理解。
- 部署。呈现发现的知识和模型,并投产以解决手上的原始问题。
这种方法的优势之一是,迭代是内建的。在特定步骤之间,分析人员将检查当前步骤仍然与之前的某些步骤保持一致。另一个优势是明确地提醒分析人员,即使在评估步骤中也要将业务问题放在项目的核心位置。
4. 六步过程
当我在大学里教授数据科学入门课程时,使用了自己创造的一种混合方法。这种方法称为“六步过程”,这种专门设计的方法对于授课很合适。
我的六步方法消除了没有经验的学生在CRISP-DM中的开放式任务(如业务理解)或者基于企业任务(如部署)中可能遇到的歧义问题。
此外,六步方法要求学生在过程的开始和最后回答“为什么这么做”和“这有什么意义”的问题,以拓展学生的批判性思维技能。我的六步方法如下:
- 问题陈述。在这一步中,学生确定他们试图解决的问题。在理想状况下,了解进行这些工作的原因可以提高他们的积极性。
- 数据收集和存储。在这一步中,学生们定位数据并规划这一问题所需数据的存储。他们还提供一些信息,这些信息与回答他们感兴趣的问题所需数据的来源、格式以及所有字段含义相关。
- 数据清理。在这一步中,学生们认真选择真正需要的数据,并将数据处理成挖掘步骤所需的格式。
- 数据挖掘。在这一步中,学生形式化所选择的数据挖掘方法。他们描述使用的算法以及原因。这一步的输出是模型和发现的模式。
- 表示和可视化。在这一步中,学生直观地展示工作成果。这一步的输出可以是表格、图示、图形、图表、网络框图、映射图等。
- 问题解决。这一步对数据挖掘初学者很重要,它明确地鼓励学生评估第5步中展示的模式是不是第1步中提出的问题的答案。学生们被要求说明模型或者结果的局限性,确定用这种方法无法回答的部分相关问题。
5. 哪一种数据挖掘方法最好
2014年,Gregory Piatetsky-Shapiro在其非常受欢迎的数据挖掘电子邮件通讯KD-Nuggets上进行的调查包含了一个问题:“你在分析、数据挖掘或者数据库科学项目中使用哪一种主要方法?”
- 43%的调查对象表示他们使用CRISP-DM方法。
- 27%的调查对象使用自己的方法或者混合方法。
- 7%的调查对象使用传统的KDD方法。
- 其余调查对象选择另一种KDD方法。
这些结果和2007年同一邮件通讯所做的相同调查结果类似。
我的最佳建议是,不要过于重视用于数据挖掘项目的方法,随便挑一种即可。如果完全不使用任何方法,那么就有遗漏重要步骤的危险。选择看上去对你的项目和需求有效的方法,然后尽可能遵循该方法的步骤。
03 在数据挖掘中使用哪些技术
现在我们对数据挖掘在整个KDD或者数据科学过程中的位置有了了解,下面就可以开始讨论完成这一任务的细节了。
从试图定义数据挖掘的早期起,几类相关的问题就一再出现。Fayyad等人在1996年的另一篇重要论文“From Data Mining to Knowledge Discovery in Databases”中提出了6类问题,我们将其总结如下:
- 分类问题。这里,有需要根据某些特征分成预定义类别的数据。我们需要一种算法,使用过去已经分类的数据,学习如何将未知数据置于正确的类别下。
- 聚类问题。这类问题是,我们需要根据数据点的特征将其分为不同类别,但是事先不知道这些类别。我们需要一种能够计量数据点之间相似性并自动根据这些相似性分割数据的算法。
- 回归问题。我们的数据必须根据某个预测变量进行映射,所以必须学习进行这种映射的函数。
- 摘要问题。假定我们的数据需要以某种方式缩短或者总结。这可能很简单,只是从数据计算基本统计数字;也可能很复杂,需要学习如何总结文本,或者为文本找出一个主题模型。
- 依赖性建模问题。对于这些问题,我们的数据之间可能有某种联系,我们需要开发一个算法,计算这种联系的概率,或者描述互相联系的数据的结构。
- 变化和偏差检测问题。在另一种情况下,我们的数据已经有了显著的变化,或者数据的一些子集偏离了正常值。为了解决这些问题,我们需要一种能够自动发现这些问题的算法。
在同年撰写的另一篇论文中,这些作者还加入了其他几种类别:
- 链接分析问题。我们有一些相关的数据点,必须发现它们之间的关系,并以数据集的支持程度和关系置信度的方式描述它们。
- 序列分析问题。想象我们的数据点遵循某种顺序,如时间序列或者基因组,我们必须发现序列中的趋势或者偏差,或者发现导致序列的原因,以及序列的演化方式。
韩家炜、Kamber和裴健在前面提及的教科书中描述了数据挖掘所能解决的4类问题,并进一步将其分为描述性和预测性两大类。描述性数据挖掘意味着找出模式,帮助我们理解拥有的数据。预测性数据挖掘意味着找出模式,帮助我们预测尚未拥有的数据。
在描述性类别中,他们列出了如下数据挖掘问题:
- 数据特性描述和数据区分问题,包括数据摘要或者概念特性描述(或称描述)。
- 频率挖掘,包括找出数据中的频繁模式、关联规则和相关性。
在预测性类别中,他们列出了如下问题:
- 分类,回归
- 聚类
- 离群值和异常检测
很容易看出,Fayyad等人和韩家炜等人的问题列表有许多相似之处,只是项目的分组不同。确实,如果你过去曾经完成过数据挖掘项目,这两个列表上出现的项目就是你可能已经熟悉的数据挖掘问题。分类、回归和聚类是非常流行的基本数据挖掘技术,所以从业者们所看到的每本数据挖掘书籍几乎都介绍过它们。
本文摘编自《Python数据挖掘:概念、方法与实践》,经出版方授权发布。
延伸阅读《Python数据挖掘:概念、方法与实践》
推荐语:在本书中,你将深入许多数据挖掘中常被忽视的领域,包括关联规则挖掘、实体匹配、网络挖掘、情绪分析、命名实体识别、文本摘要、主题建模和异常检测。对于每种数据挖掘技术,我们将在比较解决每种问题所用的各种策略之前,研究目前新的佳实践。然后,将用来自软件工程领域的实际数据,实现示例解决方案,并学习理解和解读所得结果的方法。