中医药数据隐结构分析平台—孔明灯网络版*

2020-04-19 07:12许玉龙王忠义吕雅丽王林景朱红磊
世界科学技术-中医药现代化 2020年7期
关键词:网络版孔明灯日志

许玉龙,王忠义,吕雅丽,王林景,王 昂,朱红磊,宋 婷

(1. 河南中医药大学信息技术学院 郑州 450046;2. 香港科技大学计算机科学与工程学系 香港西贡清水湾)

1 前言

隐结构分析是香港科技大学张连文教授为研究中医药提出的专用方法[1,2],属于无监督学习的一种,底层原理是贝叶斯网络及概率图模型。隐结构在分析中医药数据时,是基于症状等显式数据的概率同现,从一组症状显变量出发,推导分析出隐藏知识,对隐含的知识进行中医诠释,得到相应的隐变量(证候),整个学习过程契合于中医大夫的诊病过程,较适宜研究中医证候问题[3-6,14]。现有研究成果表明[7,8,12,13,15,16],该方法已成功用于分析多种疾病的证候数据,并取得较好效果。

在提出隐结构方法的同时,张教授团队开发了用于隐结构模型学习的单机版软件Lantern,即孔明灯[9]。该软件实现了隐结构模型的学习过程,包含了多种模型学习的方法,被国内外相关研究者广泛使用。该方法在学习模型时,底层维护的是一个特殊贝叶斯网络,使用期望最大(EM, Expectation-Maximization)等算法学习出整个网络结构,以及网络中所有症状显变量节点和隐变量节点的条件概率表,并利用贝叶斯评分规则进行选择最优模型及参数,这些计算过程都属于NP(Non-deterministic Polynomial)难问题。所以,单机版孔明灯软件在模型学习时,存在计算时间长、独占电脑资源等不足,特别是当分析的数据较大时,需要几十天的时间才能学习出模型。

因此,为解决单机版孔明灯软件在计算能力上存在的不足,在张教授及其团队的指导下,我们基于单机版设计开发了生成隐结构模型的中医药数据分析网络平台,即孔明灯网络版。该网络版不需要下载客户端程序,采用分布式云服务器方式,三个计算节点能够并发支持200 个用户同时使用,并实现7×24 h 全天候计算,在模型学习的效率上较单机版提升5 倍以上。同时网络平台还具有业务日志、登录日志、监控管理等多个附加功能,较大地方便了用户和管理人员。

2 孔明灯最新单机版(V5.0)功能变化

孔明灯单机版软件是专用的隐结构模型学习软件[9],被国内外隐结构及中医药研究者们广泛使用,自发布以来,软件经历了多次更新,最新版本是2018 年发布的5.0 版,我们有幸与香港科技大学张教授团队合作,参与了5.0 版本的更新及研究工作[10,11]。下面简要介绍5.0版本的主要功能变化。

2.1 调整的算法

1)双步隐树分析,包含 BI 算法(Bridge Island)和LTM-EAST 算 法(Latent Tree Model - Extension Adjustment Simplification until Termination algorithm)。BI 算法适合初步分析,由于采用贪心算法计算求出局部最优解,所以运行时间较短,得到的隐树质量一般;LTM-EAST 算法适合正式分析,它对所有的可能解进行遍历求出全局最优,运行时间较长,得到隐树质量较高。需要说明的是,上述BI和LTM-EAST算法运算时,一般接收的是所有症状(属性)数据,得到模型反映整体所有属性,这是第一步。然后,第二步再根据医学知识,挑选反映某侧面的症状进行综合聚类,得到最终三层模型,进行后续的模型诠释、建立辨证规则等操作。

2)隐类模型分析(LCM,Latent Class Model)。隐类分析得到的是一个隐变量的两层隐树模型,该方法已被广泛应用于西医疾病的诊断,并取得了较好的成果[7,8]。

3)单 步 隐 树 分 析(UC-LTM,Unidimensional clustering-Latent Tree Model)。称为单维聚类的隐树分析,该方法接收的是根据医学知识挑选好的某些特定症状(属性)数据,分析之后不需再综合聚类,直接得到最终的三层隐树模型。依据得到模型可进行后续的模型诠释、建立辨证规则等操作。

2.2 新增的功能

1)建立辩证规则功能。对于得到的模型,选择隐变量节点,点击右键选择“建立辨证规则”,读入模型对应的数据文件。然后输入规则名称,最后点击“导出规则”,将自动把准确度高的规则导出为csv 文件在数据的同一目录下。假设规则名为气虚证,点击“导出规则”后,导出规则文件如表1 所示,规则为多行2列数据,第一行第一列元素为规则名,第一行第二列元素为规则阈值。从第二行开始,为症状名和分值。

表1 导出的辩证规则表

2)使用规则进行辨证功能。导出某证候规则后,依据该规则文件,可对数据进行辨证。辨证过程:依据规则的阈值和症状分值,对原始数据症状进行计算分值总和,根据该总分值与阈值的比较来判断是否属于该证候。

图1 气虚证辩证结果

