賈萍萍,李 揚**
(1.中國人民大學應用統計科學研究中心 北京 100872;2.中國人民大學統計學院 北京 100872)
基于真實世界采集的數據中,常常存在分類數據的不平衡問題。如手術后患者是否死亡,死亡的人數很少,而存活的人數很多。在其他領域也有類似情況。當數據集中某一類或者某些類的樣本量遠遠大于其他類時,即為類間不平衡。在這類數據中如果按照傳統的模型評價方法,以最小化整體錯誤率作為模型選擇的標準,那么少數類對整體精度的影響遠小于多數類,導致分類器傾向于將測試樣本判別為多數類,分類器在少數類上表現出較高的錯誤率[1]。這樣變量選擇與預測的結果均失去意義,因為在這些實際數據中數量少的一類樣本更具分類意義,少數類的誤判代價大于多數類的誤判代價。
不平衡問題的處理方法主要分為兩大類[2]:一類是從訓練集入手,改變訓練集樣本分布,降低不平衡程度,例如使用各種采樣方法和訓練集劃分方法,包括欠抽樣和過抽樣。欠抽樣(Under-sampling)通過減少多數類樣本使得數據達到平衡,缺點是會丟失多數類的一些重要信息,不能充分利用已有信息。過抽樣(Over-sampling)通過增加少數類樣本來使得數據達到相對平衡。隨機過抽樣是最簡單的方法,它是在少數類樣本中隨機復制樣本以達到增加少數類樣本數的目的,但是容易造成過擬合。SMOTE抽樣[7]通過合成新樣本來增加少數類樣本,在一定程度上避免了過擬合[3]。另一類是從學習算法入手,適當修改算法或者對模型評價的準則進行改進使之適應不平衡分類問題,如代價敏感[10]。代價敏感不會改變數據的分布,但是代價本身不容易衡量。
在研究疾病發生的影響因素,不良反應的影響因素等尋找“關鍵因素”的醫學問題時,要考慮不平衡問題,同時也要考慮變量選擇的方法。這類問題觀測得到的有一些是分段數據,如年齡分段、用藥劑量等,如果將分段的變量拆分成啞變量直接做回歸,可能會出現同一個分段變量得到的啞變量有部分選擇出來,部分未選擇出來[11]。為了避免這種結果的產生,可以使用Group Lasso作為懲罰項,使得由一個變量拆分的一組啞變量同時被選入或者不被選入模型[11]。因此在分析這類數據時,可以將基礎模型定為Group Lasso Logistic模型。

圖1 研究思路示意圖
Group Lasso的參數是通過最小化(1)式求解的,其中λ(λ≥0)是懲罰參數。參數λ的選擇很關鍵,λ越大代表懲罰力越大,會有更多的系數壓縮為0。

本文以Group Lasso Logistic模型為基礎,從不平衡數據數據處理的角度出發,介紹了基于SMOTE抽樣的Group Lasso和閾值調整的Group Lasso。全文共有4個部分,第1部分是研究背景,第2部分是研究方法與思路,第3部分通過實例應用分析比較不同方法的結果與適用性,第4部分是總結討論與研究展望。
為了解決數據中的不平衡問題,可以從數據層面出發,通過抽樣改變數據的分布,使之達到平衡。但是由于抽樣具有一定的隨機性,過抽樣可能會導致過擬合,欠抽樣會損失一定的信息[5]。從少數類和多數類誤判代價不同的角度出發,有研究者提出了改變預測閾值的方法來對不平衡數據建立分類模型[6,8]。這本質上是代價敏感的體現,即認為少數類的錯誤代價高于多數類。本研究從數據和代價兩種視角,用三種方法進行變量選擇,并比較方法的優劣。研究思路如圖1。
基于SMOTE抽樣的Group Lasso方法,使用交叉驗證選擇(1)式中損失最小的λ,得到最優模型,從而篩選出關鍵因素。閾值調整的Group Lasso是基于2013[6]年和2014[8]年李揚等提出的調整預測閾值方法,分步調參或同時調參,前者先選擇出“最優”的懲罰參數λ,再調節預測閾值,后者是同時選擇懲罰參數和預測閾值,以篩選出關鍵因素。
三種方法使用了TPR、FPR、AUC、G-Means等模型評價指標。如果用TP表示實際為正類的樣本中預測為正類的個數,FN表示實際為正類的樣本中預測為負類的個數,FP表示實際為負類的樣本預測為正類的個數,TN表示實際為負類的樣本預測為負類的個數,那么:

