魏江南,皋軍,熱甫凱提
(1.江蘇科技大學(xué)計(jì)算機(jī)學(xué)院,江蘇鎮(zhèn)江 212003;2.鹽城工學(xué)院信息化建設(shè)與管理辦公室,江蘇鹽城 221051;3.喀什地區(qū)第一人民醫(yī)院網(wǎng)絡(luò)信息中心,新疆喀什 844000)
以往在處理不良事件時(shí),醫(yī)護(hù)人員完全根據(jù)自己的經(jīng)驗(yàn)作出處理決定,這種做法既不嚴(yán)謹(jǐn)也不方便,而且很容易產(chǎn)生醫(yī)療糾紛。為了提高處理結(jié)果的準(zhǔn)確性和工作效率,本文對(duì)醫(yī)院長(zhǎng)久以來積累的不良事件數(shù)據(jù)集進(jìn)行采集訓(xùn)練,為醫(yī)護(hù)人員從眾多的不良事件中推薦最合適的處理方法。文獻(xiàn)[1]-[5]分別提出基于貝葉斯概率模型的協(xié)同過濾推薦預(yù)測(cè)方法、基于時(shí)間序列的協(xié)同過濾個(gè)性化推薦算法、使用改進(jìn)的LDA用戶興趣模型用于個(gè)性化推薦、引入推薦列表相似性將兩個(gè)推薦列表相結(jié)合生成最終推薦集的方法、利用局部網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)組合模型提升推薦集的準(zhǔn)確度。這些算法雖然都提升了推薦效果,但是都沒有考慮數(shù)據(jù)語(yǔ)義信息之間的關(guān)系。知識(shí)圖譜是一種大規(guī)模的語(yǔ)義網(wǎng)絡(luò),統(tǒng)一結(jié)構(gòu)化的表現(xiàn)形式,機(jī)器可讀,已引起人們的廣泛關(guān)注。文獻(xiàn)[6]—文獻(xiàn)[10]分別提出:通過知識(shí)圖譜表示學(xué)習(xí),將語(yǔ)義信息融入?yún)f(xié)同過濾算法;將結(jié)構(gòu)化知識(shí)的低緯向量表示、文本知識(shí)特征、圖片知識(shí)特征這3類特征融合到協(xié)同集成學(xué)習(xí)框架中,從而實(shí)現(xiàn)個(gè)性化推薦;將知識(shí)圖譜自然地納入推薦系統(tǒng)端到端框架的Ripple Net算法;將知識(shí)圖譜實(shí)體嵌入與神經(jīng)網(wǎng)絡(luò)相結(jié)合的算法,將物品的語(yǔ)義表示和知識(shí)表示融合形成新的embedding表示,以進(jìn)行用戶物品推薦;將物品的外部附加數(shù)據(jù)和用戶偏好數(shù)據(jù)融入知識(shí)圖譜,提取實(shí)體與關(guān)系的語(yǔ)義,將結(jié)果與協(xié)同過濾推薦結(jié)果相融合。以上算法雖然將知識(shí)圖譜引入推薦系統(tǒng)中,但由于醫(yī)療不良事件數(shù)據(jù)有自己專門的業(yè)務(wù)邏輯和評(píng)價(jià)標(biāo)準(zhǔn),使用這些算法給出的推薦結(jié)果與傳統(tǒng)方法相比正確率提升都不超過20%。
為了進(jìn)一步提升不良事件處理推薦結(jié)果的準(zhǔn)確率,本文采用知識(shí)圖譜特征學(xué)習(xí)與協(xié)同過濾算法相融合的方式,提出了醫(yī)療不良事件推薦算法MAE_CFH。首先使用知識(shí)圖譜自訓(xùn)練算法得到病人基本信息的語(yǔ)義表示,使用余弦相似性算法獲得病人的語(yǔ)義近鄰;然后運(yùn)用協(xié)同過濾算法獲取具有相似不良事件病人的矩陣;再將兩種算法的結(jié)果融合,兩種結(jié)果集中相似度最高的結(jié)果形成一個(gè)結(jié)果集作為最后推薦結(jié)果。實(shí)驗(yàn)結(jié)果表明,該算法對(duì)推薦效果的改善較為明顯,引入知識(shí)圖譜也使得推薦結(jié)果更具可解釋性。
協(xié)同過濾算法是最早誕生的推薦算法之一,同時(shí)也是被使用最多的推薦算法,協(xié)同過濾推薦算法主要分為兩種:一種是基于用戶的推薦,對(duì)比其它用戶喜歡過的物品,如果與當(dāng)前用戶喜歡的相似就推薦給他;另一種是基于物品的推薦,從眾多物品中找出與用戶喜歡物品相似度較高的物品并將它們推薦給用戶。
在醫(yī)療不良事件表中有“事件基本信息”如圖1所示??梢阅7禄谟脩舻膮f(xié)同過濾算法,將其中的信息比喻成不同的物品,如病人A的事件類別是“輸液—外周靜脈”,病人B的事件類別也是“輸液—外周靜脈”,說明兩個(gè)人是相似的,因此將病人A的處理方法推薦給病人B。本文使用皮爾遜相關(guān)系數(shù)計(jì)算出不良事件之間的相似度。
Fig.1 Event basic information圖1 事件基本信息
相較于其他輔助信息,知識(shí)圖譜的最大優(yōu)勢(shì)是讓推薦結(jié)果具有更高的精準(zhǔn)性和可解釋性。知識(shí)圖譜在推薦算法中的應(yīng)用主要有兩種:一種是以LibFM為代表的Embedding算法,另一種是以Meta Graph、PER為代表的Path算法。Embedding-based算法一般直接使用知識(shí)圖譜信息以改善item和user的表示。該算法有基于翻譯距離模型和語(yǔ)義匹配模型兩類。翻譯距離模型包括:TransE、TransH、TransR等,語(yǔ)義匹配模型包括RESCAL、Dist-Mult、HolE等。Path方法的基本思想是通過發(fā)現(xiàn)連接兩個(gè)實(shí)體的一組關(guān)系路徑預(yù)測(cè)實(shí)體間可能存在的某種特定關(guān)系,進(jìn)而改善推薦效果。本算法使用的數(shù)據(jù)集為某市三甲醫(yī)院提供的不良事件數(shù)據(jù)集,因其可能存在一個(gè)病人有多個(gè)不良事件或者單個(gè)不良事件對(duì)應(yīng)多個(gè)病人的問題,因此采用翻譯距離模型TransH最為妥當(dāng)。
若只使用協(xié)同過濾算法處理數(shù)據(jù)集會(huì)導(dǎo)致推薦結(jié)果不夠精準(zhǔn)且不具備可解釋性,這是醫(yī)療行業(yè)的大忌,很可能造成醫(yī)療糾紛。因此本文引入知識(shí)圖譜,將病人的基本語(yǔ)義信息融入推薦算法中,利用知識(shí)圖譜的自學(xué)習(xí)算法,將病人的語(yǔ)義信息變?yōu)榈途暤南蛄烤仃?,再利用相似性?jì)算方法計(jì)算出病人之間的相似程度,最后形成病人的相似性矩陣。使用協(xié)同過濾的學(xué)習(xí)算法,根據(jù)不良事件基本信息評(píng)分矩陣,獲取病人相似性矩陣,最后將兩種結(jié)果以低位換高位的方式進(jìn)行融合。算法流程如圖2所示。
Fig.2 Algorithm flow圖2 算法流程
基于用戶的協(xié)同過濾算法,是以用戶的評(píng)分矩陣為基礎(chǔ),將“事件基本信息”中的各種事件類別假設(shè)成物品,與對(duì)應(yīng)的類別信息越相近的分?jǐn)?shù)越高反之分?jǐn)?shù)越低,取值范圍是0~5,如果沒有對(duì)應(yīng)的事件類別就沒有評(píng)分,如圖3所示。
Fig.3 Event category information圖3 事件類別信息
根據(jù)打分情況計(jì)算出待處理病人與其它病人的相似度,同時(shí)從其中選擇相似度最高的5個(gè)病人作為推薦結(jié)果集。這里運(yùn)用皮爾遜相關(guān)系數(shù)計(jì)算病人之間的相似度。
知識(shí)圖譜是指將不同種類的信息連接在一起從而得到的一個(gè)知識(shí)網(wǎng)絡(luò),其具有3個(gè)主要特點(diǎn):①由邊和節(jié)點(diǎn)組成;②每個(gè)節(jié)點(diǎn)都有真實(shí)對(duì)應(yīng)的實(shí)體;③每條邊代表兩個(gè)實(shí)體之間的關(guān)系。以病人信息為例,如圖4所示。
Fig.4 A triplet圖4 三元組
在圖4中,張三與ZY010000XXXXXX通過“住院號(hào)”建立實(shí)體與實(shí)體之間的關(guān)系從而構(gòu)成了一個(gè)三元組。三元組與三元組之間再互相關(guān)聯(lián)最后得到知識(shí)圖譜。因此,在病人信息知識(shí)圖譜中,距離越近的兩個(gè)病人越是相似。病人知識(shí)圖譜如圖5所示。
Fig.5 Patient knowledge graph圖5 病人知識(shí)圖譜
在知識(shí)圖譜訓(xùn)練中,本文采用TransH的訓(xùn)練方法,TransH算法是在TransE模型基礎(chǔ)上改進(jìn)而來,TransE將所有的三元組實(shí)例(h,r,t)中的關(guān)系r看作從實(shí)體h到實(shí)體t的翻譯,通過不停地調(diào)整h、r和t,使h+r盡量與t相等,即h+r=t。TransH算法則是將每個(gè)向量h和向量t投影到超平面上,得到新的向量(h⊥和t⊥)。在該超平面上有一個(gè)關(guān)系(d_r),就可以模仿TransE的訓(xùn)練方法訓(xùn)練TransH。TransH算法相較于TransE算法在處理一對(duì)多或者多對(duì)一的情況時(shí)更加有效,如多個(gè)病人的責(zé)任人可能只有一個(gè)護(hù)士、一個(gè)科室可能有多個(gè)病人等。經(jīng)過TransH算法訓(xùn)練,可以得出病人的實(shí)體向量矩陣和關(guān)系向量矩陣,利用相似性公式將病人基本信息向量矩陣轉(zhuǎn)化為病人相似性矩陣,選出與待處理病人相似的其它5個(gè)人病人。這里選用余弦相似度公式進(jìn)行計(jì)算。
可以看出,當(dāng)A、B兩個(gè)病人向量的相似度越大,sim(A,B)的數(shù)值就越接近1,即知識(shí)圖譜中兩個(gè)病人的相似度越接近,反之,相似性越低。最終會(huì)計(jì)算出病人—病人相似性矩陣,通過矩陣可以得出病人的推薦集合。
本文采用高相似度替換低相似度的方式,即首先將知識(shí)圖譜推薦結(jié)果集及協(xié)同過濾推薦結(jié)果集按照相似度的大小倒序排序,然后用知識(shí)圖譜推薦集合中相似度最高的病人替換掉協(xié)同過濾推薦集合中相似度較低的病人。這樣便能保證最終的推薦結(jié)果集為最優(yōu)結(jié)果集。此外,若某個(gè)病人的協(xié)同過濾推薦集合為空,即該病人只有知識(shí)圖譜數(shù)據(jù)沒有評(píng)分?jǐn)?shù)據(jù),則將知識(shí)圖譜推薦結(jié)果集視作最優(yōu)結(jié)果集。
算法1:結(jié)果集融合算法
算法2:MAE_CFH算法
輸入:“事件基本信息”評(píng)分矩陣Rm*n,病人知識(shí)圖譜KG。
輸出:融合知識(shí)圖譜和協(xié)同過濾的病人推薦算法MAE_CFH。
Step1:根據(jù)圖3中事件類別信息的評(píng)分矩陣計(jì)算出與待處理病人的相似性矩陣,最后按照相似性從大到小的順序得到推薦集合。
Step2:利用TransH算法對(duì)知識(shí)圖譜KG進(jìn)行訓(xùn)練,最后得到實(shí)體向量集E和關(guān)系向量集R。
Step3:利用Step2得到的實(shí)體向量集E和關(guān)系向量集R計(jì)算病人信息的相似性,以此得到與待處理病人的相似性矩陣。最后按照相似性從大到小的順序得到推薦集合。
Step4:如果判斷出協(xié)同過濾算法的集合為空,直接將知識(shí)圖譜的推薦集返回,若不為空,則進(jìn)行下一步。
Step5:輸入融合比例,分別計(jì)算出協(xié)同過濾推薦集占比x及知識(shí)圖譜推薦集占比y,然后分別取協(xié)同過濾推薦集中前x個(gè)成員及知識(shí)圖譜推薦集中的前y個(gè)數(shù)據(jù)。如果在取得過程中出現(xiàn)相同的病人,則順延取下一位。
本文選用的數(shù)據(jù)集為某市三甲醫(yī)院提供的不良事件上報(bào)數(shù)據(jù),數(shù)據(jù)集中包含了知識(shí)圖譜三元組和“事件基本信息”評(píng)分?jǐn)?shù)據(jù)(見圖3),知識(shí)圖譜和事件基本信息都有對(duì)應(yīng)的病人ID號(hào)做關(guān)聯(lián)。本文將評(píng)分?jǐn)?shù)據(jù)分為4份,其中3份作為訓(xùn)練集,剩下的1份作為測(cè)試集。每次實(shí)驗(yàn)結(jié)果運(yùn)行4次取平均值。數(shù)據(jù)集信息如表1所示。
Table1 Adverse-Event-Report data set information表1 Adverse-Event-Report數(shù)據(jù)集信息
實(shí)驗(yàn) 硬件處理器型號(hào) 為Inter(R)Core(TM)i5-1021U,內(nèi)存為8G,軟件環(huán)境為Python 3.8。
本文采用3個(gè)評(píng)價(jià)指標(biāo)對(duì)算法結(jié)果進(jìn)行分析,即精確率、召回率、F1 score。
精確率表示預(yù)測(cè)正確的樣本概率。
TP
代表樣本的真實(shí)類別為真,最后預(yù)測(cè)出的結(jié)果也為真,FP
代表樣本的真實(shí)類別為假,最后預(yù)測(cè)得到的結(jié)果為真。召回率表示正確預(yù)測(cè)出真樣本占實(shí)際真樣本的概率。
FN
代表樣本的真實(shí)類別為真,最后預(yù)測(cè)得到的結(jié)果為假。F1對(duì)召回率和精確率進(jìn)行了折中處理。
本算法需要討論推薦集的融合比例,將融合比例作為變量,展現(xiàn)在不同融合比例下的推薦效果。本文選取K值為10,定義相似病人數(shù)為20,融合比例從(協(xié)同過濾推薦:語(yǔ)義相似性推薦)=(0:10)到(協(xié)同過濾推薦:語(yǔ)義相似性推薦)=(10:0)分別做實(shí)驗(yàn)。每一種融合比例都要運(yùn)行10次再求出平均值。圖6為精確率、召回率和F1曲線。
Fig.6 Precision/Recall rate/F1 curve圖6 精確率、召回率和F1曲線
圖6的橫坐標(biāo)為融合比例,縱坐標(biāo)分別表示精確度、召回率、F1值。從圖6可以看出,隨著融合比例的不斷增大,精確率、召回率、F1值均有所提升,一直到融合比例為6∶4時(shí)效果達(dá)到最好。因此,在進(jìn)行推薦時(shí)協(xié)同過濾占60%,病人信息相似性占40%時(shí)效果最好。
圖7-圖9分別是本文算法模型與LibFM、CKE、Ripple Net、DKN算法模型的召回率、精確度及F1值的比較。可以看出,本文提出的模型優(yōu)于其他模型。
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值比較
本文提出了一種將醫(yī)療知識(shí)圖譜和協(xié)同過濾相結(jié)合的推薦算法,將協(xié)同過濾算法推薦出來的病人數(shù)據(jù)與知識(shí)圖譜推薦的病人數(shù)據(jù)相結(jié)合,很好地提升了推薦效果。算法利用TransH將知識(shí)圖譜數(shù)據(jù)轉(zhuǎn)換為低維空間向量矩陣,獲取病人信息的實(shí)體和關(guān)系向量矩陣,然后通過余弦相似度公式計(jì)算出與待處理病人的相似性矩陣,使用基于用戶的協(xié)同過濾算法計(jì)算出與待處理病人相似的病人矩陣,最后將兩個(gè)推薦矩陣相結(jié)合得到最終結(jié)果。該算法避免了只考慮評(píng)分而不考慮病人語(yǔ)義關(guān)系所帶來的推薦結(jié)果不夠準(zhǔn)確的問題,使得結(jié)果正確率平均提升35%,降低了醫(yī)療事故發(fā)生概率。但該算法還存在待改進(jìn)之處,例如:目前方法只用到了醫(yī)院提供數(shù)據(jù)集的部分信息,還有更多的信息可以應(yīng)用,推薦效果有待繼續(xù)提升;目前只實(shí)現(xiàn)了找到相似病人,讓醫(yī)護(hù)人員參考這些相似病人進(jìn)而作出決策,而醫(yī)院更希望算法能直接給出針對(duì)病人的處理方案,這為今后工作指明了方向。