首先,点击菜单栏中“分析”--->“使用规则进行辨证…”,读入csv 格式数据文件,然后读入对应csv 格式规则文件。最后进行辨证,辨证结果文件导出在数据文件相同的文件夹下。图1 为辨证结果,文件名为“气虚证_辨证结果.csv”,文件中将辨证结果添加到原始数据的最后一列,列名为“气虚证”,数值1表示有气虚证,0表示无气虚证。

3)证候与西医指标对应分析功能。为分析中医证候与西医指标之间的关系,孔明灯5.0 提供了证候与西医指标对应分析的功能,对比是否存在某证候的两类人群,发掘哪些西医指标对证候的存在有较大影响。采用T检验原理,得到p和t两个值,p值表示有无统计学意义,t值表示正负相关性。根据p值最小的几个指标,发掘西医指标对判断是否属于气虚证(以气虚证为例)的影响。以某数据集为例,得到结果如图2所示,共包含四部分:西医指标在原始数据中列的序号、西医指标名称、t值、p值。

3 孔明灯网络版平台构建

虽然孔明灯单机版包含多种模型学习方法,也被国内外相关研究者广泛使用,但在学习模型时,算法底层维护的是一个特殊贝叶斯网络,需要学习出整个网络结构,以及网络中所有症状显变量节点和隐变量节点的条件概率表,并利用贝叶斯评分规则选择最优的模型及参数,这些计算过程都属于NP 难问题。所以,单机版孔明灯在模型学习时,存在计算时间长、独占电脑资源等不足,特别在处理的数据量较大时,需几十天时间才能学习出模型。

因此,为解决单机版孔明灯在计算能力上存在的不足,我们基于该软件最新版(V5.0),设计开发了学习隐结构模型的中医药数据分析平台,即孔明灯网络版。网络版平台有三个节点组成,一台web节点部署web服务、一台数据库节点部署数据库、一台计算节点负责任务的计算,能够最多支持200 个用户同时进行7*24 小时的计算,模型学习时间缩短至单机版软件的五分之一,较大地方便了用户。目前网络版平台正在开放测试中,网址为http://ai.hactcm.edu.cn,其主要功能模块子系统如下。

3.1 用户中心子系统

该模块负责对用户的管理,包括新增用户、删除用户;权限分配、修改密码;修改个人资料、重置密码;冻结用户、解冻用户等功能。平均响应时间小于1 s,系统最大响应时间小于3 s。如下图3所示。

3.2 综合管理子系统

综合管理主要负责对用户的权限管理,包括:1)机构管理:负责科研所、会员单位等的管理;2)字典管理:负责系统字典库的管理;3)业务日志管理:负责记录用户操作的所有日志;4)登录日志管理:负责记录用户登录操作的日志;5)监控管理:负责记录数据库、链接池、SQL、Session、Spring 以及API 的监控;6)通知管理:负责发布一些系统公告。如下图4所示。

图2 气虚证与部分西医指标对应关系

图3 用户中心模块

图4 综合管理模块

3.3 调度中心子系统

调度中心为核心模块之一,是一个轻量级分布式任务调度框架,负责对任务进行资源的分配,实现负载均衡和更大的负载量。它有三种角色:1)JobClient(任务调度):主要负责提交任务, 并接收任务执行后的反馈结果;2)JobTracker(任务分配):负责接收并分配任务,完成任务调度;3)TaskTracker(任务执行):负责执行任务,执行完反馈给JobTracker。

各个节点都是无状态的,通过部署多个节点来实现负载均衡和承担更大的负载量,框架具有很好的容错能力。采用多种注册中心(Zookeeper)进行节点信息暴露和主(master)选举;部署了(Mongo or Mysql)存储任务的队列和执行日志,采用netty 实现底层通信,支持实时任务和定时任务(如:3天之后执行)。

具体执行步骤:首先,JobClient 提交任务给JobTracker。对提交的任务,有两种不同的客户端做出处理。 一种是当JobTracker 不存在或者提交失败,直接返回提交失败。另一种称为重试客户端,如果提交失败,先存储到本地FailStore(失败存储,多线程访问,做文件锁处理),返回给客户端提交成功的信息,待JobTracker可用时,再将任务提交。接着,JobTracker收到JobClient 提交的任务,将任务存入任务队列。JobTracker 等待 TaskTracker 的 Pull 请求,然后将任务Push 给 TaskTracker 去 执 行 。 TaskTracker 收 到JobTracker分发来的任务后,从线程池中拿到一个线程去执行。执行完毕之后,再反馈任务执行结果给JobTracker(成功or 失败[失败有失败错误信息])。此时,如果发现JobTacker不可用,那么存储本地FailStore,等待TaskTracker可用的时候再反馈。反馈结果同时,询问JobTacker 是否有新的任务要执行。JobTacker 收到TaskTracker 节点的任务结果信息后,根据任务信息决定是否反馈给客户端。若不需要反馈就直接删除,否则,直接反馈,反馈失败则等待重新反馈。最后,JobClient收到任务执行结果,进行后续的逻辑处理。

