49、面向对象查询语言的数据挖掘扩展及变量注解约束

面向对象查询语言的数据挖掘扩展及变量注解约束

1. OOQL扩展与数据挖掘

OOQL主要用于数据检索,但知识本质上也是一种数据。挖掘出的知识由存储在面向对象数据库(OODB)中的元数据描述,因此知识可以像“普通”数据一样处理。从这个角度看,将知识发现融入数据检索,即给OOQL扩展数据挖掘能力,并非难事。

要实现这种扩展,有一些常见需求。首先是向OODB添加规则元数据定义。扩展OOQL本身,就是为其添加能执行数据挖掘的新结构,比如可以引入类似SQL语言中SELECT语句的MINE命令,用于从数据库中检索数据。

不过,添加这个新命令可能会遇到三个问题:
- 执行方式问题 :实际上这并非难题。OOQL结构和MINE命令都是从OODB检索数据,行为类似。唯一区别在于,OOQL直接将数据输出,而MINE命令会先分析数据、提取规则,再将规则输出。从OODB的角度看,处理方式并无问题。
- 输出问题 :OOQL产生数据,MINE命令产生知识。但如前文所述,知识在形式上与数据相似,因为二者都由元数据定义,且在形式上都被视为某些类的对象。所以,数据和知识的差异被消除,MINE命令内部的数据挖掘过程也不会造成困扰。
- 添加新元素问题 :OOQL通常有一些结构,如用户定义函数,可用于数据挖掘扩展。因此,添加MINE命令不会过于困难和牵强。而且,由于实际上是定义新的OOQL,需要新的解释器,所以修改或重写OOQL解释器是必要的,添加新结构也不会太繁重。

当然,MINE命令必须有一些参数,用于确定所需的规则类型、相关数据集以及数据挖掘算法的其他必要辅助组件,如各种阈值等。这些参数可以作为MINE命令的参数或原语输入。根据挖掘规则的数量和类型,可以只添加一个MINE命令,也可以为每种规则类型添加单独的命令。

添加MINE命令是可行的,且难度不大。但还有另外两个难题:一是选择或设计合适的数据挖掘算法来执行数据挖掘并生成所需知识;二是挖掘出的知识的呈现和利用。不过,本文未涉及这些任务。

一旦OOQL通过数据挖掘命令进行扩展,应用程序就可以像检索数据一样简单地从OODB获取知识。下面将通过两个面向对象的数据挖掘查询语言ODAMIL和DMOQL的示例,介绍上述原则。

2. DMOQL语言

DMOQL语言源于OQL语言,因此先简要介绍由ODMG组开发的这种面向对象查询语言。
- OQL语言 :ODMG - 93是基于现有SQL - 92、OMG和ANSI编程语言标准构建的参考标准,其中包括OQL(对象查询语言)。OQL是对SQL - 92查询语言的改编,并扩展了ODMG对象模型的所有特性。它支持在查询中调用操作、查询对象继承层次结构、调用对象间关系以及查询任意集合。OQL是一种类似SQL的声明性(非过程性)语言,为高效查询数据库对象提供了丰富的环境,包括用于对象集和结构的高级原语,同时保留了与SQL - 92 SELECT语法的兼容性。只要操作数符合类型系统,OQL中的运算符就可以自由组合,因为任何查询的结果都有属于ODMG类型模型的类型,因此可以再次进行查询。OQL提供了SQL - 92 SELECT语法的超集,这意味着大多数在关系数据库管理系统表上运行的SQL SELECT语句,在ODMG集合类上也能以相同的语法和语义运行。
- DMOQL语言语法 :DMOQL语言是作为面向对象查询语言OQL的扩展提出的。它设计得较为通用,可以补充用于挖掘任意类型的规则。本文设计了对基本规则类型(即关联、分类和序列规则)的挖掘,也可以指定数据挖掘算法的必要辅助组件,如各种阈值。在DMOQL语言设计中,利用了OQL语言的一个特性:OQL语言允许在查询中调用函数。因此,DMOQL语言定义了新函数MineRules。与从OODB检索数据的select语句类似,MineRules函数执行数据挖掘并从OODB提取知识。必要的附加信息通过MineRules函数的参数传递。

