-
基于策略模式的中医数据挖掘平台的设计与研究
摘要:随着数据挖掘技术的发展和中医信息化的逐渐深入,很多数据挖掘方法被应用到中医研究领域.本文针对面向对象软设计模式中的策略模式在数据挖掘科研软件平台设计开发上的应用进行了研究,并提出平台设计概要.在此基础之上。提出一种中医数据挖掘研究的思想方法:将中医问题(数据)封装、将数据挖掘方法(算法)封装,实现统一的接口,从而实现在某一类中医问题中尝试不同的数据挖掘方法、将某一种数据挖掘方法应用于不同的中医问题.基于上述思想方法。实现了中医数据挖掘平台。用于中医相关领域的数据挖掘研究.
关键词:数据挖掘;中医;策略模式;软件重用;中医数据挖掘平台
1引言
设计模式是一套被反复使用、经过分类的代码设计经验的总结.使用设计模式,可以重用代码、让代码更容易地被他人理解,而且能保证代码可靠性j.策略模式是面向对象软
件设计模式的一种,它定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可独立于使用它的客户而变化.
数据挖掘(D a t a Mi n i n g),又称数据中的知识发现(K D D),其目的是自动或方便地提取隐藏或记录在数据中的代表知识的模式』.目前数据挖掘在I T、银行、保险、医药和等行业以及生物、天文等科研领域都有应用,并出现了一些商用数据挖掘软件产品.
中医文化源远流长,历朝历代的中医著作浩如烟海,如何从不同的角度对这些文献进行高效的整理、研究成为中医科研工作者的重要课题.另外,目前的中医研究中的药理研究、
临床试验、动物实验,以及医院的病例诊断、治疗记录等都会产生大量的数据需要处理.而作为计算机科学中专为处理大规模数据而生的数据挖掘在此大有可为.
目前已经有一些数据挖掘方法被应用到中医研究中,但只局限于具体问题,即数据挖掘具体某种方法与中医研究中某一具体问题是一一对应的关系.虽然能够取得一定的成果,
但对于探索性的试验存在很大的局限性.为此,本文首先针对策略模式在数据挖掘科研软件平台设计开发上的应用进行了研究,并提出了平台设计概要.在此基础之上,设计并实现一
种能够在不同问题和不同方法之间实现灵活的多对多关系的中医数据挖掘平台.此平台将中医问题(数据)封装、将数据挖掘方法(算法)封装,从而实现:
1)某一问题分别采用不同方法解决,避免某一问题被束缚在一种方法中,可以相互对比不同方法的解决效果;
2)某一种方法应用于不同的问题,可以在尽可能多的问题中最大限度发挥某一种方法的功效.
2中医数据挖掘应用现状
近年来医疗系统信息化取得了很大的进展,H I S(医院信息管理系统)、L I S(实验室信息管理系统)、P A C S(医学影像系统)等已经被广泛应用于医院.在中医的现代化过程中,也建立了很多数据库,例如中医药科技信息数据库等.但以上应用大都仅限于对数据的存储以及简单处理,对数据的分析不足.
中医学具有系统性、整体性、复杂性、不确定性等特点,适合采用数据挖掘类似的从整体观上人手的研究方法.已经有一些研究将数据挖掘应用于中医研究.陈明等将关联规则应用于中医疾病证候诊断中.秦中广等将粗糙集应用于中医类风湿证候诊断中.刘晋平研究了数据挖掘在中医脉诊研究中的应用.王敏,吕立等将关联规则应用于中医热毒文献数据分析中.
3中医数据挖掘平台的理论基础和技术架构
3.1软件复用与设计模式
软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似的软件元素的过程.软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识.对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在开发过程中发挥某种作用.软件重用的条件是软件本身在某种程度上应具有一定的一致性和不变性,这样才便于软构件的设计j.面向对象程序设计的思想的提出为程序员设计可复用的软件提供了一个强有力的工具.随着面向对象程序设计的思想被广泛应用,人们不断探索、挖掘能够提高软件复用度的途径,在这个过程中,逐渐形成了“设计模式”这个概念,即面向对象软件设计的经验.介绍设计模式的经典著作文献[2]中借城市和建筑模式说明了“面向对象设计模式”的概念:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动.”文献[2]中的另外一个关于设计模式的定义是:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述.
设计模式分为以下几大类j:
1.创建型模式.创建型模式抽象了实例化过程,他们帮助一个系统独立于如何创建、组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建模式将实例化委托给另一个对象.创建型设计模式包括:抽象工厂、生成器、工厂方法、原型、单件.
2.结构型模式.结构型模式涉及到如何组合类和对象以获得更大的结构.结构型类模式采用继承机制来组合结构或实现.一个简单的例子是采用多重继承方法将两个以上的类
组合成一个类,结果这个类包含了所有父亲的性质.这一模式尤其有助于多个独立开发的类库协同工作.结构型设计模式包括:适配器、桥接、组成、装饰、外观、享元、代理.
3.行为模式.行为模式涉及到算法和对象之间职责的分配.行为模式不仅描述对象或类的模式,还描述它们之间的通信模式.这些模式刻划了在运行时难以跟踪的复杂的控制流.
它们将你的注意力从控制流转移到对象间的联系方式上来.行为设计模式包括:职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者.
3.2策略模式
行为模式分成对象行为模式和类行为模式两种,分别应用于对象层面和类层面.策略(S t r a t e g y)模式,又称政策(P o l l c y),是对象行为型模式的一种.策略模式的核心意图是定义一系列的算法,把它们一个一个封装起来,并且使它们能够互相替换.策略模式使算法可以独立于使用它的客户而变化.
对于使用策略模式的动机,文献[2]用一个例子来表述:一个文档编辑器,需要实现换行功能.有许多算法可以对一个正文流进行分行.将这些算法硬编进使用它们的类中是不可
取的.
对于以上的问题,依照策略模式的思想,可以定义一些类来封装不同的换行算法来避免.一个以这种方法封装的算法称为一个策略(S t r a t e g y),如图1所示.其中C o m p o s i t i o n类负责维护和更新一个正文浏览程序中显示的正文换行.换行策略不是由C o m p o s i t i o n类实现的,而是由抽象的C o m p o s i t o r类的子类各自独立实现的.C o m p o s i t o r各个子类实现不同的换行策略.
对于在什么情况下适合使用策略模式,文献[2]提出以下几种:
1.许多相关的类仅仅是行为有异.
2.需要使用一个算法的不同变体.
3.算法使用客户不应该知道的数据.
4.一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现.
3.3数据挖掘主要方法
数据挖掘的主要方法包括以下6种:特征化与区分…、简档、关联规则1.8]、分类与预测]、聚类与离群点分析·引、演变分析L l J.每种方法包含若干算法.
特征化与区分…:数据特征化是目标类数据的一般特性或特征的汇总;数据区分是将目标类数据对象的一般特征与一个或多个对比类对象的一般特征进行比较.
简档【8】:对数据库中正在进行的事件做描述或解释.
关联规则J:通过对数据库事务的统计计算确定哪些事务可能同时出现,寻找事务之间的相关性.
分类与预测”J:通过构造一个模型或分类器来预测类属标号、连续函数或有序值.
聚类与离群点分析【】J:聚类是将物理或抽象对象的集合分成相似的对象类的过程;离群点分析是指查找、分析与数据的一般行为或模型不一致的数据对象.
演变分析…:描述行为随时间变化的对象的规律或趋势,并对其建模.
3.4基于J S P的M V C架构
随着互联网的普及,越来越多的应用软件采用We b开发.基于J S P的MVC架构是一种很灵活的We b开发架构.客户端即浏览器.MV C架构将服务器端分为3个不同逻辑单
元:模型(Mo d e 1)、视图(Vi e w)、控制器(C o n t r o l l e r).在一个服务器应用中,通常将应用分为业务逻辑、表示和请求处理.模型对应为业务逻辑和数据,视图对应为表示,控制器对应为请求处理I.其中视图部分用J S P语言开发,模型和控制器用J a v a语言开发,控制器使用S e r v l e t类.服务器采用T O M—CAT.
4策略模式在数据挖掘科研平台上的应用研究
数据挖掘作为计算机科学研究巾的一个新兴领域,从其诞生起,其研究就存在以下两个方面:
1.数据挖掘自身理论的完善.主要关注于算法研究以提高数据挖掘的效率,以及总结数据挖掘的思想方法.
2.拓展数据挖掘技术的应用领域.数据挖掘是一门应用科学,其根本目的在于以数据挖掘的思想方法和相应的算法为基础,借助于现代计算机强大的计算能力,为多种行业提供
解决方案.
以上两点相辅相成,只有数据挖掘自身理论不断完善,数据挖掘技术才能够具备应用于更多行业的能力和条件;在各种领域的应用过程中,也会逐渐发现数据挖掘自身理论的不
足之处,为理论研究提供方向.
虽然在诸多科研人员的努力之下,目前数据挖掘的理论方面已经形成了一个较为完善的体系,但在拓展数据挖掘技术的应用领域过程中,因为应用行业问题形式的干变万化,很
多情况下不易找到问题和方法之间的一一对应关系.
由上可知,设计一个针对于数据挖掘应用研究的科研软件平台有其必要性:
2.从应用问题的角度而言,同一个应用问题需要借助数据挖掘理论中不同的思想方法、算法来进行科研尝试,以便观察、比较其应用效果.
2.从数据挖掘的角度而言,经典理论中同一种思想方法、算法需要尝试应用于不同的问题.
该平台应该区别于商用数据挖掘工具软件.商用数据挖掘工具软件(譬如We k a、S A S、S P S S、C l e m e n t i n e等)的目标是导入用户的数据,通过内部运算,为用户给出一个数据挖掘结果.至于系统采用什么样的数据挖掘算法来得到结果,用户并不知道,也没有必要向用户开放,只要软件开发商在新版本升级的过程中更新算法即可.商用数据挖掘工具软件面向的用户对象并不一定了解数据挖掘本身,他们感兴趣的只是结果.
相比而言,针对于数据挖掘应用研究的科研软件平台需要让用户知道解决问题所用的算法,并可以选择不同的算法,以便相互比较解决问题的效果.该平台面向的用户对象关注于数据挖掘本身.具体而言,针对于数据挖掘应用研究的科研软件平台侧重于提供给用户以下功能:
1.能够集成现有数据挖掘思想方法、算法.
2.能够导人数据挖掘应用问题,包括相应的数据.
3.能够灵活地选择问题和方法之间的组合.
4.能够比较不同的方法解决同一问题的效果,并显示给用户.
5.能够展示同一方法如何解决不同问题.
基于以上论述,策略模式非常适合数据挖掘应用研究的科研软件平台的架构设计:r
1.该平台的核心在于同一应用问题尝试不同的方法/算法、同一方法/算法尝试解决不同的应用问题,策略模式的核心意图是定义一系列的算法,把它们一个一个封装起来,并且使它们能够互相替换.简单地说,可以基于策略模式的思想,按照数据挖掘方法/算法理论体系(如图2),将各种数据挖掘方法/算法封装,实现统一的数据处理接口,由于策略模式使算法可以独立于使用它的客户而变化,从而实现同一应用问题使用不同的方法/算法进行尝试的目的.
2.策略模式思想的应用不仅仅局限于数据挖掘方法/算法上,还可以扩展到应用问题/数据上,根据应用问题/数据的情况,在一定粒度上将各种应用问题/数据封装,实现统一的算法调用接口,从而实现同一数据挖掘方法/算法在不同的应用问题上进行尝试的目的.
3.可视化方面也可以应用策略模式.该平台需要将数据挖掘方法/算法在某些应用问题上的计算结果显示给用户.对于数据挖掘不同的方法/算法,其结果显示形式不尽相同,如:关联规则挖掘一般采用文字显示,分类挖掘常常需要显示决策树或神经网络,离群点挖掘需要显示点簇等等.可以应用策略模式的思想,将各种显示形式封装,实现统一的接口,从
而实现可视化形式上的丰富性.该平台的模块设计.根据以上分析总结出该平台分为以
下几个功能模块:
1.数据挖掘模块:管理数据挖掘各种方法/算法,实现添加、删除、修改方法/算法.各方法/算法以可执行代码的形式组织,能够实现数据挖掘操作.
2.问是廷/数据管理模块:管理应用问题的数据源,实现添加、删除、修改应用问题数据源.该模块负责与数据库交互.
3.服务定制模块:为用户提供数据挖掘方法/算法的选择功能、应用问题的选择功能,用户选择一个“应用问题/数据、数据挖掘方法/算法”二元组后,可以通过该模块启动一次数据挖掘服务.
4.结果显示模块:显示数据挖掘效果.
基于以上论述,在中医数据挖掘研究中,可以将中医问题(数据)封装、将数据挖掘方法(算法)封装,实现统一的接口,从而实现在某~类中医问题中尝试不同的数据挖掘方法、将
某一种数据挖掘方法应用于不同的中医问题,便于中医相关研究人员比较、分析.
5中医数据挖掘平台需求分析及模块设计与实现
5.1平台需求分析
此平台基于中医数据挖掘中的实际需要而设计开发,结合本文第4章中提出的思想方法,主要的需求体现在如下几个方面.
5.1.1数据录入与数据预处理
中医数据种类繁多,包括结构化数据和半结构化数据,并且不同的问题对于数据的考察角度也不尽相同.为了实现某一问题分别采用不同的方法解决,此平台在实现数据结构化
录入的同时,必须在逻辑模式”层面保持数据库的结构一致,实现对数据的封装.
5.1.2数据挖掘方法的灵活调用
此平台的后台组件中需要将数据挖掘各种方法进行封装,并且提供对1中的数据库进行操作的统一接口,从而实现灵活调用.通过实现1和2,实现问题(数据)与方法之间多对
多的相互调用关系.
5.1.3效果展示界面
此平台是一个计算可视化平台,需要为用户提供界面展示某一数据挖掘方法应用于某一中医问题所得到的结论.此界面根据数据挖掘的主要方法来组织,而不是针对于中医问
题.因为中医问题千差万别,而数据挖掘主要方法的组织条理更清晰,适合于构建展示界面.界面的内容包括文字、图示.
5.2平台功能模块设计与实现
为了实现数据显示、数据处理、数据库读写的分离,充分发挥MV C架构,此平台的整体体系结构如图3所示.具体功能实现分成4个模块(如图3):数据录入模块、数据挖掘模块、服务定制模块、数据接口模块.分别介绍如下.
5.2.1数据录入模块
此模块需要实现将半结构化的数据预处理为结构化的功能.工作流程为:第1步、用户注册一个新的数据库表,并为该表注册属性,然后对属性进行规范化编码输入,以X M L文件作为数据库缓冲文件;第2步、系统将经过简单整理的半格式化数据导人数据库,并根据规范化编码为读入的数据条目作标引,即将半格式化数据转化成格式化数据.从而实现对不同的数据做统一逻辑模式的封装.在此过程中,凡涉及到数据库读写的操作均调用数据接口模块.数据类的关系见图4
图中第1层为抽象类.最底层为接口,实现与图5中的D a t a O p l n t e r f a c e兼容.每一个数据类继承自上层抽象父类,并D a t a I n t e r f a c e接口.此模块工作在用户接口层,需要与用户进行交互,采用J S P页面作为前台显示界面,S e r v l e t类实现后台调用.
5.2.2数据挖掘模块
此模块由一系列可注册添加的后台组件构成.这些组件针对模块1中封装的数据提供兼容的接口,组织形式如下页
图中第1层、第2层为抽象类.最底层为接口,实现与图
4中的D a t a l n t e r f a c e兼容.
工作流程为:用户首先通过服务定制模块选定某一数据、某一数据挖掘方法,启动数据挖掘模块.该模块调用数据接口模块读取相关数据,进行处理,再将结果交付服务定制模块.
每一个数据挖掘方法类继承自上层抽象父类,并实现D a t a O p l n t e r f a c e接口.此模块工作在数据处理层,这些组件用J a v a语言开发,不直接与用户交互,被S e r v l e t类后台调用.
5.2.3服务定制模块
此模块实现2个功能:第一、提供一个与图4中第2层、图5中第2层(以及以下各算法层)对应的用户选择功能,即一个已经注册的数据类型和已经注册的数据挖掘方法的选择
列表,供用户定制一次挖掘处理业务.第二、接收数据挖掘模薤块得到的结果并显示给用户.由于每种数据挖掘方法处理对象的角度不同,所以结果的展示形式也不同,图5中第2层的每种方法对应此模块中的一个显示组件.此模块工作在用户接口层,需要与用户进行交互,采用J S P页面作为前台显示界面,S e r v l e t类实现后台调用.
5.2.4数据接口模块
此模块负责一切与读写数据库相关的操作,工作在数据接口层.此模块采用J D B C按口,实现将J S P页、X ML文件以及其他数据库中的数据写入后台数据库,以及从后台数据库中读取数据.
5.2.5功能模块其他说明
为了从模块结构的角度集中说明此平台的核心设计思想——策略模式,有些细节未在本章上述论述中说明.现补充如下:
(1)对于数据录入部分,上述着重讨论了半结构化数据的处理方法.对于一些可以直接应用的结构化数据,数据录入模块也会提供接口,并通过数据接口模块直接导人数据库.
(2)为了达到加快数据挖掘模块的响应速度、存储数据挖掘结果、引入中医领域已有的知识等目的,必须在内部数据库中建立知识库,在数据挖掘模块工作时与其交互.
6中医数据挖掘平台功能及性能评价
6.1基于策略模式的功能实现
(1)数据挖掘是中医研究采用的一个新方法,对于具体的中医研究问题,需要尝试应用多种数据挖掘方法的效果.例如,问题1:通过中医文献研究某一病机与什么症状最相关.
这个问题可以用关联规则方法来解决,也可以用分类(决策树)方法来解决.在本平台中,可以先注册一个属性包括病机、主要症状(全身症状、头面症状等,如图6所示)的数据库,并将文献资料条目导入并标引,然后分别定制关联规则和分类(决策树)相关的方法进行数据挖掘处理.
(2)中医是数据挖掘应用的一个新领域,数据挖掘的同一种方法可能会应用到不同的中医问题研究中.譬如关联规则方法除了上述提到的问题1,还可以应用到问题2:通过中医治疗用药数据研究某种“证”所用方剂的频率高低.注:“证”是中医对疾病的一种描述方式.
(3)对于数据挖掘结果的可视化,一般包括文字、图示两部分.每种方法的显示形式不同.所以需要应用策略模式,在统一的显示接口下采用多种显示组件.图7为关联规则方法
的结果显示形式.
6.2性能评价
此中医数据挖掘科研平台的开发目的是为中医研究提供计算机辅助工具.目前中医研究对于数据挖掘应用主要关注于各种数据挖掘方法在不同中医研究问题中尝试得到的挖掘结果,并评价其对中医研究的贡献性,而并非关注于具体某种算法的性能.
7结语
面向对象软件设计模式中的策略模式非常适合用于数据挖掘应用研究的科研软件平台的架构,本文对此进行了论述,并提出了设计概要.在此基础之上,利用基于J S P/J a v a的We b开发技术实现了一个中医数据挖掘科研软件平台,该平台具有很强的灵活性优势:在问题端和解决方法端都可以实现开放性的添加、删除、更新,并可以通过服务定制进行任意一种方法解决任意一类问题的试验,避免问题和方法之间的互相束缚,满足科研的要求.
在今后的工作中,将继续对此平台从以下几个方面进行改进:
第一、不断丰富知识库,使数据挖掘模块的工作效率更高;
第二、随着计算机可视化的发展,用户显示界面应得到升级,逐渐实现由2 D图示转化成3 D图像;
第三、不断开发算法组件,增强平台的灵活性.最后,这种基于策略模式,在问题端和方法端都进行封装,从而实现问题和方法之间多对多灵活选择试验的设计思想,可以应用在很多科研平台上.
基于策略模式的中医数据挖掘平台的设计与研究
摘要:随着数据挖掘技术的发展和中医信息化的逐渐深入,很多数据挖掘方法被应用到中医研究领域.本文针对面向对象软设计模式中的策略模式在数据挖掘科研软件平台设计开发上的应用进行了研究,并提出平台设计概要.在此基础之上。提出一种中医数据挖掘研究的思想方法:将中医问题(数据)封装、将数据挖掘方法(算法)封装,实现统一的接口,从而实现在某一类中医问题中尝试不同的数据挖掘方法、将某一种数据挖掘方法应用于不同的中医问题.基于上述思想方法。实现了中医数据挖掘平台。用于中医相关领域的数据挖掘研究.
关键词:数据挖掘;中医;策略模式;软件重用;中医数据挖掘平台
1引言
设计模式是一套被反复使用、经过分类的代码设计经验的总结.使用设计模式,可以重用代码、让代码更容易地被他人理解,而且能保证代码可靠性j.策略模式是面向对象软
件设计模式的一种,它定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可独立于使用它的客户而变化.
数据挖掘(D a t a Mi n i n g),又称数据中的知识发现(K D D),其目的是自动或方便地提取隐藏或记录在数据中的代表知识的模式』.目前数据挖掘在I T、银行、保险、医药和等行业以及生物、天文等科研领域都有应用,并出现了一些商用数据挖掘软件产品.
中医文化源远流长,历朝历代的中医著作浩如烟海,如何从不同的角度对这些文献进行高效的整理、研究成为中医科研工作者的重要课题.另外,目前的中医研究中的药理研究、
临床试验、动物实验,以及医院的病例诊断、治疗记录等都会产生大量的数据需要处理.而作为计算机科学中专为处理大规模数据而生的数据挖掘在此大有可为.
目前已经有一些数据挖掘方法被应用到中医研究中,但只局限于具体问题,即数据挖掘具体某种方法与中医研究中某一具体问题是一一对应的关系.虽然能够取得一定的成果,
但对于探索性的试验存在很大的局限性.为此,本文首先针对策略模式在数据挖掘科研软件平台设计开发上的应用进行了研究,并提出了平台设计概要.在此基础之上,设计并实现一
种能够在不同问题和不同方法之间实现灵活的多对多关系的中医数据挖掘平台.此平台将中医问题(数据)封装、将数据挖掘方法(算法)封装,从而实现:
1)某一问题分别采用不同方法解决,避免某一问题被束缚在一种方法中,可以相互对比不同方法的解决效果;
2)某一种方法应用于不同的问题,可以在尽可能多的问题中最大限度发挥某一种方法的功效.
2中医数据挖掘应用现状
近年来医疗系统信息化取得了很大的进展,H I S(医院信息管理系统)、L I S(实验室信息管理系统)、P A C S(医学影像系统)等已经被广泛应用于医院.在中医的现代化过程中,也建立了很多数据库,例如中医药科技信息数据库等.但以上应用大都仅限于对数据的存储以及简单处理,对数据的分析不足.
中医学具有系统性、整体性、复杂性、不确定性等特点,适合采用数据挖掘类似的从整体观上人手的研究方法.已经有一些研究将数据挖掘应用于中医研究.陈明等将关联规则应用于中医疾病证候诊断中.秦中广等将粗糙集应用于中医类风湿证候诊断中.刘晋平研究了数据挖掘在中医脉诊研究中的应用.王敏,吕立等将关联规则应用于中医热毒文献数据分析中.
3中医数据挖掘平台的理论基础和技术架构
3.1软件复用与设计模式
软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似的软件元素的过程.软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识.对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在开发过程中发挥某种作用.软件重用的条件是软件本身在某种程度上应具有一定的一致性和不变性,这样才便于软构件的设计j.面向对象程序设计的思想的提出为程序员设计可复用的软件提供了一个强有力的工具.随着面向对象程序设计的思想被广泛应用,人们不断探索、挖掘能够提高软件复用度的途径,在这个过程中,逐渐形成了“设计模式”这个概念,即面向对象软件设计的经验.介绍设计模式的经典著作文献[2]中借城市和建筑模式说明了“面向对象设计模式”的概念:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动.”文献[2]中的另外一个关于设计模式的定义是:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述.
设计模式分为以下几大类j:
1.创建型模式.创建型模式抽象了实例化过程,他们帮助一个系统独立于如何创建、组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建模式将实例化委托给另一个对象.创建型设计模式包括:抽象工厂、生成器、工厂方法、原型、单件.
2.结构型模式.结构型模式涉及到如何组合类和对象以获得更大的结构.结构型类模式采用继承机制来组合结构或实现.一个简单的例子是采用多重继承方法将两个以上的类
组合成一个类,结果这个类包含了所有父亲的性质.这一模式尤其有助于多个独立开发的类库协同工作.结构型设计模式包括:适配器、桥接、组成、装饰、外观、享元、代理.
3.行为模式.行为模式涉及到算法和对象之间职责的分配.行为模式不仅描述对象或类的模式,还描述它们之间的通信模式.这些模式刻划了在运行时难以跟踪的复杂的控制流.
它们将你的注意力从控制流转移到对象间的联系方式上来.行为设计模式包括:职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者.
3.2策略模式
行为模式分成对象行为模式和类行为模式两种,分别应用于对象层面和类层面.策略(S t r a t e g y)模式,又称政策(P o l l c y),是对象行为型模式的一种.策略模式的核心意图是定义一系列的算法,把它们一个一个封装起来,并且使它们能够互相替换.策略模式使算法可以独立于使用它的客户而变化.
对于使用策略模式的动机,文献[2]用一个例子来表述:一个文档编辑器,需要实现换行功能.有许多算法可以对一个正文流进行分行.将这些算法硬编进使用它们的类中是不可
取的.
对于以上的问题,依照策略模式的思想,可以定义一些类来封装不同的换行算法来避免.一个以这种方法封装的算法称为一个策略(S t r a t e g y),如图1所示.其中C o m p o s i t i o n类负责维护和更新一个正文浏览程序中显示的正文换行.换行策略不是由C o m p o s i t i o n类实现的,而是由抽象的C o m p o s i t o r类的子类各自独立实现的.C o m p o s i t o r各个子类实现不同的换行策略.
对于在什么情况下适合使用策略模式,文献[2]提出以下几种:
1.许多相关的类仅仅是行为有异.
2.需要使用一个算法的不同变体.
3.算法使用客户不应该知道的数据.
4.一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现.
3.3数据挖掘主要方法
数据挖掘的主要方法包括以下6种:特征化与区分…、简档、关联规则1.8]、分类与预测]、聚类与离群点分析·引、演变分析L l J.每种方法包含若干算法.
特征化与区分…:数据特征化是目标类数据的一般特性或特征的汇总;数据区分是将目标类数据对象的一般特征与一个或多个对比类对象的一般特征进行比较.
简档【8】:对数据库中正在进行的事件做描述或解释.
关联规则J:通过对数据库事务的统计计算确定哪些事务可能同时出现,寻找事务之间的相关性.
分类与预测”J:通过构造一个模型或分类器来预测类属标号、连续函数或有序值.
聚类与离群点分析【】J:聚类是将物理或抽象对象的集合分成相似的对象类的过程;离群点分析是指查找、分析与数据的一般行为或模型不一致的数据对象.
演变分析…:描述行为随时间变化的对象的规律或趋势,并对其建模.
3.4基于J S P的M V C架构
随着互联网的普及,越来越多的应用软件采用We b开发.基于J S P的MVC架构是一种很灵活的We b开发架构.客户端即浏览器.MV C架构将服务器端分为3个不同逻辑单
元:模型(Mo d e 1)、视图(Vi e w)、控制器(C o n t r o l l e r).在一个服务器应用中,通常将应用分为业务逻辑、表示和请求处理.模型对应为业务逻辑和数据,视图对应为表示,控制器对应为请求处理I.其中视图部分用J S P语言开发,模型和控制器用J a v a语言开发,控制器使用S e r v l e t类.服务器采用T O M—CAT.
4策略模式在数据挖掘科研平台上的应用研究
数据挖掘作为计算机科学研究巾的一个新兴领域,从其诞生起,其研究就存在以下两个方面:
1.数据挖掘自身理论的完善.主要关注于算法研究以提高数据挖掘的效率,以及总结数据挖掘的思想方法.
2.拓展数据挖掘技术的应用领域.数据挖掘是一门应用科学,其根本目的在于以数据挖掘的思想方法和相应的算法为基础,借助于现代计算机强大的计算能力,为多种行业提供
解决方案.
以上两点相辅相成,只有数据挖掘自身理论不断完善,数据挖掘技术才能够具备应用于更多行业的能力和条件;在各种领域的应用过程中,也会逐渐发现数据挖掘自身理论的不
足之处,为理论研究提供方向.
虽然在诸多科研人员的努力之下,目前数据挖掘的理论方面已经形成了一个较为完善的体系,但在拓展数据挖掘技术的应用领域过程中,因为应用行业问题形式的干变万化,很
多情况下不易找到问题和方法之间的一一对应关系.
由上可知,设计一个针对于数据挖掘应用研究的科研软件平台有其必要性:
2.从应用问题的角度而言,同一个应用问题需要借助数据挖掘理论中不同的思想方法、算法来进行科研尝试,以便观察、比较其应用效果.
2.从数据挖掘的角度而言,经典理论中同一种思想方法、算法需要尝试应用于不同的问题.
该平台应该区别于商用数据挖掘工具软件.商用数据挖掘工具软件(譬如We k a、S A S、S P S S、C l e m e n t i n e等)的目标是导入用户的数据,通过内部运算,为用户给出一个数据挖掘结果.至于系统采用什么样的数据挖掘算法来得到结果,用户并不知道,也没有必要向用户开放,只要软件开发商在新版本升级的过程中更新算法即可.商用数据挖掘工具软件面向的用户对象并不一定了解数据挖掘本身,他们感兴趣的只是结果.
相比而言,针对于数据挖掘应用研究的科研软件平台需要让用户知道解决问题所用的算法,并可以选择不同的算法,以便相互比较解决问题的效果.该平台面向的用户对象关注于数据挖掘本身.具体而言,针对于数据挖掘应用研究的科研软件平台侧重于提供给用户以下功能:
1.能够集成现有数据挖掘思想方法、算法.
2.能够导人数据挖掘应用问题,包括相应的数据.
3.能够灵活地选择问题和方法之间的组合.
4.能够比较不同的方法解决同一问题的效果,并显示给用户.
5.能够展示同一方法如何解决不同问题.
基于以上论述,策略模式非常适合数据挖掘应用研究的科研软件平台的架构设计:r
1.该平台的核心在于同一应用问题尝试不同的方法/算法、同一方法/算法尝试解决不同的应用问题,策略模式的核心意图是定义一系列的算法,把它们一个一个封装起来,并且使它们能够互相替换.简单地说,可以基于策略模式的思想,按照数据挖掘方法/算法理论体系(如图2),将各种数据挖掘方法/算法封装,实现统一的数据处理接口,由于策略模式使算法可以独立于使用它的客户而变化,从而实现同一应用问题使用不同的方法/算法进行尝试的目的.
2.策略模式思想的应用不仅仅局限于数据挖掘方法/算法上,还可以扩展到应用问题/数据上,根据应用问题/数据的情况,在一定粒度上将各种应用问题/数据封装,实现统一的算法调用接口,从而实现同一数据挖掘方法/算法在不同的应用问题上进行尝试的目的.
3.可视化方面也可以应用策略模式.该平台需要将数据挖掘方法/算法在某些应用问题上的计算结果显示给用户.对于数据挖掘不同的方法/算法,其结果显示形式不尽相同,如:关联规则挖掘一般采用文字显示,分类挖掘常常需要显示决策树或神经网络,离群点挖掘需要显示点簇等等.可以应用策略模式的思想,将各种显示形式封装,实现统一的接口,从
而实现可视化形式上的丰富性.该平台的模块设计.根据以上分析总结出该平台分为以
下几个功能模块:
1.数据挖掘模块:管理数据挖掘各种方法/算法,实现添加、删除、修改方法/算法.各方法/算法以可执行代码的形式组织,能够实现数据挖掘操作.
2.问是廷/数据管理模块:管理应用问题的数据源,实现添加、删除、修改应用问题数据源.该模块负责与数据库交互.
3.服务定制模块:为用户提供数据挖掘方法/算法的选择功能、应用问题的选择功能,用户选择一个“应用问题/数据、数据挖掘方法/算法”二元组后,可以通过该模块启动一次数据挖掘服务.
4.结果显示模块:显示数据挖掘效果.
基于以上论述,在中医数据挖掘研究中,可以将中医问题(数据)封装、将数据挖掘方法(算法)封装,实现统一的接口,从而实现在某~类中医问题中尝试不同的数据挖掘方法、将
某一种数据挖掘方法应用于不同的中医问题,便于中医相关研究人员比较、分析.
5中医数据挖掘平台需求分析及模块设计与实现
5.1平台需求分析
此平台基于中医数据挖掘中的实际需要而设计开发,结合本文第4章中提出的思想方法,主要的需求体现在如下几个方面.
5.1.1数据录入与数据预处理
中医数据种类繁多,包括结构化数据和半结构化数据,并且不同的问题对于数据的考察角度也不尽相同.为了实现某一问题分别采用不同的方法解决,此平台在实现数据结构化
录入的同时,必须在逻辑模式”层面保持数据库的结构一致,实现对数据的封装.
5.1.2数据挖掘方法的灵活调用
此平台的后台组件中需要将数据挖掘各种方法进行封装,并且提供对1中的数据库进行操作的统一接口,从而实现灵活调用.通过实现1和2,实现问题(数据)与方法之间多对
多的相互调用关系.
5.1.3效果展示界面
此平台是一个计算可视化平台,需要为用户提供界面展示某一数据挖掘方法应用于某一中医问题所得到的结论.此界面根据数据挖掘的主要方法来组织,而不是针对于中医问
题.因为中医问题千差万别,而数据挖掘主要方法的组织条理更清晰,适合于构建展示界面.界面的内容包括文字、图示.
5.2平台功能模块设计与实现
为了实现数据显示、数据处理、数据库读写的分离,充分发挥MV C架构,此平台的整体体系结构如图3所示.具体功能实现分成4个模块(如图3):数据录入模块、数据挖掘模块、服务定制模块、数据接口模块.分别介绍如下.
5.2.1数据录入模块
此模块需要实现将半结构化的数据预处理为结构化的功能.工作流程为:第1步、用户注册一个新的数据库表,并为该表注册属性,然后对属性进行规范化编码输入,以X M L文件作为数据库缓冲文件;第2步、系统将经过简单整理的半格式化数据导人数据库,并根据规范化编码为读入的数据条目作标引,即将半格式化数据转化成格式化数据.从而实现对不同的数据做统一逻辑模式的封装.在此过程中,凡涉及到数据库读写的操作均调用数据接口模块.数据类的关系见图4
图中第1层为抽象类.最底层为接口,实现与图5中的D a t a O p l n t e r f a c e兼容.每一个数据类继承自上层抽象父类,并D a t a I n t e r f a c e接口.此模块工作在用户接口层,需要与用户进行交互,采用J S P页面作为前台显示界面,S e r v l e t类实现后台调用.
5.2.2数据挖掘模块
此模块由一系列可注册添加的后台组件构成.这些组件针对模块1中封装的数据提供兼容的接口,组织形式如下页
图中第1层、第2层为抽象类.最底层为接口,实现与图
4中的D a t a l n t e r f a c e兼容.
工作流程为:用户首先通过服务定制模块选定某一数据、某一数据挖掘方法,启动数据挖掘模块.该模块调用数据接口模块读取相关数据,进行处理,再将结果交付服务定制模块.
每一个数据挖掘方法类继承自上层抽象父类,并实现D a t a O p l n t e r f a c e接口.此模块工作在数据处理层,这些组件用J a v a语言开发,不直接与用户交互,被S e r v l e t类后台调用.
5.2.3服务定制模块
此模块实现2个功能:第一、提供一个与图4中第2层、图5中第2层(以及以下各算法层)对应的用户选择功能,即一个已经注册的数据类型和已经注册的数据挖掘方法的选择
列表,供用户定制一次挖掘处理业务.第二、接收数据挖掘模薤块得到的结果并显示给用户.由于每种数据挖掘方法处理对象的角度不同,所以结果的展示形式也不同,图5中第2层的每种方法对应此模块中的一个显示组件.此模块工作在用户接口层,需要与用户进行交互,采用J S P页面作为前台显示界面,S e r v l e t类实现后台调用.
5.2.4数据接口模块
此模块负责一切与读写数据库相关的操作,工作在数据接口层.此模块采用J D B C按口,实现将J S P页、X ML文件以及其他数据库中的数据写入后台数据库,以及从后台数据库中读取数据.
5.2.5功能模块其他说明
为了从模块结构的角度集中说明此平台的核心设计思想——策略模式,有些细节未在本章上述论述中说明.现补充如下:
(1)对于数据录入部分,上述着重讨论了半结构化数据的处理方法.对于一些可以直接应用的结构化数据,数据录入模块也会提供接口,并通过数据接口模块直接导人数据库.
(2)为了达到加快数据挖掘模块的响应速度、存储数据挖掘结果、引入中医领域已有的知识等目的,必须在内部数据库中建立知识库,在数据挖掘模块工作时与其交互.
6中医数据挖掘平台功能及性能评价
6.1基于策略模式的功能实现
(1)数据挖掘是中医研究采用的一个新方法,对于具体的中医研究问题,需要尝试应用多种数据挖掘方法的效果.例如,问题1:通过中医文献研究某一病机与什么症状最相关.
这个问题可以用关联规则方法来解决,也可以用分类(决策树)方法来解决.在本平台中,可以先注册一个属性包括病机、主要症状(全身症状、头面症状等,如图6所示)的数据库,并将文献资料条目导入并标引,然后分别定制关联规则和分类(决策树)相关的方法进行数据挖掘处理.
(2)中医是数据挖掘应用的一个新领域,数据挖掘的同一种方法可能会应用到不同的中医问题研究中.譬如关联规则方法除了上述提到的问题1,还可以应用到问题2:通过中医治疗用药数据研究某种“证”所用方剂的频率高低.注:“证”是中医对疾病的一种描述方式.
(3)对于数据挖掘结果的可视化,一般包括文字、图示两部分.每种方法的显示形式不同.所以需要应用策略模式,在统一的显示接口下采用多种显示组件.图7为关联规则方法
的结果显示形式.
6.2性能评价
此中医数据挖掘科研平台的开发目的是为中医研究提供计算机辅助工具.目前中医研究对于数据挖掘应用主要关注于各种数据挖掘方法在不同中医研究问题中尝试得到的挖掘结果,并评价其对中医研究的贡献性,而并非关注于具体某种算法的性能.
7结语
面向对象软件设计模式中的策略模式非常适合用于数据挖掘应用研究的科研软件平台的架构,本文对此进行了论述,并提出了设计概要.在此基础之上,利用基于J S P/J a v a的We b开发技术实现了一个中医数据挖掘科研软件平台,该平台具有很强的灵活性优势:在问题端和解决方法端都可以实现开放性的添加、删除、更新,并可以通过服务定制进行任意一种方法解决任意一类问题的试验,避免问题和方法之间的互相束缚,满足科研的要求.
在今后的工作中,将继续对此平台从以下几个方面进行改进:
第一、不断丰富知识库,使数据挖掘模块的工作效率更高;
第二、随着计算机可视化的发展,用户显示界面应得到升级,逐渐实现由2 D图示转化成3 D图像;
第三、不断开发算法组件,增强平台的灵活性.最后,这种基于策略模式,在问题端和方法端都进行封装,从而实现问题和方法之间多对多灵活选择试验的设计思想,可以应用在很多科研平台上.