秦唯棟 張超群 周文娟 劉文武 易云恒
摘要:在使用機器學習方法預測心臟病患病情況案例中,傳統機器學習模型訓練過程耗時較長,尤其是在數據較多情況下實時性無法保障。基于粒子群(PSO)算法和極端梯度提升(XGBoost)算法,新建一種心臟病預測模型,該模型利用PSO算法的全局尋優能力對XGBoost初始參數進行優化,結合XGBoost算法得到最優的決策樹即患者的患病情況。實驗結果表明,PSO算法相較于普通的調參方式具有更好的效果,且迭代收斂速度大,可在短時間獲得最適合模型的超參數,PSO-XGBoost模型(PSO-XGBoost)的準確率達到了92.69%,邏輯回歸與KNN算法分別為77.05%,65.57%。PSO-XGBoost模型在進行疾病預測時有著更優的診斷準確率,且適用于預測其他疾病。
關鍵詞:極端梯度提升算法;粒子群算法;準確率;集成學習;收斂速度
中圖分類號:TP391文獻標志碼:A文章編號:1008-1739(2022)18-68-05

隨著時代的發展,人們的生活水平逐漸提高,但一些不良的生活方式與飲食習慣同時也使心血管疾病有機可乘。目前的醫療診斷方式大多是通過醫生的專業知識直接判斷或依靠專門的醫療設備對患者進行檢查,診斷時間過長且對醫生與檢測設備要求較高,不利于獲取患者完整的患病情況從而進行相應的后續治療,且會加重患者的治療成本。如今,醫學正經歷著由過往普通醫學模式向準確醫學模式轉化的過程,將人工智能技術進一步運用到醫療工作中已成為主流趨勢[1-2]。在一些醫療診斷方面的工作中,機器學習與智能決策技術起著不可替代的作用。醫院通過一系列醫療信息技術準確把握患者的患病情況,能夠有效對患者進行及時的治療并在一定程度上降低醫療檢測的成本。因此,本文對于構建高效、經濟的醫療診斷系統具有重要的意義。
國內外相關學者提出不同的機器學習方法應用到心臟病預測中,以輔助醫生做出更準確的心臟病診斷。許多機器學習方法廣泛應用于心臟病的預測中,Kumari等[3]在2020年通過支持向量機檢測心律失常。Patidar等[4]將最小二乘支持向量機應用于心電圖信號的分析中,并通過對支持向量機的核函數[5]進行改進來預測心臟病的發生。Birjais[6]采用K-近鄰(K-NearestNeighbor,KNN)對缺失數據進行填補,梯度提升決策樹(Graddient Boosting Decision Tree,GBDT)的準確率達到86%。
然而,經典的機器學習方法在實際進行心臟病診斷過程中往往存在過擬合與準確率不高等問題,尤其是針對根據患者相關特征進行心臟病診斷的工作中,通常需要挑選出較為重要的特征,即對最終判定是否患心臟病有一定貢獻度。由此,本文以Kaggle數據競賽中使用到的心臟病患者特征數據集為主,在分析患者相關特征重要性的基礎上,運用極端梯度提升(eXtreme Gradient Boosting,XGBoost)算法構建患者心臟病診斷模型,并采用PSO算法對模型參數進行調整,進一步提高模型的預測準確率,為醫療機構進一步完善疾病診斷系統打下基礎。
1.1 XGBoost算法


(3)基于最大得分對應的劃分特征和特征值分裂子樹。
(4)若最大得分為0,則目前決策樹建立完成,計算全部葉子區域的,得到弱學習器( ),更新強學習器( ),展開下一次弱學習器迭代;若最大得分不為0,則轉至第(2)步繼續嘗試分裂決策樹。
另一方面,XGBoost算法通常根據結構得分的增益計算出選擇哪個特征作為分割點,而某個特征的重要性就是它在樹中出現的次數之和。換言之,一個屬性越多地被用來在模型中構建決策樹,其重要性就越高。對于輸入模型前的數據,可通過XGBoost中的get_score獲取特征重要性,選擇更有利于進行預測的特征。
1.2粒子群算法
PSO算法為一種模擬鳥群覓食行為的基于群體互助的隨機搜索算法。該算法假設一群鳥在隨機搜索食物,在這個區域只有一塊食物。所有鳥都不知道食物在哪兒,但知道當前位置離食物還有多遠。而找到食物的最優策略是搜尋離食物最近的鳥的周圍區域。具體原理如下:

1.3基于PSO-XGBoost模型建模
由Kaggle提供的數據集,可得到303位患者的13個屬性特征信息,在模型構建過程中選取70%樣本數據集訓練與優化參數,其余30%劃為測試集將提出的模型性能進行評估。XGBoost使用到的超參數為最大深度(max_depth)、學習率(learning_rate)、L2正則化項的權重(Lambda)。為防止調參中遇到隨機性或計算量較大的情況,采用粒子群優化算法對模型超參數進行調整,從而提高模型的預測性能。
在PSO-XGBoost模型訓練過程中,隨機初始化對應粒子種群數,確定模型每個參數的初值與取值范圍,采用PSO算法優化相應的參數取值。之后,將驗證集對該次訓練進行評判,由適應度值確定當前是否為最優值,如果是最優值,將替換原本參數;若不是,則保留當前確定的參數。根據有無達到最大迭代次數,若達到則保留最優參數值;反之,則繼續使用PSO進行迭代。PSO-XGBoost模型構建圖如圖1所示。

2.1實驗條件
本次實驗是在Windows10 64位操作系統上完成的,其中PC機處理器為Intel(R) Core(Tm) i7-10700 CPU @ 2.90 GHz,內存為16 GB。本實驗使用Pycharm2020作為代碼的實現工具,使用python語言的機器學習框架scikit-learn來編寫。
2.2數據說明
實驗選用來源Kaggle數據挖掘比賽官網的關于心臟病分類預測的數據。該數據集由費德索里亞諾以及瑞士巴塞爾大學醫學院于2021年9月整理,共有13個屬性,303條數據,其中target代表該病人是否患有心臟病。部分數據集屬性如表1所示。

2.3數據預處理
原數據中,沒有數據缺失的狀況。但在某些特征取值中,使用文字表示具有二值類、多值類的特征取值。為方便算法模型識別,將文字數據轉化為數字。如胸痛字段,將使用0,1,2,3等來表示typical(典型)、atypical(非典型)、non-anginal(非心絞痛)、asymptomatic(無臨床癥狀)胸痛等級。其他多值類字段也按該邏輯處理。將數據集分為70%的訓練集與30%測試集,使用交叉驗證方式,得到不同的訓練集與測試集,防止測試結果片面與訓練數據不足的問題。
原數據集中影響患病的屬性有13個,但并不是所有屬性都與患病的關聯性很大,本文使用XGBoost自帶的get_score進行關鍵特征的選擇,刪除關聯性不大的屬性以此提高運算效率。

式中,*為輸入的特征變量;max,min為每個獨立樣本數據的最大值與最小值。
2.4實驗結果
本文患病預測為一個二分類問題,可簡單劃分為正類或負類。在實際中,會有如表2所示情況出現。


受試者工作特征曲線(Receiver Operating Characteristic Curve,ROC)是反映靈敏度和特異性連續變量的綜合指標,以敏感性為縱坐標、特異性為橫坐標繪制成曲線。在ROC上,最靠近坐標圖左上方的點為敏感性和特異性均較高的臨界值。ROC下面積(AUC)是ROC的數量指標,指ROC下方的面積,面積越大,診斷準確性越高。理論上AUC取值為[0,1],在理想分類器中,AUC的值為1。
XGBoost本質與隨機森林算法一樣,由多個弱學習器進行決策,以少數服從多數的方式對分類問題進行決策。而每一次的迭代都會產生新的學習器添加到模型中,模型的復雜度同時也隨著學習器的增加而提高,當模型復雜度與數據樣本復雜度較為接近時即可達到最優訓練效果,部分訓練的學習器如圖2所示。

