APP下载

融合知识图谱和协同过滤的医疗不良事件推荐研究

2022-04-24魏江南皋军热甫凯提

软件导刊 2022年4期
关键词:相似性图谱协同

魏江南,皋军,热甫凯提

(1.江苏科技大学计算机学院,江苏镇江 212003;2.盐城工学院信息化建设与管理办公室,江苏盐城 221051;3.喀什地区第一人民医院网络信息中心,新疆喀什 844000)

0 引言

以往在处理不良事件时,医护人员完全根据自己的经验作出处理决定,这种做法既不严谨也不方便,而且很容易产生医疗纠纷。为了提高处理结果的准确性和工作效率,本文对医院长久以来积累的不良事件数据集进行采集训练,为医护人员从众多的不良事件中推荐最合适的处理方法。文献[1]-[5]分别提出基于贝叶斯概率模型的协同过滤推荐预测方法、基于时间序列的协同过滤个性化推荐算法、使用改进的LDA用户兴趣模型用于个性化推荐、引入推荐列表相似性将两个推荐列表相结合生成最终推荐集的方法、利用局部网络拓扑结构组合模型提升推荐集的准确度。这些算法虽然都提升了推荐效果,但是都没有考虑数据语义信息之间的关系。知识图谱是一种大规模的语义网络,统一结构化的表现形式,机器可读,已引起人们的广泛关注。文献[6]—文献[10]分别提出:通过知识图谱表示学习,将语义信息融入协同过滤算法;将结构化知识的低纬向量表示、文本知识特征、图片知识特征这3类特征融合到协同集成学习框架中,从而实现个性化推荐;将知识图谱自然地纳入推荐系统端到端框架的Ripple Net算法;将知识图谱实体嵌入与神经网络相结合的算法,将物品的语义表示和知识表示融合形成新的embedding表示,以进行用户物品推荐;将物品的外部附加数据和用户偏好数据融入知识图谱,提取实体与关系的语义,将结果与协同过滤推荐结果相融合。以上算法虽然将知识图谱引入推荐系统中,但由于医疗不良事件数据有自己专门的业务逻辑和评价标准,使用这些算法给出的推荐结果与传统方法相比正确率提升都不超过20%。

为了进一步提升不良事件处理推荐结果的准确率,本文采用知识图谱特征学习与协同过滤算法相融合的方式,提出了医疗不良事件推荐算法MAE_CFH。首先使用知识图谱自训练算法得到病人基本信息的语义表示,使用余弦相似性算法获得病人的语义近邻;然后运用协同过滤算法获取具有相似不良事件病人的矩阵;再将两种算法的结果融合,两种结果集中相似度最高的结果形成一个结果集作为最后推荐结果。实验结果表明,该算法对推荐效果的改善较为明显,引入知识图谱也使得推荐结果更具可解释性。

1 相关工作

1.1 基于协同过滤算法的推荐

协同过滤算法是最早诞生的推荐算法之一,同时也是被使用最多的推荐算法,协同过滤推荐算法主要分为两种:一种是基于用户的推荐,对比其它用户喜欢过的物品,如果与当前用户喜欢的相似就推荐给他;另一种是基于物品的推荐,从众多物品中找出与用户喜欢物品相似度较高的物品并将它们推荐给用户。

在医疗不良事件表中有“事件基本信息”如图1所示。可以模仿基于用户的协同过滤算法,将其中的信息比喻成不同的物品,如病人A的事件类别是“输液—外周静脉”,病人B的事件类别也是“输液—外周静脉”,说明两个人是相似的,因此将病人A的处理方法推荐给病人B。本文使用皮尔逊相关系数计算出不良事件之间的相似度。

Fig.1 Event basic information图1 事件基本信息

1.2 基于知识图谱的推荐

相较于其他辅助信息,知识图谱的最大优势是让推荐结果具有更高的精准性和可解释性。知识图谱在推荐算法中的应用主要有两种:一种是以LibFM为代表的Embedding算法,另一种是以Meta Graph、PER为代表的Path算法。Embedding-based算法一般直接使用知识图谱信息以改善item和user的表示。该算法有基于翻译距离模型和语义匹配模型两类。翻译距离模型包括:TransE、TransH、TransR等,语义匹配模型包括RESCAL、Dist-Mult、HolE等。Path方法的基本思想是通过发现连接两个实体的一组关系路径预测实体间可能存在的某种特定关系,进而改善推荐效果。本算法使用的数据集为某市三甲医院提供的不良事件数据集,因其可能存在一个病人有多个不良事件或者单个不良事件对应多个病人的问题,因此采用翻译距离模型TransH最为妥当。

