李雨潔,鄭銳龍,楊旭明
(上海中醫藥大學針灸推拿學院,上海 201203)
隨著社會發展水平的提升,人民生活水平的不斷提升以及人口老齡化使得我國心血管疾病患病率處于持續上升的階段。2016 年我國心血管疾病的死亡率率居首位,高于腫瘤等疾病。與此同時,2009~2016 年的數據顯示,農村心血管疾病死亡率遠高于城市水平[1]。在各種心臟疾病當中,冠心病是一種較為常見且對人體危害較大的心血管疾病。冠心病一般指冠狀動脈粥樣硬化性心臟病,目前該病的檢查手段的“金標準”為冠狀動脈造影及血管內成像技術,其成本相對昂貴[2]。基于此,本文對冠心病的診斷所涉及的因素做出討論,試圖通過數據挖掘的方法探究不同生理狀態及檢測結果對冠心病診斷的影響,建立一個冠心病早期預測模型,從而降低檢查成本,幫助醫護人員對患者病情做出準確判斷。
1.1 數據采集及預處理 冠心病的診斷數據來源自UCI 數據庫,是由匈牙利冠心病研究所的醫學博士Andras Janosi、瑞士蘇黎世大學醫院的醫學博士William Steinbrunn、瑞士巴塞爾大學醫學醫院的醫學博士Matthias Pfisterer、長灘和克利夫蘭診所VA醫療中心的醫學博士Robert Detrano 共同創建的。共收集272 個數據實例,剔除殘缺數據之后將剩余的270 個實例導入到Excel.CSV 當中,再將數據導入到WEKA 當中。通過WEKA 中的數據處理工具將數據進行離散化,對部分噪聲數據進行處理,再使用WEKA 平臺的數據挖掘算法對數據進行挖掘。
1.2 屬性的選擇 本數據集共259 個實例(處理噪聲數據后),分為兩類、13 個屬性。其中類別分為患有冠心病和未患冠心病,本文選擇的屬性共12 個,分別為年齡、性別、胸痛類型、靜息血壓、血清膽固醇、空腹血糖是否大于120 mg/dl、靜息心電圖結果、最大心率、運動誘發的心絞痛、運動相對于休息引起的ST 壓抑、運動時ST 段峰值的斜率、心臟缺陷種類。
1.3 算法選擇 決策樹可看作一個樹狀預測模型,它通過把實例從根節點排列到某個葉子節點來分類實例,葉子節點即為實例所屬的分類。決策樹的算法有很多,如ID3、C4.5[3]等。其中WEKA 中的J48 決策樹挖掘工具則是是基于C4.5 實現的決策樹算法。關聯規則挖掘是數據挖掘中重要的一種挖掘方法,其中Apriori 算法是一種非常經典的關聯規則挖掘算法。該算法利用層次順序搜索的循環方法來完成頻繁項集的挖掘工作[4]。人工神經網絡是一種模仿人腦神經網絡行為特征,進行分布式并行信息處理的算法數學模型。這種網絡時通過大量簡單的神經元廣泛互連形成的復雜的非線性系統,從而達到處理信息的目的。其中在其算法中最具代表性的BP 神經網絡算法結構簡單,可操作性強,輸入輸出能模擬任意的非線性關系。目前,BP 神經網絡算法已成為人工神經網絡算法中應用比較廣泛的一種[5]。對于該冠心病數據集,本研究將采用WEKA 中的J48 決策樹、關聯規則中的Apriori 算法、Multilayer Perceptron算法來進行挖掘。
基于WEKA 中的J48 決策樹算法的模型建立以年齡、性別、胸痛類型、靜息血壓、血清膽固醇、空腹血糖是否大于120 mg/dl、靜息心電圖結果、最大心率、運動誘發的心絞痛、運動相對于休息引起的ST 壓抑、運動時ST 段峰值的斜率、心臟缺陷種類12 個屬性為“輸入值”,以是否患有冠心病為“可預測值”,來進行決策樹分類。使用WEKA3.8.4 中的J48 決策樹進行建立模型,在參數方面,將minNumObj 參數調整至5 以增加模型的準確性,其他參數為默認參數設置。最終實驗結果的準確率為77.2201%,決策樹可視化所呈現出的結果見圖1。
通過該結果,可以依據該決策樹來幫助醫護人員對疑似患有冠心病的患者做出進一步判斷。眾所周知,決策樹在某種程度上來說,可以看作為ifthen 規則的一個集合。以下實驗所得到的部分ifthen 規則:①IF 缺陷種類<=3(即不存在缺陷)AND胸痛類型<=3(存在心絞痛現象)THEN 未患有冠心病(P 正確率=90.08%);②IF 缺陷種類>3(存在任意類型缺陷)AND 胸痛類型>3(無任何胸痛癥狀)THEN 患有冠心病(P 正確率=87.95%)。
3.1 基于Apriori 算法的預測模型的建立 WEKA 平臺的關聯規則分析要求所有屬性的類別為Nominal,本文的數據集的數據類型全部為數值型,因此需要對數據進行離散化以滿足Apriori 算法的要求。對此本文選用WEKA 平臺的數據處理工具Discretize(采用默認參數)對數據進行離散化,相對于J48 所選擇的12 個輸入屬性,在Apriori 算法中則選擇其中的6 個屬性作為輸入屬性,其原因在于,在初次使用原本的12 個輸入屬性進行Apriori 算法時所得到的結果并不符合預期,產生較多無意義規則。因此需要對數據屬性進行約簡,屬性約簡是在保證系統本身分類能力不變的前提下刪除其中冗余的屬性,保留起決定作用的核心屬性,它是粗糙集理論中最重要的一個部分。通過知識約簡,導出問題的決策或分類規則,其對于研究關聯規則的知識發現有著極其重要的意義[6]。針對本數據集,本研究采用WEKA 平臺上的InfoGainAttributeEval 算法來評估屬性的信息增益,使用Ranker 算法作為檢索方法對數據進行屬性約簡。其中信息增益是指信息熵與條件熵的差值,信息熵體現了信息的不確定程度,信息熵越大則代表無序度越大,不確定程度越大,其信息的效用值越小。與此同時條件熵體現了依據該特征分類后的不確定程度,條件熵越小則說明分類后越穩定。因此對于信息增益來說,信息增益越大則說明該特征越重要以及該特征所包含的信息量越大[7]。InfoGainAttributeEval 算法和Ranker 檢索算法均使用默認參數,通過以上兩種算法的結合,得出了12種屬性信息增益的排名以及具體數值,見表1。

