蘇文星,張振一,鄭琰莉,唐 琳,宋元濤
(1中國科學(xué)院大學(xué) 工程與科學(xué)學(xué)院,北京 100049;2中國科學(xué)院大學(xué) 應(yīng)急管理科學(xué)與工程學(xué)院,北京 100049;3天津泰達(dá)普華醫(yī)院,天津 300457;4西安理工大學(xué) 經(jīng)濟(jì)與管理學(xué)院,西安 710045)
冠狀動脈粥樣硬化性心臟病簡稱“冠心病”(Coronary Heart Disease,CHD),是指冠狀動脈血管發(fā)生動脈粥樣硬化病變而引起血管腔狹窄或阻塞,造成心肌缺血、缺氧或壞死而導(dǎo)致的心臟疾病。隨著老齡化進(jìn)程加快以及居民不良生活方式的影響,心血管疾病的發(fā)病率逐年增高。中國患有心血管病的人數(shù)約為3.3億,其中冠心病1 139萬人,且農(nóng)村地區(qū)心血管病死亡率持續(xù)高于城市水平。目前,臨床上對冠心病診斷主要依靠臨床癥狀、實(shí)驗(yàn)室檢查、影像學(xué)檢查診斷等,其中冠狀動脈造影(Coronary Angiography,CAG)是診斷冠心病的“金標(biāo)準(zhǔn)”,但診斷過程繁瑣且費(fèi)用較為昂貴。如能早期對冠心病給予相應(yīng)的風(fēng)險預(yù)測,可在降低居民患病風(fēng)險和就醫(yī)成本的同時提高疾病篩查的效率,因此,找到快速又經(jīng)濟(jì)的冠心病早期預(yù)測方法具有重要意義。
近年來,機(jī)器學(xué)習(xí)由于其強(qiáng)大的數(shù)據(jù)分類與預(yù)測能力,在疾病預(yù)測及輔助臨床治療決策方面做出一定貢獻(xiàn),集成學(xué)習(xí)算法的預(yù)測效果尤為突出,但機(jī)器學(xué)習(xí)在冠心病風(fēng)險預(yù)測方面并未得到廣泛應(yīng)用。此外,相關(guān)研究發(fā)現(xiàn),高血壓、高膽固醇、糖尿病以及年齡、性別、身體質(zhì)量指數(shù)(BMI)、是否吸煙等都會影響患冠心病的幾率。因此,本文利用Kaggle平臺公開的CHD數(shù)據(jù)集,基于隨機(jī)森林、XGBoost、LightGBM 3種較為成熟的集成學(xué)習(xí)(Ensemble learning)算法建立冠心病風(fēng)險預(yù)測模型,利用準(zhǔn)確率、召回率、等指標(biāo)對3種模型的性能進(jìn)行比較,驗(yàn)證集成學(xué)習(xí)算法在冠心病風(fēng)險預(yù)測方面的可行性,從而實(shí)現(xiàn)對冠心病的早期風(fēng)險預(yù)測。
本文數(shù)據(jù)源為Kaggle官方大數(shù)據(jù)平臺提供的針對馬薩諸塞州弗雷明翰鎮(zhèn)居民心血管研究公開數(shù)據(jù),其分類目標(biāo)是預(yù)測患者10年間是否罹患冠心病,如果有計(jì)作1(陽性),否則計(jì)作0(陰性)。數(shù)據(jù)集共有4 283條記錄,涵蓋了人口統(tǒng)計(jì)學(xué)、行為學(xué)和醫(yī)學(xué)風(fēng)險3個維度的15個風(fēng)險特征指標(biāo)。具體特征指標(biāo)變量見表1。
表1 風(fēng)險特征指標(biāo)變量詳情與解釋Tab.1 Detail and explanation for risk characteristic index variables
采用Pandas對數(shù)據(jù)源數(shù)據(jù)對指標(biāo)變量的值類型、分布以及缺失情況進(jìn)行分析得出:數(shù)據(jù)不滿足正態(tài)分布(0.05),且教育程度(education)、平均每日吸煙量(cigsPerDay)、是否服用降壓藥(BPMeds)、總膽固醇水平(totChol)、身體質(zhì)量指數(shù)(BMI)、血糖水平(glucose)存在數(shù)據(jù)的缺失。具體特征指標(biāo)變量數(shù)據(jù)情況見表2。
表2 特征指標(biāo)變量數(shù)據(jù)情況Tab.2 Data of characteristic index variables
數(shù)據(jù)的缺失會影響數(shù)據(jù)分析的質(zhì)量和建模的準(zhǔn)確性,所以需要針對不同特征變量數(shù)據(jù)分析情況采取恰當(dāng)方式進(jìn)行數(shù)據(jù)處理。教育程度指標(biāo)變量受患者實(shí)際情況影響,數(shù)據(jù)不可得且缺失數(shù)據(jù)的比例在5%以下,可以使用刪除法對缺失值進(jìn)行處理;平均每日吸煙量的缺失值,分析發(fā)現(xiàn)對應(yīng)記錄均為吸煙者,因此取所有吸煙者且每日吸煙量非空數(shù)據(jù)的平均數(shù)(18.0)對缺失值進(jìn)行插值;對于是否服用降壓藥指標(biāo)變量缺失值,參考美國心臟病協(xié)會(American Heart Association,AHA)高血壓指南最新診斷標(biāo)準(zhǔn),在未使用降壓藥物的情況下,收縮壓(systolic blood pressure,SBP)≥130 mmHg和(或)舒張壓(Diastolic Blood Pressure,DBP)≥80 mmHg的人群診斷為高血壓患者,對收縮壓大于130 mmHg或者舒張壓大于80 mmHg的數(shù)據(jù)以1進(jìn)行插值,否則以0進(jìn)行插值;對于總膽固醇水平、身體質(zhì)量指數(shù)、心率和血糖水平指標(biāo)變量的缺失數(shù)據(jù),其數(shù)據(jù)比例均占總數(shù)據(jù)10%以下,分別求各指標(biāo)變量數(shù)據(jù)平均值后對空缺數(shù)據(jù)進(jìn)行填補(bǔ)。本文基于Python的pandas工具庫對上述數(shù)據(jù)進(jìn)行處理,最終得到4 133條樣本用于模型構(gòu)建,其中陰性患者3 505例(84.8%),陽性患者628例(15.2%)。部分樣本數(shù)據(jù)見表3。
表3 部分樣本數(shù)據(jù)Tab.3 Part of sample data
特征選擇旨在通過分析特征間的關(guān)系篩選出對模型貢獻(xiàn)度較高的特征變量,以提高模型的性能。鑒于數(shù)據(jù)不滿足正態(tài)分布,本文首先基于Spearman秩相關(guān)系數(shù)對特征指標(biāo)變量相關(guān)性進(jìn)行分析,具體相關(guān)情況如圖1所示。其中年齡(age)、收縮壓(sysBP)、是否患有高血壓(prevalentHyp)、舒張壓(diaBP)、血糖水平(glucose)為重要特征,是否吸煙-平均每日吸煙(currentsmoker-cigsperday)的相關(guān)系數(shù)為0.93,舒張壓-收縮壓(diaBP-sysBP)的相關(guān)系數(shù)為0.78,高血壓史-收縮壓(prevalentHypsysbp)的相關(guān)系數(shù)為0.70,高血壓史-舒張壓(prevalentHyp-diaBP)的相關(guān)系數(shù)為0.62,值均小于0.05,特征指標(biāo)變量間存在較高相關(guān)性。分析可得特征指標(biāo)變量與目標(biāo)值相關(guān)性均小于0.6且特征指標(biāo)數(shù)量較少,故保留所有特征指標(biāo)變量進(jìn)行模型預(yù)測。
圖1 特征指標(biāo)變量相關(guān)性Fig.1 Correlation between characteristic index variables
一般來說,不平衡數(shù)據(jù)集會削弱學(xué)習(xí)算法預(yù)測準(zhǔn)確性,本文應(yīng)用的冠心病數(shù)據(jù)集中陽性與陰性數(shù)據(jù)比值約為1∶6,數(shù)據(jù)類別不平衡明顯。人工少數(shù)類過采樣法(Synthetic Minority Over-Sampling Technique,SMOTE)在解決數(shù)據(jù)類別不平衡問題上具有良好的效果。本文將采用該方法隨機(jī)生成新實(shí)例以平衡數(shù)據(jù)。
集成學(xué)習(xí)通過構(gòu)建并結(jié)合多個學(xué)習(xí)器來完成學(xué)習(xí)任務(wù),通過多分類器的預(yù)測結(jié)果來改善基本學(xué)習(xí)器的泛化能力和魯棒性。本文選取隨機(jī)森林、XGBoost、LightGBM 3種較為成熟的集成學(xué)習(xí)算法建立冠心病風(fēng)險預(yù)測模型。
(1)隨機(jī)森林:隨機(jī)森林具有易于實(shí)現(xiàn)、抗噪聲能力優(yōu)、數(shù)據(jù)集適應(yīng)能力強(qiáng)且不易陷入過擬合等特點(diǎn)。隨機(jī)森林(Random Forest,RF)利用集成學(xué)習(xí)的思想,包含多個決策樹的分類器,對于一個輸入樣本,不同樹會有不同的分類結(jié)果,隨機(jī)森林通過隨機(jī)的方式建立多棵決策樹并集成了所有的分類投票結(jié)果,選擇投票數(shù)最多的類別作為最終的輸出。
(2)XGBoost:XGBoost(eXtreme Gradient Boosting)是一種改進(jìn)的梯度提升算法,具有計(jì)算復(fù)雜度低、靈活性強(qiáng)、運(yùn)行速度快,精準(zhǔn)度高的優(yōu)點(diǎn)。基于預(yù)排序方法并通過對誤差函數(shù)進(jìn)行二階泰勒展開,加入正則化項(xiàng)來優(yōu)化目標(biāo)函數(shù),將多個弱分類器進(jìn)行融合,從而形成強(qiáng)分類器,同時采用收縮(Shinkage)、列特征抽樣(Column Subsampling)等方法來防止過擬合。
(3)LightGBM:LightGBM(Light Gradient Boosting Machine)是基于決策樹算法的分布式梯度提升框架,采用Histogram算法,使用帶有深度限制的按葉子生長(leaf-wise)策略,支持高效率的并行訓(xùn)練,并且具有更快的訓(xùn)練速度、更低的內(nèi)存消耗、更好的準(zhǔn)確率。支持分布式可以快速處理海量數(shù)據(jù),訓(xùn)練效果好、不易過擬合。3種集成學(xué)習(xí)算法在模型設(shè)計(jì)上存在明顯差異,其核心的不同點(diǎn)見表4。
表4 3種集成學(xué)習(xí)算法對比表Tab.4 Comparison of three ensemble learning algorithms
為了確保模型有較好的效果,需要對模型調(diào)參,手動調(diào)參十分耗時且依賴于個人經(jīng)驗(yàn),網(wǎng)格和隨機(jī)搜索調(diào)參需要很長的運(yùn)行時間。貝葉斯優(yōu)化法目前廣泛應(yīng)用于解決機(jī)器學(xué)習(xí)中的超參數(shù)搜索問題,同時該方法較隨機(jī)搜索具有省時、性能優(yōu)的特點(diǎn)。因此,本文基于Python語言使用BayesianOptimization庫對3種模型使用貝葉斯優(yōu)化法進(jìn)行超參數(shù)調(diào)優(yōu)。其中n_estimator代表建立子樹的數(shù)量,一般來說模型的性能與子樹的數(shù)量成正比,但是數(shù)值過大可能會導(dǎo)致模型過擬合,因此隨機(jī)森林、XGboost、LightGBM3種集成學(xué)習(xí)模型基于貝葉斯優(yōu)化的優(yōu)化結(jié)果分別為383/398/574,其他參數(shù)的詳細(xì)設(shè)置情況見表5~表7。
表5 隨機(jī)森林算法模型參數(shù)設(shè)置情況Tab.5 Parameter settings of random forest model
表7 LightGBM算法模型參數(shù)設(shè)置情況Tab.7 Parameter settings of LightGBM model
確定好模型參數(shù)后,本文基于Python語言并結(jié)合sklearn機(jī)器學(xué)習(xí)庫,首先將數(shù)據(jù)集按照7∶3的比例分割為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,在訓(xùn)練數(shù)據(jù)集上完成3個模型的訓(xùn)練,并使用訓(xùn)練好的模型在測試數(shù)據(jù)集上測試,得到相應(yīng)的預(yù)測結(jié)果(混淆矩陣),見表8。
表6 XGboost算法模型參數(shù)設(shè)置情況Tab.6 Parameter settings of XGboost model
表8 3種模型的預(yù)測結(jié)果(混淆矩陣)Tab.8 Prediction results of three models(confusion matrix)
本文主要以準(zhǔn)確率(,)、精確率(,)、召回率()、值和值評估算法的適用性及效果,同時使用10折交叉驗(yàn)證(10)的方式驗(yàn)證模型的性能。在解釋上述評價指標(biāo)之前需要對混淆矩陣進(jìn)行釋義,首先把預(yù)測值與實(shí)際值兩兩匹配,然后顯示預(yù)測結(jié)果為陽性/陰性(Positive/Negative),再根據(jù)實(shí)際與預(yù)測結(jié)果對比,得出判斷結(jié)果為正確/錯誤(True/False),最終得到混淆矩陣見表9。
表9 混淆矩陣Tab.9 Confusion matrix
準(zhǔn)確率是指預(yù)測模型預(yù)測正確的結(jié)果占總樣本的百分比,計(jì)算公式(1):
精準(zhǔn)率是指在所有被預(yù)測為陽性的樣本中實(shí)際值也為陽性的樣本所占百分比,計(jì)算公式(2):
召回率是指在所有實(shí)際值為陽性的樣本中被預(yù)測為陽性的樣本所占百分比,計(jì)算公式(3):
值是為了更好的進(jìn)行整體評價,在和的基礎(chǔ)上,使用兩者的加權(quán)調(diào)和平均進(jìn)行模型性能效果的評價,計(jì)算公式(4):
除此之外,本文還引入(Receiver Operating Characteristic Curve)曲線對模型進(jìn)行評估,是以假陽性率(False Positive Rate)、真陽性率(True Positive Rate)為軸的曲線,曲線下的面積(Area Under Curve,)可以直觀的評價分類器的好壞,范圍在0~1之間,值越大代表模型性能越好。
利用Python語言metrics庫得出3種預(yù)測模型的性能度量結(jié)果,見表10,可以看出:3種算法的準(zhǔn)確率均在90%左右且數(shù)值相差不大,預(yù)測效果均較為良好;相較于其他模型,LightGBM的精準(zhǔn)度最高,為93.94%;由表10和圖2可以看出,3種算法的值均在0.9以上且3種算法10折交叉驗(yàn)證的準(zhǔn)確率均在85%左右,表明其準(zhǔn)確性、穩(wěn)定性均較好。從值指標(biāo)上觀察,LightGBM模型預(yù)測效果略優(yōu)于其他2個模型。綜合上述指標(biāo)可以看出,在本次選取的3種模型的訓(xùn)練效果均較好,LightGBM性能最為優(yōu)秀。本文通過與相關(guān)研究成果對比發(fā)現(xiàn),本研究選取的3種模型在準(zhǔn)確率與值方面較其有明顯提升。
表10 3種模型性能度量指標(biāo)對比Tab.10 Comparison of performance metrics of three models
圖2 3種模型的ROC曲線Fig.2 ROC curves of three models
冠心病是最常見的心血管疾病之一,而現(xiàn)階段的診療成本較高,如能早期對冠心病給予相應(yīng)的風(fēng)險預(yù)測,提高疾病篩查的效率,不僅可降低居民的患病風(fēng)險,還可降低患者就醫(yī)成本,因此選擇科學(xué)有效的方法進(jìn)行早期冠心病的風(fēng)險預(yù)測是非常有意義的。本文基于Kaggle上公開的冠心病數(shù)據(jù)集,首先對數(shù)據(jù)進(jìn)行分析并對缺失數(shù)據(jù)按照不同情況處理,并利用SMOTE算法對數(shù)據(jù)進(jìn)行平衡處理;采用隨機(jī)森林、XGboost、LightGBM 3種集成學(xué)習(xí)算法模型構(gòu)建了冠心病的風(fēng)險預(yù)測模型,并使用貝葉斯優(yōu)化算法對模型進(jìn)行了調(diào)優(yōu);最后,從準(zhǔn)確率、召回率、等指標(biāo)對3種模型的性能進(jìn)行比較,發(fā)現(xiàn)3種模型均具有良好的性能,驗(yàn)證集成學(xué)習(xí)算法在冠心病風(fēng)險預(yù)測方面的可行性,從而實(shí)現(xiàn)冠心病早期風(fēng)險預(yù)測。此外,基于機(jī)器學(xué)習(xí)建立的風(fēng)險預(yù)測模型不僅可以對冠心病進(jìn)行風(fēng)險預(yù)測,還可以將其推廣到預(yù)測其他類型的疾病,以提高疾病的早期篩查效率。
本文也存在一定的局限性。首先,本文采用的數(shù)據(jù)來源于開放平臺,在數(shù)據(jù)數(shù)量、質(zhì)量以及適用性上存在一定的局限性,未來考慮使用醫(yī)院的真實(shí)大數(shù)據(jù)進(jìn)行模型構(gòu)建與預(yù)測;其次,本文使用的算法模型均為集成學(xué)習(xí)范疇,以后可考慮選取不同類型的機(jī)器學(xué)習(xí)算法進(jìn)行改進(jìn)對比,構(gòu)建更加優(yōu)秀的風(fēng)險預(yù)測模型。