為驗證PSO-XGBoost在各階段的性能,設計多組對比實驗。除提到的組合算法外,另外選擇了貝葉斯(Bayes)、邏輯回歸(LR)等分類算法進行實驗。為表示預測結果與實際情況的關系繪制出混淆矩陣,如圖3所示。

根據混淆矩陣可得出各模型性能指標如表3所示,并繪制ROC如圖4所示。顯而易見,PSO-XGBoost相比其他分類器擁有更好的分類準確性,且AUC值也最大,對于靈敏度與特異性2項指標也更出色,可顯著減少誤診率與漏診率。樸素貝葉斯算法雖AUC值較小,但在預測小規模數據時分類效率穩定且對缺失數據不敏感。因此,需要結合實際情況選擇合適的分類器。


針對心臟病預測,本文綜合運用了各類機器學習算法對數據集訓練并得出算法模型的性能評價,其中,PSO-XGBoost表現性能較好,準確率為92.69%,靈敏度為75.86%,特異性為91.33%,AUC值為0.90,可以做出合理特征選擇處理高維度數據。此外,該算法訓練效率高,樹與樹之間相互獨立從而易于并行化展開訓練。針對不平衡數據集,XGBoost可平衡誤差。當存在分類不平衡的情況時,XGBoost能提供平衡數據集誤差的有效方法。另外,機器學習預測的方法可應用到其他類似的疾病診斷中,有效幫助醫生給出準確決策并預防病人患病。
[1]趙鵬,陸志,蔣珍華,等.基于隨機森林回歸分析的脈管制冷機性能預測模型[J].紅外,2021,42(8):33-37.
[2]尤志軍,俞秋峰,汪曉暉,等.基于隨機森林法的精神分裂癥患者病情復發的預測[J].國際精神病學雜志,2021,48(4): 631-636.
[3] KUMARI C, MURTHY S D A, PRASANNA L B, et al. An Automated Detection of Heart Arrhythmias Using Machine Learning Technique: SVM[J].Materials Today: Proceedings, 2020,45(2):1393-1398.
[4]PATIDAR S, PACHORI R B, ACHARYA U R. Automated Diagnosis of Coronary Artery Disease Using Tunable-Q Wavelet Transform Applied on Heart Ratesignals[J]. Knowledge-based Systems,2015, 82: 1-10.
[5] MANIRUZZAMAN M, KUMAR N, MENHAZUL A, et al. Comparative App-roaches for ClasSification of Diabetes Mellitus Data:Machine Learning Paradigm[J].Computer Methods and Programs in Biomedicine, 2017,152:23-34.
[6] BIRJAIS R, MOURYA A K, CHAUHAN R, et al. Prediction and Diagnosis of Future Diabetes Risk: A Machine Learning Approach[J].SN Applied Sciences,2019,1(9):1-8.
[7]趙金超,李儀,王冬,等.基于優化的隨機森林心臟病預測算法[J].青島科技大學學報(自然科學版),2021,42(2):112-118.
[8]李國成,陸俊,王赟,等.基于Bagging二次加權集成的孤立森林竊電檢測算法[J].電力系統自動化,2022,46(2):92-100.
[9] SINGH V K, MAURYA N S, MANI A, et al. Machine Learning Method Using Position-specific Mutation Based Classification Outperforms One Hot Coding for Disease Severity Prediction in Haemophilia A[J]. Genomics,2020,112(6):5122-5128.
[10]趙勇,趙姜雪慧.基于隨機森林模型的滑行艇剩余阻力預測[J].華中科技大學學報(自然科學版),2021,49(11): 118-122.
[11]羅超.面向高維數據的隨機森林算法優化探討[J].商,2016(4):207.
[12] VIN CIUS M, DIONATR K, MATHEUS L,et al. ML-driven Classification Scheme for Dynamic Interference-aware Resource Scheduling in Cloud Infrastructures [J].Journal of Systems Architecture,2021,116:9-12.
[13] SIMONA-VASILICA O, ADELA B. Machine Learning Classification Algorithms and Anomaly Detection in Conventional Meters and Tunisian Electricity Consumption Large Datasets[J].Computers and Electrical Engineering, 2021,94:5-8.