MineRules函数的定义使用了一种不太正式的BNF表示法:

query        ::= MineRules(RuleType, TargSet
[, Thresholds] [, RelatedAttrs])
RuleType     ::= ‘association’ | ‘sequential’ |
‘classification’
TargSet      ::= query
Thresholds   ::= set(ThrDef {, ThrDef})
ThrDef       ::= ThrID float_literal
ThrID        ::= ‘minsupp’ | ‘minconf’
RelatedAttrs ::= set(identifier)

MineRules函数有四个参数,具体描述如下:
|参数|描述|
|----|----|
|RuleType|确定挖掘规则的类型,具体值根据名称确定挖掘规则的类型。|
|TargSet|定义目标数据集,本质上是OQL语言中的子查询。子查询被评估,结果集合或对象集代表目标数据集,该数据集包含当前对数据挖掘感兴趣的数据,即用于分析和挖掘规则的相关数据。|
|Thresholds(可选)|包含特定阈值定义。如果该参数为空,则使用隐式阈值;否则,包含一组定义,每个定义设置一个阈值。有两种阈值类型,即最小支持度(由关键字minsupp确定)和最小置信度(由关键字minconf确定)。这意味着只有当规则的支持度和置信度大于给定的最小阈值时,才会将其作为知识放入MineRules函数的输出中。阈值本身以百分比输入,但写成0到1区间的数字。|
|RelatedAttr|包含用于对目标数据集进行分类的属性列表,仅在挖掘分类规则时输入。在这种情况下,目标数据集首先由分类算法处理,该算法根据输入的属性将数据集分类,然后执行合适的数据挖掘算法,为每个数据类别挖掘分类规则。|

3. ODAMIL语言

ODAMIL语言是作为面向对象查询语言Object Comprehensions的扩展提出的。它可以挖掘基本规则类型(即关联、分类和序列规则),也可以补充用于挖掘任意类型的规则。此外,还可以通过该语言指定数据挖掘算法的必要辅助组件,如各种阈值。

Object Comprehensions语言的查询输入方式类似于数学中集合的指定方式。例如,从集合S中所有奇数的平方集合可以这样输入:

{ x^2 | x ∈ S, Odd (x) }

下面是一个用该语言编写的查询示例:

Set[ s ‹ Student, s.address.city = „Prague“ | s]

这个查询返回Student类中所有居住在布拉格的学生的集合。

Object Comprehensions语言包含许多其他用于输入各种类型查询的结构,还允许使用可参数化的用户定义函数。这些函数处理OODB中的对象,并返回对象集合作为结果,因此可以作为子查询使用。

在ODAMIL语言设计中,利用了Object Comprehensions语言的这一特性,新定义了执行数据挖掘的MineRules函数。挖掘规则类型、目标数据集和其他信息通过该函数的参数输入。

MineRules函数的定义如下:

MineRules(RuleType: TRuleType; TargSet: Set Of Object;
Thresholds: Set Of TThreshold;
RelatedAttr: Set Of String) : Set Of Rule;

MineRules函数同样有四个参数,描述如下:
|参数|描述|
|----|----|
|RuleType|确定挖掘规则的类型,TRuleType类型定义为枚举类型: TRuleType = Enum(association, sequential, classification); ,具体值根据名称确定挖掘规则的类型。|
|TargSet|定义目标数据集,本质上是Object Comprehensions语言中的查询。查询被评估,结果对象集合代表目标数据集。|
|Thresholds|可以包含特定阈值定义。如果该参数为空,则使用隐式阈值;否则,包含一组记录,每个记录设置一个阈值。Thresholds参数的类型定义如下:
plaintext<br>TThreshold = Record<br> IDThreshold: Enum(minsupp, minconf);<br> Value: Real;<br>end;<br>
Attribute IDThreshold确定阈值类型,有最小支持度(由关键字minsupp确定)和最小置信度(由关键字minconf确定)两种类型。Value属性包含阈值本身,以百分比输入,但写成0到1区间的数字。|
|RelatedAttr|包含用于对目标数据集进行分类的属性列表,仅在挖掘分类规则时有意义,其他情况下为空且不相关。当挖掘分类规则时,目标数据集首先由分类算法处理,该算法根据输入的属性将数据集分类,然后执行合适的数据挖掘算法,为每个数据类别挖掘分类规则。|

