论文部分内容阅读
摘要: 对数据同步过程中操作规范和故障处理作研究,报告数据库故障诊断的现状,提出基于CBR(Case-Based Reasoning)的一种调优算法。该算法具备机器学习能力,兼顾不同语言和表达顺序的影响,解决本领域案例匹配和案例聚类问题,并在此基础上完成原形系统的开发。
关键词: 相似度算法;故障诊断;案例推理;案例匹配
中图分类号:TP3文献标识码:A文章编号:1671-7597(2011)0110057-02
0 引言
数据库是现代商业信息系统的核心软件之一,其故障诊断效率将直接决定整个系统的可用时间。数据库软件与上、下游软件紧密关联,因此增添了故障排除的难度。
现有诊断系统或方法具有以下几点局限性:不是所有的数据库厂商都提供故障诊断系统,并且即使提供该类系统也存在响应慢、搜索方式死板、垃圾信息过多、排序不合理等问题。
因此,有必要探索一种在数据库故障诊断领域实现案例快速匹配,定时案例聚类的技术方案,并在此基础上形成一套完整的诊断系统雏形,最后通过不断完善提高该诊断系统的实用性。
1 数据同步故障推理检测模型
基于规则的推理方式RBR(rule based Reasoning),此过程是一种通过反复搜索制定规则并执行规则,最终得到问题求解的过程。
基于案例的推理(Case-Based Reasoning,简称CBR),是一种问题求解的人工智能方法,其通过搜索和匹配案例库中的类似案例,从而求解当前问题。Schank和Abelson在1977年所作的认知科学的研究被认为是案例推理理论的起源。[1]
CBR故障诊断方法的核心是使用之前或者外来的求解经验来处理现今遇到的问题,并且为新的故障诊断提供参考和依据,有助于提高处理速度。主要包括案例表示、案例检索、案例聚类、新增案例等主要步骤。如图1。
图1CBR故障诊断的工作流程
数据理解其中的关系就成为信息,信息理解其中的模型成为知识,知识理解其中的原理成为智慧。[2]所以可以这样理解,案例本身的描述就是数据,案例中的问题求解是信息,而一组案例聚类后对一类问题完整的解决就是知识,从知识中分析其原理就是智能。因此CBR中存放的是案例和知识两部分。
1.1 案例表示方法设计和案例库整理
1)表示方法设计
基于案例的推理首先要研究,如何把一个过去解决的问题转化为案例的形式,并且能在数据库中存储为由几个字段所组成的一条记录。使用如下形式描述:
{案例编号,案例的详细信息,案例属性1,案例属性2……}
对于数值型的特征值往往有界上(下)型,正态分布这样的方法计算相似度。
对于字符型的相似度计算,一般有确定的方法。下面专门分两个段落介绍。
2)案例库整理
知识的发现和归纳过程可以进一步提高效率;是此系统的后续补充和改进。需要指出,案例聚类可以通过现有的手段完成,但是案例内容的有效合并仍然需要通过人工提炼。
1.2 案例信息分类和描述方法设计
为了提高系统的扩展性,并在其他故障诊断中同样发挥作用,需要增加案例的分类属性。信息分类普遍采用树形结构,一个案例只能属于一个分类。本设计参照UNIX常用的用户组分类方式,一个案例同时拥有一个或多个组属性。
1.3 案例全文搜索模型
全文搜索的功能是案例匹配最简洁的方式。
1)ORACLE全文搜索介绍
ORACLETEXT完成全文搜索的主要过程:ORACLETEXT需要为可检索的数据项建立索引,用户才能够通过搜索查找内容,索引进程是根据通道建模的,在此通道中,原始数据经一系列的转变后,将其核心关键字加到索引中。[3]
2)全文搜索创建过程
① 确定数据库的ORACLETEXT功能包是否安装;② 创建一个全文搜索;③ 设置相关属性。创建基于多列的全文搜索索引。因为不断会有新的案例输入,所以要按照输入的频率和对性能的影响,设置合理的时间间隔,定期更新索引,优化索引。
1.4 相似案例发现及合并
1)文本的相似度算法
常用的方法有:Levenshtein Distance算法,余弦相似度算法,相同字符数占比算法等。[4]
混合相似度算法:将两种或者两种以上的算法组合使用,并设置相应的权值。此方法能协调不同相似度算法在不同领域的优势,方便动态调整权值。
首先将相似性算法分为两类,相似性与计算结果成正比的归为SI,相似性与计算结果成反比的归为DI。C1,C2两案例的混合相似度用以下公式表示:
其中SI,DI由以下公式决定:
2)对汉字和英文单词区分计算
英文字符的多少对结果的影响可能会非常大,因此要将中英文字符分开处理。例如:纯中文的相似度比较,该算法为替换字符串中所有的英文字符和特殊字符,剩余中文字符做相似性计算。
通过不同方式得到的目标字符串定义为C1i,C2i,因此公式(2),(3)修改为公式(4),(5)
3)案例中不同属性的相似度计算
一个案例设置了若干属性,两个案例的对应属性作相似性计算。
因此公式(4),(5)修改后得到如下公式(6),(7):
如表1,现有206个案例,根据2种算法,对应2个属性,通过2种字符串过滤方式得到前8列的中间结果,最后一列是根据公式(1),(6),(7)计算得到最终结果。
表1相似性计算的结果(部分)
4)相似案例和相同案例的阀值选取
只有确定阀值才能区分相似和非相似案例。数据仍然使用已经录入在数据库中的206个案例。过程设计如下:第一步、人工判定几组相似或者相同的案例作为参照;第二步、根据公式(1),(6),(7)计算结果;第三步、观察参照组计算值是否与其他有明显差异,若不能则调整参数后重复第二步,直至参照组相似度计算结果能有明显差异。因为计算结果之间的差异仍不够明显,所以用方差,放大差异。计算结果为0-10有4821组,计算结果超过300的有5组。与人工选定结果相符。
2 数据同步故障案例系统开发
系统开发从逻辑结构设计,硬件架构设计,数据库设计,核心功能开发等几个方面开展。其中逻辑结构主要考虑和现有系统整合,并且具有较好的可移植性。硬件架构主要考虑系统容量的扩展性。核心功能实现涉及上一章中几个算法的代码实现和程序本身的调优。
2.1 逻辑结构
图2系统逻辑结构图
2.2 数据库设计
该设计的核心是案例表的字段设置,除了常规的属性外,需要添加{关键字,专题分类,摘要,多重分类,错误代码},核心表设计如下:
案例表{案例ID,案例标题,案例关键字,案例添加人#,案例来源,案例时间,所属大分类ID#,所属小分类ID#,专题分类#,多重分类,错误码,解决方案}
相似性计算调整表{ROWID,案例ID1,案例ID2,相似性计算结果1,相似性计算结果2,相似性计算结果3,相似性计算结果4,相似性计算结果5,相似性计算结果6,相似性计算结果7,相似性计算结果8,综合相似度结果}
2.3 核心功能实现(代码略)
1)全文搜索功能的实现
此功能在PL/SQL Developer上开发。首先需要增加两个权限给案例分析系统的数据库账户。然后设置文本搜索的相关属性,增加全文索引。最后建两个定时任务分别维护索引和优化索引。
2)相似性计算及结果展示
相似性计算的过程是定时(暂定每天一次)循环嵌套两两计算案例之间的相似度。并把多种算法的中间结果保存,为参数调整和阀值优化提供依据。此存储过程使用PL/SQL Developer开发完成。
相似计算结果的使用和页面展示使用的开发工具是TOMCAT和ECLIPSE。
3)异步加载数据的实现
异步加载主要是通过EXTJS开发环境和JSON序列实现。图3为FIREFOX浏览器界面,上半部分为网页内容,下半部分是通过FIREBUG插件显示的查询结果序列。
图3异步加载实现
3 结论和展望
整个基于CBR的故障案例分析处理系统,具有较强实用性。全文搜索和案例间匹配、异步加载数据提高了用户体验。文中提出的混合相似算法具有较强的灵活性。在现有成果的基础上,还可以在以下几方面改进:基于用户前后两次搜索的结果优化;知识的发现功能;基于web的案例采集和导入方式;混合相似度算法的进一度参数调优。相信通过不断完善,不仅在现有领域,也将在多个工程技术领域发挥作用。
参考文献:
[1]Davies J,Goel A.k,Nersessian N J.Transfer in Visual Case-Based Problem Solving[C].
[2]Anon Intemational Conference on Case-Based Reasoning 2005.Berlin:Springer,2005.
[3]ORACLE TEXT concepts and administration release 2(10.2) . Part Number A96653-02.http://www.ORACLE.com.
[4]张华平、李恒训、刘治华,算法与启发式方法(第2版),人民邮电出版社.
关键词: 相似度算法;故障诊断;案例推理;案例匹配
中图分类号:TP3文献标识码:A文章编号:1671-7597(2011)0110057-02
0 引言
数据库是现代商业信息系统的核心软件之一,其故障诊断效率将直接决定整个系统的可用时间。数据库软件与上、下游软件紧密关联,因此增添了故障排除的难度。
现有诊断系统或方法具有以下几点局限性:不是所有的数据库厂商都提供故障诊断系统,并且即使提供该类系统也存在响应慢、搜索方式死板、垃圾信息过多、排序不合理等问题。
因此,有必要探索一种在数据库故障诊断领域实现案例快速匹配,定时案例聚类的技术方案,并在此基础上形成一套完整的诊断系统雏形,最后通过不断完善提高该诊断系统的实用性。
1 数据同步故障推理检测模型
基于规则的推理方式RBR(rule based Reasoning),此过程是一种通过反复搜索制定规则并执行规则,最终得到问题求解的过程。
基于案例的推理(Case-Based Reasoning,简称CBR),是一种问题求解的人工智能方法,其通过搜索和匹配案例库中的类似案例,从而求解当前问题。Schank和Abelson在1977年所作的认知科学的研究被认为是案例推理理论的起源。[1]
CBR故障诊断方法的核心是使用之前或者外来的求解经验来处理现今遇到的问题,并且为新的故障诊断提供参考和依据,有助于提高处理速度。主要包括案例表示、案例检索、案例聚类、新增案例等主要步骤。如图1。
图1CBR故障诊断的工作流程
数据理解其中的关系就成为信息,信息理解其中的模型成为知识,知识理解其中的原理成为智慧。[2]所以可以这样理解,案例本身的描述就是数据,案例中的问题求解是信息,而一组案例聚类后对一类问题完整的解决就是知识,从知识中分析其原理就是智能。因此CBR中存放的是案例和知识两部分。
1.1 案例表示方法设计和案例库整理
1)表示方法设计
基于案例的推理首先要研究,如何把一个过去解决的问题转化为案例的形式,并且能在数据库中存储为由几个字段所组成的一条记录。使用如下形式描述:
{案例编号,案例的详细信息,案例属性1,案例属性2……}
对于数值型的特征值往往有界上(下)型,正态分布这样的方法计算相似度。
对于字符型的相似度计算,一般有确定的方法。下面专门分两个段落介绍。
2)案例库整理
知识的发现和归纳过程可以进一步提高效率;是此系统的后续补充和改进。需要指出,案例聚类可以通过现有的手段完成,但是案例内容的有效合并仍然需要通过人工提炼。
1.2 案例信息分类和描述方法设计
为了提高系统的扩展性,并在其他故障诊断中同样发挥作用,需要增加案例的分类属性。信息分类普遍采用树形结构,一个案例只能属于一个分类。本设计参照UNIX常用的用户组分类方式,一个案例同时拥有一个或多个组属性。
1.3 案例全文搜索模型
全文搜索的功能是案例匹配最简洁的方式。
1)ORACLE全文搜索介绍
ORACLETEXT完成全文搜索的主要过程:ORACLETEXT需要为可检索的数据项建立索引,用户才能够通过搜索查找内容,索引进程是根据通道建模的,在此通道中,原始数据经一系列的转变后,将其核心关键字加到索引中。[3]
2)全文搜索创建过程
① 确定数据库的ORACLETEXT功能包是否安装;② 创建一个全文搜索;③ 设置相关属性。创建基于多列的全文搜索索引。因为不断会有新的案例输入,所以要按照输入的频率和对性能的影响,设置合理的时间间隔,定期更新索引,优化索引。
1.4 相似案例发现及合并
1)文本的相似度算法
常用的方法有:Levenshtein Distance算法,余弦相似度算法,相同字符数占比算法等。[4]
混合相似度算法:将两种或者两种以上的算法组合使用,并设置相应的权值。此方法能协调不同相似度算法在不同领域的优势,方便动态调整权值。
首先将相似性算法分为两类,相似性与计算结果成正比的归为SI,相似性与计算结果成反比的归为DI。C1,C2两案例的混合相似度用以下公式表示:
其中SI,DI由以下公式决定:
2)对汉字和英文单词区分计算
英文字符的多少对结果的影响可能会非常大,因此要将中英文字符分开处理。例如:纯中文的相似度比较,该算法为替换字符串中所有的英文字符和特殊字符,剩余中文字符做相似性计算。
通过不同方式得到的目标字符串定义为C1i,C2i,因此公式(2),(3)修改为公式(4),(5)
3)案例中不同属性的相似度计算
一个案例设置了若干属性,两个案例的对应属性作相似性计算。
因此公式(4),(5)修改后得到如下公式(6),(7):
如表1,现有206个案例,根据2种算法,对应2个属性,通过2种字符串过滤方式得到前8列的中间结果,最后一列是根据公式(1),(6),(7)计算得到最终结果。
表1相似性计算的结果(部分)
4)相似案例和相同案例的阀值选取
只有确定阀值才能区分相似和非相似案例。数据仍然使用已经录入在数据库中的206个案例。过程设计如下:第一步、人工判定几组相似或者相同的案例作为参照;第二步、根据公式(1),(6),(7)计算结果;第三步、观察参照组计算值是否与其他有明显差异,若不能则调整参数后重复第二步,直至参照组相似度计算结果能有明显差异。因为计算结果之间的差异仍不够明显,所以用方差,放大差异。计算结果为0-10有4821组,计算结果超过300的有5组。与人工选定结果相符。
2 数据同步故障案例系统开发
系统开发从逻辑结构设计,硬件架构设计,数据库设计,核心功能开发等几个方面开展。其中逻辑结构主要考虑和现有系统整合,并且具有较好的可移植性。硬件架构主要考虑系统容量的扩展性。核心功能实现涉及上一章中几个算法的代码实现和程序本身的调优。
2.1 逻辑结构
图2系统逻辑结构图
2.2 数据库设计
该设计的核心是案例表的字段设置,除了常规的属性外,需要添加{关键字,专题分类,摘要,多重分类,错误代码},核心表设计如下:
案例表{案例ID,案例标题,案例关键字,案例添加人#,案例来源,案例时间,所属大分类ID#,所属小分类ID#,专题分类#,多重分类,错误码,解决方案}
相似性计算调整表{ROWID,案例ID1,案例ID2,相似性计算结果1,相似性计算结果2,相似性计算结果3,相似性计算结果4,相似性计算结果5,相似性计算结果6,相似性计算结果7,相似性计算结果8,综合相似度结果}
2.3 核心功能实现(代码略)
1)全文搜索功能的实现
此功能在PL/SQL Developer上开发。首先需要增加两个权限给案例分析系统的数据库账户。然后设置文本搜索的相关属性,增加全文索引。最后建两个定时任务分别维护索引和优化索引。
2)相似性计算及结果展示
相似性计算的过程是定时(暂定每天一次)循环嵌套两两计算案例之间的相似度。并把多种算法的中间结果保存,为参数调整和阀值优化提供依据。此存储过程使用PL/SQL Developer开发完成。
相似计算结果的使用和页面展示使用的开发工具是TOMCAT和ECLIPSE。
3)异步加载数据的实现
异步加载主要是通过EXTJS开发环境和JSON序列实现。图3为FIREFOX浏览器界面,上半部分为网页内容,下半部分是通过FIREBUG插件显示的查询结果序列。
图3异步加载实现
3 结论和展望
整个基于CBR的故障案例分析处理系统,具有较强实用性。全文搜索和案例间匹配、异步加载数据提高了用户体验。文中提出的混合相似算法具有较强的灵活性。在现有成果的基础上,还可以在以下几方面改进:基于用户前后两次搜索的结果优化;知识的发现功能;基于web的案例采集和导入方式;混合相似度算法的进一度参数调优。相信通过不断完善,不仅在现有领域,也将在多个工程技术领域发挥作用。
参考文献:
[1]Davies J,Goel A.k,Nersessian N J.Transfer in Visual Case-Based Problem Solving[C].
[2]Anon Intemational Conference on Case-Based Reasoning 2005.Berlin:Springer,2005.
[3]ORACLE TEXT concepts and administration release 2(10.2) . Part Number A96653-02.http://www.ORACLE.com.
[4]张华平、李恒训、刘治华,算法与启发式方法(第2版),人民邮电出版社.