利用随机森林对特征重要性进行评估(公式原理)
本文參考來源于:
楊凱, 侯艷, 李康. 隨機森林變量重要性評分及其研究進展[J]. 2015.
碼字不易,各位看官大大的贊是我更細的動力!
一、引言
隨機森林(randomforest,RFrandom\;\; forest,RFrandomforest,RF)由BreimanBreimanBreiman等人在2001年提出。
RFRFRF具有很高的預測準確率,對異常值和噪聲有很強的容忍度,能夠處理高維數據(變量個數遠大于觀測個數),有效地分析非線性、具有共線性和交互作用的數據, 并能夠在分析數據的同時給出變量重要性評分(variableimportancemeasures,VIMvariableimportance\;\;measures,VIMvariableimportancemeasures,VIM)。這些特點使得RFRFRF特別適用于高維組學數據的研究,即在對疾病進行分類的同時通過VIMVIMVIM值篩選出潛在的生物標志物,研究疾病發生、發展的生物學機制。然而, 由于在實際中由RF篩選變量使用的統計量不同,可能會使結果有較大的差異,為此本文在簡單介紹RFRFRF篩選變量的基礎上,擬針對目前隨機森林變量重要性評分的不同計算方法和新近提出的改進方法, 說明其在高維組學數據分析中的應用。
二、隨機森林的基本原理
了解決策樹的算法,那么隨機森林是相當容易理解的。隨機森林的算法可以用如下幾個步驟概括:
1.用有抽樣放回的方法(bootstrap)從樣本集中選取nnn個樣本作為一個訓練集;
2.用抽樣得到的樣本集生成一棵決策樹。在生成的每一個結點:
(1)隨機不重復地選擇ddd個特征
(2)利用這ddd個特征分別對樣本集進行劃分,找到最佳的劃分特征(可用基尼系數、增益率或者信息增益判別)
3.重復步驟1到步驟2共kkk次,kkk即為隨機森林中決策樹的個數。
4.用訓練得到的隨機森林對測試樣本進行預測,并用投票法決定預測的結果。
下圖比較直觀地展示了隨機森林算法:
圖片來源:
楊凱, 侯艷, 李康. 隨機森林變量重要性評分及其研究進展[J]. 2015.
RFRFRF中的每一棵分類樹為二叉樹,根節點包含全部訓練自助樣本,按照一定的原則,在每個節點從一組隨機選取的變量中選擇使分枝后節點“不純度” 最小的變量作為分枝變量,分裂為左節點和右節點, 它們分別包含訓練數據的一個子集, 分裂后的節點按照同樣規則繼續分裂, 直到滿足分枝停止規則而停止生長, 具體過程見圖 1。
“不純度” 的衡量標準包括GiniGiniGini不純度、 熵和錯誤率等。 變量篩選使用VIMVIMVIM統計量。
三、隨機森林常規的變量重要性評分
現假定有變量X1,X2,L,XMX_1\;,\;X_2\;,\;L\;,\;X_MX1?,X2?,L,XM?,需要計算出MMM個VIMVIMVIM得分統計量。
RFRFRF常規的VIMVIMVIM計算方法分為兩種,即根據GiniGiniGini指數和袋外數據(OOBOOBOOB) 錯誤率計算得到, 變量XjX_jXj?的得分統計量分別用VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?和VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?表示。
2.1 Gini指數
統計量VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?表示第jjj個變量在RFRFRF所有樹中節點分裂不純度的平均改變量。GiniGiniGini指數的計算公式為:
GIm=∑k=1Kp^mk(1?p^mk)(1)GI_{m}=\sum_{k=1}^K\hat{p}_{mk}(1-\hat{p}_{mk})\;\;\;\;(1) GIm?=k=1∑K?p^?mk?(1?p^?mk?)(1)
KKK為自助樣本集的類別數,p^mk\hat{p}_{mk}p^?mk?為節點mmm樣本屬于第kkk類的概率估計值,當樣本為二分類數據時(K=2K=2K=2) ,節點mmm的GiniGiniGini指數為:
GIm=2p^m(1?p^m)(2)GI_{m}=2\hat{p}_{m}(1-\hat{p}_{m})\;\;\;\;(2) GIm?=2p^?m?(1?p^?m?)(2)
p^m\hat{p}_{m}p^?m?為樣本在節點mmm屬于任意一類的概率估計值。
變量XjX_jXj?在節點mmm的重要性,即節點mmm分枝前后GiniGiniGini指數變化量為:
VIMjm(Gini)=GIm?GIl?GIr(3)VIM_{jm}^{(Gini)}=GI_{m}-GI_{l}-GI_{r}\;\;\;\;(3) VIMjm(Gini)?=GIm??GIl??GIr?(3)
GIlGI_{l}GIl?和GIrGI_{r}GIr?分別表示由節點mmm分裂的兩新節點的GiniGiniGini指數。
如果變量XjX_jXj?在第iii棵樹中出現MMM次,則變量XjX_jXj?在第iii棵樹的重要性為:
VIMij(Gini)=∑m=1MVIMjm(Gini)(4)VIM_{ij}^{(Gini)}=\sum_{m=1}^MVIM_{jm}^{(Gini)}\;\;\;\;(4) VIMij(Gini)?=m=1∑M?VIMjm(Gini)?(4)
變量XjX_jXj?在RFRFRF中的GiniGiniGini重要性定義為:
VIMj(Gini)=1n∑i=1nVIMij(Gini)(5)VIM_{j}^{(Gini)}=\frac{1}{n}\sum_{i=1}^nVIM_{ij}^{(Gini)}\;\;\;\;(5) VIMj(Gini)?=n1?i=1∑n?VIMij(Gini)?(5)
其中,nnn為RFRFRF中分類樹的數量。
2.2 OOB 錯誤率
VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?的定義為:在RFRFRF的每棵樹中,使用隨機抽取的訓練自助樣本建樹,并計算袋外數據(OOBOOBOOB)的預測錯誤率,然后隨機置換變量XjX_jXj?的觀測值后再次建樹并計算OOBOOBOOB的預測錯誤率,最后計算兩次OOBOOBOOB錯誤率的差值經過標準化處理后在所有樹中的平均值即為變量XjX_jXj?的置換重要性(VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?)。
變量XjX_jXj?在第iii棵樹的VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?為:
VIMj(OOB)=∑p=1noiI(Yp=Ypi)noi?∑p=1noiI(Yp=Yp,πji)noiVIM_{j}^{(OOB)}=\frac{\sum_{p=1}^{n_o^i}I(Y_p=Y_p^i)}{n_o^i}-\frac{\sum_{p=1}^{n_o^i}I(Y_p=Y_{p,\pi_j}^i)}{n_o^i} VIMj(OOB)?=noi?∑p=1noi??I(Yp?=Ypi?)??noi?∑p=1noi??I(Yp?=Yp,πj?i?)?
其中,noin_o^inoi?為第iii棵樹OOBOOBOOB數據的觀測例數,I(g)I(g)I(g)為指示函數,即兩值相等時取1,不等時取0;Yp∈{0,1}Y_p\in\{0,1\}Yp?∈{0,1}為第ppp個觀測的真實結果,Ypi∈{0,1}Y_p^i\in\{0,1\}Ypi?∈{0,1}為隨機置換前第iii棵樹對OOBOOBOOB數據第ppp個觀測的預測結果,Yp,πji∈{0,1}Y_{p,\pi_j}^i\in\{0,1\}Yp,πj?i?∈{0,1}為隨機置換后第iii棵樹對OOBOOBOOB數據第ppp個觀測的預測結果。
當變量jjj沒有在第iii棵樹中出現時,VIMij(OOB)=0VIM_{ij}^{(OOB)}=0VIMij(OOB)?=0
變量XjX_jXj?在RFRFRF中的置換重要性定義為:
VIMj(OOB)=∑i=1nVIMij(OOB)nVIM_{j}^{(OOB)}=\frac{\sum_{i=1}^nVIM_{ij}^{(OOB)}}{n} VIMj(OOB)?=n∑i=1n?VIMij(OOB)??
其中,nnn為RFRFRF中分類樹的數量。
2.3 常規變量重要性評分的優缺點
VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?在數據挖掘中估計變量重要性時有著廣泛的應用。 當變量為連續型變量且互不相關時,VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?的估計是無偏的;
當信噪比較低時,VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?的準確性也高于VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?,因此,VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?有更高的穩定性。
然而, 當同時存在連續變量和分類變量或者分類變量的水平數不同時,VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?估計則不夠準確。由于KKK個水平的分類變量在節點處可以有2K?1?12^{K-1}-12K?1?1種分割, 連續變量在節點處可以有b?1b-1b?1種分割(bbb為樣本量)。在備選分割較多時, 即使變量沒有分類作用, 也可能使GiniGiniGini指數降低, 從而更容易被選為分枝變量, 即VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?被高估。 實際上, 由于GiniGiniGini指數的計算問題, 水平數多的分類變量的GiniGiniGini指數降低會大于水平數少的分類變量。
當分類變量水平數相同時, 如果不同變量的水平間差別不同, 容易過高估計水平間差別大的變量的VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)? 。 在 SNP 數據分析中, Nicodemus 等人指出當所有 SNP 都不具有分類能力時,不相關 SNP 的VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?高于高度相關 SNP 的VIMj(Gini)VIM_{j}^{(Gini)}VIMj(Gini)?
事實上,VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?在實際中的應用范圍更加廣泛。 由于VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?是通過OOBOOBOOB數據計算的, 因此可以看作變量具有的分類能力, 沒有分類能力的變量在觀測值置換前后的OOBOOBOOB錯誤率不會發生改變, 即數學期望E(VIMj(OOB))=0E(VIM_{j}^{(OOB)})=0E(VIMj(OOB)?)=0,此外,VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?不僅能夠衡量變量單獨的分類能力, 還能夠衡量變量間交互作用的分類能力。
當同時存在連續變量和分類變量或者分類變量水平數不同時, 并不會影響VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?準確性。VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?是通過隨機置換變量觀測值前后OOBOOBOOB錯誤率的差值計算的, 即使沒有分類作用, 水平數多的變量也更容易被選為分枝變量, 但置換前后并不會影響OOBOOBOOB錯誤率,同時會使VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?的變異增大。
在分類數據不平衡時,VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?的準確性會受到一定影響。例如多數為正常人, 無論變量是否置換, 大部分的數據都會被預測為正常, 雖然OOBOOBOOB錯誤率受到的影響可能不大,但卻會嚴重低估所有變量的VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?。
當單棵樹的預測準確率較低時(如OOBOOBOOB錯誤率達到 50%) , 會低估變量的VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?
當置換前OOBOOBOOB錯誤率已經很大時, 置換變量觀測值使得 OOB 錯誤率變大的可能性降低, 從而低估變量的VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?
當沒有分類能力的變量與有分類能力的變量相關時, 可能低估相關有分類能力變量的VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?,且估計方差變異增加, 而此時沒有分類能力變量的VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?則被高估。
組學數據中存在大量的噪聲變量, 當變量數目巨大而具有分類能力的變量所占比例很小時,RFRFRF建模容易受到大量噪聲變量的干擾, 使變量的VIMVIMVIM計算受到影響, 變量篩選的結果不可信。
2.4 變量重要性( VIM ) 的顯著性檢驗
VIMVIMVIM給出了變量的重要性排序, 但無法在變量篩選時給出顯著性假設檢驗的閾值。 事實上, 當所有變量都沒有分類能力時,VIMVIMVIM也會給出變量重要性排序, 篩選出不具有分類能力的變量; 而當有分類能力的變量很多時, 僅通過變量的排序進行變量篩選, 可能漏掉一些具有分類能力的變量。
BreimanBreimanBreiman等人提出通過ZZZ值直接計算VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?的顯著性, 即:
Z=VIMj(OOB)/(σ^/n)Z=VIM_{j}^{(OOB)}/(\hat{\sigma}/\sqrt{n}) Z=VIMj(OOB)?/(σ^/n?)
其中,σ^\hat{\sigma}σ^為RFRFRF中各棵樹VIMj(OOB)VIM_{j}^{(OOB)}VIMj(OOB)?的標準差,nnn為隨機森林(RFRFRF)中樹的數量。 然而,StroblStroblStrobl等人通過模擬實驗表明:ZZZ值的檢驗效能與樣本量bbb及樹的數量nnn有很大的關系, 當樣本量bbb很大而樹的數量nnn小時, 檢驗效能接近于0。
總結
以上是生活随笔為你收集整理的利用随机森林对特征重要性进行评估(公式原理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echarts 折线图高于目标显示绿色低
- 下一篇: 初三错题归纳