1.3 数据挖掘与机器学习
上一节提到近些年来,随着大数据及信息技术的飞速发展,博客、社交网络、基于位置服务为代表的新型信息发布方式的不断涌现,以及云计算、物联网等技术的兴起,在商务贸易和政府事务电子化、大规模工业生产过程中的智能监控和诊断、医疗领域的计算机诊断管理和科学计算等应用领域,产生了不断增长的海量数据源。数据正以前所未有的速度不断地增长和累积,人类收集数据、存储数据的能力得到了极大提高,对这些数据进行分析以发掘数据中蕴含的有用信息,成为几乎所有领域的共同需求。正是在这样的大趋势下,机器学习和数据挖掘技术的作用日渐重要,并受到了广泛的关注。
机器学习是人工智能的核心研究领域之一,而数据挖掘又是机器学习的核心技术之一。人工智能与机器学习等概念的相互关系如图1-1所示。目前被广泛采用的机器学习的定义是“利用经验来改善计算机系统自身的性能”。事实上,由于“经验”在计算机系统中主要是以数据的形式存在的,因此机器学习需要设法对数据进行分析,这就使得数据挖掘逐渐成为智能数据分析技术的创新源之一,并且为此而受到越来越多的关注。我们常说机器学习就是研究计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。人类是通过从以往发生事情的经验中进行学习的。而对于计算机来说,它们学习的经验其实就是数据和信息。我们通过不断给计算机“喂吃”(输入)数据,计算机通过算法“消化”(训练)数据,并不断“成长”(输出)为一个模型,然后将这个模型运用到新的数据上作出新的预测或决策。机器学习与人类思考模式的对比如图1-2所示。
图1-1 人工智能与机器学习等概念的相互关系
图1-2 机器学习与人类思考模式的对比
几十年来,很多计算机科学和应用数学界的学者们总结出了不少教会计算机学习的办法,它们就是各式各样的机器学习算法。这些算法是数据科学家们手中的挖掘机,担负着将海量数据化腐朽为神奇的使命。因此,从数据科学的角度,我们可以对机器学习下这样一个定义:机器学习是指用某些算法指导计算机利用已知数据得出适当的模型,并利用此模型对新的情境给出判断的过程。由此看来,机器学习的思想并不复杂,它仅仅是对人类生活中学习过程的一个模拟。而在这整个过程中,最关键的是数据。因此,“机器学习”和“数据挖掘”通常被相提并论,并在许多场合被认为是可以相互替代的术语。顾名思义,数据挖掘就是试图从海量数据中找出有用的知识。大体上看,数据挖掘可以视为机器学习和数据库的交叉,它主要利用机器学习界提供的技术来分析海量数据,利用数据库界提供的技术来管理海量数据。
尤其是近几年互联网数据大爆炸,数据的丰富度和覆盖面远远超出人工可以观察和总结的范畴,而数据挖掘的算法能指引计算机在海量数据中挖掘出有用的价值,这也是无数学习者为之着迷的原因。一般意义上,大数据是指无法在一定时间内用常规机器和软硬件工具对其进行感知、获取、管理、处理和服务的数据集合,呈现出大量化、多样化、快速化、低价化的特点。Nature和Science等刊物也相继出版专刊来探讨大数据的研究。比如,2008年Nature出版的专刊Big Data,从互联网技术、网络经济学、超级计算、环境科学和生物医药等多个方面介绍了海量数据带来的挑战;2011年,Science推出关于数据处理的专刊Dealing with Data,主要围绕科学研究中大数据的问题展开讨论,说明大数据对科学研究的重要性。计算社区联盟(Computing Community Consortium)在2008年发表了报告“Big datacomputing: Creating revolutionary break throughs in commerce,science, and society”,阐述了在数据驱动的研究背景下,解决大数据问题所需的技术,以及面临的一些挑战。美国一些知名的数据管理领域的专家学者则从专业的研究角度出发,联合发布Challenges and Opportunities with Big Data,对大数据的影响、关键技术和应用领域等进行了详尽分析。进入2012年以来,大数据的关注度与日俱增。在2012年1月的达沃斯世界经济论坛上,特别针对大数据发布了报告“Big data, bigimpact: New possibilities for international development”。大数据本身是一个比较抽象的概念,单从字面来看,它表示数据规模的庞大。但是仅仅数量上的庞大显然无法看出大数据这一概念和以往的“海量数据”(Massive Data)、“超大规模数据”(Very Largedata)等概念之间有何区别,从这个意义上来说,我们需要对大数据时代的数据存在的若干形态进行新的诠释。
数据的形态之一:大数据。经典意义上的数据挖掘,通常是指对中等规模或海量数据进行分析。怎样才算海量数据,目前还没有明确的标准。而近几年产生的大数据的提法,其概念在内涵和外延上都有了扩展。从本质上,可以认为大数据和海量数据是相似的。在实践中,不是记录数多的就称为大数据,通常大数据是数据量和数据维度均很大,且数据形式很广泛,如数字、文本、图像、声音等。同时大数据往往可能蕴含着丰富的规律和知识,所以在大数据之上应用数据挖掘就成为理所当然的活动了。
数据的形态之二:小数据。相对于大数据,在实践中还会存在不少特殊情况。例如,医学上有些疾病极为少见,只出现几百例甚至几十例就几乎是该病的总体了。这种数据可以称之为小数据。实际工程应用中需要对这些小数据进行深入分析和探索,以便挖掘出罕见疾病的特征,并给出临床诊断依据。面对这种数据类型,如果按照记录数依照传统数据挖掘观念、方法和技术,无法开展探索性的分析工作。数据挖掘的一个发展分支应该是从规模较小的、有限的数据中探索其中的规律和知识。
数据的形态之三:宽数据。有一种情况是小数据高维度、小样本大信息,可以称之为宽数据。如某些基因组信息数据量很少,通常只有几十例到几百例,但维度很高,通常有几百个到几千个。更极端的情况是个人大信息,即单个记录下的高维信息,如从宽带、移动支付、物联网、手机等媒介收集个人信息。在不远的将来会出现单独个体的高维数据,并需要解决此类数据挖掘的新理论和新算法。
数据的形态之四:深数据。还有一种数据涉及维度不是很宽,但是数据在某几个维度上跨度非常大,历史数据非常多,或者数据量的增长速度非常快,称之为深数据。如医学检查中心脑电图监测,每小时会产生几十万至几百万条数据。再如互联网服务商的服务器对互联网访问事件的日志记录,也是每小时会产生几十万至几百万条数据。这类数据,我们有时也称之为流数据。对这些深数据的挖掘也是非常具有挑战性的。一方面由于它的数据量非常大,另一方面也由于对这类数据进行挖掘的实时性要求较高。这些随着数据收集手段的进步而形成的各有特色的数据,正在逐步进入数据挖掘研究的视野。所以说数据挖掘应包括大数据挖掘、小数据挖掘、宽数据挖掘和深数据挖掘。我们需要做的是处理好各类数据来获取知识,研究解决各类型数据的挖掘的新理论和新算法。这些数据的分析算法不完全与经典大数据挖掘相同,例如医学上的个性化精确治疗,就离不开涉及个人的宽数据和深数据。
数据挖掘是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。数据挖掘应该是一个广义的概念,甚至可以说不是一个传统意义上的定义,而是一类活动的集合。凡是有目的地探索数据中隐含的规律和知识的活动都可称为数据挖掘。在这里,我们重点强调的要素是:有目的、探索性地获取、数据中隐含的规律和知识。这就意味着不限任何方法和手段,无论是数学的还是非数学的,无论是复杂的还是简单的,只要能揭示数据中隐含的规律和知识都可以被称为数据挖掘。现在机器学习的范围已经逐步扩展到不确定性推理技术、人工智能、高性能计算,以及基于神经网络、模糊集理论、粗集理论、进化计算的软计算等研究领域,目前各种方向与技术之间相互融合,研究内容也纷繁复杂。从数据分析的角度讲,数据挖掘可分为关联挖掘、数据分类、数据聚类和预测等问题。根据数据类型对象的特点又可分为时序数据分析、空间数据挖掘、文本及Web挖掘和多媒体数据库等研究方向。从具体算法实施角度讲,数据挖掘又有兴趣度评价、并行算法、增量算法及算法的复杂性等研究问题。
数据挖掘受到了很多学科领域的影响,其中数据库、机器学习、统计学无疑影响最大。粗糙地说,数据库提供数据管理技术,机器学习和统计学提供数据分析技术。由于统计学界往往醉心于理论的优美而忽视实际的效用,因此,统计学界提供的很多技术通常都要在机器学习界进一步研究,变成有效的机器学习算法之后才能再进入数据挖掘领域。从这个意义上说,统计学主要是通过机器学习来对数据挖掘发挥影响,而机器学习和数据库则是数据挖掘的两大支撑技术。从数据分析的角度来看,绝大多数数据挖掘技术都来自机器学习领域。但能否认为数据挖掘只不过就是机器学习的简单应用呢?答案是否定的。一个重要的区别是,传统的机器学习研究并不把海量数据作为处理对象,很多技术是为处理中小规模数据设计的,如果直接把这些技术用于海量数据,效果可能很差,甚至可能用不起来。