苗豐順,李 巖,高 岑,王美吉,李冬梅
1(中國科學(xué)院大學(xué),北京 100049)
2(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽 110168)
近些年來,隨著我國經(jīng)濟(jì)的迅速發(fā)展和國民生活方式以及飲食結(jié)構(gòu)的改變,我國糖尿病患者人數(shù)正在以驚人的速度增長.糖尿病呈現(xiàn)發(fā)病率高、知曉率、治療率和達(dá)標(biāo)率低的現(xiàn)象[1],嚴(yán)重的威脅了患者的身體健康,同時(shí)給家人和社會(huì)帶來了沉重的經(jīng)濟(jì)負(fù)擔(dān)[2].目前大部分醫(yī)療機(jī)構(gòu)對(duì)糖尿病的診斷還是依靠醫(yī)生的個(gè)人經(jīng)驗(yàn)和體檢數(shù)據(jù)為準(zhǔn),這種診斷方式對(duì)醫(yī)生的要求很高,具有很強(qiáng)的主觀性,容易出現(xiàn)誤診和漏診的情況,錯(cuò)失了預(yù)防和治療的最佳時(shí)機(jī),將嚴(yán)重影響到病人的身心健康.如果將糖尿病和機(jī)器學(xué)習(xí)結(jié)合,采用機(jī)器學(xué)習(xí)算法來輔助醫(yī)生診斷,將會(huì)很大程度上提高診斷和科學(xué)性,有效的克服醫(yī)生憑經(jīng)驗(yàn)診斷的主觀性的問題.因此,使用機(jī)器學(xué)習(xí)的方法對(duì)糖尿病患者進(jìn)行預(yù)測,具有很大的現(xiàn)實(shí)意義.
關(guān)于疾病預(yù)測,國內(nèi)外教育專家已經(jīng)做過很多嘗試,研究出了很多算法,如:logistic 回歸、BP 神經(jīng)網(wǎng)絡(luò)模型、COX 比例風(fēng)險(xiǎn)模型、決策樹模型[3-5].這些方法在疾病預(yù)測方面有較好的效果,但是也有各種各樣的缺點(diǎn),比如要求數(shù)據(jù)量大、要求一定時(shí)間段的的連續(xù)數(shù)據(jù)、泛化能力太弱、過度擬合、陷入局部最小值、對(duì)隨機(jī)性和波動(dòng)性數(shù)據(jù)不敏感、對(duì)不平衡數(shù)據(jù)預(yù)測 效果不理想等問題等等.現(xiàn)有的研究大多采用單個(gè)全局優(yōu)化模型,單分類器模型性能有限,存在泛化能力弱和容錯(cuò)性較差等問題.
本文使用集成學(xué)習(xí)模型進(jìn)行預(yù)測,它是使用一系列的學(xué)習(xí)器進(jìn)行學(xué)習(xí),并使用某種規(guī)則把各個(gè)學(xué)習(xí)器的學(xué)習(xí)結(jié)果進(jìn)行整合,從而獲得比單個(gè)學(xué)習(xí)器更好的學(xué)習(xí)效果的一種機(jī)器學(xué)習(xí)方法[6].集成學(xué)習(xí)模型現(xiàn)在主要分為Bagging和Boosting.基于Bagging 的模型的方差較小,但是偏差較大,故對(duì)基分類器的準(zhǔn)確性要求較高.Boosting 可以降低模型偏差,它通過迭代地訓(xùn)練一系列的分類器,每個(gè)分類器采用的樣本分布都和上一輪的學(xué)習(xí)結(jié)果有關(guān),對(duì)基分類器的準(zhǔn)確性要求較低.CatBoost 在2017年被Yandex 首次提出,是boosting的一種實(shí)現(xiàn)方式,它采用對(duì)稱樹的方式,并且用特殊的方式來處理categorical features,從而有效的避免了過擬合的問題,提高了泛化能力,提高了模型的魯棒性,特別適合樣本量小、數(shù)據(jù)不平衡的情況.目前該算法在糖尿病預(yù)測方面還沒有應(yīng)用[7-9].
通過以上分析,本文決定采用一種基于特征選擇和集成學(xué)習(xí)算法的模型來進(jìn)行糖尿病的預(yù)測.通過 IV值分析進(jìn)行特征選擇,有效的去除冗余特征,確定最后的最優(yōu)特征子集來訓(xùn)練模型;使用CatBoost 有效的避免過擬合的問題,提高模型的泛化能力和魯棒性,最終達(dá)到良好的預(yù)測效果.
CatBoost 是Boosting 策略的一種實(shí)現(xiàn)方式,它和lightGBM 與Xgboost 類似,都屬于GBDT 類的算法.CatBoost 在GBDT 的基礎(chǔ)上主要做了兩點(diǎn)改進(jìn):處理標(biāo)稱屬性和解決預(yù)測偏移的問題,從而減少過擬合的發(fā)生.
GBDT 算法是通過一組分類器的串行迭代,最終得到一個(gè)強(qiáng)學(xué)習(xí)器,以此來進(jìn)行更高精度的分類[10].它使用了前向分布算法,弱學(xué)習(xí)器使用分類回歸樹(CART).
假設(shè)前一輪迭代得到的強(qiáng)學(xué)習(xí)器是Ft-1(x),損失函數(shù)是L(y,Ft-1(x)),則本輪迭代的目的是找到一個(gè)CART 回歸樹模型的弱學(xué)習(xí)器ht,讓本輪的損失函數(shù)最小.式(1)表示的是本輪迭代的目標(biāo)函數(shù)ht.
GBDT 使用損失函數(shù)的負(fù)梯度來擬合每一輪的損失的近似值,式(2)中g(shù)t(x,y)表示的是上述梯度.
通常用式(3)近似擬合ht.
最終得到本輪的強(qiáng)學(xué)習(xí)器,如式(4)所示:
標(biāo)稱屬性的一般處理方法是one hot encoding (獨(dú)熱編碼),但是會(huì)出現(xiàn)過擬合的問題,CatBoost 在處理標(biāo)稱屬性時(shí)使用了更有效的策略,可以減少過擬合的發(fā)生.為訓(xùn)練集生成一個(gè)隨機(jī)序列,假設(shè)原來的順序是σ=(σ1,···,σn).從 σ1到 σn一次遍歷隨機(jī)序列,用遍歷到的前p 個(gè)記錄計(jì)算標(biāo)稱特征的數(shù)值.σp,k用如下數(shù)值替換:
這里添加了一個(gè)先驗(yàn)值P和參數(shù)a>0.這是一種常見做法,它有助于減少從低頻類別中獲得的噪音.
預(yù)測偏移經(jīng)常是困擾建模的問題,在GDBT 的每一步迭代中,損失函數(shù)使用相同的數(shù)據(jù)集求得當(dāng)前模型的梯度,然后訓(xùn)練得到基學(xué)習(xí)器,但這會(huì)導(dǎo)致梯度估計(jì)偏差,進(jìn)而導(dǎo)致模型產(chǎn)生過擬合的問題.CatBoost 通過采用排序提升 (ordered boosting) 的方式替換傳統(tǒng)算法中梯度估計(jì)方法,進(jìn)而減輕梯度估計(jì)的偏差,提高模型的泛化能力,Ordered boosting 的算法流程如圖1所示.
由圖1可知,為了得到無偏梯度估計(jì),CatBoost 對(duì)每一個(gè)樣本xi都 會(huì)訓(xùn)練一個(gè)單獨(dú)的模型Mi,模型Mi由使用不包含樣本xi的 訓(xùn)練集訓(xùn)練得到.我們使用Mi來得到關(guān)于樣本的梯度估計(jì),并使用該梯度來訓(xùn)練基學(xué)習(xí)器并得到最終的模型.
圖1 Ordered boosting 流程
對(duì)于整個(gè)糖尿病預(yù)測的研究包括以下幾部分:數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、特征選擇、模型預(yù)測、結(jié)果分析.如圖2所示.
圖2 糖尿病預(yù)測模型
本研究的數(shù)據(jù)來源于實(shí) 驗(yàn)室項(xiàng)目:骕派智慧社區(qū).數(shù)據(jù)集是沈陽某醫(yī)院的2018年的一次脫敏體檢數(shù)據(jù),包含2377 條數(shù)據(jù),數(shù)據(jù)維度高達(dá)63.
由于原始數(shù)據(jù)規(guī)模太過龐大,數(shù)據(jù)不完整、重復(fù)、雜亂等問題顯著,數(shù)據(jù)預(yù)處理對(duì)于后期的建模預(yù)測影響顯著.原始數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)表中,并且存在很多缺失項(xiàng)以及數(shù)據(jù)冗余,需要對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理.本文在數(shù)據(jù)預(yù)處理方面做了以下工作:丟棄缺失項(xiàng)過多的樣本、丟棄缺失值過多的特征、采用均值進(jìn)行缺失值填充、對(duì)標(biāo)稱屬性、二元屬性進(jìn)行數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)集成以及去除冗余.
特征選擇對(duì)后期的建模預(yù)測起著關(guān)鍵性的作用,尤其是在樣本量小、特征多的情況下,剔除噪音、正確的選擇特征會(huì)對(duì)模型整體的準(zhǔn)確性和穩(wěn)定性有著質(zhì)的提升.
IV 值分析是常見的處理特征值的方法,它衡量了某個(gè)特征對(duì)目標(biāo)的影響程度.其基本思想是根據(jù)該特征所命中黑白樣本的比率與總黑白樣本的比率,來對(duì)比和計(jì)算其關(guān)聯(lián)程度,計(jì)算公式如下:
其中,n代表樣本在該特征上分成的組數(shù),Pni表示該樣本第i組數(shù)據(jù)中白樣本占所有白樣本的比例,Pyi表示該樣本第i組數(shù)據(jù)中黑樣本占左右黑樣本的比例.
本文采用IV 值分析的方法進(jìn)行特征選擇,最終選出23 個(gè)對(duì)糖尿病有影響的特征變量作為模型的輸入變量,其中包括性別、年齡、體重指數(shù)、收縮壓、舒張壓、膽固醇、甘油三酯、尿素/肌酐等.
經(jīng)過前面的分析,CatBoost 算法適合用于對(duì)糖尿病的研究,本文就選擇CatBoost 模型來建模.經(jīng)過數(shù)據(jù)預(yù)處理和特征選擇,把23 個(gè)特征變量作為輸入變量輸入模型進(jìn)行預(yù)測,將70%作為訓(xùn)練樣本,30%作為測試樣本.
分類閾值對(duì)模型的準(zhǔn)確性影響重大,本文利用樣本的區(qū)間準(zhǔn)確率來確定最后的閾值:將樣本按照預(yù)測值進(jìn)行排序,然后沒5%分為一個(gè)區(qū)間,找到最后一個(gè)區(qū)間準(zhǔn)確率大于50%的區(qū)間,將該區(qū)間的端點(diǎn)值作為最后的閾值.
基于準(zhǔn)確率、召回率、F1 值等評(píng)價(jià)指標(biāo),通過與隨機(jī)森林、XGBoost 等模型進(jìn)行對(duì)比分析,能夠得出CatBoost 在處理該問題上具有更好的效果.
選取評(píng)價(jià)指標(biāo)是整個(gè)實(shí)驗(yàn)環(huán)節(jié)的重要一環(huán),直接影響到后期的結(jié)果分析.分類器性能的優(yōu)劣通常使用準(zhǔn)確率(accuracy)、精確率(precision)和召回率(recall)來評(píng)價(jià).準(zhǔn)確率(accuracy)指的是被分類正確的樣本數(shù)占總樣本數(shù)的比值,精確率(precision)表示的是預(yù)測為正的樣本中,實(shí)際為正的所占的比例,召回率(recall)表示的是實(shí)際為正的樣本中,被預(yù)測為正的所占的比例.分類結(jié)果混淆矩陣如表1所示.
表1 分類結(jié)果混淆矩陣
本文選取精確率(precision)、召回率(recall)和F1 值作為評(píng)價(jià)指標(biāo).
其中,P為陽性樣本總數(shù),TP為預(yù)測正確的陽性樣本數(shù),TN是預(yù)測錯(cuò)誤的陽性樣本數(shù),F1 值是精準(zhǔn)率和召回率的加權(quán)調(diào)和平均值,為1 時(shí)最優(yōu),為0 時(shí)最差.對(duì)于復(fù)雜的模型和大量的數(shù)據(jù),計(jì)算速度也是衡量模型優(yōu)劣的一個(gè)指標(biāo),本實(shí)驗(yàn)在服務(wù)器上運(yùn)行,使用Python包的time.time()函數(shù)記錄模型運(yùn)行的時(shí)間.
經(jīng)過以上步驟的數(shù)據(jù)處理、特征選擇和模型預(yù)測,得出了使用CatBoost 模型的預(yù)測結(jié)果,并且和使用隨機(jī)森林、lightGBM 模型得出的結(jié)果進(jìn)行了對(duì)比,結(jié)果如表2所示.
表2 運(yùn)行結(jié)果分析
從表2可以看出,在模型精確率方面,隨機(jī)森林略高于XGBoost 模型和CatBoost 模型,在召回率和F1值方面,CatBoost 都高于XGBoost和隨機(jī)森林,在運(yùn)行時(shí)間方面,CatBoost和XGBoost 明顯高于隨機(jī)森林.
本文以糖尿病發(fā)病人數(shù)多、發(fā)現(xiàn)率少以及醫(yī)療數(shù)據(jù)維數(shù)高、缺失量大為背景,依托于實(shí)驗(yàn)室骕派智慧社區(qū)項(xiàng)目,實(shí)現(xiàn)了對(duì)糖尿病的預(yù)測模型.
本文使用一種新型的Boosting 算法CatBoost 進(jìn)行糖尿病預(yù)測,并且取得了良好的預(yù)測結(jié)果.在文中,首先對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理,然后采用IV 值分析的方法進(jìn)行特征選擇,并采用適用于該問題的集成學(xué)習(xí)模型CatBoost 進(jìn)行預(yù)測,最終得出較好的預(yù)測結(jié)果.通過實(shí)驗(yàn)分析,CatBoost 在各項(xiàng)評(píng)價(jià)指標(biāo)上比其他模型都具有明顯的優(yōu)勢,說明 CatBoost 在糖尿病預(yù)測方面具有很好的應(yīng)用價(jià)值.通過本文的研究,可以對(duì)糖尿病預(yù)測提供有效的指導(dǎo),對(duì)保護(hù)人們的健康具有非常積極的意義.