陳建國 李四海 趙 磊
1(甘肅中醫(yī)藥大學(xué)信息工程學(xué)院 甘肅 蘭州 730000) 2(甘肅省高校中(藏)藥化學(xué)與質(zhì)量省級重點實驗室 甘肅 蘭州 730000)
辨證論治是中醫(yī)認識疾病和治療疾病的基本原則,是中醫(yī)對疾病的一種認識和處理方法,“方證相應(yīng)”則是中醫(yī)辨證論治的核心環(huán)節(jié)。方即是方劑,是藥味有效作用于證的連接點和橋梁。證是對疾病發(fā)展特定階段所呈現(xiàn)病理反映的抽象和概括,包括病變的原因、性質(zhì)、部位及對立關(guān)系,反映這一階段病理變化的本質(zhì)。與疾病的具體癥狀相比,證能更全面、更深刻、更系統(tǒng)地揭示疾病的本質(zhì)。所謂“方證相應(yīng)”指的是一個方劑的藥味、配伍關(guān)系、主治功效和該方劑所對應(yīng)的證之間存在高度的統(tǒng)一性和針對性[1]。方與證對應(yīng)程度越高,則疾病的治療效果越好,反之則治療效果越差,研究方證之間的對應(yīng)關(guān)系對于實現(xiàn)辨證論治及臨床選方用藥都具有重要意義[2]。
粗糙集[3]是由波蘭數(shù)學(xué)家Z.Pawlak于1982年提出的一種處理不精確、不完備、不相容數(shù)據(jù)的數(shù)學(xué)工具。其主要思想是將不精確或不確定的知識用已有知識庫中的知識來近似表達,屬性約簡是粗糙集理論的核心內(nèi)容。在保持決策系統(tǒng)分類能力不變的前提下,刪除不相關(guān)或不重要的條件屬性,簡化計算過程,得到問題決策規(guī)則的過程被稱為屬性約簡。將粗糙集與神經(jīng)網(wǎng)絡(luò)、支持向量機、模糊集、遺傳算法等機器學(xué)習方法相結(jié)合,可有效解決近似推理、金融數(shù)據(jù)分析、圖像處理、醫(yī)療診斷等領(lǐng)域中的知識發(fā)現(xiàn)問題。
從信息處理的角度來看,中醫(yī)辨證論治過程可歸納為首先通過四診獲取病人的癥狀信息建立知識庫,然后根據(jù)專家知識和經(jīng)驗對疾病證候或證型進行人工推理決策的過程,這與粗糙集理論中的知識獲取和決策推理過程有相似之處。近年來,粗糙集被逐漸用于中醫(yī)藥研究領(lǐng)域,文獻[4]運用粗糙集分析了方劑和癥狀之間的相關(guān)性,通過屬性約簡,提取了方劑所對應(yīng)的核心癥狀集。文獻[5]建立了中藥性味歸經(jīng)和其祛風濕功效的支持向量機預(yù)測模型,通過粗糙集屬性約簡消除了冗余屬性,降低了模型的復(fù)雜度。文獻[6]基于粗糙集理論對中藥復(fù)方藥物的重要性進行了評價,其評價效果優(yōu)于傳統(tǒng)的頻次統(tǒng)計方法。以上研究中決策表的論域及屬性集規(guī)模較小,屬性約簡都是根據(jù)定義直接進行約簡,無法有效解決大規(guī)模決策表的屬性約簡問題。
本文收集治療心率不齊(心悸)及心絞痛(胸痹)的冠心病方劑共165首,建立方劑和證型之間的決策表,使用改進的遺傳算法進行屬性約簡,提取了方證之間的決策規(guī)則,對方證規(guī)則的合理性進行了分析。
定義2對于決策表DT=(U,C∪D,V,f),若B?C,則B對應(yīng)的不可辨識關(guān)系定義為:
Ind(B)={(x,y)|(x,y)∈U2,?b∈B(b(x)=b(y))}
如果(x,y)∈Ind(B),則稱x,y是基于B不可分辨的。以U/Ind(B)表示不可辨識關(guān)系Ind(B)在U上導(dǎo)出的所有等價類。[x]Ind(B)為基于B得到的x的等價類。
定義3給定對象集合X?U,屬性集合B?A,Ind(B)為不可辨識關(guān)系,則X關(guān)于B的下近似為:
定義4決策屬性D關(guān)于條件屬性C的正域為:
定義5決策屬性D對條件屬性C的依賴度定義為:
定義6R是一個等價關(guān)系簇,I∈R,若Ind(R)=Ind(R-{I}),則稱I在等價關(guān)系簇R中是不必要的,否則稱I為R中必要的。如果R中的每一個等價關(guān)系I都是必要的,則稱I是獨立的,否則稱I為依賴的。
定義7對于決策表DT=(U,C∪D,V,f),B?C,如果B獨立且Ind(B)=Ind(C),則稱B是C的約簡,記為red(C)。
定義8核屬性定義為:core(B)=∩red(B),其中red(B)表示B的所有約簡。
屬性約簡是粗糙集理論主要的研究內(nèi)容之一[8],由于求解決策表的最小約簡和所有約簡是NP-hard問題,因此一些智能優(yōu)化算法被用于決策表的屬性約簡[9-10]。遺傳算法是由美國Michigan大學(xué)的Holland教授提出的一種解決最優(yōu)化問題的啟發(fā)式搜索算法,具有搜索范圍廣、自組織、自適應(yīng)、魯棒性及可擴展性強等特點,已被廣泛用于機器學(xué)習、信號處理、組合優(yōu)化等領(lǐng)域,在粗糙集屬性約簡中也已經(jīng)得到成功應(yīng)用[11]。
2.1.1 編碼方法
種群個體采用二進制位串的編碼方式,每一個二進制位代表一個條件屬性。假設(shè)條件屬性集合為C={C1,C2,…,Cm},則二進制編碼的長度為m,用0表示對應(yīng)的條件屬性被約簡,用1表示對應(yīng)的條件屬性被保留。
2.1.2 適應(yīng)度函數(shù)
適應(yīng)度函數(shù)是評價個體優(yōu)劣和選擇個體的重要依據(jù),由屬性約簡的定義,個體的適應(yīng)度函數(shù)要考慮兩個方面的要求:(1) 個體包含的條件屬性個數(shù)。個體中二進制編碼1的個數(shù)越少,個體被選擇的概率越大,得到的約簡也越接近最小約簡。(2) 個體的分類能力。屬性約簡與原條件屬性集的分類能力應(yīng)該相當。一般用決策屬性對條件屬性的依賴度來度量個體的分類能力。為構(gòu)造適應(yīng)度函數(shù),首先進行如下定義。
定義1個體稀疏度定義為:
(1)
式中:j=1,2,…,n,n為種群大小,ρj表示個體中沒有包含的屬性的比率。個體包含的屬性個數(shù)越少,ρj越大,個體稀疏度越高。
定義2個體稀疏度的KL散度定義為:
(2)
式中:ρj為個體j的稀疏度,ρ為期望稀疏度。ρ的作用在于控制對個體的懲罰力度,ρ越小,懲罰力度越大。圖1給出了ρ分別為0.2和0.5時,個體稀疏度的KL散度曲線。
圖1 個體稀疏度的KL散度曲線
由圖1可知,個體包含的屬性越少,其稀疏度越高,KL散度值也越大。因此,通過最大化KL散度能夠保留稀疏度較高的個體,抑制稀疏度較低的個體,得到最小約簡??紤]到種群為隨機初始化,個體稀疏度接近0.5,當ρ=0.5時,懲罰力度明顯不夠,得不到最小約簡,減小ρ則能夠相應(yīng)地增大懲罰力度,因此,一般設(shè)置ρ<0.5,其最優(yōu)值通過實驗確定。
定義3適應(yīng)度函數(shù)定義如下:
(3)
該函數(shù)由兩部分組成,第一部分是目標函數(shù),其含義為決策屬性D對個體xj的依賴度。依賴度值越大,表明個體的分類能力越強。最大化決策屬性對個體的依賴度,可以使個體搜索總在可行解空間上進行。
適應(yīng)度函數(shù)第二部分為懲罰項,KL(ρ‖ρj)表示個體稀疏度的KL散度,用于對包含條件屬性較多的個體進行懲罰。個體包含的屬性越多,其稀疏度值越小,KL散度值也越小,則適應(yīng)度函數(shù)值越小。反之,個體包含的屬性越少,其稀疏度值越大,其KL散度值越大,則適應(yīng)度函數(shù)值越大。最大化KL散度值將能夠使稀疏度高的個體受到保護,稀疏度低的個體受到抑制,使搜索總在最小約簡的方向進行。β為稀疏懲罰因子,用于權(quán)衡分類能力和稀疏度之間的相對重要性。
2.1.3 選擇算子
選擇算子決定了個體以多大的概率值被選擇,是評價父代種群中個體優(yōu)劣的重要依據(jù)。使用比例選擇算子,通過輪盤賭的方式選擇優(yōu)質(zhì)個體。對于種群規(guī)模為n的父代種群{x1,x2,…,xn},個體xi被選擇的概率值為:
(4)
2.1.4 交叉算子
交叉算子用于提高種群個體的多樣性,采用單點交叉算子,以一定的交叉概率pc選擇參與交叉的個體。個體交叉位隨機選擇,交換兩個父代個體在交叉位左右的子串,產(chǎn)生下一代個體。
2.1.5 變異算子
采用基本位變異算子,具體過程為:根據(jù)變異概率pm產(chǎn)生滿足數(shù)量要求的變異點,對每一個指定的變異點,對其基因位進行取反運算,從而產(chǎn)生出一個新的個體。
算法遺傳屬性約簡算法
輸入:一個決策表DT=(U,C∪D,V,f),期望稀疏度ρ,稀疏懲罰因子β;
輸出:決策表的一個最小約簡。
Setp1隨機產(chǎn)生n個長度為m的二進制位串x1,x2,…,xn,得到初始種群。
Setp2根據(jù)設(shè)置的期望稀疏度ρ及稀疏懲罰因子β,按照式(3)計算個體的適應(yīng)度函數(shù)值。
Setp3根據(jù)個體的適應(yīng)度值,利用式(4)計算個體被選擇的概率,然后通過輪盤賭的方式實現(xiàn)個體的選擇。
Setp6如果連續(xù)t=10代內(nèi)種群中最優(yōu)個體的適應(yīng)度值沒有改變或已經(jīng)達到設(shè)定的最大進化代數(shù)T=30,則終止進化,輸出最優(yōu)個體。
收集整理中醫(yī)治療冠心病的有效方劑165首,共涉及中藥319味。每一首方劑均具有明確的主治證型,其中85首主治證型為心絞痛(屬于中醫(yī)胸痹、心痛范疇),80首主治證型為心率不齊(屬于中醫(yī)心悸范疇)。對方劑中的中藥藥名進行統(tǒng)一規(guī)范處理,統(tǒng)計每一味中藥出現(xiàn)的頻次,按頻次大小進行降序排列,中藥藥名分別用C1、C2、…、C319表示。如:C1=丹參、C2=黃芪、C3=川芎、C4=炙甘草、C5=當歸。對方劑進行離散化處理,某一味中藥在方劑中出現(xiàn)則對應(yīng)的條件屬性取值為1,否則取值為0,方劑主治證型為決策屬性,用0表示心絞痛,1表示心率不齊,建立方證決策表。表1給出了冠心病方證決策表的部分內(nèi)容。
表1 冠心病方證決策表
對方證決策表使用文中給出的遺傳算法進行屬性約簡。遺傳算法的參數(shù)設(shè)置:種群大小m=200,交叉概率pc=0.8,變異概率pm=0.03,進化代數(shù)T=30,期望稀疏度ρ=0.05。
由適應(yīng)度函數(shù)的定義可知,算法的關(guān)鍵參數(shù)主要有兩個:期望稀疏度ρ和稀疏懲罰因子β,其中ρ控制對個體稀疏度的懲罰力度,為獲得最小約簡,ρ一般取較小值。本文經(jīng)過多次實驗,當ρ=0.05時能夠獲得較好的懲罰效果。
在確定懲罰力度的情況下,屬性約簡結(jié)果主要與稀疏懲罰因子β有關(guān)。β的作用在于權(quán)衡分類能力和個體稀疏性之間的相對重要性,并在二者之間取得平衡。圖2給出了當ρ=0.05時,稀疏懲罰因子β和屬性約簡結(jié)果之間的關(guān)系曲線。
圖2 懲罰因子對約簡結(jié)果的影響
由圖2可得,當懲罰因子β=0.5時,決策屬性對約簡結(jié)果的依賴度取得最大值0.987 88,此時C_reduct包含的條件屬性數(shù)為24個。β越小,表示屬性約簡更重視個體的分類能力,約簡結(jié)果所含有的屬性個數(shù)會越多,則決策屬性對約簡結(jié)果的依賴度也會相應(yīng)增大;反之,β越大,隨著懲罰項在適應(yīng)度函數(shù)中作用的提升,表示屬性約簡更重視得到最小約簡,約簡結(jié)果中所含有的屬性個數(shù)會相應(yīng)地減少,則決策屬性對約簡結(jié)果的依賴度也會相應(yīng)減小。
根據(jù)以上分析,設(shè)置β=0.5,其他參數(shù)設(shè)置不變,圖3給出了遺傳算法的進化曲線。最后得到的屬性約簡中包含24味中藥,分別為{丹參、黃芪、川芎、延胡索、當歸、麥冬、桂枝、茯苓、赤芍、瓜蔞、黨參、桃仁、紅花、薤白、五味子、三七、細辛、制附子、陳皮、葛根、炒酸棗仁、炙甘草、苦參、雞內(nèi)金}。
圖3 遺傳算法進化曲線
根據(jù)置信度和覆蓋度對得到的決策規(guī)則進行篩選。置信度定義為規(guī)則左側(cè)對規(guī)則右側(cè)的條件概率,覆蓋度定義為決策規(guī)則的對象數(shù)占論域空間中對象數(shù)的比例[12]。表2為篩選出的4條決策規(guī)則。
表2 決策規(guī)則篩選結(jié)果
規(guī)則1:麥冬 AND 桂枝 AND 黨參 AND 紅花 AND 三七 ->心率不齊
規(guī)則2:黃芪 AND 桂枝 AND 茯苓 AND 五味子 AND 葛根 ->心率不齊
規(guī)則3:丹參 AND 黃芪 AND 川芎 AND 茯苓 AND 赤芍 AND 陳皮 ->心絞痛
規(guī)則4:黃芪 AND 川芎 AND 當歸 AND 茯苓 AND 赤芍 ->心絞痛
可以看出,規(guī)則1和規(guī)則2中的藥物主要以益氣、養(yǎng)陰為主,規(guī)則3和規(guī)則4中的藥物主要以活血化瘀為主。冠心病屬于中醫(yī)胸痹、心痛范疇。文獻[13]認為心悸(心率不齊)的病機為氣陰兩虛、痰瘀互結(jié),其治療主要以益氣、養(yǎng)陰和安神為主,兼顧祛痰化瘀,實現(xiàn)標本兼治,在用藥方面:益氣藥物有黃芪、黨參等,養(yǎng)陰和安神藥物有麥冬、五味子、炒酸棗仁等,祛痰化瘀藥物有瓜蔞等。冠心病心絞痛為本虛標實之證,益氣、活血、化瘀是冠心病心絞痛的基本治療方法,在用藥方面:活血化瘀藥是治療冠心病的首選藥物[14],常用的活血化瘀藥物有丹參、川芎、紅花、桃仁、延胡索、赤芍等??梢钥闯?,本文得到的方證規(guī)則與中醫(yī)治療兩種冠心病的用藥方法基本一致。
提出了一種基于改進遺傳算法的決策表屬性約簡算法,構(gòu)造了新的適應(yīng)度函數(shù),一方面通過最大化決策屬性對條件屬性的依賴度保證了分類能力,同時為獲得最小約簡,對包含屬性較多的個體進行懲罰,使搜索沿著最小約簡的方向進行。使用該方法對冠心病方證決策表進行了屬性約簡,所提取的規(guī)則與中醫(yī)對心率不齊及心絞痛兩種類型的冠心病的認識與用藥原則基本一致,說明本文的方法是合理和有效的。
文中提出的屬性約簡算法中懲罰因子對約簡結(jié)果影響較大。此外,通過提前確定核屬性,在個體的變異操作中對核屬性對應(yīng)的基因位不進行變異將能夠進一步加快遺傳算法的收斂速度。如何快速有效地選擇懲罰因子及加快遺傳算法的收斂速度將是下一步要解決的問題。