下面是使用这两种语言进行查询的示例:

### 示例1
MineRules(‘association’, select * from Purchases where
total ≤ 100)
Set[ r ‹ MineRules(association, Set[ p ‹ Purchases,
p.total ≤ 100 | p], Set[], Set[]) | r]

这个查询返回从总价不超过100美元的购买数据中挖掘出的关联规则集合。在数据挖掘过程中使用隐式阈值。

### 示例2
MineRules(‘sequential’, select * from Purchases where
(date ≥ 1.1.1997) AND (date ≤ 31.12.1997),
set(minsupp 0.75, minconf 0.8))
Set[ r ‹ MineRules(sequential, Set[ p ‹ Purchases,
p.date ≥ 1.1.1997, p.date ≤ 31.12.1997  | p], Set
[Thr(minsupp, 0.75), Thr(minconf, 0.8)], Set[]) | r]

这个查询将从1997年的交易数据中挖掘序列模式。目标数据集是1997年的交易集合,设置的阈值为最小支持度75%,最小置信度80%。

### 示例3
MineRules(‘classification’, select * from Purchases
where(date ≥ 1.1.1997) AND (date ≤ 31.12.1997),
Set[‘Customer.Spending’])
Set[ r ‹ MineRules(classification, Set[ p ‹ Purchases,
p.date ≥ 1.1.1997, p.date ≤ 31.12.1997 | p], Set[],
Set[‘Customer.Spending’]) | r]

这个查询将使用隐式阈值从1997年的交易数据中挖掘分类规则。目标数据集将根据客户消费情况进行划分,然后为每个类别挖掘分类规则,这些信息可能对营销等有用。

4. 变量注解的约束及约束层次结构

在处理过约束问题时,通常会给单个约束赋予一些偏好或权重,并将解决方案定义为使约束违反最小化的赋值。然而,有些过约束问题中的变量存在部分甚至完全的顺序关系,给变量分配偏好可能比人为定义约束偏好更自然。

这里介绍一种新的约束求解环境,其中偏好(或注解)被分配给单个变量,而不是约束本身。而且,注解是局部于变量出现的,即任何变量在不同约束中可能有不同的注解(实际上,同一约束中的不同出现也允许有不同注解)。

变量注解适用于一些应用领域,如规划或调度。在变量有自身偏好的应用中,使用这种注解很有优势,因为可以直接应用这些偏好,而无需为单个约束创建不自然的偏好。经典的示例是排课问题,其中变量代表教师(系主任、教授、助教等)、教室(使用频率高低不同)和不同的学生群体。例如,教授的讲座应该比助教的讲座更受青睐。

下面通过一个小例子说明变量偏好的含义。假设有一个讲座L和它的实践P,实践最好在讲座至少一天后进行。可以用以下约束表示教授的讲座比助教的实践更受青睐:

L@strong + 1 #=< P@medium
% c1

还有两个较弱的约束:讲座必须在周四或周五进行,实践在周一到周四进行:

L@weak in 4..5
% c2
P@weak in 1..4
% c3

这些约束形成一种层次结构:具有最高偏好的约束c1必须首先满足,然后再尝试满足约束c2和c3。可以满足c1,但不能同时满足c2和c3。约束c2影响具有较高注解的变量(从c1可以看出),因此该约束也会被满足。然后,为了最小化总体约束违反,得到(某种程度上的)最优解L = 4,P = 5。而在经典层次结构中,若c1用strong或medium注解,会得到解L = 3,P = 4,但从这里的角度看,这个解不是最优的。对讲座和实践的不同要求必须通过给c2和c3分配不同的偏好来表示,因此需要对这些约束进行排序,但在更复杂的问题中,这可能会出错,而且在这种情况下,找到这两个合适约束的确切位置也不容易。

