在整合學習原理小結中,我們給bagging畫了下面一張原理圖。
從上圖可以看出,bagging的弱學習器之間的確沒有boosting那樣的聯絡。它的特點在「隨機取樣」。那麼什麼是隨機取樣?
隨機取樣(bootsrap)就是從我們的訓練集裡面採集固定個數的樣本,但是每採集乙個樣本後,都將樣本放回。也就是說,之前採集到的樣本在放回後有可能繼續被採集到。對於我們的bagging演算法,一般會隨機採集和訓練集樣本數m一樣個數的樣本。這樣得到的取樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有m個樣本訓練集做t次的隨機取樣,,則由於隨機性,t個取樣集各不相同。
注意到這和gbdt的子取樣是不同的。gbdt的子取樣是無放回取樣,而bagging的子取樣是放回取樣。
對於乙個樣本,它在某一次含m個樣本的訓練集的隨機取樣中,每次被採集到的概率是1m1m
。不被採集到的概率為1−1
m1−1m
。如果m次取樣都沒有被採集中的概率是(1−
1m)m
(1−1m)m
。當m→
∞m→∞
時,(1−1
m)m→
1e≃0.368
(1−1m)m→1e≃0.368
。也就是說,在bagging的每輪隨機取樣中,訓練集中大約有36.8%的資料沒有被取樣集採集中。
對於這部分大約36.8%的沒有被取樣到的資料,我們常常稱之為袋外資料(out of bag, 簡稱oob)。這些資料沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。
bagging對於弱學習器沒有限制,這和adaboost一樣。但是最常用的一般也是決策樹和神經網路。
bagging的集合策略也比較簡單,對於分類問題,通常使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於回歸問題,通常使用簡單平均法,對t個弱學習器得到的回歸結果進行算術平均得到最終的模型輸出。
由於bagging演算法每次都進行取樣來訓練模型,因此泛化能力很強,對於降低模型的方差很有作用。當然對於訓練集的擬合程度就會差一些,也就是模型的偏倚會大一些。
上一節我們對bagging演算法的原理做了總結,這裡就對bagging演算法的流程做乙個總結。相對於boosting系列的adaboost和gbdt,bagging演算法要簡單的多。
輸入為樣本集d=d=
,弱學習器演算法, 弱分類器迭代次數t。
輸出為最終的強分類器f(x
)f(x)
1)對於t=1,2...,t:
a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集dmdm
b)用取樣集dmdm
訓練第m個弱學習器gm(
x)gm(x)
2) 如果是分類演算法**,則t個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是回歸演算法,t個弱學習器得到的回歸結果進行算術平均得到的值為最終的模型輸出。
理解了bagging演算法,隨機森林(random forest,以下簡稱rf)就好理解了。它是bagging演算法的進化版,也就是說,它的思想仍然是bagging,但是進行了獨有的改進。我們現在就來看看rf演算法改進了什麼。
首先,rf使用了cart決策樹作為弱學習器,這讓我們想到了梯度提示樹gbdt。第二,在使用決策樹的基礎上,rf對決策樹的建立做了改進,對於普通的決策樹,我們會在節點上所有的n個樣本特徵中選擇乙個最優的特徵來做決策樹的左右子樹劃分,但是rf通過隨機選擇節點上的一部分樣本特徵,這個數字小於n,假設為nsu
bnsub
,然後在這些隨機選擇的nsu
bnsub
個樣本特徵中,選擇乙個最優的特徵來做決策樹的左右子樹劃分。這樣進一步增強了模型的泛化能力。
如果nsub
=nnsub=n
,則此時rf的cart決策樹和普通的cart決策樹沒有區別。nsu
bnsub
越小,則模型約健壯,當然此時對於訓練集的擬合程度會變差。也就是說nsu
bnsub
越小,模型的方差會減小,但是偏倚會增大。在實際案例中,一般會通過交叉驗證調參獲取乙個合適的nsu
bnsub
的值。除了上面兩點,rf和普通的bagging演算法沒有什麼不同, 下面簡單總結下rf的演算法。
輸入為樣本集d=d=
,弱分類器迭代次數t。
輸出為最終的強分類器f(x
)f(x)
1)對於t=1,2...,t:
a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集dmdm
b)用取樣集dmdm
訓練第m個決策樹模型gm(
x)gm(x)
,在訓練決策樹模型的節點的時候, 在節點上所有的樣本特徵中選擇一部分樣本特徵, 在這些隨機選擇的部分樣本特徵中選擇乙個最優的特徵來做決策樹的左右子樹劃分
2) 如果是分類演算法**,則t個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是回歸演算法,t個弱學習器得到的回歸結果進行算術平均得到的值為最終的模型輸出。
由於rf在實際應用中的良好特性,基於rf,有很多變種演算法,應用也很廣泛,不光可以用於分類回歸,還可以用於特徵轉換,異常點檢測等。下面對於這些rf家族的演算法中有代表性的做乙個總結。
extra trees是rf的乙個變種, 原理幾乎和rf一模一樣,僅有區別有:
1) 對於每個決策樹的訓練集,rf採用的是隨機取樣bootstrap來選擇取樣集作為每個決策樹的訓練集,而extra trees一般不採用隨機取樣,即每個決策樹採用原始訓練集。
2) 在選定了劃分特徵後,rf的決策樹會基於資訊增益,基尼係數,均方差之類的原則,選擇乙個最優的特徵值劃分點,這和傳統的決策樹相同。但是extra trees比較的激進,他會隨機的選擇乙個特徵值來劃分決策樹。
從第二點可以看出,由於隨機選擇了特徵值的劃分點位,而不是最優點位,這樣會導致生成的決策樹的規模一般會大於rf所生成的決策樹。也就是說,模型的方差相對於rf進一步減少,但是偏倚相對於rf進一步增大。在某些時候,extra trees的泛化能力比rf更好。
totally random trees embedding(以下簡稱 trte)是一種非監督學習的資料轉化方法。它將低維的資料集對映到高維,從而讓對映到高維的資料更好的運用於分類回歸模型。我們知道,在支援向量機中運用了核方法來將低維的資料集對映到高維,此處trte提供了另外一種方法。
trte在資料轉化的過程也使用了類似於rf的方法,建立t個決策樹來擬合資料。當決策樹建立完畢以後,資料集裡的每個資料在t個決策樹中葉子節點的位置也定下來了。比如我們有3顆決策樹,每個決策樹有5個葉子節點,某個資料特徵x
x劃分到第乙個決策樹的第2個葉子節點,第二個決策樹的第3個葉子節點,第三個決策樹的第5個葉子節點。則x對映後的特徵編碼為(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15維的高維特徵。這裡特徵維度之間加上空格是為了強調三顆決策樹各自的子編碼。
對映到高維特徵後,可以繼續使用監督學習的各種分類回歸演算法了。
isolation forest(以下簡稱iforest)是一種異常點檢測的方法。它也使用了類似於rf的方法來檢測異常點。
對於在t個決策樹的樣本集,iforest也會對訓練集進行隨機取樣,但是取樣個數不需要和rf一樣,對於rf,需要取樣到取樣集樣本個數等於訓練集個數。但是iforest不需要取樣這麼多,一般來說,取樣個數要遠遠小於訓練集個數?為什麼呢?因為我們的目的是異常點檢測,只需要部分的樣本我們一般就可以將異常點區別出來了。
對於每乙個決策樹的建立, iforest採用隨機選擇乙個劃分特徵,對劃分特徵隨機選擇乙個劃分閾值。這點也和rf不同。
另外,iforest一般會選擇乙個比較小的最大決策樹深度max_depth,原因同樣本採集,用少量的異常點檢測一般不需要這麼大規模的決策樹。
對於異常點的判斷,則是將測試樣本點x
x擬合到t顆決策樹。計算在每顆決策樹上該樣本的葉子節點的深度ht(
x)ht(x)
。,從而可以計算出平均高度h(x)。此時我們用下面的公式計算樣本點x
x的異常概率:s(
x,m)
=2−h
(x)c
(m)s(x,m)=2−h(x)c(m)
其中,m為樣本個數。c(m
)c(m)
的表示式為:c(
m)=2
ln(m−
1)+ξ
−2m−
1m,ξ
為尤拉常
數c(m)=2ln(m−1)+ξ−2m−1m,ξ為尤拉常數
s(x,m)的取值範圍是[0,1],取值越接近於1,則是異常點的概率也越大。
rf的演算法原理也終於講完了,作為乙個可以高度並行化的演算法,rf在大資料時候大有可為。 這裡也對常規的隨機森林演算法的優缺點做乙個總結。
rf的主要優點有:
1) 訓練可以高度並行化,對於大資料時代的大樣本訓練速度有優勢。個人覺得這是的最主要的優點。
2) 由於可以隨機選擇決策樹節點劃分特徵,這樣在樣本特徵維度很高的時候,仍然能高效的訓練模型。
3) 在訓練後,可以給出各個特徵對於輸出的重要性
4) 由於採用了隨機取樣,訓練出的模型的方差小,泛化能力強。
5) 相對於boosting系列的adaboost和gbdt, rf實現比較簡單。
6) 對部分特徵缺失不敏感。
rf的主要缺點有:
1)在某些噪音比較大的樣本集上,rf模型容易陷入過擬合。
2) 取值劃分比較多的特徵容易對rf的決策產生更大的影響,從而影響擬合的模型的效果。
Bagging演算法與隨機森林
給定包含m個樣本的資料集d,我們對它進行取樣產生資料集d 每次隨機從d中挑選乙個樣本,將其拷貝放入d 然後再將該樣本放回初始資料集d中,使得該樣本在下次取樣時仍有可能被取樣到 這個過程重複執行m次後,我們就得到了包含m個樣本的資料集d 這就是自助取樣的結果。顯然有一部分樣本會在d 中出現多次,而另一...
Bagging與隨機森林
給定包含 m 個樣本的資料集 d,我們對它進行取樣產生資料集 d 每次隨機從 d 中挑選乙個樣本,將其拷貝放入 d 然後再將該樣本放回初始資料集 d 中,使得該樣本在下次取樣時仍有可能被採到 這個過程重複執行 m次後,我們就得到了包含 m 個樣本的資料集 d 這就是自助取樣的結果。顯然,d 中有一部...
Bagging與隨機森林
前今天整理了決策樹的原理實現,順手再把隨機森林的原理整理整理。bagging是並行式整合學習方法最著名的代表,其原理是給定包含m個樣本的資料集,我們先隨機取出乙個樣本放入取樣集中,再把該樣本放回初始資料集 有放回 這樣經過m此隨機取樣操作,我們得到含有m個樣本的取樣集。照這樣,我們可取樣出t個含m個...