表1 12 種屬性信息增益排名及具體數值
信息增益越大則表明該屬性越重要以及所包含的信息量更大,所以根據排名,選擇前6 個屬性(信息增益在0.1 以上的6 個屬性)進行關聯規則分析。使用WEKA 中的Apriori 算法,以缺陷種類、胸痛類型、最大心率、運動相對于休息引起的ST 壓抑、運動誘發的心絞痛、運動時ST 段峰值的斜率6 個屬性為“輸入值”,以是否患有冠心病為“可預測值”進行關聯規則分析。同時,Apriori 算法的參數設置采用默認參數設置。通過Apriori 算法共得到了10 條規則,且從結果評估得知,以上10 條規則的可信度均在94%之上,具有一定的參考價值。以下是部分規則展示:①最大心率=(162.7-175.8)運動相對于休息引起的ST 壓抑=(0-0.6)缺陷種類=無生理性缺陷==>未患有冠心病<conf:(0.97)>lift:(1.72)lev:(0.05)[12]conv:(6.76);②最大心率=(162.7-175.8)運動時ST 段峰值的斜率=上坡缺陷種類=無生理性缺陷==>未患有冠心病<conf:(0.97)>lift:(1.71)lev:(0.05)[12]conv:(6.54)。
3.2 結果分析 通過Apriori 算法得到了10 條可信度較高的規則,這10 條規則揭示了一定的規律。以下對部分規則進行解讀。
第1 條規則:當患者的最大心率在162.7~175.8、運動相對于休息引起的ST 壓抑在0~0.6 且缺陷種類為無生理性缺陷,其有97%的概率未患有冠心病。該條規則說明該類患者有極大的概率并非是冠心病患者,因此該類患者的運動相對于休息引起的ST 壓抑可能并非是冠心病所引起的而是由其他原因導致的心肌缺血、心肌病等等[8],需要做進一步的排查。
第二條規則:當患者的最大心率在162.7~175.8、運動時ST 段峰值的斜率為上坡且缺陷種類為無生理性缺陷,其有97%的概率未患有冠心病。該條規則表明該類患者有極大的概率并非冠心病患者,因此該類患者的運動時ST 段峰值的斜率為上坡可能是由其他原因造成的并非冠心病所引起的[8],因此該類患者大概率需要做進一步排查。
基于MultilayerPerceptron 算法的預測模型的建立 以年齡、性別、胸痛類型、靜息血壓、血清膽固醇、空腹血糖是否大于120 mg/dl、靜息心電圖結果、最大心率、運動誘發的心絞痛、運動相對于休息引起的ST 壓抑、運動時ST 段峰值的斜率、心臟缺陷種類12 個屬性為“輸入值”,以是否患有冠心病為“可預測值”,利用WEKA 中的MultilayerPerceptron 算法進行神經網絡分析。MultilayerPerceptron 算法的參數選擇為默認參數,輸出結果見圖2,模型的正確率為74.1313%,實驗結果見表2、表3。這12 個輸入屬性中對判斷患者是否患有冠心病影響力從高到低排布為胸痛類型>血清膽固醇>運動相對于休息引起的ST 壓抑>最大心率>年齡>運動時ST 段峰值的斜率>缺陷種類>性別>空腹血糖值>運動誘發的心絞痛>靜息心電圖結果>靜息血壓,見表4。

