馮云霞,韓正亮,薛蓉蓉,宋 波
(青島科技大學(xué)信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
我國心血管疾病患者的數(shù)量已居世界首位,是危害中老年人健康的頭號殺手[1]。心血管疾病具有“發(fā)病率高、致殘率高、復(fù)發(fā)率高、死亡率高、并發(fā)癥多”的特點,且患者多會伴有高血壓、糖尿病、腦梗等多種并發(fā)癥[2]。各種并發(fā)癥間相互促進(jìn),造成血液循環(huán)系統(tǒng)的病變累積,影響對治療策略的耐受力,最終導(dǎo)致身體素質(zhì)水平的下降,引發(fā)虛弱癥。
虛弱是指隨著年齡的增長,軀體功能、心理精神等方面下降到接近健康閾值附近的一種狀態(tài)[3]。在臨床中常用作評價健康狀況的基本指標(biāo),其主要癥狀包括合成代謝減慢、呼吸系統(tǒng)損傷、循環(huán)障礙、骨骼肌肉的缺失等軀體功能缺陷,以及不良的精神心理和社會保障等[4]。根據(jù)各年齡段所表現(xiàn)出的步速、握力、體重等表面特征的減退進(jìn)行3級劃分,分別為輕度虛弱、中度虛弱和重度虛弱。
虛弱對身體的危害具有潛藏性、持續(xù)性和積累性。其在降低患者健康水平的同時,反過來又促使患者易受慢性病及并發(fā)癥的影響。為安全有效地治愈或控制虛弱癥狀,Uchmanowicz等人[5]通過研究虛弱與急性癥狀之間的關(guān)聯(lián)關(guān)系后指出,提取部分高風(fēng)險疾病不良后果的相關(guān)規(guī)則有利于醫(yī)療決策的制定。Abbasi等人[6]通過研究虛弱癥狀之間的關(guān)聯(lián)性,用于醫(yī)護(hù)人員對患者的臨床護(hù)理,極大提升了患者護(hù)理質(zhì)量。Curran等人[7]通過研究不同疾病的疫苗注射對虛弱癥狀的影響關(guān)系,有利于患者治療安全性的提升。Hilmer等人[8]通過研究虛弱與身體系統(tǒng)器官功能之間的關(guān)聯(lián)關(guān)系,獲得身體癥狀對外部因素反應(yīng)的規(guī)則知識,有利于提升藥物研究的針對性。Simcox等人[9]通過研究虛弱程度與疾病死亡率、危險程度和并發(fā)癥發(fā)病率之間的關(guān)聯(lián)關(guān)系,對降低疾病對身體的危害,提供了一定的數(shù)據(jù)支撐。除此之外,高效準(zhǔn)確地挖掘出心血管疾病并發(fā)癥與患者虛弱程度之間的規(guī)則知識,可優(yōu)化臨床診療方案,降低患者治療風(fēng)險[10-11],同時有利于疾病輔助治療策略的制定,以及實現(xiàn)患者診治措施后并發(fā)癥發(fā)生情況的實時預(yù)警[12]。
若能從大量患者信息中,發(fā)現(xiàn)心血管疾病并發(fā)癥與虛弱癥之間的知識和規(guī)則,用于疾病診斷和治療,可極大地優(yōu)化臨床決策的制定,有利于并發(fā)癥的防治,降低治療風(fēng)險。利用心血管疾病并發(fā)癥與不同程度虛弱癥之間的關(guān)聯(lián)規(guī)則,可幫助醫(yī)生根據(jù)患者病情制定更有針對性的治療方案,為患者治療模式的選擇提供一定的數(shù)據(jù)支撐。通過疾病之間的關(guān)聯(lián)規(guī)則,有利于治療效果的反饋,防止部分不良后果的發(fā)生。通過潛在的規(guī)則所反映的疾病信息,有利于藥物的研發(fā),提升疾病治療的針對性。因此,準(zhǔn)確地提取心血管疾病并發(fā)癥與虛弱癥之間潛在的關(guān)聯(lián)規(guī)則,對國內(nèi)心血管疾病治療的發(fā)展和提升醫(yī)療質(zhì)量的水平具有推動意義。
最基礎(chǔ)的關(guān)聯(lián)規(guī)則提取算法為Apriori算法和FP-growth算法,其它關(guān)聯(lián)規(guī)則提取算法都是根據(jù)待解決問題的需求,而對基礎(chǔ)算法進(jìn)行的改進(jìn)。相比較這2種最基礎(chǔ)的算法,F(xiàn)P-growth算法較Apriori算法能更為高效地發(fā)現(xiàn)頻繁項集,但FP-growth實現(xiàn)比較困難,主要適用于標(biāo)稱型數(shù)據(jù),若用于數(shù)據(jù)類型復(fù)雜的醫(yī)療數(shù)據(jù)會導(dǎo)致性能下降,且不利于研究的進(jìn)一步擴(kuò)展;同時,研究疾病間的關(guān)聯(lián)規(guī)則,最關(guān)注的是獲得有用的規(guī)則信息,而FP-growth算法主要依靠忽視規(guī)則而提高挖掘效率,與問題研究的需求不符。綜上,Apriori算法在疾病規(guī)則生成的研究中要比FP-growth算法更為適用,因此本文以Apriori算法為基礎(chǔ)[13]研究心血管疾病并發(fā)癥與虛弱癥之間的關(guān)聯(lián)規(guī)則。
Apriori算法核心思想是通過逐層搜索候選項集的出現(xiàn)頻率而查找某種聯(lián)系,但將其應(yīng)用于實際研究中仍存在不足。為解決存在的問題,諸多學(xué)者針對算法模型的運行效率[14-16]、存儲方式[17-19]和剪枝策略[20-22]做出改進(jìn),但并未落實到實際問題的解決上。主要因為在真實患者數(shù)據(jù)的應(yīng)用中,易造成規(guī)則質(zhì)量差、提取效率低等問題。根據(jù)問題可總結(jié)為2個方面的原因:1)疾病之間的關(guān)聯(lián)規(guī)則較為復(fù)雜,存在部分具有誤導(dǎo)性的規(guī)則,降低了規(guī)則的可靠度;2)患者數(shù)據(jù)量龐大,但大部分?jǐn)?shù)據(jù)質(zhì)量較低,存在冗雜、缺失等問題。為能高效準(zhǔn)確地提取心血管疾病并發(fā)癥與虛弱癥之間的關(guān)聯(lián)關(guān)系,本文提出HI-Apriori(Base on Hash Table and Improved Rate of Apriori)算法對患者數(shù)據(jù)進(jìn)行挖掘分析。HI-Apriori算法引入Hash表和提升率,通過提升率標(biāo)記候選項集中的不可靠項集并進(jìn)行剪枝,然后根據(jù)可靠項集建立基于Hash表的數(shù)據(jù)存儲結(jié)構(gòu)。該算法可減少數(shù)據(jù)遍歷的規(guī)模,并能夠去除價值不高的規(guī)則項集,具有高效準(zhǔn)確、節(jié)省運算時間空間開銷的優(yōu)點。
在心血管疾病并發(fā)癥與虛弱癥相關(guān)性復(fù)雜的情況下,HI-Apriori算法利用提升率準(zhǔn)確選取可靠的候選項集,并用以輔助建立Hash表,減少數(shù)據(jù)對存儲空間的消耗以及對數(shù)據(jù)庫的掃描,最后再提取心血管疾病并發(fā)癥與虛弱癥之間的關(guān)聯(lián)關(guān)系。
疾病關(guān)聯(lián)規(guī)則提取的可靠性問題,主要體現(xiàn)在數(shù)據(jù)的相關(guān)度復(fù)雜。如在2400條心血管患者數(shù)據(jù)中,中度虛弱的患者約為1300人,具有心悸癥狀的患者約為1700人,同時包含2種癥狀的患者約為800人。根據(jù)傳統(tǒng)算法設(shè)置最小支持度為30%,最小置信度60%??傻猛瑫r患有2種癥狀患者的支持度為:800/2400=30%,置信度為:800/1300=62%。所得支持度和置信度滿足設(shè)置條件,可總結(jié)為中度虛弱的患者患有心悸的概率較大。但實際上,患者數(shù)據(jù)中包含心悸的患者約為:1700/2400=71%,去除其中中度虛弱患者的數(shù)據(jù)后,包含心悸患者的概率約為:(1700-800)/(2400-1300)=82%,遠(yuǎn)高于包含中度虛弱患者數(shù)據(jù)中包含心悸患者的概率。由此可得:心血管患者中,中度虛弱患者患有心悸癥狀的概率較小。
針對上述問題,傳統(tǒng)算法中加入了數(shù)據(jù)相關(guān)度這一關(guān)鍵指標(biāo),但在計算心血管疾病并發(fā)癥與虛弱癥的相關(guān)度時,仍面臨信息丟失的問題。主要原因是由算法在計算數(shù)據(jù)相關(guān)度的過程中所導(dǎo)致。在數(shù)據(jù)相關(guān)度計算的過程中,傳統(tǒng)算法所采用的描述方法為作用度或χ2統(tǒng)計檢驗。χ2統(tǒng)計檢驗不能區(qū)分?jǐn)?shù)據(jù)正負(fù)相關(guān)關(guān)系,因此容易造成規(guī)則提取的誤差;而對于作用度,其計算結(jié)果在一個開區(qū)間,會造成一定概率信息的損失,不易理解和使用。
因此,HI-Apriori算法在計算數(shù)據(jù)相關(guān)度的過程中,將提升率[23]Up(A,B)這一指標(biāo)作為規(guī)則可靠性依據(jù),如公式(1)所示。
(1)
Hash表的主要優(yōu)點是可以顯著降低數(shù)據(jù)存儲和遍歷的消耗。在研究心血管疾病并發(fā)癥與虛弱癥之間存在的關(guān)聯(lián)規(guī)則時,Apriori算法需要根據(jù)生成的候選項集多次掃描患者數(shù)據(jù)集,對應(yīng)的時間復(fù)雜度為O(kN)。其中k為生成的候選項集的數(shù)量,N為患者數(shù)據(jù)集的總量,隨著數(shù)據(jù)量的增加,將導(dǎo)致不可忽視的時間開銷。而將Hash表引入Apriori算法中,只需要遍歷一次完整的患者數(shù)據(jù)集,就可以基于疾病癥狀建立候選項集表,其對應(yīng)的時間復(fù)雜度為O(N)。而基于支持度的剪枝計算可以基于該表直接操作,對比傳統(tǒng)Apriori算法明顯降低了時間的開銷。同時該表結(jié)合提升率對不可靠項集的剪枝,節(jié)省了不可靠項集所需要占用的存儲空間,節(jié)省的空間量為O(b),其中b是不可靠項集的數(shù)量。綜上可得,Hash表的引入對HI-Apriori算法挖掘效率的提升是顯著的。
為能建立Hash表,可根據(jù)患者數(shù)據(jù)所得到的虛弱指標(biāo),作為該患者的標(biāo)簽,用于提取與這一虛弱程度相關(guān)性大的規(guī)則。因為每個患者在數(shù)據(jù)中僅會表現(xiàn)為某一確定的虛弱程度,為便于說明,本文以輕度虛弱患者為例建立Hash表。中度虛弱和重度虛弱患者的Hash表建立方法一致,只是在建立2-項集Hash表時需根據(jù)虛弱程度的不同分開討論。
對12條患者數(shù)據(jù)建立Hash表,其中3人為輕度虛弱,對其添加“X”標(biāo)記,9人為其它虛弱,此處為方便說明不對其他程度虛弱作標(biāo)記,如表1所示?;颊咧锌偣舶?種癥狀,分別為{S1,S2,S3,S4,S5,S6}。設(shè)置最小支持度為25%,則對應(yīng)最小支持計數(shù)取整后為3。
表1 患者與癥狀
通過對數(shù)據(jù)庫進(jìn)行遍歷,將表1轉(zhuǎn)換為Hash表,得到1-項集癥狀Hash表,如表2所示。
表2 1-項集癥狀Hash表
根據(jù)最小支持計數(shù),需要將病癥S4剪枝。之后再對每一個癥狀利用提升率進(jìn)行篩選。如上表求輕度虛弱相對于病癥S1時的提升率Up(X,S1),根據(jù)公式(1)可得值為1,表示輕度虛弱與病癥S1相互獨立,在建立輕度虛弱2-項集Hash表時需要舍棄。同理可得輕度虛弱相對病癥S2、S3、S5和S6的提升率依次為1.2、1.5、0.75和0.75。若計算其它虛弱程度所得提升率不為1時,在下一步建立仍需要考慮分析。因此,由表2可得頻繁1-項集癥狀Hash表,如表3所示。
表3 頻繁1-項集癥狀Hash表
對于建立k-項集(k=2,3,4,…),需要將得到的上一項頻繁集中的癥狀兩兩組合,得到新的規(guī)則,并提取組合癥狀中相交的患者作為新項集的患者。如將頻繁1-項集癥狀Hash表中的癥狀兩兩組合,獲得新的2-項集的癥狀,并根據(jù)組合癥狀的患者,取交集后作為新項集的患者,如表4所示。
表4 2-項集癥狀Hash表
同理,根據(jù)最小支持?jǐn)?shù)對S36和S56進(jìn)行剪枝。之后分別計算輕度虛弱相對于病癥S23、S25、S26和S35的提升率分別為2、1、1.5和1.5。因Up(X,S25)值為1,可得輕度虛弱與癥狀S2合并S5互相獨立。由此可得頻繁2-項集癥狀Hash表,如表5所示。
表5 頻繁2-項集癥狀Hash表
因此,根據(jù)上述方法可分別建立輕度虛弱、中度虛弱和重度虛弱的相關(guān)頻繁k-項集Hash表,用以提取心血管疾病并發(fā)癥與虛弱程度之間的關(guān)聯(lián)關(guān)系。利用HI-Apriori算法可將患者數(shù)據(jù)轉(zhuǎn)換成Hash表存儲,僅需要對整個數(shù)據(jù)遍歷一次。在計算候選k-項集(k=2,3,4,…)時也只需要掃描上一頻繁項集Hash表中的癥狀集即可,相較于傳統(tǒng)Apriori算法,極大地減少了數(shù)據(jù)遍歷的次數(shù),對算法性能的提升效果顯著。
為驗證HI-Apriori算法的性能,以當(dāng)?shù)啬橙揍t(yī)院中醫(yī)病區(qū)患者的電子病歷記錄為測試數(shù)據(jù)集,其中有效病歷數(shù)據(jù)2114條,包括輕度虛弱632條,中度虛弱1286條,重度虛弱196條。其中癥狀數(shù)據(jù)主要包括心悸、心力衰竭、咳嗽、乏力、口干、胸悶、頭暈等;并發(fā)癥數(shù)據(jù)包括腦梗、高血脂、高血壓、糖尿病、冠心病等疾病。
比較HI-Apriori算法與傳統(tǒng)Apriori算法的效率,主要比較在同一支持度和同一置信度下生成規(guī)則的時間量。為充分比較二者的效率,可固定置信度,設(shè)置不同的支持度進(jìn)行效率比較;或固定支持度,設(shè)定不同的置信度進(jìn)行效率比較。二者在比較效果上一致。本文通過固定置信度為10%,并分別選取最小支持度0.1%、1%、10%和30%進(jìn)行實驗,對應(yīng)生成的規(guī)則量級為千位級、百位級、十位級、個位級,其挖掘時間如表6所示。
表6 算法時間效率對照表
由表6結(jié)果可得,HI-Apriori算法運行時間明顯優(yōu)于傳統(tǒng)Apriori算法。隨支持度的提升使HI-Apriori算法優(yōu)勢降低,但在計算運行方面,HI-Apriori算法提升至少約60%的效率。
在患者數(shù)據(jù)存儲方面,通過剪枝策略可節(jié)省部分空間開銷。即每次通過患者癥狀所生成的新一級項集癥狀Hash表,可利用基于支持度的剪枝將不頻繁項集去除,如項集{心悸,糖尿病}、{口干、胸悶}等。因包含不頻繁項集的超集也是不頻繁的,所以該不頻繁項集的剪枝,可避免下一級Hash表生成包含該不頻繁項集的超集,有利于節(jié)省存儲空間。再利用基于提升率的剪枝可將不可靠項集去除,如項集{咳嗽,腦梗}、{輕度虛弱,咳嗽}等,因提升率計算只考慮患有該項集癥狀的患者數(shù)量與總患者數(shù)量之間的關(guān)系,提前剪枝可節(jié)省下一級Hash表的存儲空間并降低計算量。通過2種剪枝策略獲得最終有價值的項集,在HI-Apriori算法中記錄的部分剪枝項集和最終獲得的項集如圖1所示。
圖1 HI-Apriori算法剪枝項集累計記錄樹狀圖
根據(jù)心血管疾病并發(fā)癥與不同程度虛弱癥之間的關(guān)聯(lián)關(guān)系,提取價值較高的規(guī)則,如表7所示。
表7 心血管疾病并發(fā)癥與虛弱癥關(guān)聯(lián)規(guī)則挖掘結(jié)果
由表7關(guān)聯(lián)規(guī)則挖掘結(jié)果可得出以下結(jié)論:
1)由規(guī)則1可知高血壓合并輕度虛弱的患者會出現(xiàn)乏力、頭暈的癥狀,該規(guī)則的支持度達(dá)10.073%,置信度達(dá)81.319%。說明患有高血壓的輕度虛弱患者,導(dǎo)致乏力、頭暈癥狀的可能性為10.073%,而這種情況的發(fā)生概率為81.319%,且高血壓合并輕度虛弱一定概率會促進(jìn)乏力、頭暈的癥狀發(fā)生。
2)由規(guī)則2和規(guī)則3可知高血壓合并中度虛弱的患者可能引發(fā)糖尿病,該規(guī)則的支持度達(dá)13.103%,置信度達(dá)99.482%。說明患有高血壓的中度虛弱患者,引發(fā)糖尿病的可能性為13.103%,而這種情況的發(fā)生概率為99.482%,且高血壓合并中度虛弱一定概率會引發(fā)糖尿病。對比非虛弱的高血壓患者,處于中度虛弱的高血壓患者患有糖尿病的概率約為非虛弱高血壓患者的2.6倍。
3)由規(guī)則4和規(guī)則5可知腦梗合并重度虛弱的患者可能引發(fā)糖尿病,該規(guī)則的支持度達(dá)18.392%,置信度達(dá)95.184%。說明患有腦梗的重度虛弱患者,導(dǎo)致糖尿病的可能性為18.392%,而這種情況的發(fā)生概率為95.184%,且腦梗合并重度虛弱一定概率會引發(fā)糖尿病。對比非虛弱的腦?;颊?,處于重度虛弱的腦?;颊呋加刑悄虿〉母怕始s為非虛弱腦?;颊叩?.5倍。
高效準(zhǔn)確地提取心血管疾病并發(fā)癥與虛弱癥之間的關(guān)聯(lián)規(guī)則,有利于醫(yī)生制定臨床決策,輔助患者疾病的治療。本文基于心血管疾病并發(fā)癥與虛弱癥患者數(shù)據(jù)的特點,針對傳統(tǒng)Apriori算法消耗大量空間時間生成不可靠候選項集的問題進(jìn)行改進(jìn),提出了基于Hash表和提升率的HI-Apriori算法。該算法可降低不可靠項集的產(chǎn)生,減少運算過程中空間和時間的消耗,并通過患者電子病歷數(shù)據(jù)實驗和測試,可有效提取心血管疾病并發(fā)癥與虛弱癥之間的關(guān)聯(lián)關(guān)系,對虛弱和心血管疾病的研究提供了一定的技術(shù)支持。
但本文所得結(jié)果仍具有一定的局限性,主要原因為心血管疾病病因關(guān)系復(fù)雜,易受環(huán)境的影響而變化,導(dǎo)致實驗所用的患者數(shù)據(jù)缺乏廣域性。因此,本文提出的算法并不能提升數(shù)據(jù)的質(zhì)量。為解決該問題,筆者將進(jìn)一步研究在廣域下,心血管疾病并發(fā)癥與虛弱癥之間的關(guān)聯(lián)關(guān)系。