沈賽拉 鐘鋒 梁興 陳思悅 沈詩鈺 陳璐靜
摘要: 為進行高血壓的危險因素分析與預測,提出一種基于隨機森林和梯度提升決策樹的模型。首先基于體檢報告數(shù)據(jù)進行缺失值處理、one-hot編碼、歸一化、數(shù)據(jù)初步聚類等預處理;然后針對數(shù)據(jù)樣本不均衡的特性,利用SOMTE算法進行重采樣,基于隨機森林得到特征重要性評分并進行特征選擇;最后基于排名前20的特征值,利用梯度提升決策樹算法產生預測模型。模型分析結果顯示了高血壓的危險性因素。經(jīng)數(shù)據(jù)集交叉驗證,模型準確率可以達到84.51%,具有較高的應用價值。
關鍵詞: 慢性??; 高血壓; 隨機森林; 梯度提升決策樹
中圖分類號:TP391? ? ? ? ? 文獻標識碼:A? ? ? 文章編號:1006-8228(2023)05-15-05
Analyze and predict the risk factors of hypertension based on the Random
Forest and Gradient Boosting Decision Tree
Shen Saila1, Zhong Feng1, Liang Xing2, Chen Siyue1, Shen Shiyu1, Chen Lujing1
(1. Department of Computer Science and Technology, School of International Business, Zhejiang International Studies University, Hangzhou, Zhejiang 310023, China; 2. Lejian Health Technology Group Co., Ltd)
Abstract: To analyze and predict the risk factors of hypertension, a model based on the Random Forest and Gradient Boosting Decision Tree is proposed. Firstly, the missing value handling, one-hot encoding, data normalization and data cluster methods are applied for data preprocessing based on the medical examination report data. Then, the SOMTE resampling algorithm is used to solve the imbalanced class problem, and the feature evaluation and selection are realized through the Random Forest. Finally, the prediction model is training by the Gradient Boosting Decision Tree based on the top 20 features. The analysis result shows the risk factors of hypertension. The accuracy of the model can reach 84.51% by the cross validation of the dataset. It has a good value in application field.
Key words: chronic disease; hypertension; Random Forest; Gradient Boosting Decision Tree
0 引言
健康是人類最普遍最根本的需求,人民健康是民族昌盛和國家富強的重要標志[1]。據(jù)國家衛(wèi)健委發(fā)布的《中國居民營養(yǎng)與慢性病狀況報告(2020)》,2019年我國因慢性病導致的死亡占總死亡的88.5%,其中,心腦血管病、癌癥、慢性呼吸系統(tǒng)疾病死亡比例為80.7%。高血壓、糖尿病、慢性阻塞性肺疾病患病率和癌癥發(fā)病率與2015年相比有所上升[2]。
高血壓是常見且容易被忽略的慢性疾病,長期罹患高血壓易導致視網(wǎng)膜、腎臟、心臟及腦部血管的并發(fā)癥,尤其對心臟與腦部血管的影響最常見[3]。通過對高血壓慢性病相關因素分析,可以發(fā)現(xiàn)并排查其他體檢指標與高血壓患者高度相似但血壓測量正常的體檢者,這部分人可能也具有高血壓潛在風險,對其預測具有重要意義。
1 樣本數(shù)據(jù)預處理及初步分析
1.1 樣本數(shù)據(jù)預處理
首先對樣本數(shù)據(jù)進行預處理[4]。
⑴ 刪除缺失值過多數(shù)據(jù)和無效數(shù)據(jù),主要是收縮壓或者舒張壓有缺失值的數(shù)據(jù)。
⑵ 將數(shù)據(jù)隨機打亂。由于數(shù)據(jù)是按時間排序的,數(shù)據(jù)打亂后分出的訓練集和測試集更有代表性。
⑶ 缺失值填充。缺失字段采用眾數(shù)填充的方法補充缺失值。
⑷ 如果數(shù)據(jù)特征值類型個數(shù)少于等于6個,轉換為one-hot編碼;如果數(shù)據(jù)特征值類型個數(shù)大于6個, 轉換為小數(shù)類型。one-hot編碼可以有效解決分類器不好處理屬性數(shù)據(jù)的問題,在一定程度上也起到了擴充特征的作用。它的值只有0和1,不同的類型存儲在垂直的空間。
⑸ 歸一化處理。有利于提高數(shù)據(jù)精度,讓各個特征對結果的做出的貢獻相同。
1.2 樣本數(shù)據(jù)初步分析
本項目采用脫敏體檢報告數(shù)據(jù)共計57427條,除去無效數(shù)據(jù)10689條(收縮壓或舒張壓數(shù)據(jù)有缺失),有效數(shù)據(jù)共計46738條。經(jīng)過初步分析,有高血的數(shù)據(jù)樣本為7492,占比16.03%,正負樣本比例1:5.24,屬于不均衡數(shù)據(jù)。對高血壓樣本進行進一步分析,Ⅰ級高血壓和單純性收縮期高血壓占了正樣本絕大部分,比例為77.33%,具體數(shù)據(jù)如表1所示。
根據(jù)樣本特征預測樣本類型,通過嘗試聚類進行初步探索分析[5],驗證高血壓的傳統(tǒng)分類是否具有可行性。我們使用樣本數(shù)據(jù)中除血壓(收縮壓)、血壓(舒張壓)外的體檢項目指標對樣本進行聚類分析,嘗試聚為2-4類,并觀察類別的血壓分布,結果如圖1所示。
結果發(fā)現(xiàn),k=3時聚類效果較好,兩條分類界線大致為140/90的傳統(tǒng)分界線和數(shù)據(jù)分布主軸(主軸兩側是高脈壓差和低脈壓差)。結合醫(yī)學背景知識,根據(jù)收縮壓-舒張壓=50將高血壓細分為高脈壓差高血壓和低脈壓差高血壓,得到最終的因變量表2。
2 高血壓慢病體檢指標相關性與預測
2.1 研究框架
根據(jù)研究兩種模型的特性,隨機森林魯棒性好,但上限低;梯度提升決策樹對訓練集較敏感,但上限高。本案例將數(shù)據(jù)做預處理后用隨機森林進行特征評價,再次做預處理后用梯度提升決策樹進行分類。算法流程圖如圖2所示。
⑴ 采集體檢報告數(shù)據(jù),每個樣本包含脫敏體檢人信息7個和體檢項目信息1209個(即體檢項目總數(shù))。根據(jù)血壓(收縮壓)、血壓(舒張壓)兩個項目給樣本做分類,刪去這兩個項目,其余信息稱為特征。
⑵ 刪除無效數(shù)據(jù)記錄和缺失值過多的特征,對缺失值進行眾數(shù)填充,特征值進行轉換和歸一化處理。共得到有效數(shù)據(jù)46738條,每條數(shù)據(jù)具有有效特征數(shù)目128個。
⑶ 對樣本進行初步聚類分析,結合高血壓慢性病自身分類規(guī)則,對樣本進行初步三分類。
⑷ 針對數(shù)據(jù)正負樣本比為1:5.24的特點,文章在樣本的采樣上選擇SMOT過采樣技術進行處理。
⑸ 利用隨機森林算法產生預測模型,同時得到特征重要性評分打分。根據(jù)特征值分值權重,我們選取前20個作為正式模型訓練特征。
⑹ 采用梯度提升決策樹算法正式產生預測模型,結果為樣本屬于高血壓類別的概率。
2.2 不均衡數(shù)據(jù)采樣處理
大多數(shù)機器學習算法在模型的學習過程中要求正負樣本數(shù)據(jù)比例相當,模型可以學習正負樣本數(shù)據(jù)所有特性,才具有較為良好的效果。而實際數(shù)據(jù)往往分布得很不均勻,例如本文樣本數(shù)據(jù)二分類正負樣本比例為1:5.24,三分類樣本比例為10.86:3.22:85.92。數(shù)據(jù)的不均衡給模型的學習帶來了困難。
本文采用SMOTE過采樣技術進行數(shù)據(jù)采樣,它是基于隨機過采樣算法的一種改進方案。傳統(tǒng)的隨機過采樣采取簡單復制樣本的策略來增加少數(shù)類樣本,這樣容易產生模型過擬合的問題。SMOTE算法基本思想如下。
⑴ 對于少數(shù)類中每一個樣本X,以歐氏距離為標準計算它到少數(shù)類樣本集中所有樣本的距離,得到其k近鄰。
⑵ 根據(jù)樣本不平衡比例設置一個采樣比例以確定采樣倍率N,對于每一個少數(shù)類樣本X,從其k近鄰中隨機選擇若干個樣本,假設選擇的近鄰為Xn。
⑶ 對于每一個隨機選出的近鄰Xn,分別與原樣本按照如下的公式⑴構建新的樣本。
[Xnew=X+rand(0,1)?X-Xn]? ⑴
2.3 基于隨機森林的相關性與分析
隨機森林模型(Random Forest)是一種高度靈活的基于Bagging的集成學習模型機器學習算法,它可以同時生成多個預測模型,并匯總模型的結果以提升分類準確率,結構見圖3[6]。
隨機森林集成了Bagging和隨機選擇特征分裂等方法的特點,基本克服了過擬合問題,能根據(jù)特征的重要性進行特征選擇,且算法效率較高,被廣泛應用在各種分類和回歸問題之中。Bagging是早期組合樹方法之一,又稱自助聚集(bootstrap aggregating),是一種從訓練集中隨機抽取部分樣本(不一定有放回抽樣)來生成決策樹的方法。
Bagging回歸算法流程為:
⑴ 以相同概率從訓練集中隨機有放回地抽出m個子訓練集;
⑵ 對每個子訓練集分別訓練,產生m個基模型;
⑶ 取各基模型的平均值作為最終結果。
隨機森林包含了多個由Bagging訓練思想得到的決策樹,在輸入待訓練樣本后,各個子決策樹結果的均值就是模型的最終結果。建立隨機森林的步驟為:
① 對樣本集T進行N次抽樣,形成新的樣本集;
② 隨機選取特征,形成特征子集;
③ 在新樣本集和特征子集上,找到最佳分割屬性,建立決策樹;
④ 重復①、②、③步驟m次,構建m棵決策樹;
⑤ 組合m棵決策樹的結果,建立隨機森林模型。
2.4 基于梯度提升決策樹的預測模型
梯度提升決策樹(Gradient Boosted Decision Tree,GBDT)是由Friedman等提出的一種經(jīng)典的機器學習方法,屬于boosting系列算法中的一個代表算法,是一種迭代的決策樹算法,所有樹的結論累加起來作為最終答案[7~8]。GBDT設計的目的是求解損失函數(shù)的優(yōu)化,具體思路為對損失函數(shù)求梯度,以負梯度的方向代入模型的當前值,以當前值作為殘差值的近似。它采用了加法模型,通過向著減小殘差的方向收斂得到將輸入數(shù)據(jù)分類或回歸的模型。
GBDT的經(jīng)多次迭代后收斂,每輪訓練多個分類器,每個分類器基于上一次迭代得到的殘差基礎上進行訓練。作為集成學習方法的一種,GBDT的基分類器屬于弱分類器,要結構簡單且滿足低方差、高偏差的條件,這與GBDT的損失函數(shù)是基于降低偏差有關。通常來說,GBDT通常以CART TREE 作為基分類器,且每棵CART TREE的深度相對較低以保證基分類器的復雜度不會過高。最終將每輪訓練得到的基分類器加權求和,得到總的分類器。GBDT訓練過程如圖4所示。
3 實驗及結果
3.1 隨機森林相關性指標分析
文章針對樣本進行隨機采樣、欠采樣、過采樣和SMOTE欠采樣與過采樣結合四種方式進行數(shù)據(jù)集采樣,然后使用隨機森林模型對樣本進行初步訓練。
針對不同采樣方式的實驗結果顯示:
⑴ 隨機森林決策樹數(shù)目(n_estimators)為50,最大深度(max_depth)為35,三樣本類比重為1.5、1.5、1,用于擬合和預測的并行運行的工作數(shù)量(n_job)為3,模型初步訓練結果最優(yōu)。
⑵ 由于正樣本比例過小,基于Smote_Tomek的過采樣與欠采樣結合的采樣方式綜合效果最佳。
根據(jù)隨機森林訓練模型對特征項打分結果,我們選取前20項為高血壓相關重要指標,如圖5所示。年齡權重非常大,體重指數(shù)、甘油三酯、谷草轉氨酶、谷酰轉氨酶、體重、谷丙轉氨酶、堿性磷酸酶、葡萄糖等8項指標權重較大。
3.2 基于梯度提升決策樹的模型預測
⑴ k折交叉驗證
為了避免訓練過擬合,文章采用k折交叉驗證[9]。嘗試利用不同的訓練集/測試集劃分來對模型做多組不同的訓練/測試,來應對單詞測試結果過于片面以及訓練數(shù)據(jù)不足的問題。鑒于高血壓異常樣本較少的情況,文章將兩個高血壓類型合并,與“正常類型比較”。
圖6為k值取值不同,算法正確率(Accuracy)、查全率(Recall)、查準率(Precision)指標曲線。K值取25,正確率為84.51%,查全率39.41%,查準率40.05%。采用隨機森林進行特征向量選取后,基于梯度提升決策樹進行預測,正確率相比隨機森林算法提升0.44%,查全率下降0.49%,查準率提升0.74%。
采用k=25折進行計算,對基于隨機森林和梯度決策樹的最終算法進行測試,繪制ROC曲線并計算AUC面積[10]。我們看到,ROC曲線均在對稱軸之上,有較好的預測效果,AUC面積為0.86,模型效果較好。
4 結束語
本文基于體檢報告數(shù)據(jù),針對高血壓風險進行分析與預測,提出首先利用隨機森林進行特征選取,再基于梯度提升決策樹進行預測的方法,最后利用K折交叉驗證進行優(yōu)化。
通過算法實驗,我們得到以下結果:①K值取25時候的交叉驗證,算法正確率為84.51%,查全率為39.41%,查準率為40.05%,為最優(yōu)結果。此時,ROC曲線均在對稱軸之上,有較好的預測效果,AUC面積為0.86,模型效果較好。②樣本數(shù)據(jù)如果2分類正負樣本比例為1:5.24為不均衡數(shù)據(jù),雖然采用過采樣欠采樣結合進行取樣后查準率和查全率有所提升,但是整體效果依然有限。
參考文獻(References):
[1] 習近平:決勝全面建成小康社會 奪取新時代中國特色社會主義偉大勝利——在中國共產黨第十九次全國代表大會上的報告[EB/OL].http://politics.gmw.cn/2017-10/27/ conent_26628091.htm.2017
[2] 國家衛(wèi)生計生委疾病預防控制局.中國居民營養(yǎng)與慢性病狀況報告(2020)[M].北京:人民衛(wèi)生出版社,2022
[3] 張世宇,張曉東,邵彥銘,等. 國內外高血壓管理模式研究進展[J].現(xiàn)代醫(yī)藥衛(wèi)生,2021,37(23):4036-4040
[4] 郝爽,李國良,馮建華,等.結構化數(shù)據(jù)清洗技術綜述[J].清華大學學報(自然科學版),2018,58(12):1037-1050
[5] 陳玉明,蔡國強,盧俊文,等.一種鄰域粒K均值聚類方法[J].決策與控制,2022-02-07
[6] 曹桃云.基于隨機森林的變量重要性研究[J].統(tǒng)計與決策,2022,38(4):60-63
[7] 郭靖.基于特征工程和高效梯度提升樹算法的精準化混合推薦方法研究[D].碩士,武漢科技大學,2021
[8] 周杰英,賀鵬飛,邱榮發(fā),等.融合隨機森林和梯度提升樹的入侵檢測研究[J].軟件學報,2021,32(10):3254-3265
[9] 褚榮燕,王鈺,楊杏麗等.基于正則化KL距離的交叉驗證折數(shù)K的選擇[J].計算機技術與發(fā)展,2021,31(3):52-57
[10] 李子言.大數(shù)據(jù)背景下ROC曲線介紹與應用[J].科教導刊,2021(14):81-84