楊 濤,孫鑫亮,朱 垚,胡孔法,周雪忠
(1. 南京大學(xué)信息管理學(xué)院 南京 210023;2. 南京中醫(yī)藥大學(xué)人工智能與信息技術(shù)學(xué)院 南京 210023;3. 南京中醫(yī)藥大學(xué)第一臨床醫(yī)學(xué)院 南京 210023;4. 北京交通大學(xué)計(jì)算機(jī)學(xué)院 北京 100044)
辨證論治是中醫(yī)臨床診療的核心思想,其中“辨證”是臨床立法、處方和用藥的前提和基礎(chǔ)[1]。辨證是在中醫(yī)理論的指導(dǎo)下,通過四診采集患者的臨床信息,并對(duì)臨床信息進(jìn)行綜合分析、判別證型的過程。由于臨床信息到證型的對(duì)應(yīng)關(guān)系復(fù)雜,加之臨床辨證結(jié)果往往多證型兼夾,這給中醫(yī)辨證的數(shù)字化和智能化帶來障礙[2]。因此,如何有效地模擬臨床信息到證型之間的關(guān)系?如何解決兼夾證型的復(fù)雜診斷問題?已經(jīng)成為中醫(yī)診斷領(lǐng)域的研究難點(diǎn)之一[3]。
近40年來,國內(nèi)外眾多學(xué)者開展了中醫(yī)辨證智能化研究,研究方法大致可以分為:基于符號(hào)邏輯的方法、基于概率統(tǒng)計(jì)的方法、基于模糊數(shù)學(xué)的方法、基于機(jī)器學(xué)習(xí)的方法四大類[4]。這些方法各具特點(diǎn):①基于符號(hào)邏輯的方法簡(jiǎn)單易用,從理論上只要產(chǎn)生式規(guī)則的數(shù)目足夠多,就能表達(dá)出中醫(yī)專家的知識(shí);其缺點(diǎn)是當(dāng)規(guī)則較多,推理鏈較長(zhǎng)時(shí),容易出現(xiàn)前后矛盾的推理[5]。②基于概率統(tǒng)計(jì)的方法利用統(tǒng)計(jì)函數(shù)或方程(如判別函數(shù)[6]、因子分析[7]等)建立從癥狀到證的量化關(guān)系,其模型相對(duì)簡(jiǎn)單,但準(zhǔn)確性不高,泛化能力不足。③基于模糊數(shù)學(xué)[8]的方法利用利用隸屬函數(shù)表示不同證型,利用模糊相似度計(jì)算進(jìn)行證型判別,其優(yōu)點(diǎn)是簡(jiǎn)單易理解,容易被中醫(yī)人員接受,但如何建立合理的隸屬函數(shù)尚無好的方法,需要依靠專家經(jīng)驗(yàn)反復(fù)修正[9]。④基于機(jī)器學(xué)習(xí)的方法將中醫(yī)辯證問題轉(zhuǎn)為為分類問題,采用神經(jīng)網(wǎng)絡(luò)[10]、支持向量機(jī)[11]、集成學(xué)習(xí)[12]等方法模擬中醫(yī)診療。由于中醫(yī)證候種類繁多,各證候類別樣本分布不均衡等因素,導(dǎo)致分類模型難以解決復(fù)雜的中醫(yī)辨證問題。
圖1 ML_RDT算法原理
上述方法嘗試從不同角度模擬中醫(yī)辨證過程,推動(dòng)了中醫(yī)辨證數(shù)字化的發(fā)展。然而,由于臨床上簡(jiǎn)單證型較少出現(xiàn),多個(gè)證型兼夾的情況較為常見,傳統(tǒng)的方法難以處理這一問題。從信息學(xué)角度來看,多證型兼夾屬于典型的多標(biāo)記學(xué)習(xí)問題,可以嘗試?yán)枚鄻?biāo)記學(xué)習(xí)理論解決這一問題。鑒于此,本文提出一種基于依賴樹的中醫(yī)辨證多標(biāo)記學(xué)習(xí)算法ML_RDT(Multi-label Reinforced Dependency Tree),用以解決兼夾證型的診斷問題。
令X表示癥狀輸入空間(即,所有可能的輸入癥狀情況),Y表示證型輸出空間,F(xiàn)={x1,x2,……,xm}表示有m個(gè)不同的癥狀特征(feature),L= {y1,y2,……,yn}表示有n個(gè)不同的證型標(biāo)簽(label)。假設(shè)一個(gè)中醫(yī)多標(biāo)記訓(xùn)練樣本T={(Xi,Yi)|i∈[1,n]},其中Xi∈X是一個(gè)示例(instance),Yi?L表示Xi對(duì)應(yīng)的癥狀標(biāo)簽集合。多標(biāo)記學(xué)習(xí)的任務(wù)是從訓(xùn)練樣本T中學(xué)習(xí)一個(gè)多標(biāo)記分類器h:X→2L,用于預(yù)測(cè)未分類的示例。
傳統(tǒng)的多標(biāo)記學(xué)習(xí)算法不同標(biāo)簽之間相互獨(dú)立,而中醫(yī)辨證結(jié)果往往出現(xiàn)兼夾證型,兼夾證型中的各個(gè)證型(標(biāo)簽)之間存在緊密聯(lián)系,傳統(tǒng)的多標(biāo)記學(xué)習(xí)算法無法解決這一問題。ML_RDT根據(jù)中醫(yī)辨證的特點(diǎn),分別針對(duì)特征與標(biāo)簽構(gòu)造特征依賴樹和標(biāo)簽依賴樹,利用標(biāo)簽依賴樹對(duì)特征依賴樹的預(yù)測(cè)結(jié)果進(jìn)行修正,從而解決兼夾證型關(guān)聯(lián)問題。
ML_RDT算法原理如圖1所示:
第1步,從訓(xùn)練樣本T中提取不同標(biāo)簽yi對(duì)應(yīng)的正例樣本Si={Xi|(X1,yi)∈T,yi=1}和反例樣本Si′={Xi|(X1,yi)∈T,yi=0}。
第2步,分別尋找正例樣本Si和反例樣本Si′對(duì)應(yīng)的最優(yōu)依賴樹fyi=1(X)和fyi=0(X),當(dāng)判斷示例r對(duì)應(yīng)的yi標(biāo)簽上的值,計(jì)算fyi=1(r)與fyi=0(r)的值,并進(jìn)行歸一化處理。當(dāng)fyi=1(r)≧fyi=0(r),標(biāo)簽yi上取值1,否則為0。計(jì)算所有標(biāo)簽上的值,得到zr=[y0,y1,……,yn]。
第3步,尋找證型標(biāo)簽的最優(yōu)依賴樹,構(gòu)造依賴函數(shù)f(Y)。
第4 步,設(shè)定預(yù)測(cè)結(jié)果修正系數(shù)α,對(duì)歸一化后正例標(biāo)簽預(yù)測(cè)結(jié)果{fyi=1(X)|k∈[1,n]}進(jìn)行排序,將中間α%對(duì)象對(duì)應(yīng)zr中的元素置為空,作為待修正對(duì)象。將1-α%的元素輸入f(Y)預(yù)測(cè)其他α%的值,得到新的預(yù)測(cè)結(jié)果zr′。當(dāng)f(zr′)>f(zr)則預(yù)測(cè)結(jié)果為zr′,否則取zr。
尋找最優(yōu)依賴樹是ML_RDT 的關(guān)鍵之一,本文采用經(jīng)典的Chow-Liu tree building algorithm[13]建立依賴樹,該算法構(gòu)造以變量為節(jié)點(diǎn)、互信息為權(quán)值的最大生成樹作為依賴樹。
ML_RDT算法偽代碼如下:
為了評(píng)價(jià)算法效果,下列經(jīng)典的多標(biāo)記學(xué)習(xí)評(píng)價(jià)指標(biāo)[14]被使用:
3.1.1 漢明損失(Hamming loss,HL)
該指標(biāo)用于考察樣本在單個(gè)標(biāo)記上的誤分類情況,即隸屬于該樣本的概念標(biāo)記未出現(xiàn)在標(biāo)記集合中而不屬于該樣本的概念標(biāo)記出現(xiàn)在標(biāo)記集合中,其值越小,模型表現(xiàn)越好。其定義為:
其中Q為標(biāo)簽總數(shù),h(xi)為分類結(jié)果。
3.1.2 1-錯(cuò)誤率(One error,OE)
該指標(biāo)用于考察在樣本的概念標(biāo)記排序序列中,序列最前端的標(biāo)記不屬于樣本標(biāo)記集合的情況,其值越小,模型表現(xiàn)越好。其指標(biāo)表達(dá)式為:
排序第一H(xi) = 1,否則H(Xi) = 0,其中m為記錄數(shù)目。
3.1.3 覆蓋率(Coverage)
該指標(biāo)用于考察在樣本的概念標(biāo)記排序序列中,覆蓋隸屬于樣本的所有概念標(biāo)記所需的搜索深度情況,其值越小,模型表現(xiàn)越好。其定義為:
其中P 為特征標(biāo)簽的個(gè)數(shù),m為記錄數(shù)目,C(xi)=且l′i= arg mink∈Yi f(xi,k)。
3.1.4 排序損失(Ranking loss,RL)[14]
該指標(biāo)用于考察在樣本的概念標(biāo)記排序序列中出現(xiàn)排序錯(cuò)誤的情況,其值越小,模型表現(xiàn)越好。其定義為:
3.1.5 平均精度(Average precision,AVP)
該指標(biāo)用于考察在樣本的概念標(biāo)記排序序列中,排在隸屬于該樣本的概念標(biāo)記之前的標(biāo)記仍屬于樣本標(biāo)記集合的情況,其值越大,模型表現(xiàn)越好。其定義為:
其中P(xi)=
數(shù)據(jù)來源于國醫(yī)大師周仲瑛教授的電子病歷數(shù)據(jù)。抽取其診治冠心病的醫(yī)案數(shù)據(jù),根據(jù)《中醫(yī)臨床術(shù)語癥候部分》對(duì)原始數(shù)據(jù)中的癥狀和證型規(guī)范化處理,最終得到1315 條數(shù)據(jù),共503 個(gè)變量,其中482 個(gè)特征,21個(gè)標(biāo)簽。癥狀和證型的分布統(tǒng)計(jì)信息見表1。
表1 癥狀和證型的頻數(shù)統(tǒng)計(jì)
①采用十折交叉驗(yàn)證法將實(shí)驗(yàn)數(shù)據(jù)隨機(jī)分為10組,其中9 份作為訓(xùn)練數(shù)據(jù),1 份作為測(cè)試數(shù)據(jù);②將ML_RDT 在依賴樹基礎(chǔ)上,進(jìn)行了正反例依賴樹比較和預(yù)測(cè)結(jié)果修正等多重優(yōu)化。為了分析優(yōu)化的效果,我們將其與ML_DT(Multi-label Dependency Tree)、ML_PDT(Multi-label Parallel Dependency Tree)進(jìn)行比較。其中ML_DL 只生成每個(gè)標(biāo)簽對(duì)應(yīng)的正例特征標(biāo)簽依賴樹進(jìn)行預(yù)測(cè);ML_PDT 分別生成每個(gè)標(biāo)簽對(duì)應(yīng)的正反例特征標(biāo)簽依賴樹,根據(jù)正反例依賴樹預(yù)測(cè)的概率進(jìn)行最終結(jié)果判定。③將ML_RDT 與經(jīng)典的多標(biāo)記學(xué)習(xí)算法ML_KNN[14]、ML_RBF[15]、BP_MLL[16]進(jìn)行比較,以多標(biāo)記學(xué)習(xí)評(píng)價(jià)指標(biāo)對(duì)算法效果進(jìn)行比較。
ML_RDT 的十折交叉驗(yàn)證每一折的情況如圖2 所示。其中Hamming loss、One error、Coverage、Rank loss四個(gè)指標(biāo)越低,模型效果越好,Average preision 越高,模型效果越好。從圖2 可以看出,ML_RDT 的Hamming loss 小于0.1,One error、Coverage、Rank loss均小于0.2,Average preision 大于0.9,表明模型的診斷效果較好。
圖2 ML_RDT算法十折交叉驗(yàn)證結(jié)果
ML_RDT 與ML_DT、ML_PDT 的模型表現(xiàn)如表2所示,其中加粗的為各指標(biāo)下表現(xiàn)最佳的結(jié)果。從表2 可以看出,在五項(xiàng)評(píng)價(jià)指標(biāo)上,模型表現(xiàn)ML_RDT >ML_PDT>ML_DT。均采用依賴樹模型,ML_RDT 明顯優(yōu)于其他方法,證明針對(duì)正例標(biāo)簽和負(fù)例標(biāo)簽分別建模,同時(shí)考慮證型關(guān)系,利用證型依賴樹對(duì)結(jié)果進(jìn)行校正能夠有效提高模型效果。
表2 三種基于依賴樹的模型表現(xiàn)(mean ± SD)
ML_RDT 與經(jīng)典的多標(biāo)記學(xué)習(xí)算法(ML_KNN、ML_RBF、BP_MLL)的模型表現(xiàn)如表3所示。從表3可以 看 出,在Hamming loss、Coverage、Ranking loss、Average precision 四個(gè)指標(biāo)上,ML_RDT 表現(xiàn)均優(yōu)于其他算法,僅在One error指標(biāo)上低于其他算法。
ML_RDT、ML_KNN、ML_RBF、BP_MLL 在21 個(gè)標(biāo)簽下的AUC 對(duì)比情況如表4 所示,加粗的為各標(biāo)簽下表現(xiàn)最佳的結(jié)果,其中出現(xiàn)部分標(biāo)簽的AUC 取值為空(nan)情況,這是由于測(cè)試樣本分布不均衡,部分標(biāo)簽取值全為0或者1導(dǎo)致。
從測(cè)評(píng)指標(biāo)來看,ML_RDT模型表現(xiàn)較為穩(wěn)定,在每一折上的波動(dòng)較?。▓D2)。從表2可以看出,三種基于依賴樹的模型在所有的測(cè)評(píng)指標(biāo)上都呈現(xiàn)ML_RDT表現(xiàn)最佳、ML_PDT 次之、ML_DT 最差,這表明對(duì)模型進(jìn)行正反例依賴樹比較和預(yù)測(cè)結(jié)果修正的優(yōu)化有效地提升了模型效果。從表3 可以看出,ML_RDT 在Hamming loss、Coverage、Ranking loss、Average precision上表現(xiàn)最佳,One error 表現(xiàn)較ML_KNN 略差,但優(yōu)于ML_RBF 和BP_MLL 算法。從表4 可以看出,ML_RDT的AUC(max = 1.00,min = 0.88,avg = 0.97),ML_KNN的AUC(max = 1.00,min = 0.50,avg = 0.74),ML_RBF的AUC(max = 0.77,min = 0.50,avg = 0.66),BP_MLL的AUC(max = 0.78,min = 0.50,avg = 0.54),ML_RDT在各個(gè)標(biāo)簽下的AUC 表現(xiàn)全面優(yōu)于其他算法??傮w而言,ML_RDT 綜合表現(xiàn)優(yōu)于ML_KNN、ML_RBF 和BP_MLL算法。
表3 ML_RDT與經(jīng)典多標(biāo)記學(xué)習(xí)算法的模型表現(xiàn)
表4 不同算法在21個(gè)標(biāo)簽的AUC對(duì)比
從臨床意義來看,Hamming loss 反映了模型診斷結(jié)果中各個(gè)子項(xiàng)與真實(shí)診斷結(jié)果對(duì)應(yīng)情況的誤判率,其值越小,模型診斷結(jié)果與真實(shí)診斷的對(duì)應(yīng)越好;One error 反映了模型診斷結(jié)果中排序第一的診斷錯(cuò)誤情況,其值越小,對(duì)主要病證的診斷效果越好,體現(xiàn)在中醫(yī)臨床上就是抓住主要矛盾(即辨識(shí)主證)的能力;Coverage 反映了模型診斷結(jié)果與真實(shí)診斷結(jié)果相比的冗余情況,其值越小,冗余診斷越少;Average precision反映了模型診斷結(jié)果與真實(shí)診斷結(jié)果的相似度,其值越大,診斷相似度越大。從測(cè)評(píng)結(jié)果可以得知ML_RDT 診斷結(jié)果與真實(shí)的診斷的一致性較好,且冗余診斷較少,能夠很好地解決兼夾證型的診斷和重要性識(shí)別(排序)問題。
從算法設(shè)計(jì)角度來看,ML_RDT 引入了標(biāo)簽依賴樹對(duì)原始預(yù)測(cè)結(jié)果進(jìn)行校正,利用依賴樹節(jié)點(diǎn)之間的關(guān)系,通過已知節(jié)點(diǎn)預(yù)測(cè)未知節(jié)點(diǎn),較好地解決了證型之間存在關(guān)聯(lián)的問題。此外,ML_RDT 計(jì)算過程簡(jiǎn)單高效,能夠適用于小樣本數(shù)據(jù)的學(xué)習(xí)和推理,而ML_KNN、ML_RBF 和BP_MLL 對(duì)樣本量要求較高,且難以解決由于樣本分布不均衡導(dǎo)致的分類效果不佳等問題。ML_RDT 采用以變量為節(jié)點(diǎn),以互信息為權(quán)值的最大依賴樹作為模型的核心,由于互信息不受樣本分布影響,因此能夠有效解決樣本分布不均衡問題,特別適用于樣本量小、分布不均衡的中醫(yī)臨床數(shù)據(jù)集。
綜上所述,ML_RDT 針對(duì)中醫(yī)辨證的證型間夾問題進(jìn)行算法設(shè)計(jì),充分考慮了證候之間的相關(guān)性,建模過程中通過構(gòu)建證型依賴樹對(duì)初始辨證結(jié)果進(jìn)行校正,有效地提升了算法性能,診斷效果明顯優(yōu)于其他經(jīng)典的多標(biāo)記學(xué)習(xí)算法。
依賴樹屬于圖模型的一種特殊形式,其用樹結(jié)構(gòu)來描述多元隨機(jī)變量之間的聯(lián)合分布概率模型,從而給研究高維空間中的概率模型帶來了很大的便捷性。其在自然語言處理[17]、醫(yī)學(xué)診斷[18]等方面有著廣泛的應(yīng)用。本文將依賴樹引入到中醫(yī)診斷領(lǐng)域,設(shè)計(jì)了基于依賴樹的中醫(yī)辨證多標(biāo)簽分類算法ML_RDT,通過和其他多標(biāo)記學(xué)習(xí)算法比較,測(cè)評(píng)效果優(yōu)于其他比較算法,能夠有效應(yīng)用到中醫(yī)兼夾證型診斷中。研究成果可以進(jìn)一步設(shè)計(jì)成軟件系統(tǒng),為中醫(yī)臨床輔助診療服務(wù)。