楊 濤,孫鑫亮,朱 垚,胡孔法,周雪忠
(1. 南京大學信息管理學院 南京 210023;2. 南京中醫藥大學人工智能與信息技術學院 南京 210023;3. 南京中醫藥大學第一臨床醫學院 南京 210023;4. 北京交通大學計算機學院 北京 100044)
辨證論治是中醫臨床診療的核心思想,其中“辨證”是臨床立法、處方和用藥的前提和基礎[1]。辨證是在中醫理論的指導下,通過四診采集患者的臨床信息,并對臨床信息進行綜合分析、判別證型的過程。由于臨床信息到證型的對應關系復雜,加之臨床辨證結果往往多證型兼夾,這給中醫辨證的數字化和智能化帶來障礙[2]。因此,如何有效地模擬臨床信息到證型之間的關系?如何解決兼夾證型的復雜診斷問題?已經成為中醫診斷領域的研究難點之一[3]。
近40年來,國內外眾多學者開展了中醫辨證智能化研究,研究方法大致可以分為:基于符號邏輯的方法、基于概率統計的方法、基于模糊數學的方法、基于機器學習的方法四大類[4]。這些方法各具特點:①基于符號邏輯的方法簡單易用,從理論上只要產生式規則的數目足夠多,就能表達出中醫專家的知識;其缺點是當規則較多,推理鏈較長時,容易出現前后矛盾的推理[5]。②基于概率統計的方法利用統計函數或方程(如判別函數[6]、因子分析[7]等)建立從癥狀到證的量化關系,其模型相對簡單,但準確性不高,泛化能力不足。③基于模糊數學[8]的方法利用利用隸屬函數表示不同證型,利用模糊相似度計算進行證型判別,其優點是簡單易理解,容易被中醫人員接受,但如何建立合理的隸屬函數尚無好的方法,需要依靠專家經驗反復修正[9]。④基于機器學習的方法將中醫辯證問題轉為為分類問題,采用神經網絡[10]、支持向量機[11]、集成學習[12]等方法模擬中醫診療。由于中醫證候種類繁多,各證候類別樣本分布不均衡等因素,導致分類模型難以解決復雜的中醫辨證問題。

圖1 ML_RDT算法原理
上述方法嘗試從不同角度模擬中醫辨證過程,推動了中醫辨證數字化的發展。然而,由于臨床上簡單證型較少出現,多個證型兼夾的情況較為常見,傳統的方法難以處理這一問題。從信息學角度來看,多證型兼夾屬于典型的多標記學習問題,可以嘗試利用多標記學習理論解決這一問題。鑒于此,本文提出一種基于依賴樹的中醫辨證多標記學習算法ML_RDT(Multi-label Reinforced Dependency Tree),用以解決兼夾證型的診斷問題。
令X表示癥狀輸入空間(即,所有可能的輸入癥狀情況),Y表示證型輸出空間,F={x1,x2,……,xm}表示有m個不同的癥狀特征(feature),L= {y1,y2,……,yn}表示有n個不同的證型標簽(label)。假設一個中醫多標記訓練樣本T={(Xi,Yi)|i∈[1,n]},其中Xi∈X是一個示例(instance),Yi?L表示Xi對應的癥狀標簽集合。多標記學習的任務是從訓練樣本T中學習一個多標記分類器h:X→2L,用于預測未分類的示例。
傳統的多標記學習算法不同標簽之間相互獨立,而中醫辨證結果往往出現兼夾證型,兼夾證型中的各個證型(標簽)之間存在緊密聯系,傳統的多標記學習算法無法解決這一問題。ML_RDT根據中醫辨證的特點,分別針對特征與標簽構造特征依賴樹和標簽依賴樹,利用標簽依賴樹對特征依賴樹的預測結果進行修正,從而解決兼夾證型關聯問題。
ML_RDT算法原理如圖1所示:
第1步,從訓練樣本T中提取不同標簽yi對應的正例樣本Si={Xi|(X1,yi)∈T,yi=1}和反例樣本Si′={Xi|(X1,yi)∈T,yi=0}。
第2步,分別尋找正例樣本Si和反例樣本Si′對應的最優依賴樹fyi=1(X)和fyi=0(X),當判斷示例r對應的yi標簽上的值,計算fyi=1(r)與fyi=0(r)的值,并進行歸一化處理。當fyi=1(r)≧fyi=0(r),標簽yi上取值1,否則為0。計算所有標簽上的值,得到zr=[y0,y1,……,yn]。
第3步,尋找證型標簽的最優依賴樹,構造依賴函數f(Y)。
第4 步,設定預測結果修正系數α,對歸一化后正例標簽預測結果{fyi=1(X)|k∈[1,n]}進行排序,將中間α%對象對應zr中的元素置為空,作為待修正對象。將1-α%的元素輸入f(Y)預測其他α%的值,得到新的預測結果zr′。當f(zr′)>f(zr)則預測結果為zr′,否則取zr。
尋找最優依賴樹是ML_RDT 的關鍵之一,本文采用經典的Chow-Liu tree building algorithm[13]建立依賴樹,該算法構造以變量為節點、互信息為權值的最大生成樹作為依賴樹。
ML_RDT算法偽代碼如下:


為了評價算法效果,下列經典的多標記學習評價指標[14]被使用:
3.1.1 漢明損失(Hamming loss,HL)
該指標用于考察樣本在單個標記上的誤分類情況,即隸屬于該樣本的概念標記未出現在標記集合中而不屬于該樣本的概念標記出現在標記集合中,其值越小,模型表現越好。其定義為:

其中Q為標簽總數,h(xi)為分類結果。
3.1.2 1-錯誤率(One error,OE)
該指標用于考察在樣本的概念標記排序序列中,序列最前端的標記不屬于樣本標記集合的情況,其值越小,模型表現越好。其指標表達式為:

排序第一H(xi) = 1,否則H(Xi) = 0,其中m為記錄數目。
3.1.3 覆蓋率(Coverage)
該指標用于考察在樣本的概念標記排序序列中,覆蓋隸屬于樣本的所有概念標記所需的搜索深度情況,其值越小,模型表現越好。其定義為:

其中P 為特征標簽的個數,m為記錄數目,C(xi)=且l′i= arg mink∈Yi f(xi,k)。
3.1.4 排序損失(Ranking loss,RL)[14]
該指標用于考察在樣本的概念標記排序序列中出現排序錯誤的情況,其值越小,模型表現越好。其定義為:

3.1.5 平均精度(Average precision,AVP)
該指標用于考察在樣本的概念標記排序序列中,排在隸屬于該樣本的概念標記之前的標記仍屬于樣本標記集合的情況,其值越大,模型表現越好。其定義為:

其中P(xi)=
數據來源于國醫大師周仲瑛教授的電子病歷數據。抽取其診治冠心病的醫案數據,根據《中醫臨床術語癥候部分》對原始數據中的癥狀和證型規范化處理,最終得到1315 條數據,共503 個變量,其中482 個特征,21個標簽。癥狀和證型的分布統計信息見表1。

表1 癥狀和證型的頻數統計
①采用十折交叉驗證法將實驗數據隨機分為10組,其中9 份作為訓練數據,1 份作為測試數據;②將ML_RDT 在依賴樹基礎上,進行了正反例依賴樹比較和預測結果修正等多重優化。為了分析優化的效果,我們將其與ML_DT(Multi-label Dependency Tree)、ML_PDT(Multi-label Parallel Dependency Tree)進行比較。其中ML_DL 只生成每個標簽對應的正例特征標簽依賴樹進行預測;ML_PDT 分別生成每個標簽對應的正反例特征標簽依賴樹,根據正反例依賴樹預測的概率進行最終結果判定。③將ML_RDT 與經典的多標記學習算法ML_KNN[14]、ML_RBF[15]、BP_MLL[16]進行比較,以多標記學習評價指標對算法效果進行比較。
ML_RDT 的十折交叉驗證每一折的情況如圖2 所示。其中Hamming loss、One error、Coverage、Rank loss四個指標越低,模型效果越好,Average preision 越高,模型效果越好。從圖2 可以看出,ML_RDT 的Hamming loss 小于0.1,One error、Coverage、Rank loss均小于0.2,Average preision 大于0.9,表明模型的診斷效果較好。