5. 带变量注解的约束系统

带变量注解的约束系统源于标准约束满足。与其他解决过约束问题的框架一样,应用一个误差函数e(cθ)来表示约束c对于赋值θ的满足程度。这个误差函数可以是简单的(e(cθ) = 0/1表示约束满足/不满足),也可以使用域的度量来定义。

约束系统通过约束中的变量注解进行扩展,每个约束中的每个变量都有一个从注解集确定的特殊注解:a : C × V → A。还有一个用于计算全局注解的函数⊛:
- 全局变量注解av : V → A,av(v) = ⊛{c∈C | v∈var(c)} a(c, v)
- 约束注解ac : C → A,ac(c) = ⊛{v∈var(c)} a(c, v)
- 全局约束注解acv : C → A,acv(c) = ⊛{v∈var(c)} av(v)

其中,var(c)是约束c的变量集合。

6. 带全局比较器的层次结构

本节描述了带变量注解的约束与带全局比较器的约束层次结构之间的对应关系。层次结构是基于约束注解ac构建的,每个级别内还会受到全局约束注解acv的额外顺序影响。

graph LR
    A[OOQL扩展] --> B[添加MINE命令]
    B --> C[可能遇到的问题]
    C --> C1[执行方式问题]
    C --> C2[输出问题]
    C --> C3[添加新元素问题]
    B --> D[MineRules函数]
    D --> D1[DMOQL语言]
    D --> D2[ODAMIL语言]
    E[变量注解约束] --> F[应用场景]
    E --> G[约束系统扩展]
    G --> H[全局注解计算]
    H --> H1[全局变量注解]
    H --> H2[约束注解]
    H --> H3[全局约束注解]
    E --> I[与约束层次结构对应]

综上所述,数据挖掘和知识发现是非常重要的研究和发展领域,特别是在面向对象数据库(OODB)或演绎面向对象数据库(DOOD)等新型数据库系统环境中。这些数据库系统能够存储大量数据,并涉及数据的结构和相互关系,这些特性可成功应用于数据挖掘。随着该领域的快速发展,对数据挖掘查询语言的需求日益增加,它能够简单、统一地输入各种数据挖掘任务,并作为应用程序和数据挖掘系统之间的标准接口。本文介绍了扩展OOQL数据挖掘能力的一般条件和工具,以及面向对象的数据挖掘查询语言ODAMIL和DMOQL的设计,这些语言可用于OODB中的有效数据挖掘。未来的研究可能会继续开发用于OODB数据挖掘的新有效算法,并将DOOD作为处理数据和知识的先进工具,数据挖掘与DOOD环境的集成是一个非常有趣和重要的领域。同时,变量注解在约束求解中的应用也为解决一些复杂问题提供了新的思路和方法。

面向对象查询语言的数据挖掘扩展及变量注解约束

7. 变量注解与约束层次结构的深入分析

在带变量注解的约束系统中,变量注解的引入为解决过约束问题提供了新的视角。前面提到,变量注解可用于表达变量的偏好,从而在求解过程中选择更优的解决方案。下面进一步探讨变量注解与约束层次结构之间的关系。

7.1 局部比较器的作用

为了解决带变量注解的约束问题,提出了一种新的局部比较器用于约束层次结构。这个新的局部比较器与标准的局部更好比较器之间存在一定的关系。标准的局部比较器通常基于约束的违反程度来判断解的优劣,而新的局部比较器则考虑了变量注解所表达的偏好。

例如,在前面的排课问题中,新的局部比较器会优先考虑满足具有较高注解变量的约束。在约束 L@strong + 1 #=< P@medium 中,由于 L 具有 strong 注解,因此在求解过程中会更倾向于满足这个约束,以确保教授的讲座安排得到优先保障。