2 融合知识图谱与协同过滤的推荐算法

若只使用协同过滤算法处理数据集会导致推荐结果不够精准且不具备可解释性,这是医疗行业的大忌,很可能造成医疗纠纷。因此本文引入知识图谱,将病人的基本语义信息融入推荐算法中,利用知识图谱的自学习算法,将病人的语义信息变为低纬的向量矩阵,再利用相似性计算方法计算出病人之间的相似程度,最后形成病人的相似性矩阵。使用协同过滤的学习算法,根据不良事件基本信息评分矩阵,获取病人相似性矩阵,最后将两种结果以低位换高位的方式进行融合。算法流程如图2所示。

Fig.2 Algorithm flow图2 算法流程

2.1 协同过滤

基于用户的协同过滤算法,是以用户的评分矩阵为基础,将“事件基本信息”中的各种事件类别假设成物品,与对应的类别信息越相近的分数越高反之分数越低,取值范围是0~5,如果没有对应的事件类别就没有评分,如图3所示。

Fig.3 Event category information图3 事件类别信息

根据打分情况计算出待处理病人与其它病人的相似度,同时从其中选择相似度最高的5个病人作为推荐结果集。这里运用皮尔逊相关系数计算病人之间的相似度。

2.2 知识图谱

知识图谱是指将不同种类的信息连接在一起从而得到的一个知识网络,其具有3个主要特点:①由边和节点组成;②每个节点都有真实对应的实体;③每条边代表两个实体之间的关系。以病人信息为例,如图4所示。

Fig.4 A triplet图4 三元组

在图4中,张三与ZY010000XXXXXX通过“住院号”建立实体与实体之间的关系从而构成了一个三元组。三元组与三元组之间再互相关联最后得到知识图谱。因此,在病人信息知识图谱中,距离越近的两个病人越是相似。病人知识图谱如图5所示。

Fig.5 Patient knowledge graph图5 病人知识图谱

在知识图谱训练中,本文采用TransH的训练方法,TransH算法是在TransE模型基础上改进而来,TransE将所有的三元组实例(h,r,t)中的关系r看作从实体h到实体t的翻译,通过不停地调整h、r和t,使h+r尽量与t相等,即h+r=t。TransH算法则是将每个向量h和向量t投影到超平面上,得到新的向量(h⊥和t⊥)。在该超平面上有一个关系(d_r),就可以模仿TransE的训练方法训练TransH。TransH算法相较于TransE算法在处理一对多或者多对一的情况时更加有效,如多个病人的责任人可能只有一个护士、一个科室可能有多个病人等。经过TransH算法训练,可以得出病人的实体向量矩阵和关系向量矩阵,利用相似性公式将病人基本信息向量矩阵转化为病人相似性矩阵,选出与待处理病人相似的其它5个人病人。这里选用余弦相似度公式进行计算。

可以看出,当A、B两个病人向量的相似度越大,sim(A,B)的数值就越接近1,即知识图谱中两个病人的相似度越接近,反之,相似性越低。最终会计算出病人—病人相似性矩阵,通过矩阵可以得出病人的推荐集合。

2.3 算法融合

本文采用高相似度替换低相似度的方式,即首先将知识图谱推荐结果集及协同过滤推荐结果集按照相似度的大小倒序排序,然后用知识图谱推荐集合中相似度最高的病人替换掉协同过滤推荐集合中相似度较低的病人。这样便能保证最终的推荐结果集为最优结果集。此外,若某个病人的协同过滤推荐集合为空,即该病人只有知识图谱数据没有评分数据,则将知识图谱推荐结果集视作最优结果集。

算法1:结果集融合算法

算法2:MAE_CFH算法

输入:“事件基本信息”评分矩阵Rm*n,病人知识图谱KG。

输出:融合知识图谱和协同过滤的病人推荐算法MAE_CFH。

Step1:根据图3中事件类别信息的评分矩阵计算出与待处理病人的相似性矩阵,最后按照相似性从大到小的顺序得到推荐集合。

Step2:利用TransH算法对知识图谱KG进行训练,最后得到实体向量集E和关系向量集R。