圖2 ML_RDT算法十折交叉驗證結果
ML_RDT 與ML_DT、ML_PDT 的模型表現如表2所示,其中加粗的為各指標下表現最佳的結果。從表2 可以看出,在五項評價指標上,模型表現ML_RDT >ML_PDT>ML_DT。均采用依賴樹模型,ML_RDT 明顯優于其他方法,證明針對正例標簽和負例標簽分別建模,同時考慮證型關系,利用證型依賴樹對結果進行校正能夠有效提高模型效果。

表2 三種基于依賴樹的模型表現(mean ± SD)
ML_RDT 與經典的多標記學習算法(ML_KNN、ML_RBF、BP_MLL)的模型表現如表3所示。從表3可以 看 出,在Hamming loss、Coverage、Ranking loss、Average precision 四個指標上,ML_RDT 表現均優于其他算法,僅在One error指標上低于其他算法。
ML_RDT、ML_KNN、ML_RBF、BP_MLL 在21 個標簽下的AUC 對比情況如表4 所示,加粗的為各標簽下表現最佳的結果,其中出現部分標簽的AUC 取值為空(nan)情況,這是由于測試樣本分布不均衡,部分標簽取值全為0或者1導致。
從測評指標來看,ML_RDT模型表現較為穩定,在每一折上的波動較小(圖2)。從表2可以看出,三種基于依賴樹的模型在所有的測評指標上都呈現ML_RDT表現最佳、ML_PDT 次之、ML_DT 最差,這表明對模型進行正反例依賴樹比較和預測結果修正的優化有效地提升了模型效果。從表3 可以看出,ML_RDT 在Hamming loss、Coverage、Ranking loss、Average precision上表現最佳,One error 表現較ML_KNN 略差,但優于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在各個標簽下的AUC 表現全面優于其他算法。總體而言,ML_RDT 綜合表現優于ML_KNN、ML_RBF 和BP_MLL算法。

表3 ML_RDT與經典多標記學習算法的模型表現

表4 不同算法在21個標簽的AUC對比
從臨床意義來看,Hamming loss 反映了模型診斷結果中各個子項與真實診斷結果對應情況的誤判率,其值越小,模型診斷結果與真實診斷的對應越好;One error 反映了模型診斷結果中排序第一的診斷錯誤情況,其值越小,對主要病證的診斷效果越好,體現在中醫臨床上就是抓住主要矛盾(即辨識主證)的能力;Coverage 反映了模型診斷結果與真實診斷結果相比的冗余情況,其值越小,冗余診斷越少;Average precision反映了模型診斷結果與真實診斷結果的相似度,其值越大,診斷相似度越大。從測評結果可以得知ML_RDT 診斷結果與真實的診斷的一致性較好,且冗余診斷較少,能夠很好地解決兼夾證型的診斷和重要性識別(排序)問題。
從算法設計角度來看,ML_RDT 引入了標簽依賴樹對原始預測結果進行校正,利用依賴樹節點之間的關系,通過已知節點預測未知節點,較好地解決了證型之間存在關聯的問題。此外,ML_RDT 計算過程簡單高效,能夠適用于小樣本數據的學習和推理,而ML_KNN、ML_RBF 和BP_MLL 對樣本量要求較高,且難以解決由于樣本分布不均衡導致的分類效果不佳等問題。ML_RDT 采用以變量為節點,以互信息為權值的最大依賴樹作為模型的核心,由于互信息不受樣本分布影響,因此能夠有效解決樣本分布不均衡問題,特別適用于樣本量小、分布不均衡的中醫臨床數據集。
綜上所述,ML_RDT 針對中醫辨證的證型間夾問題進行算法設計,充分考慮了證候之間的相關性,建模過程中通過構建證型依賴樹對初始辨證結果進行校正,有效地提升了算法性能,診斷效果明顯優于其他經典的多標記學習算法。
依賴樹屬于圖模型的一種特殊形式,其用樹結構來描述多元隨機變量之間的聯合分布概率模型,從而給研究高維空間中的概率模型帶來了很大的便捷性。其在自然語言處理[17]、醫學診斷[18]等方面有著廣泛的應用。本文將依賴樹引入到中醫診斷領域,設計了基于依賴樹的中醫辨證多標簽分類算法ML_RDT,通過和其他多標記學習算法比較,測評效果優于其他比較算法,能夠有效應用到中醫兼夾證型診斷中。研究成果可以進一步設計成軟件系統,為中醫臨床輔助診療服務。