在envi做随机森林_【模型篇】随机森林模型(Random Forest)
RF原理介紹
RF如何工作
建立多個決策樹并將他們融合起來得到一個更加準確和穩定的模型,是bagging 思想和隨機選擇特征的結合。隨機森林構造了多個決策樹,當需要對某個樣本進行預測時,統計森林中的每棵樹對該樣本的預測結果,然后通過投票法從這些預測結果中選出最后的結果。
隨機體現在兩個方面,一個是隨機取特征,另一個是隨機取樣本,讓森林中的每棵樹既有相似性又有差異性。
森林中每棵樹按照如下方式生長:
m的值越大,上述1中的相關性越高,2中的分類能力也越強,所以m在RF中是一個非常重要的參數。
隨機森林的預測錯誤率取決于以下兩點:
And of course Random Forest is a predictive modeling tool and not a descriptive tool. That means, if you are looking for a description of the relationships in your data, other approaches would be preferred.
RF的特點
優點(來自原論文的總結):
9-11有點假大空,沒深入研究了。上述優點都能在以下的知識點中找出原因。
缺點
關于OOB和OOB Error
oob(out of bag)
對于一個具有m個樣本的訓練集,我們有放回的抽取m個樣本進行訓練,那么每個樣本不被抽到的概率為
,當m越來越大時,p趨于1/3,也就是森林形成后的過程中有三分之一的數據是沒有被用到的。那么這三分之一的數據可以當做測試集來計算模型的誤差率,我們將這些沒用有用到的數據經過森林預測得到類別,在于其真實值進行比較,求出錯誤率即可。這樣就避免了使用交叉驗證或者使用其他的測試集來計算泛化誤差率。這樣計算分類錯誤率的方法可以被證明是無偏的。OOB Error在訓練過程中可以不斷的進行計算袋外誤差,來判斷是否要繼續生成新的樹。(因為單棵樹是不剪枝的,無法將OOB Error應用于剪枝,這是我個人理解也不知道對不對)
對特征重要性的評判(Variable importance)
方法1 : permute variable
根據袋外誤差率,對于特征m,首先用訓練好的隨機森林在對oob 數據D進行預測并求出誤差率Error1。然后對數據D中每個樣本的特征m上加上隨機噪音,然后再將m特征上帶噪音的樣本送入訓練好的RF模型中訓練得到新的誤差率Error2,則Error2 - Error1越大說明該特征越重要。直觀上,加一點噪音就極大的影響了準確定那么該特征肯定重要。
方法2 : Gini gain
Gini系數法,RF中的每棵樹中生成時都會按照某個節點來分裂,分裂的依據可以是分裂前后Gini系數的減少度,我們將RF的每棵樹中按照特征m進行分裂的Gini系數減少量的總和作為判斷特征m重要性的標準
特征間的交互性(nteractions)
判斷兩個變量間的交互性可以按照如下的方法:
如果棵樹中,樣本按照某個特征m分裂后的樣本,在特征k上更容易分裂或者更不容易分裂,那么成m與k具有一定的交互性
樣本間的近似性 (proximity)
用
來表示樣本i和j之間的相似性, 表示在森林中樣本i和樣本j被分到同一個葉子下的次數,N為森林中樹的棵數,從而可以得到一個相似度矩陣(prox matrix),這個矩陣可以做 clustering 和 outlier location近似性應用: 找出異常點
假設當前樣本n的class 為j,則樣本n與其同class 的樣本之間的距離為:
其中prox(n,k) 就是相似矩陣中的值
將異常值的判定標準定為,:
nsample為同類樣本的個數,上式值越大說明越可能是異常值。
此外還可以用作聚類
缺失值的填補(Missing value replacement)
方法一(na.roughfix)簡單粗暴,對于訓練集,同一個class下的數據,如果是分類變量缺失,用眾數補上,如果是連續型變量缺失,用中位數補。
方法二(rfImpute)。他只能補訓練集中的缺失值。是先用na.roughfix補上缺失值,然后構建森林并計算proximity matrix,再回頭看缺失值,如果是分類變量,則用沒有缺失的觀測實例的proximity中的權重進行投票。如果是連續型變量,則用proximity矩陣進行加權平均的方法補缺失值。然后迭代4-5次。這個補缺失值的思想和Kmeans有些類似。
平衡預測誤差(Balancing prediction error)
對于不平衡數據的訓練和預測,不能只關注總體的誤差率,比如測試集中class A 99個,classB1個,現在模型對著一百數據的預測中,classA預測全對,classB全錯,總誤差率為1%,但是在classB上的誤差率是100%,這對于正負樣本失衡的數據是非常不友好的(比如風險欺詐問題)。
解決方法如下:
對比重少的類別加較大的權重,對比重大的類別加小的權重
QA:為什么要有放回抽樣
參考資料:
Random forests - classification description
總結
以上是生活随笔為你收集整理的在envi做随机森林_【模型篇】随机森林模型(Random Forest)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NETBIOS/NETBEUI 协议 S
- 下一篇: Android GridView Lru