7.2 全局比较器与层次结构的构建

约束层次结构是基于约束注解 ac 构建的,并且在每个级别内受到全局约束注解 acv 的额外顺序影响。这意味着在求解过程中,首先会根据约束注解的层次来确定约束的优先级,然后在同一层次内,再根据全局约束注解进一步细化优先级。

例如,在前面的三个约束 c1 c2 c3 中, c1 具有最高的偏好,因此会首先被考虑。在满足 c1 的基础上,再考虑 c2 c3 。而在考虑 c2 c3 时,由于它们的注解相对较弱,并且受到全局约束注解的影响,会根据具体情况进行权衡。

8. 变量注解约束的求解流程

带变量注解的约束问题的求解可以按照以下流程进行:
1. 输入约束和变量注解 :将问题中的约束和变量注解输入到求解系统中。例如,在排课问题中,输入 L@strong + 1 #=< P@medium L@weak in 4..5 P@weak in 1..4 等约束。
2. 计算全局注解 :根据变量注解和约束,计算全局变量注解 av 、约束注解 ac 和全局约束注解 acv 。例如,对于每个变量和约束,按照前面提到的公式进行计算。
3. 构建约束层次结构 :基于约束注解 ac 构建约束层次结构,并在每个级别内根据全局约束注解 acv 进行排序。
4. 选择局部比较器 :选择合适的局部比较器,如前面提到的新的局部比较器,用于在求解过程中判断解的优劣。
5. 求解约束问题 :使用选择的局部比较器,按照约束层次结构的优先级,逐步求解约束问题,直到找到最优解或满足特定条件的解。

graph TD
    A[输入约束和变量注解] --> B[计算全局注解]
    B --> C[构建约束层次结构]
    C --> D[选择局部比较器]
    D --> E[求解约束问题]
9. 数据挖掘扩展在实际应用中的优势

将数据挖掘能力扩展到面向对象查询语言(OOQL),如通过引入 MineRules 函数,在实际应用中具有以下优势:
|优势|描述|
|----|----|
|简单统一的接口|提供了一种简单、统一的方式来输入各种数据挖掘任务。无论是关联规则挖掘、序列模式挖掘还是分类规则挖掘,都可以通过 MineRules 函数的不同参数设置来实现。|
|与现有系统的兼容性|由于是在 OOQL 的基础上进行扩展,因此可以与现有的面向对象数据库系统兼容。这意味着可以在不改变现有数据库架构的情况下,直接使用扩展后的查询语言进行数据挖掘。|
|灵活的参数设置| MineRules 函数的参数设置非常灵活,可以根据具体的需求指定挖掘规则的类型、目标数据集、阈值等。例如,在挖掘关联规则时,可以设置最小支持度和最小置信度阈值,以控制挖掘结果的质量。|

10. 未来发展方向

随着数据挖掘和数据库技术的不断发展,面向对象查询语言的数据挖掘扩展以及变量注解约束的应用还有很大的发展空间。以下是一些可能的未来发展方向:
- 开发更高效的数据挖掘算法 :不断探索和开发更高效的数据挖掘算法,以提高在面向对象数据库中进行数据挖掘的性能。例如,针对大规模数据集的挖掘算法优化,以及针对特定类型规则挖掘的算法改进。
- 集成更多的数据库系统 :将数据挖掘扩展应用到更多类型的数据库系统中,如演绎面向对象数据库(DOOD)、分布式数据库等。通过集成不同类型的数据库系统,可以更好地处理复杂的数据和知识。
- 拓展变量注解的应用领域 :进一步拓展变量注解在约束求解中的应用领域,除了排课问题,还可以应用到资源分配、项目调度等更多领域。通过不断探索新的应用场景,可以更好地发挥变量注解的优势。

总之,面向对象查询语言的数据挖掘扩展和变量注解约束的应用为数据挖掘和约束求解领域带来了新的思路和方法。通过合理利用这些技术,可以更高效地处理数据和解决复杂的问题,为实际应用提供更好的支持。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值