数据挖掘原理方法及Python应用实践教程

数据挖掘原理方法及Python应用实践教程
作者: 编者:蒋国银//雷俊丽//李明磊//彭瑞卿//曾金|责编:吉正霞
出版社: 科学
原售价: 68.00
折扣价: 53.70
折扣购买: 数据挖掘原理方法及Python应用实践教程
ISBN: 9787030653543

作者简介

内容简介

第1章 绪论
  1.1 数据挖掘的含义
  近年来,基于新一代互联网技术,社交媒体、云服务等新型技术与系统应用不断推出,人类积累的数据量急剧增长。美国国际数据公司(International Data Corportion,IDC)报告显示,1986年,全球只有0.02 EB也就是约20 000 TB的数据量,而到了2007年,全球数据量翻了14 000倍,达280 EB。IDC进一步预测,从2013年到2020年,全球数据量会从4.4 ZB猛增到44 ZB;而到2025年,全球会有163 ZB(相当于16.3万亿GB)的数据量 。各类网站保留了大量的日志文件,购物站点收集了大量的浏览信息和行为数据 随着各种智能终端、互联感知技术和移动互联技术的广泛使用,政府、行业、企业及其他部门收集了各种各样的互联与感知数据,而这些数据还在不断地增加。虽然数据量已经庞大到令人叹为观止的地步,但是这些最原始的数据却无法体现其真正的价值,如同一堆散乱的沙子。在如此庞大的数据中寻找有价值的新知识相当于在一堆沙子中淘金,因此这一过程也被形象地称为“数据挖掘”(data mining)。
  维基百科定义:数据挖掘是一种从大型的结构化或半结构化数据集中发现某种特定模式的计算过程,这种计算过程融合了多种学科方法,如传统的数学、统计学,以及当下研究最为火热的数据库、机器学习等。数据挖掘与计算机学科息息相关,因此数据挖掘也被称为跨学科的计算机科学分支。通俗地讲,数据挖掘就是利用一系列技术和方法从海量数据中找出隐藏于其中的潜在的、有用的新知识的过程。最终获取的信息和知识在各种领域中都有广泛应用,如电子商务、物流运输、精准营销、生产控制和医疗诊断等。
  近年来,数据挖掘是一个被频繁使用的专业词汇,但数据挖掘所表达的概念和思想却不是新形成的。前些年比较热的“知识发现”(knowledge discovery)就蕴含了数据挖掘的思想。不过,知识发现所涵盖的范围更广,它是从各种数据中,根据不同的需求,识别特定模式和获取潜在知识的过程。知识发现的目的是从杂乱烦琐的原始数据中提炼出有效的、新颖的、潜在有用的知识,以使使用者的效益最大化。如今,数据挖掘与知识发现被视为紧密相关的术语,甚至很多时候可以相互替代,但两个术语的定义仍旧有一定差别:知识发现强调将低层数据转换为高层知识的整个过程,而数据挖掘注重数据中模式或模型的抽取。宏观来看,数据挖掘是知识发现的核心,但只是其中的一个步骤。完整的知识发现过程由三个阶段组成:①数据准备;②数据挖掘;③结果表达和解释。数据挖掘的任务包括分类、预测、聚类分析、关联分析、异常检测、时序模式分析等。这些任务在1.3节中会有详细的介绍。
  1.2 数据挖掘、机器学习与人工智能
  在学习数据挖掘的过程中,机器学习(machine learning)和人工智能(artificial intelligence,AI)也经常被提及,那么,它们之间有何区别和联系呢?
  1. 人工智能与机器学习的关系
  人工智能这个词出现的频率极高,尤其是“智能 + ”时代下,人工智能被学界和业界等经常提及,就连日常生活中,人工智能也被普通老百姓所熟知。通常,人工智能也称为智械、机器智能,指由人制造出来的机器所表现出来的智能。换句话说,人工智能可被拆分为“人工”和“智能”两个词,其中:人工表示由人制造;智能的定义则较为广泛和抽象,例如,拥有人的思维逻辑、知识和感知等都可称为智能。对于判断机器是否具有智能这一问题有一个经典的测试方法—图灵测试(Turing test)。图灵测试由英国数学家、逻辑学家艾伦 麦席森 图灵(Alan Mathison Turing)提出,其内容为:将测试者(人)与被测试者(机器)隔开,使用一些装置(如键盘)向被测试者随意提问。经过多次测试后,如果被试者有超过30%的答复不能使测试者确认出哪个是人,哪个是机器,那么这台机器就被认为具有智能。
  通常认为,人工智能经过了三次浪潮。人工智能的第一次浪潮大约在20世纪50年代。1956年,约翰 麦卡锡(John McCarthy)在达特茅斯学院(Dartmouth College)的人工智能研讨会上正式提出了人工智能这个概念。这一时期的许多基础理论,不仅是人工智能的基础理论,也是计算机专业的基石。80年代初,人工智能因为缺乏应用而发展缓慢。到80年代末90年代初,科学家另辟蹊径,从解决大的普适智能问题转向某些领域的单一问题。经过30年左右的发展,在对数据存储、计算性能及数据应用等研究有了一定的基础后,研究者看到了人工智能与数据结合的可能性及其潜在的价值。例如,1997年,“深蓝”打败了当时的象棋冠军加里 卡斯帕罗夫(Garry Kasparov);2017年,阿尔法围棋(AlphaGo)打败了当时的围棋冠军李世石。这就是第二次人工智能浪潮。随着计算能力的提高,再结合海量的数据以及一定程度的算法技术,计算机拥有越来越接近人类的“智能”,甚至可以在某一项确定的事情上打败人类。第三次人工智能浪潮得益于计算机强大的计算能力及海量的数据。总的来说,人工智能的核心问题是构建接近甚至超越人类的推理、知识、规划、学习、交流、感知、移物、使用工具和操控机械的能力等。
  机器学习是人工智能研究发展到一定阶段的必然产物,也是人工智能的一个分支。在过去的20年中,计算机在数据收集、存储、处理和传输等方面的能力有了质的飞跃。在产生数据方面,有人类的历史文明记录数据、现今各大企业每天运营产生的日志数据、各种传感器记录的数据,以及自媒体产生的视频或文字类的数据等。面对如此庞大的数据,人们迫切需要计算机技术处理这些数据,而机器学习恰好能够顺应潮流满足这个需求。因此,该学科也就顺势快速发展起来,并且在今天仍旧处于研究前沿。20世纪80年代,机器学习成为一个独立的研究领域,各种技术迅速产生并快速发展。
  人工智能与机器学习有非常直接的联系,但人工智能的范畴通常更广。人工智能包括所有拥有“智能”的人造机器,只要该机器所体现出的“智能”符合人们的定义标准就属于人工智能的范畴,因此人工智能是一个涵盖面十分广的词。但没有机器学习,人工智能不可能在生活中占有如此重要的地位。事实上,机器学习是人工智能中不可或缺的一个主要内容,研究机器学习的目标就是让计算机系统拥有人的学习能力,从而实现人的“智能”,因此机器学习成为人工智能所涉及的最重要的研究领域之一,它们之间的关系如图1.1所示。
  图1.1 人工智能与机器学习关系图
  2. 数据挖掘与机器学习的关系
  数据挖掘领域在20世纪90年代形成,它受到很多学科领域的影响,其中数据库、机器学习和统计学无疑是影响最大的。数据挖掘也可以被理解为“识别出巨量数据中有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程” 。换句话说,就是从海量数据中找到有用的知识。概括来说,机器学习的研究为数据挖掘提供数据分析技术。数据挖掘除需要机器学习的技术支撑外,还需要数据库和数据仓库技术,因为数据挖掘所面对的庞大的数据对象,无法避免地需要对数据进行管理,在对数据有恰当的管理的基础上才可以进一步利用机器学习技术来寻找对人们有价值的模式或新知识。因此,数据挖掘与机器学习的关系可以用图1.2来描述。
  总的来说,数据挖掘与机器学习既有区别又有联系,而机器学习偏理论,数据挖掘更偏向于实践操作和实际应用。
  图1.2 数据挖掘与机器学习关系图
  1.3 数据挖掘基本任务
  上一节对数据挖掘、机器学习和人工智能三个容易混淆的概念进行了详细的介绍,还对三者之间的区别和联系进行了分析,本节将详细介绍各种数据挖掘技术的基本任务。数据挖掘的基本任务包括分类与预测、聚类分析、关联分析、异常检测等,大致可划分为两类,即预测任务和描述任务。预测任务的流程大致是:通过利用样本的属性和样本的值训练出的模型,结合某个特定样本的属性来预测该样本对应的值。显然,预测任务的目的就是要根据已知的样本属性来对该样本的类别或对应的某个值进行预测。而描述任务的目标则是探索目标数据集中隐藏的联系或模式,可以简单地理解为寻找数据集中隐含的规律。需要注意的是,这里的联系或模式并不是因果联系,而是相关性、趋势走向、聚类、轨迹或异常值等。描述任务的根本目的就是掌握样本数据的特征,包括整体分布及各种数据特征,并以此来确定后续深入分析的方向及可能运用的技术和方法。描述任务最终需要后续的技术验证和解释结果。下面介绍几种数据挖掘的基本任务。
  1.3.1 分类与预测
  通俗来说,分类任务就是将某个对象对应到预先设定的类别中。分类问题无论在生活中还是在数据挖掘中都是普遍存在的。例如,网络社会心态的分类、邮箱中是否为垃圾邮件的预判等,都可以被称为分类问题。人们可以对邮件的标题、主题和内容等进行扫描,从而判别该邮件是否为垃圾邮件、是否需要过滤等。
  分类任务就是将样本的属性集X作为解释变量,样本预先定义的类标号y作为被解释变量,最后学习得到一个目标函数,这个目标函数的作用就是反出X与y之间的映射关系。
  1. 描述性建模
  分类模型可以用作解释性的工具,如表1.1所示,可以从表中数据知道花萼的长度和宽度、花瓣的长度和宽度的取值范围及其与所属类别的对应关系。
  表1.1 鸢尾花数据集(部分)
  2. 预测性建模
  分类任务还可以用于对未知对象进行分类。如表1.1所示,通过鸢尾花花萼的长度和宽度、花瓣的长度和宽度可以判断鸢尾花的类型,其中类别0代表山鸢尾,1代表变色鸢尾,2代表菖蒲锦葵。
  对于未知类型的样本,将样本的其他可观测到的外在属性输入训练好的分类模型中,分类模型将自动赋予未知样本所属类别。例如表1.2所示的某株未知分类的鸢尾花,通过测量得到该花株的花萼长度、花萼宽度、花瓣长度、花瓣宽度共4个属性值,将这4个属性值输入之前训练好的鸢尾花分类模型中,便可以自动获得该花株所属的鸢尾花类别。
  表1.2 某株未知分类的鸢尾花测量数据
  图1.3 分类预测流程
  首先测量未知类别样本的花萼长度、花萼宽度、花瓣长度、花瓣宽度,然后将测量到的数值输入已训练好的分类模型中,最终模型将会输出该样本所属的鸢尾花类型。
  1.3.2 聚类分析
  训练分类模型需要的数据集不仅仅包括属性集,还需要属性集所对应的类别。如果仅仅想训练一个区分猫和狗的分类模型,那么训练用的数据集可以自行标注,因为有足够的先验知识来区分猫和狗,这样的任务对于人们来说十分简单。但是,如果想训练出一个判断CT图像中是否含有肿瘤的分类模型可就不容易了,因为分辨肿瘤这种任务对于缺乏医学知识的门外汉来说实在太过困难,而请专家来标注的话成本又太高。生活中这样的分类问题其实很多,因此,面对这样的问题人们不得不另辟蹊径,寻找可行的解决方案。计算机能够帮助人们在没有标注的情况下进行分类,即使这种分类后的结果需要人为分析理解并给定现实意义。这种使用没有被标记的训练样本解决模式识别中的各种问题的学习,称为无监督学习。无监督学习的典型代表就是聚类分析。
  聚类分析是指按照数据内在相似性将数据集划分为两个或多个类别。聚类分析的最终目的就是将数据划分成有意义或有用的组(簇)。聚类完全依靠样本的自相似性,也就是说,需要聚类的数据集中没有预先定义的类别,并且样本也没有任何标记,这也是聚类的一个典型特点。这样被聚成的类没有任何意义,但是,最终结果可以被使用者赋予实际意义。例如,在医疗中,将每一位患者视为一个样本,将患者所出现的表征症状视为样本的属性,当对这样的数据集进行聚类后所得到的结果是多个类别的患者集合,而每一类可能代表着某一种疾病。
  聚类分析一般有5种方法 ,包括划分法(partitioning methods)、层次法(hierarchical methods)、基于密