数据挖掘 是一个这样的过程,即向数据应用算法以揭露匹配给定上下文或查询的模式。多年来,一些组织使用数据挖掘来分析海量数据,以便能够预测行为、生成有用的报告、赢得竞争,等等。
跨 web 的非结构化和半结构化数据的暴增,促进了对智能化数据挖掘、存储和处理的需求。复杂性不断提升的大型数据集已经将传统的数据挖掘技术推向新层次的处理要求。从 web 挖掘数据需要向通常最多只不过以半结构化格式呈现的信息应用结构。
数据挖掘旨在使用统计方法、人工智能和标准的数据库管理技术等等,从大型数据集中抽取模式。
随着存储容量和处理能力的提高,以及设备连接能力的普及,数据挖掘的重要性变得更为凸显。组织试图在将海量数据转换成有价值的业务知识时获得竞争优势。这种知识带来科学、市场营销、防骗、监视以及其他领域的优势和好处。通过数据挖掘认识到的益处是,激起了对更有效的数据挖掘技能、技术和解决方案的需求。有效的解决方案涉及到优化的技能和技术,以抽取、过滤和转换数据。然后,转换后的数据被变得可使用于广泛的 web 服务、消息系统等等之中。
数据挖掘通常涉及到一些标准的任务,包括聚集、分类、回归分析和关联性规则学习。
聚集(Clustering)在数据挖掘上下文中是指,试图揭露嵌入在非结构化和半结构化数据中的类似的数据子组(集群)。表 1 列出并描述了一些典型类型的数据挖掘聚集。
表 1. 表 1. 典型类型的数据挖掘聚集
| 聚集类型 | 说明 |
|---|---|
| Grid-based | 使用阈值来揭露数据矩阵或 “单元”(它们组合起来形成集群) |
| Hierarchical | 涉及到使用以前检测到的集群生成一个由大大小小的集群组成的集群层次结构,找到后续的数据组或集群 |
| Locality or distance-based | 涉及到基于虚拟或物理位置揭露数据集群的方法 |
| Partitional | 递归地将数据对象分成固定数量的集群 |
分类(Classification)旨在根据一种预先确定的类别或组织方式(比如高度、颜色等)来归类数据。分类最常见的用途之一是,识别垃圾邮件与有用邮件。
数据挖掘中的回归分析(Regression)是一种统计方法,旨在做出数据的某些预言。例如,可以根据地理位置、卧室间数、面积、朝向等,预言房屋的价值。使用大量的数据总结出公式,并应用于后续的数据,以做出预言。回归分析常用于天气预报。
关联性规则学习(Association rule learning)搜寻数据对象之间的关系,以做出预言、定位产品,等等。例如,杂货店可以通过总结出 “客户每当购买热狗、面包和木炭时,通常还会买一次性盘子”,使用关联性规则学习来预言客户购买习惯。
XML 是一种基于文本的标记语言,您可以用来以各种不同的方言组织数据。XML 方言通常由您可以从外部引用的模式或者嵌入在 XML 文档中的模式进行定义。大多数优秀的编程语言都对操纵 XML 文档提供某些形式的支持。
XML 是 Standard Generalized Markup Language (SGML) 的一个子集,被设计来提供关于某个给定 XML 文档的内容的元信息(meta-information)。XML 以纯文本格式存储硬件或软件独立的数据。这些属性使得 XML 成为最常见的格式之一,用于跨 web 上的应用程序和系统进行通信和信息共享。
XML 的方言相当广泛地用于数据挖掘目的。表 2 列出并描述了数据挖掘中使用的一些比较常见的方言。
表 2. 表 2. 用于数据挖掘的 XML 方言
| 方言 | 说明 |
|---|---|
| CWM-DM | Common Warehouse Model for Data Mining (CWM-DM) 规范旨在定义数据挖掘元数据,比如模型描述、算法设置和属性。CWM-DM 模型是使用 Unified Modeling Language (UML) 工具和应用程序生成的 XML 文档。 |
| PMML | Predictive Model Markup Language (PMML) 是一种 XML 方言,用于定义可在顺应 PMML 的服务和应用程序之间共享的统计和数据挖掘模型。PMML 允许各种服务和应用程序以标准方式操纵数据挖掘模型。PMML 文档由诸如头部、数据词典、数据转换映射、模型定义、挖掘模式、后期处理目标和输出字段之类的条目组成。 |
| XMLA | XML for Analysis (XMLA) 规范定义这样的 XML 接口,它们通过两种方法(即发现和执行),使用 SOAP 来提供对来自不同来源的分析数据的访问。XMLA 明确地用于数据挖掘和在线分析处理 (OLAP)。 |
| XPath | XML Path Language (XPath) 是一种用于引用 XML 文档中元素和数据的常见机制。它与用于导航文件系统层次结构的机制有些类似。 |
| XQL | XML Query Language (XQL) 是一种专门设计用于 XML 数据的查询语言,类似于将 Structured Query Language (SQL) 用作关系数据的查询语言。 |
半结构化数据是指带有某些形式的结构但是结构还不足以完美地适合关系模型的数据。半结构化数据一般包含标记或其他元素,以从语义上分隔那些隐含了关于相关数据的一些详细信息的相关元素。HTML 表示一种常见形式的半结构化数据。半结构化数据(主要是 HTML 形式的)正在开创从 web 挖掘数据的新局面。
XML 能够表示表格数据和层次数据。XML 也富含嵌入式元数据和其他描述性实体,比如模式和 Document Type Definition (DTD)。XML 可以将数据表示为简单的结构,或者表示为复杂而详细的结构。这些属性使得 XML 方言成为表示半结构化数据的主要词汇表。
XML 总是强迫服务或应用程序向数据应用结构。这一事实导致数据挖掘机制对正在被处理的数据隐含了一些语义,以便定义一个有用的数据模型。使用 XML 方言作为数据格式的数据设计人员能够全面控制数据的语义模型定义。
XML 也向服务和应用程序提供足够的公共属性,以方便对来自各种编程语言和环境的数据的一般访问。这种访问能够让程序员或用户主要关注数据操纵和消费,而不用关注操纵和消费数据所需的算法和编程工作。
将半结构化数据表示为基于 XML 的文档需要一个健壮的数据挖掘系统来支持 XML 消费、操纵和输出。这一需要导致数据挖掘系统以公共的方式操作数据。
用 XML 表示的半结构化数据可以理解为,一个带标签的、包含一个根顶点的方向图。基于 XML 的图形的边、叶子和其他节点可以用文本进行标注。图形中的每个节点也可由独特的识别器定义。
考虑 清单 1 中的示例 XML 文档,它表示一个家族图。
清单 1. 清单 1. 一个示例 XML 文档
<filmography>
<director name="Scorsese">
<year>
2002
<film>
<title>Deuces Wild</title>
</film>
</year>
<year>
2003
<film>
<title>The Soul of a Man</title>
</film>
<film>
<title>The Blues</title>
</film>
</year>
</director>
</filmography>
|
您可以将 清单 1 中的 XML 文档图解为 图 1 中所示的图形。
图 1. 图 1. XML 文档的方向图
基于 XML 的查询语言被构造来,使用表示路径的边标签和定界符序列达到 XML 文档图中的任意位置。
清单 2 展示了 图 1 XML 图形中 Deuces Wild 节点的路径表达式(或者叫做 XPath 表达式)。此路径开始于根标签。
清单 2. 清单 2. 一个 XPath 表达式
/filmography/director[@name="Scorsese"]/year[0]/film/title/text() |
要避免 XML 文档中的歧义,可以使用数据来自的上下文。例如,如果一个人搜索姓 White 的导演,并且 XML 文档中包含一部名为 White 的影片,那么相对于 XPath 表达式 /filmography/director[@name="White"]/year[1]/film[0]/title/text() 来说,由 XPath 表达式 /filmography/director[@name="White"]@name 定义的上下文消除了歧义。
从半结构化数据源(比如 web 上的 HTML 文档)抽取信息通常需要过滤、转换和抽取数据。要将 HTML
文档更改为结构化形式,可以将它转换成 Extensible Hypertext Markup Language (XHTML) 文档。这通常涉及到一个过滤过程,过程中包含逻辑来按标记名称成组相关的节点、删除被禁止的条目(比如,不受支持的标记和属性,以及其他内容)。下一步是,通过声明单个 html 根元素、将标记元素和属性名称转换成小写、给所有开始标记添加结束标记、给 img 标记添加 alt 属性等等,转换已过滤的文档。
使用以前描述的过滤/转换/抽取过程,您可以将 web 看作一个大型的基于 XML 的数据存储。因此,您可以使用针对 XML 的查询语言(比如 XQuery),促进从 web 抽取数据。
要使用 XQuery 从 XHTML 文档抽取和使用数据,您可以编写一个查询来定位文档中的内容,需要时要创建新的 XML 结构,还可以可选地创建新的 XML 文档。定位文档中的数据是一个使用 XPath 进行模式匹配的过程。
清单 3 中的 XQuery 演示了一个简单的 XQuery 表达式,用于返回从 清单 1 中的 XML 文档查询到的自 2002 年至今的电影片名。
清单 3. 清单 3. 一个 XQuery 表达式,用于定位所有的
film 节点
for $x in doc("www.example.com/films.xml")/filmography/director
where $x/year="2002"
return $x/year/film/title
|
注意,在结果的消费者需要时,您可以利用 XML 标记、属性和其他标签对从 XQuery 文档返回的结果进行注释。例如,请注意 清单 4 中的代码片段。
清单 4. 清单 4. 一个加了注释的 XQuery 结果
for $x in doc("www.example.com/films.xml")/filmography/director
return
<director name="{$x[@id]}">
<other_data>...</other annotated data>
</director>
|
在 清单 4 中,从 XQuery 代码返回的结果被注释为一个带有从查询返回的数据的 XML 段落。
XQuery 的一个特性是,能够指出您可以向其应用查询的特定文档。您可以增强 XQuery 中的 XPath 表达式 /filmography/director[@name="White"]@name,以便像下面这个 XQuery 表达式中一样,应用于一个特定的文档:
doc("www.example.com/films.xml")/filmography/director[@name="White"]@name
|
您可以使用各种 XQuery 构造向 XML 数据应用相似度监测,以便按共同元素(比如作者名、数据来源,等等)找到数据。更复杂的方法,比如 频率加权和频率归一化,超出了本文范畴。
正如前面所提到的,XML 文档的结构是一个嵌套层次树的代表,树中带有很多不同类型的节点,比如元素、实体引用、注释,等等。文档只可以有一个根节点,这是文档中的第一个节点。
关系数据库由一组表组成,包含一组记录或行。记录或行包含一组包含了数据的字段或列。一个给定表中的所有行具有相同数量的列。因此,可以将关系数据库建模为由一个数据库节点组成的层次化 XML 结构,这个数据库节点包含一组表节点,表节点又包含一组行节点,行节点又包含一组列节点。
您可以将一个由一个包含一行的表 (director) 组成的关系数据库 (filmography) 建模为 XML 文档,如 清单 5 中所示。
清单 5. 清单 5. 一个数据库的 XML 表示
<filmography>
<director>
<row>
<name>Scorsese</name>
<year>
2002
<film>
<title>Deuces Wild</title>
</film>
</year>
<year>
2003
<film>
<title>The Soul of a Man</title>
</film>
<film>
<title>The Blues</title>
</film>
</year>
</row>
</director>
</filmography>
|
注意,按键值相关的表可以嵌套,如 清单 5 中所示,或者由嵌入在文档中的链接引用为相关表名称上的属性。
从数据挖掘查询返回的 XML 数据的消费者通常只对自上次查询以来发生的数据变化感兴趣。这一挑战的解决方案几乎总是围绕 “存储/索引/diff” 过程来实现。在这一过程中,XML 数据被抽取并存储。然后,数据被使用诸如 XML 模式表达式索引、B-树结构索引、结构索引、内容或关键字索引之类技术以及其他技术进行索引。 在 XML 数据被索引之后,您可以在后续的搜索中快速地查询,以访问将用在 diff 过程中的数据。diff 过程产生一个您可以与当前数据进行对比的数据变化量。
变化监测对于识别数据模式中您用于未来分析和预言的数据变化是有益的。
数据挖掘过程向数据应用算法,以揭露匹配某个给定上下文或查询的模式。组织使用数据挖掘来分析海量数据,以产生富有含义的报告,帮助预言行为、赢得竞争,等等。
web 上和内部数据存储中非结构化和半结构化数据量的爆炸式增长,促进了对对智能且高效的数据挖掘的需求。大型、复杂的数据集将传统的数据挖掘技术推向新层次的处理要求。从当今的输出存储中挖掘数据,要求处理程序试图从通常是完全非结构化的或者最多是半结构化的数据,创建结构化的数据。
在本文中,您复习了 XML 在数据挖掘中的用途和作用,包括模式匹配、变化监测、相似度搜索和监测、数据注释和语义。还简单了解了关于在数据挖掘上下文中使用 XML 的现有标准。
学习
- 基于 Web 的数据挖掘(Jussi Myllymaki 和 Jared Jackson,developerWorks,2001 年 6 月):学习利用 HTML、XML 和 Java™ 技术自动抽取信息。
- XPath 入门(Bertrand Portier,developerWorks,2004 年 5 月):介绍 XML Path Language(或 XPath)的基本知识。
- Process XML using XQuery(Nicholas Chase,developerWorks,2007 年 5 月):学习利用 XQuery 1.0 更加轻松、自然地搜索 XML 数据。
- How XQuery extends XPath(Donnie Cameron,developerWorks,2008 年 4 月):发现在 XQuery 中可以而在 XPath 中不可以做到的事情。
- 用 WEKA 进行数据挖掘,第 1 部分:简介和回归(Michael Abernethy,developerWorks,2010 年 4 月):认识开源数据挖掘软件,了解一些最常见的解释数据的技术。
- 用 WEKA 进行数据挖掘,第 2 部分:分类和群集(Michael Abernethy,developerWorks,2010 年 5 月):探究两种常见的数据挖掘方法 — 分类和聚集— 您可以使用它们来对数据进行更多强大的分析。
- 用 WEKA 进行数据挖掘,第 3 部分:最近邻和服务器端库(Michael Abernethy,developerWorks,2010 年 6 月):深入研究最近邻居数据挖掘技术。
- XML 新手入门获得学习 XML 所需的资源。
- More
articles by this author(Jeffrey Hanson,developerWorks,2006 年 6 月至今):阅读关于 mashup 安全性、社会媒体 API、REST 服务、框架、Apache Geronimo 和其他技术的文章。
- developerWorks 中国网站 XML 技术专区:在 XML 专区获取提高您的专业技能所需的资源。查看 XML 技术文档库,获得广泛的技术文章和技巧、教程、标准和 IBM 红皮书。
- IBM XML 认证:了解如何才能成为一名 IBM 认证的 XML 和相关技术的开发人员。
- developerWorks 技术活动 和 网络广播:随时关注这些活动中的技术。
- developerWorks 播客:收听面向软件开发人员的有趣访谈和讨论。
- developerWorks 演示中心:观看演示,包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
获得产品和技术
-
IBM 产品评估试用版软件:下载或 IBM SOA 人员沙箱,并开始使用来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
讨论
- XML 专区讨论论坛:参与任何一个 XML 相关讨论。
- 加入 developerWorks 中文社区:查看开发人员推动的博客、论坛、组和 wikis,并与其他 developerWorks 用户交流。
