山西中醫學院醫藥管理學院 楊 婕
老年性癡呆,又叫阿爾茨海默病(Alzheimer’s Disease,AD)是一種多發于老年人的神經退行性疾病,臨床特征主要有知功能障礙和記憶損害。據報道,老年期癡呆中AD是全世界最致殘和最累贅的疾病之一[1],除了脊髓損傷和晚期癌癥以外,AD致殘加權顯著高于任何其他健康情況[2],但目前為止AD的早期防治卻難以落實。這主要是因為其發病的特殊性,且存在地域性差異,而以往研究又缺乏對AD證候類型、證候診斷的統一標準,所以想要研究AD的病因和發病機制就頗有難度。
如何對AD的中醫病因進行科學分類和識別,進而總結提煉歸類出可疑癡呆及確診癡呆各自不同期的中醫病機演化規律、致病危險因素以及證候類型的分布規律,已成為AD的有效防治迫切需要解決的問題。
本文的主要工作就是深入研究決策樹C5.0算法,并利用太原市迎澤區、萬柏林區、杏花嶺區三個市區共計1500條數據進行多次實驗,根據結果的準確性不斷修正算法,最后得到老年性癡呆病因病機的分析模型,用來對太原市人口數據進行患病預測。
決策樹(Decision Tree)算法是使用最為廣泛的分類預測方法之一,可實現數據內在規律的探究和新數據對象的分類預測。它既可以處理例如“年齡”、“家庭收入”等數值型數據,又很擅長處理如“受教育程度”、“家族遺傳史”等非數值型數據,避免了許多數據預處理工作,因此非常適合于研究中醫病因分析。
決策樹的概念最早出現在CLS(Concept learning system)中,它是由Hunt等人在1996年提出的[3]。現在很多算法都是CLS算法的改進,最經典的算法之一便是C5.0算法。該算法通過計算輸入變量的信息增益率確定最佳分組變量和分割點。
將輸出變量作為信息源發出的信息U,輸入變量看成信宿接收到的一系列信息V。其信息增益為:
Gains( U ,V)=Ent(U)-Ent(U|V)
Ent( U )是平均不確定性:

Ent( U |V)是條件熵:

C5.0根據能夠帶來最大信息增益的字段拆分樣本。第一次拆分確定的樣本子集隨后再根據另一個字段進行拆分,直到樣本子集不能再拆分為止。最后檢驗最低層次的拆分,采用后修剪法從葉節點向上逐層判斷錯誤率,剔除或者修建對沒有顯著貢獻的樣本子集。
本文采用流行學的方法在太原市迎澤區、萬柏林區、杏花嶺區三個市區的醫院和社保中心進行調查,收集共計1500條有效信息作為數據集合。其中每條記錄由23個字段組成。其中前22個字段是對調研者信息的描述,包括:id、性別、年齡、民族、職業、文化程度、婚姻狀況、居住方式、飲食偏嗜、是否飲酒、是否吸煙、是否癡呆、有無腦血管意外、有無帕金森病、有無精神疾患、有無心血管疾病、有無神經系統疾病、有無呼吸系統疾病、有無消化系統疾病、有無內分泌系統疾病、有無血液系統疾病、有無其他系統疾病。最后一個字段是對調研者是否患病的判斷,分為:“老年性癡呆(AD)”、“血管性癡呆(VD)”、“混合型癡呆(MD)”和“未患病”四個類別。我們對前22字段進行了分類,如表1所示。
這22個字段是除了id字段,其他都是現代醫學的高危因素。在模型建立初期,我們先將其都納入分析體系中,作為輸入變量。

表1 樣本字段分類

表2 各樣本中患病情況比率

表3 第一層節點各字段信息增益

表4 初次建模分類結果的正確率

表5 初次建模分類結果與字段病型重合矩陣(行表示實際值)
我們對1500條樣本記錄進行分區處理,隨機抽取約80%(1191條)作為訓練樣本,約20%(309條)作為測試樣本。分區后,總樣本、訓練樣本和測試樣本中患病情況的分布如表2。
對已采集到的樣本數據進行預處理,除噪、除冗余以及連續型屬性概化為區間,我們將其儲存到計算機之中,得到最終用于建模的樣本數據集合。
數據數理完畢后開始構建決策樹。首先將輸出變量(病型)看成是發出信息的U,共計1191條數據,AD有117條,VD有109條,MD有18條,未患病947條,所以其平均不確定性為

