系统架构设计笔记(13)—— 数据挖掘

随着数据库技术的迅速发展及数据库管理系统的广泛应用,人们积累的数据越来越多。激增的数据背后隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入 、 查询 、 统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段,导致了 “ 数据爆炸但知识贫乏 ” 的现象。

1 数据挖掘的概念

数据挖掘( DataMining )技术是人们长期对数据库技术进行研究和开发的结果。起初各种商业数据是存储在计算机的数据库中的,然后发展到可对数据库进行查询和访问,进而发展到对数据库的即时遍历。数据挖掘使数据库技术进入了一个更高级的阶段,它不仅能对过去的数据进行查询和遍历,并且能够找出过去数据之间的潜在联系,从而促进信息的传递。现在数据挖掘技术在商业应用中已经可以马上投入使用,因为对这种技术进行支持的三种基础技术已经发展成熟,它们是海量数据搜集 、 强大的多处理器计算机和数据挖掘算法。

从技术角度来看,数据挖掘就是从大量的 、 不完全的 、 有噪声的 、 模糊的 、 随机的实际应用数据中,提取隐含在其中的 、 人们事先不知道的 、 但又是潜在有用的信息和知识的过程。这个定义包括好几层含义:数据源必须是真实的 、 大量的 、 含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受 、 可理解 、 可运用;并不要求发现放之四海而皆准的知识,仅支持特定的发现问题。

还有很多和这一术语相近的术语,如从数据库中发现知识 、 数据分析 、 数据融合( DataFusion ),以及决策支持等。

何为知识?从广义上理解,数据 、 信息也是知识的表现形式,但是人们更把概念 、 规则 、 模式 、 规律和约束等看做知识。原始数据可以是结构化的,如关系数据库中的数据;也可以是半结构化的,如文本 、 图形和图像数据;甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现的知识可以被用于信息管理,查询优化,决策支持和过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门交叉学科,它把人们对数据的应用从低层次的简单查询,提升到从数据中挖掘知识,提供决策支持。在这种需求牵引下,汇聚了不同领域的研究者,尤其是数据库技术 、 人工智能技术 、 数理统计 、 可视化技术 、 并行计算等方面的学者和工程技术人员,投身到数据挖掘这一新兴的研究领域,形成新的技术热点。

从商业角度来看,数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库中的大量业务数据进行抽取 、 转换 、 分析和其他模型化处理,从中提取辅助商业决策的关键性数据。

简而言之,数据挖掘其实是一种深层次的数据分析方法。数据分析本身已经有很多年的历史,只不过在过去数据收集和分析的目的是用于科学研究,另外,由于当时计算能力的限制,对大量数据进行分析的复杂数据分析方法受到很大限制。现在,由于各行业业务自动化的实现,商业领域产生了大量的业务数据,这些数据不再是为了分析的目的而收集,而是由于纯机会的商业运作而产生。分析这些数据也不再是单纯为了研究的需要,更主要是为商业决策提供真正有价值的信息,进而获得利润。但所有企业面临的一个共同问题是:企业数据量非常大,而其中真正有价值的信息却很少,因此从大量的数据中通过深层分析,获得有利于商业运作 、 提高竞争力的信息,就像从矿石中淘金一样,数据挖掘也因此而得名。

因此,数据挖掘可以描述为:按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的 、 未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。