即真正為正類的樣本被預測為正類的比例,又稱為真陽性率。

即實際為負類的被預測為負類的比例,1-特異度即為假陽性率。
對于很多分類器,最終輸出的是一個概率,如果閾值選擇不同,那么相應的TP、FP等取值就會改變,由此引出了ROC曲線。ROC曲線以靈敏度(TPR)為橫軸,以1-特異度(FPR)為縱軸,刻畫了某個分類器在不同分類閾值下的TPR和FPR變化情況,是對模型預測效果的綜合評價。
G-Means是對靈敏度和特異度的綜合評價指標,公式如下:

2002年,Chawla等提出SMOTE(Synthetic Minority Oversampling Technique)抽樣方法。SMOTE算法的思想主要是:假設X是一個少數類樣本,尋找X的k個同類最近鄰樣本,假設采樣的倍率是n,則在這k個樣本中選擇n個,記為Ci(i=1,2,…,n),在少數類樣本X和Ci之間隨機線性插值,生成新的樣本Zi。這種方法一定程度上避免了過擬合[7]。插值的公式:

本研究采用基于SMOTE抽樣的group lasso方法,方法如下:
第一步:在原始數據上進行SMOTE抽樣,得到新樣本集合Sj(j=1,2,…,100)
第二步:在Sj中采用5折交叉驗證選擇最優的λ,得到最優的模型Mj和選擇出的變量數gj。
第三步:由于SMOTE抽樣改變了一部分數據,在平衡的數據上選出最優的模型后,更關注的是在原始數據上的效果如何。因此利用最優模型對原始數據進行預測,得到ROC曲線下面積AUC;
第四步:調整閾值,計算不同閾值對應的TPR、FPR以及G-Means。
1.2.1 分步調參
Logistic模型得到的結果是預測的概率,而預測閾值(Cutoff)是最終進行預測的參考依據。當預測概率大于閾值時,預測結果是少數類(正類),當預測概率小于閾值時,預測結果是多數類(負類)。不同的閾值對應著不同的靈敏度和特異度。2014年,李揚等提出了分步驟調節參數和預測閾值使得靈敏度和特異度均達到較高水平的方法。方法如下:
第一步:λ選擇過程
采用AUC作為模型選擇的標準,對于不同的λ,計算模型預測的AUC。選擇AUC最大時的λ作為最優的Group Lasso的調節參數。
第二步:Group Lasso過程
根據第一步選擇的最優λ,運用Group Lasso Logistic模型選擇變量。由同一個變量產生的啞變量作為一組。采用分塊坐標下降的方法進行參數估計。
第三步:預測過程
由模型得到的是預測的概率,選擇不同的閾值來劃分多數類和少數類,會得到不同的靈敏度和特異度。閾值越大靈敏度越小而特異度越高。在靈敏度和特異度上進行一個綜合考慮,選擇一個合適的閾值作為預測閾值。
1.2.2 同步調參
分步調參的過程將λ的選擇和閾值的選擇分開進行,兩個過程不一定能夠同時達到最優。為解決這一問題,李揚等在分步調參方法的基礎上進行了改進,提出同時選擇λ和預測閾值的方法[8]。方法如下:
第一步:在不同的λs下運用Group Lasso Logisitc模型;
第二步:將數據分成K折,X1,X2,…,Xk;
第三步:對選擇的每一折Xi(i=1,2,…,K)作為驗證集,剩下的K-1折作為訓練集,在不同的λs下對訓練集建立模型;預測閾值選取從0-1,步長為0.01,在每個閾值下分別計算Xi的TP和FP。計算不同λs和預測閾值對應的G-Means;
第四步:計算平均G-Means:

