第1章 绪论
1.1 什么是数据挖掘
数据挖掘是在大型数据存储库中,自动地发现有用信息的过程。
数据挖掘与知识发现
数据挖掘是数据库中知识发现(knowledge discovery in database,KDD)不可缺少的一部分,而KDD是将未加工的数据转换为有用信息的整个过程。如下图,KDD过程
输入数据:输入数据可以以各种形式存储(平展文件、电子数据表或关系表),并且可以驻留在集中的数据存储库中,或分布在多个站点上。
数据预处理:数据预处理的木得是将未加工的输入数据转换成合适分析的形式。数据预处理涉及的步骤包括融合来自多个数据源的数据,清洗数据以消除噪声和重复的观测值,选择与当前数据挖掘任务相关的记录和特征。
后处理:确保只将那些有效的和有用的结果集成到决策支持系统中。
1.2 数据挖掘要解决的问题
可伸缩:由于数据产生和收集技术的进步,海量数据集越来越普遍。如果数据挖掘算法要处理这些海量数据集,则算法必须是可伸缩的(特殊的搜索策略,新的数据结构,特殊的算法等)。使用抽样技术或开发并行和分布算法也可以提高可伸缩程度。
高维性:现在,常常遇到具有成百上千属性的数据集,而不是几十年前常见的只具有少量属性的数据集。为低纬数据开发的传统的数据分析技术通常不能很好地处理这样的高纬数据。此外,对于某些数据分析算法,随着维度(特征数)的增加,计算复杂性迅速增加。
异种数据和复杂数据:通常,传统的数据分析方法只处理包含相同类型属性的数据集,或者是连续的,或者是分类的。随着数据挖掘在商务、科学、医学和其他领域的作用越来越大,越来越需要能够处理异种属性的技术。这些非传统的数据类的例子有:含有半结构化文本和超链接的Web页面集、具有序列和三维结构的DNA数据等。为挖掘这种复杂对象而开发的技术应当考虑数据中的联系,如时间和空间的自相关性、图的连通性、半结构化文本和XML文档中元素之间的父子联系。
数据的所有权与分布:有时,需要分析的数据并非存放在一个站点,或归属一个机构,而是地理上分布在属于多个机构的资源中。这就需要开发分布式数据挖掘技术。分布式数据挖掘算法面临的主要挑战包括:(1)如何降低执行分布式计算所需的通信量?(2)如何有效地统一从多个资源得到的数据挖掘结果?(3)如何处理数据安全性问题?
非传统的分析:传统的统计方法基于一种假设-检验模式,即提出一种假设,设计实验来收集数据,然后针对假设分析数据。但是,这一过程劳力费神。当前的数据分析人物常常需要产生和评估数千种假设,因此需要自动地产生和评估假设,这促使人们开发了一些数据挖掘技术。
1.3 数据挖掘的起源
数据挖掘利用了来自如下一些领域的思想:(1)来自统计学的抽样、估计和假设检验 (2)人工智能、模式识别和机器学习的搜索算法、建模技术和学习理论。数据挖掘也迅速地接纳了来自其他领域的思想,这些领域包括最优化、进化计算、信息论、信号处理、可视化和信息检索。
一些其他领域也起到重要的支撑作用。特别地,需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能(并行)计算的技术在处理海量数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一起处理时更是至关重要。
1.4 数据挖掘任务
通常,数据挖掘任务分为下面两大类。
预测任务:这些任务的目标是根据其他属性的值,预测特定属性的值。被预测的属性一般称目标变量(target variable)或因变量(dependent variable),而用来做预测的属性称说明变量(explanatory variable)或自变量(independent variable)。
描述任务:其目标是导出概括数据中潜在联系的模式(相关、趋势、聚类、轨迹和异常)。本质上,描述性数据挖掘任务通常是探查性的,并且常常需要后处理技术验证和解释结果。
除此外,还有四种主要数据挖掘任务。
预测建模(predictive modeling):涉及以说明变量函数的方式为目标变量建立模型。有两类预测建模任务:分类(classification),用于预测离散的目标变量。回归(regression),用于预测连续的目标变量。
关联分析(association analysis):用来发现描述数据中强关联特征的模式。所发现的模式通常用蕴含规则或特征子集的形式表示。
聚类分析(cluster analysis):旨在发现紧密相关的观测值组群,使得与属于不同簇的观测值相比,属于同一簇的观测值相互之间尽可能类似。
异常检测(anomaly detection):识别其特征显著不同于其他数据的观测值。这样的观测值称为异常点(anomaly)或离群点(outlier)。