郭志恒 劉青萍,2 劉 芳 王成武 阮旭凌
(1.湖南中醫(yī)藥大學(xué)信息科學(xué)與工程學(xué)院 長沙410208)(2.湖南中醫(yī)藥大學(xué)中醫(yī)學(xué)國內(nèi)一流建設(shè)學(xué)科 長沙 410208)(3.湖南中醫(yī)藥大學(xué)藥學(xué)院 長沙 410208)
腦卒中是由腦血管破裂出血或者血栓形成導(dǎo)致腦部出血性或缺血性損傷的一組疾?。?]。根據(jù)世界衛(wèi)生組織統(tǒng)計(jì)數(shù)據(jù)可知,腦卒中是全球第二大死亡疾病[2],具有高發(fā)病率、高死亡率、高致殘率的特點(diǎn)[3]。臨床上針對不同類型腦卒中的治療方法存在差異,且一直缺乏有效的疾病治療手段,目前預(yù)防是延緩腦卒中發(fā)病的最好措施。
近些年,國內(nèi)外學(xué)者非常關(guān)注心腦血管疾病預(yù)測模型研究。具有代表性的模型包括美國Fram?ingham風(fēng)險(xiǎn)評估模型、歐洲冠心病風(fēng)險(xiǎn)評估計(jì)劃模型、上海市健康教育所與“101健康管理”共同研發(fā)的“預(yù)防腦卒中”APP。隨著大數(shù)據(jù)、人工智能等技術(shù)在醫(yī)學(xué)領(lǐng)域的廣泛應(yīng)用,最新研究側(cè)重于患者電子病歷數(shù)據(jù)的跟蹤和處理,以及采用機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等方法構(gòu)建較高精度的腦卒中風(fēng)險(xiǎn)預(yù)測模型[4~5]。目前臨床上用于腦卒中預(yù)測的方法較多,例如吳菊華等[6]運(yùn)用神經(jīng)網(wǎng)絡(luò)方法構(gòu)建了腦卒中預(yù)測模型,采用神經(jīng)網(wǎng)絡(luò)中多層感知機(jī)構(gòu)建模型,以Relu函數(shù)作為激活函數(shù)并取得較好的實(shí)驗(yàn)效果,完善了腦卒中的風(fēng)險(xiǎn)因素識別。邵澤國等[7]通過優(yōu)化決策樹方法對腦卒中日常生活習(xí)慣風(fēng)險(xiǎn)因素進(jìn)行分析,在C4.5基礎(chǔ)上將原始數(shù)據(jù)分為“有”“無”兩類并嵌套生成樹,依據(jù)知識規(guī)則得出風(fēng)險(xiǎn)因素的高低。李鵬等[8]基于邏輯回歸算法對缺血性腦卒中發(fā)病率進(jìn)行研究,通過邏輯回歸算法對缺血性腦卒中的10個(gè)風(fēng)險(xiǎn)因素構(gòu)建模型,以小批量梯度下降法求得模型解。
本研究采用支持向量機(jī)、邏輯回歸、隨機(jī)森林三種算法分別與SMOTE算法結(jié)合,構(gòu)建腦卒中預(yù)測模型,通過三種算法的對比研究,找到更加適合構(gòu)建腦卒中預(yù)測模型的算法,為腦卒中的預(yù)測和預(yù)防提供依據(jù)。
SMOTE算法[9]是2002年Chawal等對數(shù)據(jù)分布不均衡提出的智能過采樣算法。該算法在隨機(jī)過采樣算法基礎(chǔ)上的通過對原有少數(shù)類樣本進(jìn)行分析并根據(jù)原有少數(shù)類樣本人工合成新樣本。對少數(shù)類中的每一個(gè)樣本,以歐氏距離計(jì)算到少數(shù)類樣本中所有樣本的距離并得到其K近鄰,再根據(jù)不平衡率確定采樣倍率,從K個(gè)近鄰中隨機(jī)選出若干樣本,原樣本與新樣本按照公式構(gòu)建新樣本。
SVM(Support Vector Machine,支持向量機(jī))的基本思想是找出能將數(shù)據(jù)集劃分的幾何間隔最大的分離超平面,換言之,找到對分類結(jié)果的泛化能力最好、魯棒性最優(yōu)的線性方程。對待分類樣本可構(gòu)建的分離超平面為
其中,ω為垂直平面的法向量,b為偏移量。
下面是最大間隔分離超平面的獲得方法,可以表示為下面的約束最優(yōu)化問題:
即希望最大化超平面(ω,b)關(guān)于數(shù)據(jù)集的幾何間隔γ,約束條件表示的是超平面(ω,b)關(guān)于每個(gè)樣本點(diǎn)的幾何間隔至少是γ。
邏輯回歸屬于廣義線性回歸模型,與線性回歸類似,主要思想是通過已有數(shù)據(jù)擬合出一條直線,用擬合出的這條直線進(jìn)行預(yù)測。其公式如下:
通過邏輯回歸算法將線性函數(shù)得到的結(jié)果映射到sigmoid函數(shù)y=1/(1+e^(-x))中,通過極大似然估計(jì)來推導(dǎo)損失函數(shù),再利用梯度下降法來求解參數(shù)來對數(shù)據(jù)進(jìn)行二分類。
隨機(jī)森林算法是Breiman[10]等提出,該算法實(shí)際上是一種特殊的bagging方法,用bootstrap方法生成訓(xùn)練集,在決策樹的基礎(chǔ)上以隨機(jī)的方式建立一個(gè)森林,森林里面有很多的根據(jù)訓(xùn)練集構(gòu)建的決策樹,各個(gè)決策樹之間沒有關(guān)聯(lián),有新樣本輸入,就放入之前得到的森林,由森林內(nèi)的決策樹分別進(jìn)行判斷,被選擇較多的一類就為樣本的分類。隨機(jī)森林為了保證強(qiáng)大的抗過擬合和噪聲能力,在構(gòu)建每一棵CART決策樹是采用了行抽樣和列抽樣的隨機(jī)化方法。
本文采用kaggle網(wǎng)站的healthcare-datas?et-stroke-data數(shù)據(jù)集。數(shù)據(jù)集樣本總數(shù)為5110,包括2994名男性、2115名女性和1名不知性別者。其中,4861例為非腦卒中患者,249例為腦卒中患者。
3.2.1 數(shù)據(jù)處理
1)數(shù)據(jù)量化及缺失值處理
數(shù)據(jù)集中每個(gè)樣本具有11個(gè)特征屬性和1個(gè)類別標(biāo)簽屬性。其中,類別標(biāo)簽標(biāo)明患者是否患腦卒中,11個(gè)特征屬性分別記錄每位患者的編號(id)、性別(gender)、年齡(age)、高血壓病史(hyper?tension)、心臟病史(heart_disease)、婚姻史(ev?er_married)、工作類型(work_type)、居住類型(Resi?dence_type)、平均血糖水平(avg_glucose_level)、體重指數(shù)(bmi)和吸煙狀況(smoking_status)。其中bmi屬性中有201個(gè)缺失值,采用平均值法進(jìn)行數(shù)據(jù)填充。為進(jìn)一步提高模型的泛化能力以及方便對數(shù)據(jù)處理,本研究對性別、婚姻史、工作類型、居住類型和吸煙狀況的數(shù)據(jù)分別進(jìn)行量化。即性別(gender)中Female為1,Male為0;婚姻史(ev?er_married)中Yes為1,No為0;工 作 類 型(work_type)中Never_worked為0,Private為1,Self-employ為2,Govt_job為3,children為4;居住類型(residence_type)中Urban為1,Rural為0;吸煙狀況(smoking_status)中never smoked為0,F(xiàn)ormerly smoked為1,smokes為2,Unknown為-1。
2)數(shù)據(jù)不平衡處理
本文通過可視化發(fā)現(xiàn)卒中與非卒中患者分布差別明顯,并對其進(jìn)行不平衡率計(jì)算得出數(shù)據(jù)集不平衡率為5%,具體如圖1所示。
圖1 數(shù)據(jù)分布圖imbalanced_ratio=stroke/non-stroke=0.0512
對于數(shù)據(jù)不平衡處理方法分別采用ADASYN算法和SMOTE算法,經(jīng)對比發(fā)現(xiàn)SMOTE算法對數(shù)據(jù)處理效果更好。且考慮到ADASYN算法是根據(jù)分布來自動決定每個(gè)少數(shù)類樣本所需要合成的樣本數(shù)量,相當(dāng)于給每個(gè)少數(shù)類樣本施加了一個(gè)權(quán)重,周圍的多數(shù)類樣本越多則權(quán)重越高。由于卒中患者較少,使用ADASYN算法會使其權(quán)重變得相當(dāng)大,導(dǎo)致生成過多的卒中樣本。而SMOTE算法是對于少數(shù)類樣本以歐氏距離為標(biāo)準(zhǔn)計(jì)算其到少數(shù)類樣本集的距離,得到其近鄰,避免了權(quán)重過高問題。
3.2.2 模型構(gòu)建
在Windows10平臺python3.8環(huán)境下構(gòu)建SVM、LR、RF分類預(yù)測模型。對數(shù)據(jù)集做預(yù)處理并計(jì)算不平衡性,對不平衡數(shù)據(jù)中的少數(shù)類用SMOTE算法經(jīng)行處理,然后與均衡數(shù)據(jù)構(gòu)成新的“人工”數(shù)據(jù)集,再通過算法模型對數(shù)據(jù)集進(jìn)行分類預(yù)測。具體流程如圖2所示。
圖2 模型構(gòu)建流程圖
3.2.3 性能指標(biāo)
在醫(yī)學(xué)診斷中,評價(jià)分類器的優(yōu)劣通常采用準(zhǔn)確率、召回率和精確度等指標(biāo)。準(zhǔn)確率(accuracy)表示對給定的是測試數(shù)據(jù)集,正確分類的樣本數(shù)與總數(shù)的比值[11];召回率(recall)表示預(yù)測為正例的樣本與實(shí)際為正例的樣本的比值。精確度(preci?sion)表示實(shí)際為正例與預(yù)測為正例的比值。F1Score表示精確度和召回率兩者之間的調(diào)和平均值?;煜仃嚤硎痉诸惼髟跍y試集上的預(yù)測是否為正確,如表1所示。
表1 混淆矩陣
其中,P為正類樣本的數(shù)目,N為負(fù)類樣本的數(shù)目。關(guān)于四個(gè)評價(jià)指標(biāo)的公式:
ROC曲線是真正例(True Positive Rate)為縱坐標(biāo),假正例(False Positive Rate)為橫坐標(biāo)所繪制的曲線,能反映不同的分類算法性能。ROC曲線越靠近縱軸,則模型預(yù)測效果越好。ROC曲線下面的面積為AUC,面積值越大,則算法性能越好。
實(shí)驗(yàn)以healthcare-dataset-stroke-data數(shù)據(jù)集的70%為訓(xùn)練集,30%為測試集分別構(gòu)建SVM、LR和RF算法預(yù)測模型。結(jié)果如下所示。
從表2與表3可以看出,數(shù)據(jù)集經(jīng)過SMOTE算法處理,支持向量機(jī)、隨機(jī)森林、邏輯回歸預(yù)測模型在各項(xiàng)指標(biāo)都有很大程度提高。支持向量機(jī)在Ac?curacy、Reacll、Precision、F1Score、ROC_AUC分別提高4%、34%、65%、63%、21%;邏輯回歸在Accura?cy、Reacll、Precision、F1Score、ROC_AUC分別提高5%、12%、64%、59%、13%;隨機(jī)森林提升不明顯。為了更好的對比各個(gè)算法的性能,對SMOTE算法處理后的數(shù)據(jù)模型進(jìn)行ROC曲線的繪制。從圖可以看出,RF算法的ROC曲線最靠近縱軸,即AUC值最大,值為0.98,其可以更好地?cái)M合數(shù)據(jù),反映數(shù)據(jù)的真實(shí)性。
表2 算法對腦卒中測試集預(yù)測指標(biāo)
圖3 不同分類算法的ROC曲線
經(jīng)實(shí)驗(yàn)結(jié)果對比發(fā)現(xiàn),隨機(jī)森林算法在準(zhǔn)確率、召回率、AUC值等都優(yōu)于其他機(jī)器學(xué)習(xí)算法,可以作為輔助診斷工具應(yīng)用到實(shí)際醫(yī)療診斷中,為腦卒中的早期預(yù)防提供科學(xué)依據(jù)。
通過實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),隨機(jī)森林算法能較好地平衡不均衡數(shù)據(jù)集,對數(shù)據(jù)集的適應(yīng)能力強(qiáng),減小實(shí)驗(yàn)誤差。隨機(jī)森林屬于集成分類算法,相對于單一分類算法性能更優(yōu),泛化能力更強(qiáng)。
如今,腦卒中已成為全球第二大死亡疾病,且發(fā)病有年輕化趨勢[12],目前預(yù)防是延緩腦卒中發(fā)病的最好措施。而急性缺血性卒中的快速識別與診治對預(yù)后的影響至關(guān)重要[13~14],因此提高腦卒中的診斷效率,提高醫(yī)生和患者的風(fēng)險(xiǎn)意識,對腦卒中的防治具有重要意義[15]。本研究通過SMOTE算法處理數(shù)據(jù)集的不平衡,選用機(jī)器學(xué)習(xí)算法中支持向量機(jī)、隨機(jī)森林、邏輯回歸算法構(gòu)建預(yù)測模型。實(shí)驗(yàn)結(jié)果顯示隨機(jī)森林和SMOTE算法構(gòu)建的腦卒中預(yù)測模型具有更好的預(yù)測效果,可以輔助醫(yī)生提高腦卒中的診斷效率,為我國的在腦卒中診斷方面提供技術(shù)手段。