第五步:根據計算的兩個指標選出最優的λ和預測閾值,將對應的結果作為最優的模型。
全球有70%的人處于亞健康狀態(Suboptimal Health State,SHS)[6]。傳統中醫通過“辨證論治”的理論將人群分成不同的類別進行治療,在治療亞健康狀態方面有非常突出的優勢。“肝郁脾虛”是中醫臨床中一個常見癥候[4],為尋找“肝郁脾虛”的人群特征,有6家醫院收集了307例亞健康患者問卷數據,其中診斷為肝郁脾虛的患者有57個,非肝郁脾虛的患者有250個,二者的比例為1∶4.39,數據存在不平衡。兩組人群在年齡、性別兩個維度上沒有差異。評估是否為肝郁脾虛的癥狀有22個(表1),每個都有5個水平,最后的啞變量有88個。使用基于SMOTE抽樣的Group Lasso和閾值調整的Group Lasso方法來尋找診斷“肝郁脾虛”的關鍵因素,并建立診斷模型。

表1 預測是否肝郁脾虛的癥狀*

圖2 100次抽樣結果的AUC

圖3 100次抽樣變量選擇情況
由于SMOTE抽樣具有一定的隨機性,所以重復進行了100次抽樣,分別得到100個模型結果。圖2表示的是SMOTE抽樣方法得到的100個模型在總體中的AUC結果,圖3是100次變量選擇中22個變量被選出的頻數。從圖2可以看出,100個AUC大部分在0.85左右,但是個別抽樣結果得到的AUC低至0.5,說明了單次抽樣結果不穩定,使用抽樣方法解決不平衡問題時,不能僅僅根據一次抽樣得到的結果下結論。
三種方法最終選擇的變量結果如表3,所選擇的變量中大部分都是肝郁脾虛診斷使用較多的癥狀[4]。
表3表示的是閾值調整的兩種方法得到的預測效果。表中的數字代表靈敏度和1-特異度,例如當患有肝郁脾虛的人中有98.2%的被預測為患病時,沒有得肝郁脾虛的人中,有91%的被錯誤預測為患病。如果更加關注靈敏度,則需要把閾值調低。
基于SMOTE抽樣的Group Lasso最終得到的模型結果顯示,在閾值為0.17時得到最大的G-means,對應的靈敏度為0.77,特異度為0.76。而同時調參的閾值調整方法在閾值為0.15時得到最大的G-Means,對應的靈敏度為0.89,特異度為0.64。作為一個診斷模型,更加關注的是真正患病的人能否得到診治,也就是更加關注靈敏度,基于這一點同時調參的閾值調整方法更好。
基于SMOTE抽樣的方法和基于閾值調整的方法,分別從數據角度和模型評價的角度來解決由不平衡帶來的問題。基于抽樣的結果會受到抽樣比例的影響,也具有一定的隨機性,例如從圖2可以看出,有些抽樣結果表現比較差。當少數類樣本的數量本身就比較少時,如果生成過多的新樣本,會使得噪聲對模型的干擾增加,這時不建議使用抽樣方法。通過抽樣得到的最后結果,和閾值調整的思想結合起來進行判斷才能得到一個相對合適的分類模型。基于閾值調整的方法,在參數選擇上,顯然使用交叉驗證同時選擇更為合適。從結果上看,基于SMOTE得到的結果比閾值調整中的分步調參要好。考慮到模型為診斷預測模型,更加希望真正患病的病人得到正確診斷,即更加關注靈敏度,同時調參得到的結果較好。如果在基于SMOTE的方法中使用同時調參的思想,或許會得到更好的結果。

表2 選擇的變量及其系數
通過上述比較,我們可以認識到在建模時,選擇合適的評價指標非常重要,對于不平衡數據帶來的問題,有很多解決的方法,我們也應當選合適的方法去解決這個問題,否則會造成模型得到的結果實際上并不能準確反應實際結果的情況。通過抽樣來改變數據的分布是比較方便的解決辦法,但是需要進行閾值的判斷才能得到比較好的預測效果。在使用其他方法時,引入調整閾值的思想,比直接使用一個臨界值作為判斷閾值得到的結果要好。
實際數據中除了類間不平衡問題,還存在類內不平衡問題,即在某一個類別內,不同子集的數目相差很大。本研究僅僅考慮了類間不平衡問題,未來的工作重點可以放到類內不平衡問題上。在未來的應用及研究中,如果使用了Lasso的方法,最好將Lasso的參數選擇和模型的選擇放在一起考慮,同時調節參數才能得到真正最優的結果,否則只能得到某個參數條件下的局部最優結果。實際上,不僅僅是Lasso,涉及到兩個及以上的參數調節的問題,都需要從全局最優的角度考慮。

表3 基于閾值調整方法得到的TPR和FPR