隨機森林
隨機森林(random forest)演算法是基於單棵決策樹的改進,將多個弱分類器組合成乙個強分類器,其用到了整合學習bagging的思想。
基本思想
隨機森林顧名思義,是用隨機的方式建立乙個森林,森林裡面有很多棵決策樹組成。其隨機體現在針對每棵樹,按比例隨機抽選樣本,隨機抽選特徵,然後進行訓練,這也是bagging思想的體現。
做乙個形象的比喻:你想要購買幾隻**,但是你自己不知道怎麼去挑選,於是你就去找了專家諮詢了。做兩個假設:
1.假定每個專家對不同領域的**有獨特的見解,有人擅長**,有人擅長貨幣,有人擅長qdii,還有人會玩位元幣,因此每個專家所對應的**池也有所不同。
2.再假設每個專家判斷**的資訊**也不同,影響一支**走勢的好壞有很多,例如國家政策,經濟形勢,或一些不對稱內部資訊**。
每個專家都根據自己所獲取到的資訊進行分析,生成一套自己的分析理論,這就是生成了單棵決策樹。你帶著幾支**去找他們,把你所知道的各種關於這些**的資訊告訴他們,這就是測試集和特徵。他們根據自己的分析理論來幫你判斷這幾支**是買還是不買,這就是二分類**問題。最後你再根據他們每個任何給你的推薦意見多數投票,確定這幾支**哪些該買哪些不買,到此你的諮詢就結束啦。
在這個例子中,每個專家擅長的**型別對應的**池就是單棵決策樹隨機抽選的樣本,用於判斷**好壞的資訊就是樹隨機抽選的特徵。多個不同領域的專家最後聯合推薦,最後總能挑選到一支比較好的**,前提是樣本空間和特徵空間都足夠充分,專家數量也一定多。
基礎知識
隨機森林是基於單棵決策樹所做改進的,決策樹有c4.5,id3和cart三種型別。接下來要補充的兩點是假設大家都已經弄明白單棵決策樹是怎麼回事的情況下進行的,如果不懂得話可以上網翻翻其他部落格,有很多有很細緻的講解。
(1)為什麼要隨機抽選訓練集?
不隨機抽樣,每棵樹的訓練集一樣沒有意義,但是隨機抽取不排除有訓練集相同或重疊量極高的情況,但是這種情況在大樣本情況下是極低概率事件。就像我們要找的是懂不同領域**的專家做諮詢,沒必要找幾個涉及領域完全一樣的專家,這樣工作就重複了。
(2)為什麼要又放回抽樣?
這個問題可以這樣理解,隨機森林的最後一步是多數投票。如果每棵樹的樣本都不一樣,那麼每棵樹都是有偏的,還會導致以下問題:
1.多數投票時,每棵樹的投票結果沒有重合,無法做到「求同」;
2.乙個專家對乙個樣本的理解可能不夠充分,因為他只選擇了部分特徵,多個專家都根據不同特徵分析一下可能效果會比較好;
(3)關於隨機特徵數的選擇?
在挑選特徵的時候,原樣本空間特徵維度為m,指定乙個常數m << m,每棵樹選擇特徵樹為m,這樣可以讓每棵樹盡最大程度的生長,不用剪枝。
(4)為什麼隨機森林能生成泛化誤差無偏估計?
為了選擇最優的m,這裡需要利用到的是袋外錯誤率oob(out-of-bag error)。在構建每棵決策樹的時候,採用的是隨機放回抽取,這在上面也提到了,所以對每棵樹來說,都有一些樣本例項沒有參與樹的生成,這些樣本稱為袋外樣本,即oob。所以我們需要做一下oob估計,仍然以**舉例:
1.對每支**,讓不擅長這支**的專家也來分析一下它到底該不該買;
2.不擅長的專家多數投票作為該**分類結果;
3.用錯誤估計**數目佔**總數比例作為oob誤分率;
oob誤分率即是隨機森林泛化誤差的乙個無偏估計,它的結果近似於需要大量k折交叉驗證。它可以再內部進行評估,也就是在生成過程中建立乙個對誤差的無偏估計。
當知道oob計算方法之後,我們可以選擇不同的m計算oob error,找出oob error最小時對應m的值。
(5)最後解釋一下多數投票?
假設你有乙隻**,十個人中6個告訴你這支**有毒,3個人慫恿你買,1個人棄權,你當然是選擇不買啦。
關鍵與特點
隨機森林在近年來的資料探勘競賽類似kaggle,阿里天池都運用得很廣泛,是一種很實用的方法,它有以下特點:
1.在當前所有演算法中,具有極好的準確率;
2.能夠有效執行在大資料集上,易於並行化;
3.能夠處理高維特徵輸入樣本,不需要降維;
4.能夠評估特徵在分類問題上的重要性;
5.在生成過程中,能獲取到內部生成誤差的無偏估計;
6.對於大量missing data出現的情況下也可以得到較好的結果;
例項講解
下面講解乙個例項,具體操作一下。
假設現在你帶著三支**a,b,c 去找老王,老張,老李,老郭,這幾個你認識的人諮詢一下是否a,b,c**值得你花老本去投資,畢竟程式設計師賺錢都沒日沒夜辛辛苦苦的血汗錢。
下面介紹一下幾個人物:
老王:量化分析師,在某xx私募,有豐富的資訊**和擅長借助**工具分析各種以往走勢來得出結論。
老張:業餘愛好者1,股齡10年,賺了一些小錢,很有經驗,有自己的一些經驗,對時政敏感。
老李:大學生,主修金融,兼修計算機,大一開始用獎學金投資,在uqer實盤操作大賽曾獲獎,擅長看**圖等亂七八糟的圖。
老郭:打醬油的...
注:王,張,李,郭四個人都有一些比較豐富的實盤經歷(訓練集),已有自己的分析體系(決策樹)。
在你諮詢過他們之後,他們根據自己的判斷體系得出了以下結論,分析過程省略一千字,然後你把他們的結論列成了一張**,0代表不買,1代表買,x代表不擅長該類:
a b c
老王 1 0 x
老張 1 1 0
老李 1 0 x
老郭 0 x 0
最終你得出了結論:a要買,bc不買。
以上故事純屬虛構,如有雷同必定巧合。到此,隨機森林就愉快的結束了。
參考文獻
1.random forest -- leo breiman and adele culter
2.3.
隨機森林隨機 三
2018年7月22日 陣雨 感冒發燒喉嚨疼,只因為一杯正常冰的奶蓋!以後得少喝加冰的東西了.前面說的是整合學習的兩種形式,這跟隨機森林有啥關係呢?隨機森林是bagging的乙個擴充套件變體.簡單的來說,當bagging演算法中的base learner為決策樹並在訓練決策樹的過程中加入隨機屬性選擇,...
隨機森林演算法
random forest是加州大學伯克利分校的breiman leo和adele cutler於2001年發表的 中提到的新的機器學習演算法,可以用來做分類,聚類,回歸,和生存分析,這裡只簡單介紹該演算法在分類上的應用。random forest 隨機森林 演算法是通過訓練多個決策樹,生成模型,然...
理解隨機森林
理解隨機森林 隨機森林利用隨機的方式將許多決策樹組合成乙個森林,每個決策樹在分類的時候投票決定測試樣本的最終類別。下面我們再詳細說一下隨機森林是如何構建的。隨機森林主要包括4個部分 隨機選擇樣本 隨機選擇特徵 構建決策樹 隨機森林投票分類。給定乙個訓練樣本集,數量為n,我們使用有放回取樣到n個樣本,...