滕璐靈,宋 堯,張寶林
甘肅省中醫院,甘肅 蘭州 730050
在中醫醫院,HIS系統數據庫里的中藥處方數據是極其寶貴的,對中醫處方數據的分析,可以得到中醫師針對不同患者開具的中醫處方用藥規律,可對今后同類病癥的治療起到輔助參考的作用。因此本研究以關聯規則挖掘為模型,設計了中藥處方分析算法。
Apriori算法是一種挖掘布爾關聯規則頻繁項集的算法。其核心是基于兩階段頻集思想的遞推算法。算法需要對數據集進行多步處理,第一步,簡單統計所有含有一個元素項目集出現的頻率,并找出不小于最小支持度的項目集;從第二步開始循環處理直到再沒有最大項目集生成。循環過程是:第n步中,根據第n-1步生成的(n-1)維最大項目集產生m維候選項目集,然后對數據庫進行搜索,得到候選項目集的項集支持度,與最小支持度比較,從而找到n維最大項目集[1]。
中藥處方分析算法是以關聯規則模型為依據,在給定中醫數據集中進行頻繁項集的搜索[2],應用最小支持度計數閾值為度量標準從候選集中查找頻繁項集。關聯規則在D中的支持度(suppor t)是D中事務同時包含X、Y的百分比,即概率;置信度(conf idence)是包含X的事務中同時又包含Y的百分比,即條件概率。
查找頻繁項集是實現中藥處方分析的關鍵,采用查找頻繁項集的經典算法——Apriori算法為核心進行設計實現,但又通過縮小掃描事務集的范圍提高算法的執行效率。
數據挖掘對基礎數據的要求較高,因此數據預處理就變得尤為重要。數據的預處理通常按照以下步驟進行:
2.1 數據篩選 中藥處方分析技術的研究對象是中醫醫囑中相關中藥處方的內容,所以作為基礎數據,首先需要將中藥處方信息從醫囑信息中分離開來[3]。
2.2 數據表標準化 在標準化處理的過程中需要解決的問題是中藥藥名的統一,一味中藥可能存在不同的別名,因此在統計分析時不應作為不同的藥物來對待,需要根據中藥藥名對照表進行匹配核對。
2.3 生成中藥處方 生成中藥處方布爾值統計表與事務統計表,流程見圖1、表1—5。

圖1 生成布爾值統計表與事務統計表的流程

表1 中醫診斷類別定義

表2 中藥藥物信息定義

表3 中藥處方信息定義

表4 中藥處方藥物布爾值統計

表5 中藥處方事務統計
以上得到的中藥處方事務統計表不是真正需要的有價值的信息,還需要通過中藥處方分析算法,對表中的記錄進行進一步分析[4],主要流程見圖2:
L1=f ind_f requent_1-itemsets(D);
for(k=2;Lk-1≠Φ;k++){Ck=apriori(Lk-1,min_sup);
for each t ransaction t∈D{Ct=subset(Ck,t);
for each candidate c∈Ctc.count++;}
Lk={c∈Ck|c.count≥min_sup}}
return L=所有頻繁集;
通過輸入不同的中醫診斷編碼,可以得到不同病癥的中藥處方分析數據。首先篩選出中醫診斷中痹癥的中藥處方部分事務,結合這些數據說明算法的實際應用,見附圖1。
臨時表中輸出頻繁項集為{I1,I15,I19,I68}。由頻繁項集可產生中藥處方用藥規則,其置信度計算如下:

將事務編號進行替換后得到中藥藥物名稱的規則記錄表,見表6。

表6 轉換后的規則記錄
傳統的Apriori算法在候選項集進行支持度計數時,每次都要對原事務表進行掃描,原事務表中的數據往往較巨大,導致該算法效率低下,因此在中藥處方分析算法中,設置了“藥物個數”字段,記錄每張處方中包含的中藥藥物個數,在進行候選集支持度計數時,只針對“藥物個數”>=3的記錄進行掃描,以提高算法的執行效率。

附圖1 頻繁項集生成過程
[1] Jiawei Han,Michel ine Kamber.數據挖掘概念與技術[M].范明,孟小峰,譯.北京:機械工業出版社,2007:133.
[2] 李凌艷,李認書,孫鶴.數據挖掘技術在中藥研究中的應用[J].中草藥,2010,41(5):I0016-I0018.
[3] 錢增瑾,辛燕.中醫藥數據預處理方法的設計與實現[J].計算機工程與設計,2005,26(12):3199-3200.
[4] 丁一琦.基于Apriori算法的數據挖掘技術研究[J].現代計算機,2012(24):20-22.