岳 鵬,侯凌燕,楊大利,佟 強(qiáng)
北京信息科技大學(xué) 計(jì)算機(jī)開(kāi)放系統(tǒng)實(shí)驗(yàn)室,北京 100101
隨著醫(yī)療事業(yè)的進(jìn)步,越來(lái)越多的疾病數(shù)據(jù)能以電子病歷的方式存儲(chǔ)。近十年來(lái),疾病預(yù)測(cè)的研究也成為當(dāng)下的研究熱點(diǎn)[1]。學(xué)者們研究發(fā)現(xiàn),疾病的早期發(fā)現(xiàn)有助于該病被治愈,但影響患病的因素又有很多,因此對(duì)疾病的早期診斷帶來(lái)一定困難。
目前,疾病的診斷主要通過(guò)兩種方式,一種是傳統(tǒng)的醫(yī)療檢測(cè)手段[2],包括X 線攝影、臨床、超聲、磁共振(MBI)等方式檢查,缺點(diǎn)是圖像數(shù)據(jù)維度高,存在一定噪聲,人工診斷有一定難度。另外一種是基于機(jī)器學(xué)習(xí)的方法。其中包括基于特征選擇的方法以及基于預(yù)測(cè)模型的方法。
傳統(tǒng)的機(jī)器學(xué)習(xí)方法[3]通常是將圖像數(shù)據(jù)細(xì)胞核的半徑、紋理、周長(zhǎng)、平滑度、對(duì)稱性等一系列特征建立數(shù)據(jù)集,通過(guò)統(tǒng)計(jì)學(xué)習(xí)方法建模,改進(jìn)使其更加適用于所選的數(shù)據(jù)集。疾病數(shù)據(jù)特征的高維度會(huì)影響模型分類結(jié)果,為提高分類精度,研究者考慮從特征選擇層面解決分類問(wèn)題。文獻(xiàn)[4]提出基于互信息的方法選擇特征,但該方法只考慮了單一特征對(duì)標(biāo)簽的影響,而醫(yī)學(xué)疾病的病因是由多變量共同決定,導(dǎo)致該方法無(wú)法提取出有效特征。文獻(xiàn)[5]采用PCA的方法解決特征冗余的問(wèn)題,但對(duì)于數(shù)據(jù)分布屬于非正態(tài)分布的數(shù)據(jù),提取的主元并不是最優(yōu)的。文獻(xiàn)[6]使用RFE-SVM 來(lái)選擇更加適用于分類器的特征,這是一種Wrapper式的特征選擇算法,但所選特征會(huì)出現(xiàn)過(guò)適應(yīng)的問(wèn)題。醫(yī)學(xué)疾病數(shù)據(jù)特征的提取是目前亟待解決的重要問(wèn)題。
疾病數(shù)據(jù)樣本小,單模型在構(gòu)建中會(huì)出現(xiàn)過(guò)擬合的問(wèn)題。文獻(xiàn)[7]提出將邏輯回歸方法應(yīng)用于疾病診斷問(wèn)題上,但由于樣本維度高,該方法容易產(chǎn)生過(guò)擬合,同時(shí)精確度也有待提高。文獻(xiàn)[8]提出用GA-CG-SVM 的方法,解決乳腺癌預(yù)測(cè)模型過(guò)擬合的問(wèn)題,通過(guò)自適應(yīng)的方式來(lái)搜尋最佳參數(shù),但該模型的預(yù)測(cè)精度相對(duì)較差。集成學(xué)習(xí)不僅能夠解決模型構(gòu)建中的過(guò)擬合問(wèn)題,還能突破單一分類器自身局限性,進(jìn)一步提升分類精度。文獻(xiàn)[9]提出將Stacking集成方法用于電力系統(tǒng)平衡,實(shí)驗(yàn)表明Stacking 集成方法可以在分類器精度很高的時(shí)候進(jìn)一步提升精度。Stacking方法在眾多醫(yī)學(xué)領(lǐng)域都有所應(yīng)用,遷移性強(qiáng),在疾病診斷領(lǐng)域適用性較好[10]。
在預(yù)測(cè)模型領(lǐng)域較為盛行的是梯度提升決策樹(shù)(Gradient Boosting Decision Tree,GBDT)[11]。文獻(xiàn)[12]將GBDT 的第一種改進(jìn)算法XGBoost 用于處理疾病數(shù)據(jù)得到了較高的精度,但XGBoost在特征排序時(shí)選擇貪心策略,時(shí)間復(fù)雜度較高。文獻(xiàn)[13]將GBDT 的第二種改進(jìn)算法LightGBM 用于處理高維度的網(wǎng)絡(luò)貸款違約問(wèn)題。為了更好地處理類別特征避免過(guò)擬合問(wèn)題,文獻(xiàn)[14]提出第三種改進(jìn)算法CatBoost,不僅收斂速度更快,同時(shí)在準(zhǔn)確率、召回率等多項(xiàng)指標(biāo)上全面趕超另外兩種改進(jìn)的GBDT。LightGBM和CatBoost算法在多個(gè)數(shù)據(jù)集表現(xiàn)良好[15-16],但在疾病識(shí)別領(lǐng)域還沒(méi)有取得較好的結(jié)果。
單一數(shù)據(jù)層面或模型層面的改進(jìn)對(duì)疾病診斷幫助有限;本文針對(duì)醫(yī)學(xué)疾病中的數(shù)據(jù)特征冗余問(wèn)題,提出采用XGBoost特征選擇算法來(lái)提取最佳特征,并提出一種使用Stacking的集成分類方法,將包括魯棒性較好的CatBoost分類器在內(nèi)的多個(gè)基分類器的模型進(jìn)行集成,使用基層分類的概率值作為高層輸入,以實(shí)現(xiàn)對(duì)醫(yī)學(xué)疾病問(wèn)題的診斷。通過(guò)在威斯康星州診斷性乳腺癌公開(kāi)數(shù)據(jù)集(WDBC)進(jìn)行10折交叉驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,本文所提出的基于XGBoost特征選擇的CatBoost-Stacking方法在分類精度以及F1-Score 等多項(xiàng)指標(biāo)上均優(yōu)于主流的機(jī)器學(xué)習(xí)方法。
傳統(tǒng)的GBDT 目標(biāo)函數(shù)是將迭代后不同輪次的殘差樹(shù)疊加繼而預(yù)測(cè)目標(biāo)類別。XGBoost 對(duì)傳統(tǒng)GBDT目標(biāo)函數(shù)加以改進(jìn),在原函數(shù)的基礎(chǔ)上加上正則項(xiàng),減少了過(guò)擬合的可能同時(shí)加快了收斂速度[17]。公式(1)中是真實(shí)值yi和預(yù)測(cè)值的平方差損失函數(shù),Ω(φ)是正則化項(xiàng),公式(2)中γ表式樹(shù)分割的難度系數(shù)用于控制樹(shù)的生成,T表示葉子節(jié)點(diǎn)的個(gè)數(shù),λ表示L2正則系數(shù)。
XGBoost 不同于GBDT,它將損失函數(shù)按照泰勒公式二階導(dǎo)數(shù)展開(kāi),這樣新的目標(biāo)函數(shù)就會(huì)比原GBDT具有更快的收斂速度和更高的準(zhǔn)確性。目標(biāo)函數(shù)最后就變?yōu)槭剑?),其中為損失函數(shù)L(φ)的二階導(dǎo)數(shù),gi為損失函數(shù)L(φ)一階導(dǎo)數(shù)。
Stacking 分類方法是一種集成分類方法,它集成多個(gè)基分類器分類結(jié)果,最終交予高層分類器訓(xùn)練。訓(xùn)練過(guò)程測(cè)試過(guò)程如圖1所示,輸入的數(shù)據(jù)首先要?jiǎng)澐譃橛?xùn)練集TrainSet 和測(cè)試集TestSet,然后將經(jīng)過(guò)5 折交叉驗(yàn)證,輸出用于高層分類器訓(xùn)練的tr1,用于高層分類器測(cè)試的te1。
高層分類器的輸入是將所有基層分類器經(jīng)過(guò)交叉驗(yàn)證的結(jié)果進(jìn)行矩陣堆疊,如圖2 所示,model1 會(huì)產(chǎn)生用于高層訓(xùn)練的tr1,用于測(cè)試的te1,以此類推model6會(huì)產(chǎn)生tr6,te6,將tr1,tr2,…,tr6合并為train訓(xùn)練高層分類器,te1,te2,…,te6 合并為test 用于檢測(cè) Stacking 集成效果。
圖1 單模型交叉驗(yàn)證
圖2 高層模型輸入矩陣
CatBoost是一種監(jiān)督機(jī)器學(xué)習(xí)算法,選取決策樹(shù)作為基礎(chǔ)預(yù)測(cè)器,使用GBDT進(jìn)行分類。梯度增強(qiáng)本質(zhì)上是通過(guò)在特征空間中執(zhí)行梯度下降來(lái)構(gòu)建分類器集合分類。它通過(guò)局部最優(yōu)方式迭代地組合較弱的模型(基礎(chǔ)預(yù)測(cè)器)來(lái)解釋如何構(gòu)建強(qiáng)分類器。
傳統(tǒng)的梯度增強(qiáng)對(duì)樣本梯度計(jì)算依賴于樣本自身,噪聲點(diǎn)會(huì)使特征空間中梯度與該域真實(shí)梯度分布產(chǎn)生偏移,最終導(dǎo)致過(guò)擬合。為解決這一問(wèn)題,CatBoost 計(jì)算樣本梯度將不再取決于所選的樣本,而是剔除該樣本后的整體梯度。首先對(duì)整個(gè)數(shù)據(jù)集進(jìn)行若干次排序,接著剔除第i條數(shù)據(jù),針對(duì)前i-1 條數(shù)據(jù),分別計(jì)算損失函數(shù)以及梯度,并建立殘差樹(shù),最后將殘差樹(shù)累加到原模型上。
疾病數(shù)據(jù)數(shù)據(jù)量小,特征維度高,大量冗余特征會(huì)影響模型構(gòu)建效果,因此特征選擇是必要的,常用的方法包括PCA、RFE-SVM、互信息的方法。疾病數(shù)據(jù)中存在大部分方差小的特征決定樣本標(biāo)簽,同時(shí)特征之間的關(guān)聯(lián)性也沒(méi)有考慮到,因此上述常用方法并不能滿足疾病數(shù)據(jù)特征的提取。XGBoost 采用梯度提升的方法進(jìn)行數(shù)據(jù)分類,在小樣本數(shù)據(jù)中,分類效果較好,魯棒性強(qiáng),所選特征更適用于分類器。為提取疾病數(shù)據(jù)最佳特征,本文使用基于XGBoost的特征選擇的方法。
XGBoost 特征選擇取決于各個(gè)特征對(duì)模型貢獻(xiàn)的重要度,重要度則是特征用于樹(shù)分割次數(shù)的總和。XGBoost中樹(shù)的每次分割都采取貪婪地方式選擇特征,即選擇當(dāng)前信息增益最大的特征用于樹(shù)的分割。信息增益計(jì)算如公式(4):
XGBoost 建模過(guò)后即可統(tǒng)計(jì)疾病數(shù)據(jù)特征的重要度,同時(shí)將各個(gè)特征的重要度按從高到低進(jìn)行排序,建立循環(huán),首先對(duì)第一維度特征建模,并計(jì)算準(zhǔn)確率,隨后逐漸增加用于建模的維度,同時(shí)記錄準(zhǔn)確率,準(zhǔn)確率最高的維度即為XGBoost特征選擇的維度。
原始數(shù)據(jù)的量綱問(wèn)題會(huì)影響特征選擇的結(jié)果,因此首先要對(duì)原始數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,將數(shù)據(jù)映射到[0,1]的空間,再交給XGBoost 模型建模,進(jìn)行特征選擇。在XGBoost 模型參數(shù)設(shè)置時(shí),考慮用網(wǎng)格搜索法調(diào)參,優(yōu)點(diǎn)是方法簡(jiǎn)單,模型中涉及到模型參數(shù)設(shè)置,通過(guò)縮放法可確定最佳參數(shù)。
為了增強(qiáng)Stacking提升效果,將CatBoost、LightGBM引入Stacking 集成中,GBDT 的三種改進(jìn)算法在疾病數(shù)據(jù)上表現(xiàn)較好,為了增強(qiáng)分類效果而又不降低分類準(zhǔn)確率,將CatBoost、LightGBM、XGBoost 一并加入基分類器,相當(dāng)于間接地加大了GBDT 分類器所占的權(quán)重,而又不損失GBDT分類結(jié)果的多樣性,為了增強(qiáng)基分類器分類結(jié)果的多樣性,將基于超平面分類的SVM模型、基于距離預(yù)測(cè)的KNN 模型以及基于決策樹(shù)集成模型的RandomForest加入Stacking的基分類器中,這樣Stacking分類器既能保持GBDT分類的精度又能提高。
為了防止過(guò)擬合問(wèn)題的發(fā)生,本文選擇底層基分類器輸出分類概率,本文問(wèn)題是個(gè)二分類任務(wù),因此單個(gè)底層分類器輸出的結(jié)果會(huì)是一個(gè)n×2 的單模型分類概率矩陣,2列分別表示樣本被預(yù)測(cè)為良性和惡性的概率,n列表示n個(gè)數(shù)據(jù)樣本。底層全部分類器疊加則會(huì)產(chǎn)生一個(gè)n×12 的分類概率矩陣如表1所示,矩陣的12列則表示6個(gè)分類器分類的分類概率。
表1 分類概率矩陣
在高層分類器的選擇上,由于底層分類器的輸出結(jié)果與最終的分類標(biāo)簽呈線性相關(guān),因此選擇更加適用于線性關(guān)系并且易于解釋的邏輯回歸模型。如圖3 所示為基于XGBoost的CatBoost-Stacking流程圖。
圖3 基于XGBoost的XLC-Stacking流程圖
實(shí)驗(yàn)數(shù)據(jù)集選自UCI公開(kāi)數(shù)據(jù)集威斯康星州診斷性乳腺癌(Wisconsin Diagnostic Breast Cancer,WDBC),它具有醫(yī)學(xué)疾病數(shù)據(jù)小樣本高維度的共性,數(shù)據(jù)主要描述了用于乳腺腫瘤診斷的核特征,數(shù)據(jù)總共32維,其中一維描述病人的id,另一維度為標(biāo)簽,描述了病人所患腫瘤為良性還是惡性,剩余30 維度分別描述了患者的細(xì)胞核10 個(gè)特征的(最大值,均值,最小值);其中包括細(xì)胞核的半徑、紋理、周長(zhǎng)、區(qū)域面積、平滑度、緊湊型、凹度、凹點(diǎn)、對(duì)稱性、分形維數(shù),本數(shù)據(jù)集中一共有實(shí)例569 例,其中包含 212 例惡性,357 例良性,不平衡比例為1∶1.6。
單一的準(zhǔn)確率指標(biāo),召回率指標(biāo)并不能準(zhǔn)確反映出病患的重要性,因此要綜合正負(fù)類識(shí)別的準(zhǔn)確率以及召回率判定,本文乳腺癌識(shí)別是一個(gè)二分類任務(wù),因此選擇F1-Score作為評(píng)價(jià)標(biāo)準(zhǔn)綜合預(yù)測(cè)的準(zhǔn)確率以及召回率。
本文研究的是乳腺癌腫瘤患者良性惡性的識(shí)別,因此TP真陽(yáng)性即為乳腺癌良性樣本被預(yù)測(cè)為良性的實(shí)例數(shù)量;FP假陽(yáng)性即為乳腺癌良性樣本被預(yù)測(cè)為惡性的實(shí)例數(shù)量;TN真陰性即為乳腺癌惡性患者被預(yù)測(cè)為惡性的實(shí)例數(shù)量;FN假陰性即為乳腺癌惡性樣本被預(yù)測(cè)為良性的實(shí)例數(shù)量。
Accuracy即為所有預(yù)測(cè)中預(yù)測(cè)正確的樣本所占比例。
Precision即所有被預(yù)測(cè)為乳腺癌惡性的實(shí)例中真實(shí)為惡性的實(shí)例比例。
Recall即所有乳腺癌惡性患者的實(shí)例中預(yù)測(cè)為惡性的實(shí)例比例。
F1-Score即考慮準(zhǔn)確率以及召回率乳腺癌識(shí)別的綜合影響,常用作不平衡二分類數(shù)據(jù)分類評(píng)價(jià)指標(biāo)。
實(shí)驗(yàn)中各模型參數(shù)選自網(wǎng)格法調(diào)參,同時(shí)為更好地反映模型性能,本文通過(guò)交叉驗(yàn)證的方式選擇模型。本文數(shù)據(jù)量小,共計(jì)569 例樣本數(shù)據(jù),為使模型得到更充分的訓(xùn)練,本文選擇10 折交叉驗(yàn)證的方式選擇更可靠的模型。首先將數(shù)據(jù)劃分成10份,9份用作訓(xùn)練,1份用作測(cè)試,循環(huán)10 次,每次選擇不同的測(cè)試,最后將實(shí)驗(yàn)的結(jié)果10次取均值。
在選擇XGBoost特征選擇時(shí),本文通過(guò)網(wǎng)格搜索法確定模型參數(shù),決定模型性能的參數(shù)主要包括learning_rate學(xué)習(xí)率以及n_estimators基分類器個(gè)數(shù)和max_depth樹(shù)最大深度三個(gè)參數(shù),根據(jù)經(jīng)驗(yàn)設(shè)置三個(gè)學(xué)習(xí)參數(shù)的最大范圍,并在每個(gè)范圍中篩選出不同的中間值。學(xué)習(xí)率選擇learning_rate=[0.01,0.05,0.1,0.3,0.5,0.8],基分類器個(gè)數(shù)n_estimators=[50,100,150,200],樹(shù)的最大深度max_depth=[3,5,8,10],每當(dāng)選擇出一組參數(shù)時(shí),確立參數(shù)為中間值,減小原始最大范疇,并細(xì)分中間值,不停循環(huán)直至確立的參數(shù)不再變化時(shí)輸出所選參數(shù)。通過(guò)實(shí)驗(yàn)比對(duì)最終選擇learning_rate=0.1,n_estimators=50,max_depth=4。
在XGBoost特征選擇時(shí),將原始數(shù)據(jù)經(jīng)過(guò)標(biāo)準(zhǔn)化處理之后用XGBoost 方法建模,然后得到原始數(shù)據(jù)30 維特征的重要度,重要度評(píng)價(jià)如圖4所示。將模型的重要度依次排序后,選擇遞歸式的方法增加特征維度比對(duì)模型預(yù)測(cè)的準(zhǔn)確率,實(shí)驗(yàn)表明選擇提取12 維特征時(shí)準(zhǔn)確率達(dá)到最高。
圖4 特征排序
為了對(duì)比XGBoost 特征選擇方法在乳腺癌識(shí)別的優(yōu)越性,分別使用了原始特征以及基于PCA、RFE-SVM的方法與XGBoost 作對(duì)比,原始乳腺癌30 維特征,在PCA 的實(shí)驗(yàn)中選擇99.99%的特征重要度提取效果最佳,提取出12維特征,RFE-SVM是包裹式的方法,提取出了25維度特征。
實(shí)驗(yàn)表明PCA 的方法并不適用于本文數(shù)據(jù),其沒(méi)有考慮特征之間的關(guān)聯(lián)性,因此會(huì)刪除部分有效特征,因此會(huì)出現(xiàn)準(zhǔn)確率下降的情況。而RFE-SVM的方法雖然沒(méi)有刪除有效特征,但特征維度依舊高達(dá)25維,剔除冗余特征效果不佳,同時(shí)識(shí)別精度提升較小,本文的XGBoost特征選擇算法不僅降維效果明顯,同時(shí)提取的特征更利于分類任務(wù),模型的各項(xiàng)指標(biāo)均有較大提升,詳見(jiàn)表2。
表2 特征選擇方法性能對(duì)比
在Stacking的基分類器選擇時(shí),如表3所示,本文首先選擇KNN、SVM、RandomForest、XGBoost 四個(gè)分類器,由于SVM魯棒性強(qiáng),分類性能遠(yuǎn)好于其余三種分類器,因此集成效果不如單一的SVM 分類器。但經(jīng)過(guò)XGBoost 特征選擇后建模,各基分類器性能均有所提高,Stacking方法效果明顯,因此在Stacking基分類器選擇的實(shí)驗(yàn)上,本文用XGBoost選擇后的數(shù)據(jù)實(shí)驗(yàn)。
表3 不同基分類器模型性能對(duì)比
基分類器中,GBDT的改進(jìn)算法XGBoost在乳腺數(shù)據(jù)上表現(xiàn)較好,因此考慮在基分類器中增加GBDT的改進(jìn)算法,間接增大GBDT 的權(quán)重,實(shí)驗(yàn)中當(dāng)基分類器加入第二種GBDT 的改進(jìn)算法LightGBM 后,集成效果不再降低,相對(duì)錯(cuò)誤率下降了12.82%,當(dāng)加入第三種GBDT 的改進(jìn)算法CatBoost 后,集成效果有明顯提升,與單GBDT 的Stacking 集成模型相比相對(duì)錯(cuò)誤率下降了19.06%,F(xiàn)1-Score也在原97.77%的基礎(chǔ)上提高了0.43個(gè)百分點(diǎn)。因此在Stacking基分類器的選擇上最終選取 KNN、SVM、RandomForest、XGBoost、LightGBM、CatBoost。
為了對(duì)比本文基于XGBoost 的XLC-Stacking 方法在乳腺癌識(shí)別上的有效性,如表4 所示,本文分別對(duì)比 KNN、SVM、LightGBM、RandomForest、CatBoost、XGBoost,以及本文未使用XGBoost 選擇特征的XLCStacking 的方法。本文方法集成了異質(zhì)基分類器的優(yōu)點(diǎn),與傳統(tǒng)的RandomForest 方法做對(duì)比,相對(duì)錯(cuò)誤率下降51.69%,F(xiàn)1-Score提高了1.85個(gè)百分點(diǎn)。與流行的GBDT改進(jìn)算法XGBoost方法做對(duì)比,相對(duì)錯(cuò)誤率下降35.04%,F(xiàn)1-Score提高了0.54 個(gè)百分點(diǎn)。與基分類器表現(xiàn)最好的SVM 做對(duì)比,相對(duì)錯(cuò)誤率降低了15.56%,F(xiàn)1-Score提高了0.28 個(gè)百分點(diǎn)。模型ROC 曲線對(duì)比如圖5,本文方法AUC 面積最高。實(shí)驗(yàn)對(duì)比表明,本文提出的基于XGBoost 的XLC-Stacking 方法更適合疾病預(yù)測(cè)。
表4 不同預(yù)測(cè)模型分類精度對(duì)比
本文提出一種基于XGBoost 特征選擇的XLCStacking 的疾病預(yù)測(cè)方法,針對(duì)疾病數(shù)據(jù)高維度特征冗余現(xiàn)象,通過(guò)XGBoost 的特征選擇方法選擇最優(yōu)特征。針對(duì)識(shí)別精度不高的問(wèn)題,在Stacking 集成過(guò)程中,分別引入了XGBoost、LightGBM、CatBoost 間接增加了基分類器中GBDT 的權(quán)重,保持基分類器的多樣性并提升預(yù)測(cè)模型精度。本文方法相比當(dāng)前主流算法更加適用于疾病的識(shí)別,不僅對(duì)患病者的識(shí)別率高,同時(shí)能綜合患病者準(zhǔn)確率和召回率,降低非患者被誤診的可能性,減輕了醫(yī)療資源的浪費(fèi)。略有不足的是本文方法尚未對(duì)病患風(fēng)險(xiǎn)進(jìn)行分級(jí),未來(lái)將在風(fēng)險(xiǎn)劃分方向繼續(xù)研究。
圖5 模型ROC曲線對(duì)比