表2 MultilayerPerceptron 算法Node 結果

表3 12 個屬性對于的Node 結果

表4 各因素對患者是否患有冠心病判斷結果的影響
冠心病是一種常見的心血管疾病,其檢查手段的“金標準”——冠狀動脈造影,因其相對高昂的檢查費用和較為繁瑣的檢查要求而受到局限。同時,醫學診斷是一項艱巨而復雜的任務。因此通過J48 決策樹、關聯規則Apriori 算法和MultilayerPerceptron算法來建立一個冠心病預測模型以輔助醫護人員的判斷。借助J48 決策樹所挖掘出的模型,可以幫助醫務人員通過一些尋常且相對廉價的檢測手段對患者的病情進行一個初步的判斷,對評估冠心病的患病風險以及診斷冠心病具有一定的臨床指導作用。借助該決策樹可以通過一系列的尋常的體檢檢查(如靜息血壓、心電圖檢查、最大心率等)和患者描述(如是否出現心絞痛、是否出現運動誘發的心絞痛現象等)來判斷是否有較大的可能患有冠心病以及下一步的診療方案。與此同時,根據關聯規則分析所得出的十條結論,可以對患者的病情做出一個準確的判斷,并且根據該十條規則,可以對患者的病情進行實時的監護,當符合條件的患者出現不符合規則的癥狀時說明該患者的病情發生了變化,則需要進一步的檢查和治療。這為醫護人員更好的把握救助時機有一定的指導意義。同時,通過MultilayerPerceptron 算法得出的12 種輸入屬性對于冠心病診斷的影響力的大小的量化將幫助醫護人員及患者更好的理解冠心病診斷的過程。借助該模型,可以通過一系列基礎的體檢檢查來幫助醫護人員對患者的病情有一個基本的判斷,以為醫護人員的下一步決策提供參考,在一定程度上幫助患者節省了醫療費用。
現如今,醫生對冠心病的診斷所依據的是既往的經驗以及確切的病變影像圖片。想要得到確切的病變影像圖片所要支付的醫療費用是相對昂貴的,因此如何通過較為尋常且價格低廉的檢查手段對患者的病情進行判斷以及幫助醫生決策在當前環境下是需要解決的。但是不同因素對于冠心病確診的影響的大小尚無明確的定量分析,醫護人員對于檢查結果的評估尚未具體。因此在大量的數據支持下,對影響冠心病診斷的多種因素進行量化討論是積極的,本次三種數據挖掘手段所得出的模型對該問題進行了討論,并給出了具有一定參考意義的答案。為了實現基于WEKA 的數據挖掘平臺的醫學數據整理及冠心病的早期預測診斷,使用J48 決策樹、Apriori 算法和MultilayerPerceptron 算法對冠心病數據集進行數據挖掘,并利用多種指標對挖掘結果進行評價,最終得出基于WEKA 數據挖掘平臺的冠心病早期預測診斷模型。通過該模型幫助醫護人員判斷患者是否患有冠心病以及對罹患冠心病的風險的評估,該模型具有一定的醫學指導意義。
綜上所述,運用數據挖掘的技術手段對冠心病數據集進行發掘,有助于尋找影響冠心病診斷的主要因素,并且幫助醫護人員準確把握患者病情的變化情況,為醫生的決策提供一份相對可靠的參考。