数据挖掘与传统的数据分析(如查询 、 报表 、 联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息 、 发现知识。数据挖掘所得到的信息应具有先知,有效和可实用三个特征。

先前未知的信息是指该信息是预先未曾预料到的,即数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越是出乎意料,就可能越有价值。在商业应用中最典型的例子就是一家连锁店通过数据挖掘发现了小孩纸尿布和啤酒之间有着惊人的联系。

特别要指出的是,数据挖掘技术从一开始就是面向应用的。它不仅是面向特定数据库的简单检索查询调用,而且要对这些数据进行微观 、 中观乃至宏观的统计 、 分析 、 综合和推理,以指导实际问题的求解,企图发现事件间的相互关联,甚至利用已有的数据对未来的活动进行预测。例如,加拿大 BC 省电话公司要求加拿大 SimonFraser 大学知识发现研究组,根据其拥有十多年的客户数据,总结 、 分析并提出新的电话收费和管理办法,制定既有利于公司又有利于客户的优惠政策。这样一来,就把人们对数据的应用,从低层次的末端查询操作,提高到为各级经营决策者提供决策支持。这种需求驱动力比数据库查询更为强大。

2 数据挖掘的功能

数据挖掘通过预测未来趋势及行为,做出前摄的 、 基于知识的决策。数据挖掘的目标是从数据库中发现隐含的 、 有意义的知识,主要有以下五类功能。

前摄行为(Proactive Behavior),就是遭遇困境时,反过来控制局面,而不被局面所牵制。 前摄的思想与行为行动(前一活动中的因素对后一活动造成影响的);具有前瞻性的,采取先行一步的;积极主动的行为使得局面立刻被控制。

(1)自动预测趋势和行为数据挖掘

自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其他可预测的问题包括预报破产及认定对指定事件最可能做出反应的群体。

(2)关联分析

数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联 、 时序关联 、 因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。

(3)聚类

聚类数据库中的记录可被划分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括传统的模式识别方法和数学分类学 。20 世纪 80 年代初, Mchalski 提出了概念聚类技术及其要点,即在划分对象时不仅要考虑对象之间的距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。

(4)概念描述

概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性。生成区别性描述的方法很多,如决策树方法 、 遗传算法等。

(5)偏差检测

检测数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。偏差包括很多潜在的知识,如分类中的反常实例 、 不满足规则的特例 、 观测结果与模型预测值的偏差 、 量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。

3 数据挖掘常用技术

常见和应用最广泛的数据挖掘方法有 :

  1. 决策树。利用信息论中的互信息 ( 信息增益 ) 寻找数据库中具有最大信息量的属性,建立决策树的一个结点,再根据该属性的不同取值建设树的分支 : 在每个分支子集中重复建立树的下层结点和分支的过程。国际上最早的 、 也是最有影响的决策树方法是 Qiulan 研究的 ID3 方法。
  2. 神经网络。模拟人脑神经元结构,完成类似统计学中的判别 、 回归 、 聚类等功能,是一种非线性的模型,主要有3种神经网络模型,分别是前馈式网络 、 反馈式网络和自组织网络。人工神经网络最大的长处是可以自动地从数据中学习,形成知识,这些知识有些是我们过去未曾发现的,因此它具有较强的创新性。神经网络的知识体现在网络连接的权值上,神经网络的学习主要表现在神经网络权值的逐步计算上。
  3. 遗传算法。模拟生物进化过程的算法,它由3个基本过程组成,分别是繁殖 ( 选择 ) 、 交叉 ( 重组 ) 、 变异 ( 突变 ) 。采用遗传算法可以产生优良的后代,经过若干代的遗传,将得到满足要求的后代即问题得解。
  4. 关联规则挖掘算法。关联规则是描述数据之间存在关系的规则,一般分为两个步骤 : 首先求出大数据项集,然后用大数据项集产生关联规则。

除了上述的常用方法外,还有粗集方法 、 模糊集合方法 、 最邻近算法等。无论采用哪种方法完成数据挖掘,从功能上可以将数据挖掘的分析方法划分为6种,即关联分析 、 序列分析 、 分类 、 预测 、 聚类分析及时间序列分析等。

(1)关联分析

关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。关联分析的重点在于快速发现那些有实用价值的关联发生的事件。其主要依据是事件发生的概率和条件概率应该符合一定的统计意义。

对于结构化的数据,以客户的购买习惯数据为例,利用关联分析,可以发现客户的关联购买需要。例如,一个开设储蓄账户的客户很可能同时进行债券交易和股票交易,购买纸尿裤的男顾客经常同时购买啤酒等。利用这种知识可以采取积极的营销策略,扩展客户购买的产品范围,吸引更多的客户。通过调整商品的布局便于顾客买到经常同时购买的商品,或者通过降低一种商品的价格来促进另一种商品的销售等。

对于非结构化的数据,以空间数据为例,利用关联分析,可以发现地理位置的关联性。例如, 85% 的靠近高速公路的大城镇与水相邻,或者发现通常与高尔夫球场相邻的对象等。

(2)序列分析

序列分析技术主要用于发现一定时间间隔内接连发生的事件。这些事件构成一个序列,发现的序列应该具有普遍意义,其依据除了统计上的概率之外,还要加上时间的约束。

(3)分类分析

分类分析通过分析具有类别的样本的特点,得到决定样本属于各种类别的规则或方法。利用这些规则和方法对未知类别的样本分类时应该具有一定的准确度。其主要方法有基于统计学的贝叶斯方法 、 神经网络方法 、 决策树方法及支持向量机( supportvectormachines )等。

利用分类技术,可以根据顾客的消费水平和基本特征对顾客进行分类,找出对商家有较大利益贡献的重要客户的特征,通过对其进行个性化服务,提高他们的忠诚度。

利用分类技术,可以将大量的半结构化的文本数据,如 WEB 页面 、 电子邮件等进行分类。可以将图片进行分类,例如,根据已有图片的特点和类别,可以判定一幅图片属于何种类型的规则。对于空间数据,也可以进行分类分析,例如,可以根据房屋的地理位置决定房屋的档次。

(4)聚类分析

聚类分析是根据物以类聚的原理,将本身没有类别的样本聚集成不同的组,并且对每一个这样的组进行描述的过程。其主要依据是聚到同一个组中的样本应该彼此相似,而属于不同组的样本应该足够不相似。

仍以客户关系管理为例,利用聚类技术,根据客户的个人特征及消费数据,可以将客户群体进行细分。例如,可以得到这样的一个消费群体:女性占 91% ,全部无子女 、 年龄在 31 岁到 40 岁占 70% ,高消费级别的占 64% ,买过针织品的占 91% ,买过厨房用品的占 89% ,买过园艺用品的占 79%。 针对不同的客户群,可以实施不同的营销和服务方式,从而提高客户的满意度。

对于空间数据,根据地理位置及障碍物的存在情况可以自动进行区域划分。例如,根据分布在不同地理位置的 ATM 机的情况将居民进行区域划分,根据这一信息,可以有效地进行 ATM 机的设置规划,避免浪费,同时也避免失掉每一个商机。

对于文本数据,利用聚类技术可以根据文档的内容自动划分类别,从而便于文本的检索。

(5)预测

预测与分类类似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程,而分类则只是用于判别样本所属的离散类别而已。预测常用的技术是回归分析。

(6)时间序列

分析时间序列分析的是随时间而变化的事件序列,目的是预测未来发展趋势,或者寻找相似发展模式或者是发现周期性发展规律。

4 数据挖掘的流程

数据挖掘是指一个完整的过程,该过程从大型数据库中挖掘先前未知的,有效的,可实用的信息,并使用这些信息做出决策或丰富知识。

数据挖掘环境示意图如图 1 所示。

系统架构设计笔记(13)—— 数据挖掘_第1张图片

(1)问题定义

问题定义在开始数据挖掘之前,最先的也是最重要的要求就是熟悉背景知识,弄清用户的需求。缺少了背景知识,就不能明确定义要解决的问题,就不能为挖掘准备优质的数据,也很难正确地解释得到的结果。要想充分发挥数据挖掘的价值,必须对目标有一个清晰明确的定义,即决定到底想干什么。

(2)建立数据挖掘库

要进行数据挖掘必须收集要挖掘的数据资源。一般建议把要挖掘的数据都收集到一个数据库中,而不是采用原有的数据库或数据仓库。这是因为大部分情况下需要修改要挖掘的数据,而且还会遇到采用外部数据的情况;另外,数据挖掘还要对数据进行各种纷繁复杂的统计分析,而数据仓库可能不支持这些数据结构。

(3)分析数据

分析数据就是通常所进行的对数据深入调查的过程。从数据集中找出规律和趋势,用聚类分析区分类别,最终要达到的目的就是搞清楚多因素相互影响的 、 十分复杂的关系,发现因素之间的相关性。

(4)调整数据

通过上述步骤的操作,对数据的状态和趋势有了进一步的了解,这时要尽可能对问题解决的要求能进一步明确化 、 进一步量化。针对问题的需求对数据进行增删,按照对整个数据挖掘过程的新认识组合或生成一个新的变量,以体现对状态的有效描述。

(5)模型化

在问题进一步明确,数据结构和内容进一步调整的基础上,就可以建立形成知识的模型。这一步是数据挖掘的核心环节,一般运用神经网络 、 决策树 、 数理统计 、 时间序列分析等方法来建立模型。

(6)评价和解释

上面得到的模式模型,有可能是没有实际意义或没有实用价值的,也有可能是其不能准确反映数据的真实意义,甚至在某些情况下是与事实相反的,因此需要评估,确定哪些是有效的 、 有用的模式。评估的一种办法是直接使用原先建立的挖掘数据库中的数据来进行检验,另一种办法是另找一批数据并对其进行检验,再一种办法是在实际运行的环境中取出新鲜数据进行检验。


数据挖掘过程的分步实现,不同的步骤需要不同专长的人员,他们大体可以分为三类。

  1. 业务分析人员。要求精通业务,能够解释业务对象,并根据各业务对象确定出用于数据定义和挖掘算法的业务需求。
  2. 数据分析人员。精通数据分析技术,并较熟练地掌握统计学,有能力把业务需求转化为数据挖掘的各步操作,并为每步操作选择合适的技术。
  3. 数据管理人员。精通数据管理技术,并从数据库或数据仓库中收集数据。由上可见,数据挖掘是一个多种专家合作的过程,也是一个在资金上和技术上高投入的过程。这一过程要反复进行,在反复过程中,不断地趋近事物的本质,不断地优选问题的解决方案。

你可能感兴趣的:(系统架构设计)