3.4 分布式计算子系统

分布式计算是系统核心模块,主要包括算法执行程序。具体负责处理数据、生产数据,读入用户提供的数据。采用隐结构BI、EAST 等算法进行分析数据,然后学习得到隐树模型图,并展示给用户。算法执行模块执行封装好的算法,调用算法API,并把算法的执行的结果保存到数据库。此模块为具体计算模块,当数据量大时,运行时间较长,几天至几十天。在运算过程中,与其他模块相互通信,保证多个用户能够同时运行使用系统,并计算和监控系统使用资源情况。具体如图5所示。

主要包括:1)在TaskTracker 端提供业务日志记录器,供应用程序使用,通过业务日志器,将日志提交到JobTracker。这些业务日志通过任务ID 串联,在Admin 中实时查看任务的执行进度。2)SPI(service provider interface)扩展支持。SPI 扩展可以达到零侵入,只需要实现相应的接口,并实现即可被LTS(lighttask-scheduler)使用。3)任务队列的扩展,主要支持console,mysql,mongo,用户也可以通过扩展选择输送日志。4)故障转移,若正在执行任务的TaskTracker 宕机后,JobTracker 立即将在宕机TaskTracker 的所有任务再分配给其他正常的TaskTracker 节点执行。5)节点监控,对JobTracker、TaskTracker 节点进行资源监控、任务监控等,实时在管理员后台查看,进而进行合理的资源调配。 6)多样化任务执行结果支持。LTS框架提供四种执行结果支持,EXECUTE_SUCCESS,EXECUTE_FAILED,EXECUTE_LATER,EXECUTE_EXCEPTION,并对每种结果采取相应的处理机制,例如重试。7)FailStore 容错,采用 FailStore 机制来进行节点容错,不会因为远程通信的不稳定性而影响当前应用的运行。

4 孔明灯网络版使用简介

前文介绍了网络版系统的各个功能,本节从用户角度介绍使用系统来分析数据得到隐树模型的过程。

图5 分布式计算子系统

图6 网络版系统登录界面

4.1 读入数据。

按照孔明灯软件规定的格式整理好待分析数据,打开系统网址http://ai.hactcm.edu.cn,输入账号密码和验证码(联系作者即可开通账号),点击登录,如图6所示。

然后点击分析任务管理→新增任务,弹出如下图7 对话框,在对话框中输入任务名称和读入数据文件,然后点击解析,加载数据完成。

4.2 设定参数和算法

加载完数据后,在分析任务管理中,选择查看设置任务参数,进行修改参数和算法,如图8 和图9 所示。在图9 中设置好参数和算法后,点击保存按钮。然后在图8中点击运行任务,即可开始模型学习,根据数据量大小其学习所需时间不同。

4.3 查看结果及导出文件

学习得到模型以后,在系统中可查看模型结果、模型诠释、模型评分、建立规则,同时可以导出模型文件,方便在客户端程序中进行模型排版。在分析任务监控中,点击已完成,查看已完成的数据分析结果,如图10所示。

图7 添加待分析的数据

图8 分析任务管理

图9 设置参数和算法

图10 中可导出模型BIF 文件,若需要在网络平台中查看结果树,选择其中某个结果,点击查看结果树,观察该模型树状结构,如图11 所示。在图11 中,可以对该模型进行诠释、评价模型、建立辩证规则等操作。

表2 网络版与单机版运行时间对比表 分钟

图10 查看运行结果列表

图11 孔明灯网络版得到某模型结构展示

5 计算效率对比及总结

为测试网络版的计算效力,采用三种不同规模的数据集与单机版进行测试对比。数据集一规模为117行119列、数据集二规模为1087行124列、数据集三规模为8000 行100 列,分别在网络版和单机版上进行测试,调用算法为LTM-EAST,单机版运行在主流配置的电脑上,运行时间结果如下表2所示。

通过表2 可以明显看出,网络版系统的计算效力明显提高,计算效力较单机版提升5 倍以上。特别是运行数据集三时,由单机版的30 天降低到5 天左右,明显节省了模型学习时间。

本文为解决隐结构分析软件孔明灯单机版在计算能力和单点计算的不足,基于单机版的底层算法搭建了隐结构分析的网络版,该网络版利用私有云计算资源,动态调整所需计算资源,能够并发支持200 个用户同时使用,并实现7*24 h 全天候计算,在实际的数据集测试中,其计算效率较单机版平均提升5倍以上。

同时网络版还具有业务日志、登录日志、监控管理等多个附加功能,较大地方便了用户和管理人员,为推广和使用隐结构研究中医药起到积极的作用,也为中医药的传承和发展做出一定的贡献。

猜你喜欢
网络版孔明灯日志
一名老党员的工作日志
扶贫日志
孔明灯的来历
飞吧,孔明灯
一种基于VS平台的网络版数据管理系统的设计与实现
新年愿望
雅皮的心情日志
雅皮的心情日志
第一次放孔明灯
大英百科全书“要绝版”