之后分別計算除id之外其他字段的條件熵。以T2(性別)為例,分類有2個,其中男性580條,AD有46條,VD有53條,MD有8條,未患病472條;女性611條,AD有71條,VD有55條,MD有10條,未患病475條,所以條件熵為:

于是T2的信息增益為:
Gains(U,T2)=Ent(U)-Ent(U|T2)=0.999-0.996=0.003
以此類推,分別計算其他20個字段的信息增益,具體信息增益見表3。
發現最大的為飲食偏嗜,說明該字段消除信源的平均不確定性最強,因此選用它作為最佳分組變量。由于該變量為分類型變量,所以按照其取值,分為6組,形成決策樹除根節點外的第一層,是一個六叉樹。之后重復上面的過程,形成一棵決策樹。
決策樹構建之后,為了避免該決策樹與訓練樣本的過度擬合,開始對其修剪。修剪方法是從葉節點向上逐層計算節點的真實誤差的估計上限ei。

如果葉節點的誤差估計大于父節點的誤差估計,則剪掉該葉節點。由于數據龐大,在這里我們借助Clementine12.0完成決策樹的構建。對初次形成的決策樹進行評估分析,具體數據見表4,表5。
從上表的數據可以看出,對已患病的數據錯判率較高,為了便于實際中為預防AD的發生,我們通過調整參數對決策樹進行修正。
為了保證該模型能有效監控AD的發生,我們在誤判成本中,考慮盡量避免將AD判為其他取值。
同時為了更好的反應數據規律,減少預測結論的偏差,我們采用Boosting技術對現有訓練樣本反復抽樣以增加樣本集。在這里我們迭代了5次,也就是建立了5個模型。之后對這5個模型進行投票,計算其權數的總和。總和最高的就是決策樹的最終分類結果。
經過參數修正,我們從5個模型中選取權數和最大(91.27%)的一個模型最為最終結果。對其進行評估分析,得到表6,表7。
從表6和表7中的數據可以看出,最終的模型總正確率和錯誤率與初次建模的結果基本一致,但是對于患病的判斷率明顯提高,這符合我們建立模型的初衷。
本文介紹了C5.0算法構建決策樹的方法,并利用該算法對老年性癡呆建立判斷模型,之后用太原市迎澤區、萬柏林區、杏花嶺區三個市區的醫院和社保中心共計1500條數據進行驗證。通過剪枝、損失成本矩陣和Boosting技術對得到的模型進行修正,最終得到可信度較高,并具有風險成本低的模型。這說明決策樹C5.0算法建立的老年性癡呆判斷模型對實際分析具有一定的指導意義,能夠為預防老年性癡呆的發生提供決策支持。

表6 最終模型分類結果的正確率

表7最終模型分類結果與字段病型重合矩陣(行表示實際值)
[1]田金洲,時晶,苗迎春等.阿爾茨海默病的流行病學特點及其對公共衛生觀念的影響[J].湖北中醫學院學報,2009,11(1):3-7.
[2]WorldHealth Organization.WorldHealth Report2003-Shaping the future[J].Geneva:WHO,2003.
[3]季桂樹,陳沛玲,宋航.決策樹分類算法研究綜述[J].科技廣場,2007(1):9-12.
[4]郭蕾,王永炎,張俊龍,等.關于證候因素的討論[J].中國中西醫結合雜志,2004,24(7):643-644.
[5]Quinlan J R."C5"[J]-http://rulequest.com 2007.
[6]Rastogi R;Shim K Public:A decision tree classi fi er that integrates building and pruning[J].1998.
[7]張偉,張素貞.粗糙決策樹生成方法及應用[C].1999.
[8]石金彥,李旻辰,海燕.基于決策樹的數據挖掘方法在故障診斷中的應用[J].水利電力機械,2006,28(4).