Step3:利用Step2得到的实体向量集E和关系向量集R计算病人信息的相似性,以此得到与待处理病人的相似性矩阵。最后按照相似性从大到小的顺序得到推荐集合。

Step4:如果判断出协同过滤算法的集合为空,直接将知识图谱的推荐集返回,若不为空,则进行下一步。

Step5:输入融合比例,分别计算出协同过滤推荐集占比x及知识图谱推荐集占比y,然后分别取协同过滤推荐集中前x个成员及知识图谱推荐集中的前y个数据。如果在取得过程中出现相同的病人,则顺延取下一位。

3 实验及结果分析

3.1 实验数据集

本文选用的数据集为某市三甲医院提供的不良事件上报数据,数据集中包含了知识图谱三元组和“事件基本信息”评分数据(见图3),知识图谱和事件基本信息都有对应的病人ID号做关联。本文将评分数据分为4份,其中3份作为训练集,剩下的1份作为测试集。每次实验结果运行4次取平均值。数据集信息如表1所示。

Table1 Adverse-Event-Report data set information表1 Adverse-Event-Report数据集信息

3.2 实验环境

实验 硬件处理器型号 为Inter(R)Core(TM)i5-1021U,内存为8G,软件环境为Python 3.8。

3.3 评价指标

本文采用3个评价指标对算法结果进行分析,即精确率、召回率、F1 score。

精确率表示预测正确的样本概率。

TP

代表样本的真实类别为真,最后预测出的结果也为真,

FP

代表样本的真实类别为假,最后预测得到的结果为真。

召回率表示正确预测出真样本占实际真样本的概率。

其中,

FN

代表样本的真实类别为真,最后预测得到的结果为假。

F1对召回率和精确率进行了折中处理。

3.4 实验结果分析

本算法需要讨论推荐集的融合比例,将融合比例作为变量,展现在不同融合比例下的推荐效果。本文选取K值为10,定义相似病人数为20,融合比例从(协同过滤推荐:语义相似性推荐)=(0:10)到(协同过滤推荐:语义相似性推荐)=(10:0)分别做实验。每一种融合比例都要运行10次再求出平均值。图6为精确率、召回率和F1曲线。

Fig.6 Precision/Recall rate/F1 curve图6 精确率、召回率和F1曲线

图6的横坐标为融合比例,纵坐标分别表示精确度、召回率、F1值。从图6可以看出,随着融合比例的不断增大,精确率、召回率、F1值均有所提升,一直到融合比例为6∶4时效果达到最好。因此,在进行推荐时协同过滤占60%,病人信息相似性占40%时效果最好。

图7-图9分别是本文算法模型与LibFM、CKE、Ripple Net、DKN算法模型的召回率、精确度及F1值的比较。可以看出,本文提出的模型优于其他模型。

Fig.7 Comparison of recall rates of each algorithm图7 各算法召回率比较

Fig.8 Accuracy comparison of each algorithm图8 各算法精确度比较

Fig.9 Comparison of F1value of each algorithm图9 各算法F1值比较

4 结语

本文提出了一种将医疗知识图谱和协同过滤相结合的推荐算法,将协同过滤算法推荐出来的病人数据与知识图谱推荐的病人数据相结合,很好地提升了推荐效果。算法利用TransH将知识图谱数据转换为低维空间向量矩阵,获取病人信息的实体和关系向量矩阵,然后通过余弦相似度公式计算出与待处理病人的相似性矩阵,使用基于用户的协同过滤算法计算出与待处理病人相似的病人矩阵,最后将两个推荐矩阵相结合得到最终结果。该算法避免了只考虑评分而不考虑病人语义关系所带来的推荐结果不够准确的问题,使得结果正确率平均提升35%,降低了医疗事故发生概率。但该算法还存在待改进之处,例如:目前方法只用到了医院提供数据集的部分信息,还有更多的信息可以应用,推荐效果有待继续提升;目前只实现了找到相似病人,让医护人员参考这些相似病人进而作出决策,而医院更希望算法能直接给出针对病人的处理方案,这为今后工作指明了方向。

猜你喜欢

相似性图谱协同
一类上三角算子矩阵的相似性与酉相似性
蜀道难:车与路的协同进化
绘一张成长图谱
浅析当代中西方绘画的相似性
“四化”协同才有出路
补肾强身片UPLC指纹图谱
三医联动 协同创新
低渗透黏土中氯离子弥散作用离心模拟相似性
协同进化
V4国家经济的相似性与差异性