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