李雨潔,鄭銳龍,楊旭明
(上海中醫(yī)藥大學針灸推拿學院,上海 201203)
隨著社會發(fā)展水平的提升,人民生活水平的不斷提升以及人口老齡化使得我國心血管疾病患病率處于持續(xù)上升的階段。2016 年我國心血管疾病的死亡率率居首位,高于腫瘤等疾病。與此同時,2009~2016 年的數(shù)據(jù)顯示,農(nóng)村心血管疾病死亡率遠高于城市水平[1]。在各種心臟疾病當中,冠心病是一種較為常見且對人體危害較大的心血管疾病。冠心病一般指冠狀動脈粥樣硬化性心臟病,目前該病的檢查手段的“金標準”為冠狀動脈造影及血管內(nèi)成像技術,其成本相對昂貴[2]?;诖耍疚膶谛牟〉脑\斷所涉及的因素做出討論,試圖通過數(shù)據(jù)挖掘的方法探究不同生理狀態(tài)及檢測結果對冠心病診斷的影響,建立一個冠心病早期預測模型,從而降低檢查成本,幫助醫(yī)護人員對患者病情做出準確判斷。
1.1 數(shù)據(jù)采集及預處理 冠心病的診斷數(shù)據(jù)來源自UCI 數(shù)據(jù)庫,是由匈牙利冠心病研究所的醫(yī)學博士Andras Janosi、瑞士蘇黎世大學醫(yī)院的醫(yī)學博士William Steinbrunn、瑞士巴塞爾大學醫(yī)學醫(yī)院的醫(yī)學博士Matthias Pfisterer、長灘和克利夫蘭診所VA醫(yī)療中心的醫(yī)學博士Robert Detrano 共同創(chuàng)建的。共收集272 個數(shù)據(jù)實例,剔除殘缺數(shù)據(jù)之后將剩余的270 個實例導入到Excel.CSV 當中,再將數(shù)據(jù)導入到WEKA 當中。通過WEKA 中的數(shù)據(jù)處理工具將數(shù)據(jù)進行離散化,對部分噪聲數(shù)據(jù)進行處理,再使用WEKA 平臺的數(shù)據(jù)挖掘算法對數(shù)據(jù)進行挖掘。
1.2 屬性的選擇 本數(shù)據(jù)集共259 個實例(處理噪聲數(shù)據(jù)后),分為兩類、13 個屬性。其中類別分為患有冠心病和未患冠心病,本文選擇的屬性共12 個,分別為年齡、性別、胸痛類型、靜息血壓、血清膽固醇、空腹血糖是否大于120 mg/dl、靜息心電圖結果、最大心率、運動誘發(fā)的心絞痛、運動相對于休息引起的ST 壓抑、運動時ST 段峰值的斜率、心臟缺陷種類。
1.3 算法選擇 決策樹可看作一個樹狀預測模型,它通過把實例從根節(jié)點排列到某個葉子節(jié)點來分類實例,葉子節(jié)點即為實例所屬的分類。決策樹的算法有很多,如ID3、C4.5[3]等。其中WEKA 中的J48 決策樹挖掘工具則是是基于C4.5 實現(xiàn)的決策樹算法。關聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘中重要的一種挖掘方法,其中Apriori 算法是一種非常經(jīng)典的關聯(lián)規(guī)則挖掘算法。該算法利用層次順序搜索的循環(huán)方法來完成頻繁項集的挖掘工作[4]。人工神經(jīng)網(wǎng)絡是一種模仿人腦神經(jīng)網(wǎng)絡行為特征,進行分布式并行信息處理的算法數(shù)學模型。這種網(wǎng)絡時通過大量簡單的神經(jīng)元廣泛互連形成的復雜的非線性系統(tǒng),從而達到處理信息的目的。其中在其算法中最具代表性的BP 神經(jīng)網(wǎng)絡算法結構簡單,可操作性強,輸入輸出能模擬任意的非線性關系。目前,BP 神經(jīng)網(wǎng)絡算法已成為人工神經(jīng)網(wǎng)絡算法中應用比較廣泛的一種[5]。對于該冠心病數(shù)據(jù)集,本研究將采用WEKA 中的J48 決策樹、關聯(lián)規(guī)則中的Apriori 算法、Multilayer Perceptron算法來進行挖掘。
基于WEKA 中的J48 決策樹算法的模型建立以年齡、性別、胸痛類型、靜息血壓、血清膽固醇、空腹血糖是否大于120 mg/dl、靜息心電圖結果、最大心率、運動誘發(fā)的心絞痛、運動相對于休息引起的ST 壓抑、運動時ST 段峰值的斜率、心臟缺陷種類12 個屬性為“輸入值”,以是否患有冠心病為“可預測值”,來進行決策樹分類。使用WEKA3.8.4 中的J48 決策樹進行建立模型,在參數(shù)方面,將minNumObj 參數(shù)調(diào)整至5 以增加模型的準確性,其他參數(shù)為默認參數(shù)設置。最終實驗結果的準確率為77.2201%,決策樹可視化所呈現(xiàn)出的結果見圖1。
通過該結果,可以依據(jù)該決策樹來幫助醫(yī)護人員對疑似患有冠心病的患者做出進一步判斷。眾所周知,決策樹在某種程度上來說,可以看作為ifthen 規(guī)則的一個集合。以下實驗所得到的部分ifthen 規(guī)則:①IF 缺陷種類<=3(即不存在缺陷)AND胸痛類型<=3(存在心絞痛現(xiàn)象)THEN 未患有冠心?。≒ 正確率=90.08%);②IF 缺陷種類>3(存在任意類型缺陷)AND 胸痛類型>3(無任何胸痛癥狀)THEN 患有冠心?。≒ 正確率=87.95%)。
3.1 基于Apriori 算法的預測模型的建立 WEKA 平臺的關聯(lián)規(guī)則分析要求所有屬性的類別為Nominal,本文的數(shù)據(jù)集的數(shù)據(jù)類型全部為數(shù)值型,因此需要對數(shù)據(jù)進行離散化以滿足Apriori 算法的要求。對此本文選用WEKA 平臺的數(shù)據(jù)處理工具Discretize(采用默認參數(shù))對數(shù)據(jù)進行離散化,相對于J48 所選擇的12 個輸入屬性,在Apriori 算法中則選擇其中的6 個屬性作為輸入屬性,其原因在于,在初次使用原本的12 個輸入屬性進行Apriori 算法時所得到的結果并不符合預期,產(chǎn)生較多無意義規(guī)則。因此需要對數(shù)據(jù)屬性進行約簡,屬性約簡是在保證系統(tǒng)本身分類能力不變的前提下刪除其中冗余的屬性,保留起決定作用的核心屬性,它是粗糙集理論中最重要的一個部分。通過知識約簡,導出問題的決策或分類規(guī)則,其對于研究關聯(lián)規(guī)則的知識發(fā)現(xiàn)有著極其重要的意義[6]。針對本數(shù)據(jù)集,本研究采用WEKA 平臺上的InfoGainAttributeEval 算法來評估屬性的信息增益,使用Ranker 算法作為檢索方法對數(shù)據(jù)進行屬性約簡。其中信息增益是指信息熵與條件熵的差值,信息熵體現(xiàn)了信息的不確定程度,信息熵越大則代表無序度越大,不確定程度越大,其信息的效用值越小。與此同時條件熵體現(xiàn)了依據(jù)該特征分類后的不確定程度,條件熵越小則說明分類后越穩(wěn)定。因此對于信息增益來說,信息增益越大則說明該特征越重要以及該特征所包含的信息量越大[7]。InfoGainAttributeEval 算法和Ranker 檢索算法均使用默認參數(shù),通過以上兩種算法的結合,得出了12種屬性信息增益的排名以及具體數(shù)值,見表1。
表1 12 種屬性信息增益排名及具體數(shù)值
信息增益越大則表明該屬性越重要以及所包含的信息量更大,所以根據(jù)排名,選擇前6 個屬性(信息增益在0.1 以上的6 個屬性)進行關聯(lián)規(guī)則分析。使用WEKA 中的Apriori 算法,以缺陷種類、胸痛類型、最大心率、運動相對于休息引起的ST 壓抑、運動誘發(fā)的心絞痛、運動時ST 段峰值的斜率6 個屬性為“輸入值”,以是否患有冠心病為“可預測值”進行關聯(lián)規(guī)則分析。同時,Apriori 算法的參數(shù)設置采用默認參數(shù)設置。通過Apriori 算法共得到了10 條規(guī)則,且從結果評估得知,以上10 條規(guī)則的可信度均在94%之上,具有一定的參考價值。以下是部分規(guī)則展示:①最大心率=(162.7-175.8)運動相對于休息引起的ST 壓抑=(0-0.6)缺陷種類=無生理性缺陷==>未患有冠心?。糲onf:(0.97)>lift:(1.72)lev:(0.05)[12]conv:(6.76);②最大心率=(162.7-175.8)運動時ST 段峰值的斜率=上坡缺陷種類=無生理性缺陷==>未患有冠心?。糲onf:(0.97)>lift:(1.71)lev:(0.05)[12]conv:(6.54)。
3.2 結果分析 通過Apriori 算法得到了10 條可信度較高的規(guī)則,這10 條規(guī)則揭示了一定的規(guī)律。以下對部分規(guī)則進行解讀。
第1 條規(guī)則:當患者的最大心率在162.7~175.8、運動相對于休息引起的ST 壓抑在0~0.6 且缺陷種類為無生理性缺陷,其有97%的概率未患有冠心病。該條規(guī)則說明該類患者有極大的概率并非是冠心病患者,因此該類患者的運動相對于休息引起的ST 壓抑可能并非是冠心病所引起的而是由其他原因導致的心肌缺血、心肌病等等[8],需要做進一步的排查。
第二條規(guī)則:當患者的最大心率在162.7~175.8、運動時ST 段峰值的斜率為上坡且缺陷種類為無生理性缺陷,其有97%的概率未患有冠心病。該條規(guī)則表明該類患者有極大的概率并非冠心病患者,因此該類患者的運動時ST 段峰值的斜率為上坡可能是由其他原因造成的并非冠心病所引起的[8],因此該類患者大概率需要做進一步排查。
基于MultilayerPerceptron 算法的預測模型的建立 以年齡、性別、胸痛類型、靜息血壓、血清膽固醇、空腹血糖是否大于120 mg/dl、靜息心電圖結果、最大心率、運動誘發(fā)的心絞痛、運動相對于休息引起的ST 壓抑、運動時ST 段峰值的斜率、心臟缺陷種類12 個屬性為“輸入值”,以是否患有冠心病為“可預測值”,利用WEKA 中的MultilayerPerceptron 算法進行神經(jīng)網(wǎng)絡分析。MultilayerPerceptron 算法的參數(shù)選擇為默認參數(shù),輸出結果見圖2,模型的正確率為74.1313%,實驗結果見表2、表3。這12 個輸入屬性中對判斷患者是否患有冠心病影響力從高到低排布為胸痛類型>血清膽固醇>運動相對于休息引起的ST 壓抑>最大心率>年齡>運動時ST 段峰值的斜率>缺陷種類>性別>空腹血糖值>運動誘發(fā)的心絞痛>靜息心電圖結果>靜息血壓,見表4。
表2 MultilayerPerceptron 算法Node 結果
表3 12 個屬性對于的Node 結果
表4 各因素對患者是否患有冠心病判斷結果的影響
冠心病是一種常見的心血管疾病,其檢查手段的“金標準”——冠狀動脈造影,因其相對高昂的檢查費用和較為繁瑣的檢查要求而受到局限。同時,醫(yī)學診斷是一項艱巨而復雜的任務。因此通過J48 決策樹、關聯(lián)規(guī)則Apriori 算法和MultilayerPerceptron算法來建立一個冠心病預測模型以輔助醫(yī)護人員的判斷。借助J48 決策樹所挖掘出的模型,可以幫助醫(yī)務人員通過一些尋常且相對廉價的檢測手段對患者的病情進行一個初步的判斷,對評估冠心病的患病風險以及診斷冠心病具有一定的臨床指導作用。借助該決策樹可以通過一系列的尋常的體檢檢查(如靜息血壓、心電圖檢查、最大心率等)和患者描述(如是否出現(xiàn)心絞痛、是否出現(xiàn)運動誘發(fā)的心絞痛現(xiàn)象等)來判斷是否有較大的可能患有冠心病以及下一步的診療方案。與此同時,根據(jù)關聯(lián)規(guī)則分析所得出的十條結論,可以對患者的病情做出一個準確的判斷,并且根據(jù)該十條規(guī)則,可以對患者的病情進行實時的監(jiān)護,當符合條件的患者出現(xiàn)不符合規(guī)則的癥狀時說明該患者的病情發(fā)生了變化,則需要進一步的檢查和治療。這為醫(yī)護人員更好的把握救助時機有一定的指導意義。同時,通過MultilayerPerceptron 算法得出的12 種輸入屬性對于冠心病診斷的影響力的大小的量化將幫助醫(yī)護人員及患者更好的理解冠心病診斷的過程。借助該模型,可以通過一系列基礎的體檢檢查來幫助醫(yī)護人員對患者的病情有一個基本的判斷,以為醫(yī)護人員的下一步?jīng)Q策提供參考,在一定程度上幫助患者節(jié)省了醫(yī)療費用。
現(xiàn)如今,醫(yī)生對冠心病的診斷所依據(jù)的是既往的經(jīng)驗以及確切的病變影像圖片。想要得到確切的病變影像圖片所要支付的醫(yī)療費用是相對昂貴的,因此如何通過較為尋常且價格低廉的檢查手段對患者的病情進行判斷以及幫助醫(yī)生決策在當前環(huán)境下是需要解決的。但是不同因素對于冠心病確診的影響的大小尚無明確的定量分析,醫(yī)護人員對于檢查結果的評估尚未具體。因此在大量的數(shù)據(jù)支持下,對影響冠心病診斷的多種因素進行量化討論是積極的,本次三種數(shù)據(jù)挖掘手段所得出的模型對該問題進行了討論,并給出了具有一定參考意義的答案。為了實現(xiàn)基于WEKA 的數(shù)據(jù)挖掘平臺的醫(yī)學數(shù)據(jù)整理及冠心病的早期預測診斷,使用J48 決策樹、Apriori 算法和MultilayerPerceptron 算法對冠心病數(shù)據(jù)集進行數(shù)據(jù)挖掘,并利用多種指標對挖掘結果進行評價,最終得出基于WEKA 數(shù)據(jù)挖掘平臺的冠心病早期預測診斷模型。通過該模型幫助醫(yī)護人員判斷患者是否患有冠心病以及對罹患冠心病的風險的評估,該模型具有一定的醫(yī)學指導意義。
綜上所述,運用數(shù)據(jù)挖掘的技術手段對冠心病數(shù)據(jù)集進行發(fā)掘,有助于尋找影響冠心病診斷的主要因素,并且?guī)椭t(yī)護人員準確把握患者病情的變化情況,為醫(yī)生的決策提供一份相對可靠的參考。