有沒有值得推薦的隨機森林 Random Forest教材?
網上搜了下,隨機森林鮮有非常清晰的數學推導過程,只有演算法包,比較難理解數學原理。
請問有沒有系統性介紹隨機森林演算法原理的教材可供推薦呢?
謝邀。
關於隨機森林,如果只讀一篇論文的話,我推薦Microsoft Research的Decision Forests for Classification, Regression, Density Estimation, Manifold Learning, and Semi-Supervised Learning。(PDF下載鏈接:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/decisionForests_MSR_TR_2011_114.pdf)不過,它沒有提到gini、gain ratio和mae regression的內容,推薦找其他的論文和slide了解。
看完上面這篇綜述後,可以考慮看看Breiman本人關於隨機森林的論文:Random Forests。
周志華老師的Isolation Forest很經典(而且微軟研究院的那篇綜述里沒有提到),在scikit learn上也有實現,可以去搜論文看一下。
一般機器學習教材里的隨機森林往往講得不全。如果對具體應用感興趣的話,可以看這本書Decision Forests for Computer Vision and Medical Image Analysis(Decision Forests for Computer Vision and Medical Image | Antonio Criminisi | Springer)。除了微軟研究院的綜述論文外,它還包括了一些在計算機視覺、醫療領域的應用論文。
補充:隨機森林是決策樹的集成。想要進一步深入了解決策樹,不妨看看Lior Rokach的《Data Mining with Decision Trees: Theory and Application》,網上可以搜到pdf。
最近還看到一個非常有意思的思路:Kernel random forest
random forest 是 ensemble 和 decistion tree 的結合,而 decision tree 在某種程度上又是一種 ensemble。如果你懂了這些東西的原理,能活用而不是死記,那麼 random forest 是一種很自然的模型。
所以我推薦 pattern recognition and machine learning,順便它把 decision tree 和 ensemble 貌似放在最後某個章節一起很快地講了,因為只是它前面很多內容的一些自然推廣。這裡想補充一下高票答主 @Tenniel M 提到的kernel random forest,或者倒過來說random forest kernel也行。用一個不知道恰不恰當的比喻來說:他就像一個混血兒,random forest好像是他爹,kernel method好像他媽,這靚仔結合了他爹高高的鼻子和他媽的大眼睛,長大後大家一看是個型男啊!更有甚者說他太像那個叫啥....對了對了英文名叫「transfer learning」的當紅明星。他的人生軌跡,也就是具體的數學推導可以去維基百科去看。這裡我只是想舉幾個簡單的例子來說明一下kernel random forest的優點。
舉個栗子。拿最熟悉的MNIST來說事,如果用RF來做手寫字元識別,當使用整個MNIST數據集(也就是包含了所有0到9的圖片)時識別效果一般能夠達到90%以上。也就是說當每個數字對應有足夠多的數據來訓練RF時,RF的識別效果是沒問題的。現在問題來了,如果你手頭只有數字「7」和數字「9」的圖片時,你如何拿這兩個數字對應的數據集來訓練一種演算法,使得它可以識別出數字「3」和數字「4」呢....寫到這我自己也聞到了一股濃濃的transfer learning的味道.....
此刻型男kernel random forest就閃亮登場了。我們來比較一下MNIST中數字「3」和數字「4」在不同的PCA projection:
左邊的圖顯示了使用random forest kernel的Kernel PCA產生的數字3和數字4圖片中兩個最重要的components,右邊顯示的是使用普通PCA產生的兩個components。
從圖中很明顯可以看出,將僅僅用數字7和數字9的圖片訓練後的RF作為kernel,對於其從未見過的數字3和4對應的圖片,所產生的components具有更好的區分性。原因就是用7和9訓練後的RF其學習得到的partitions仍然攜帶有一定的semantic meaning,這些meaning可以被用來識別數字3和4的。partition可以理解為RF中每棵樹的每個結點對屬性進行分割得到的不同區域(區間)。如果two items經常被劃分到RF里的同個partition中,說明它們一定有某些相似的屬性(比如它們的屬性值都受到同一個限制條件),而對於手寫字元這樣帶有semantic information(數字0~9)的圖片來說,經過劃分後的不同屬性集就具有了一定的semantic meaning。因此如果two items共有的partitions越多,說明它們在這些屬性上就越相似。
事實上,如果對數字3和4的圖片提取其前五個principal components並且用SVM去找它們的linear boundary的話,使用基於random forest kernel的PCA+SVM的準確率大概在94%左右,而基於linear PCA + SVM的準確率大概只有87%。random forest kernel也可以替代深度信念網路等手段來進行對RF中的知識進行遷移,相比deep belief nets它速度更快,而且對硬體要求也不高。有興趣的同學可以去了解下~
這類問題,論文必不可少:
The Random Forest Kernel and other kernels for big data from random partitions
https://arxiv.org/pdf/1402.4293.pdf
可以參考Gilles Louppe的文章「Understanding Random Forests: From Theory to Practice」。
文章地址:From Theory to Practice,作者的github:glouppe (Gilles Louppe)
Gilles Louppe是scikit-learn random forest包的主要作者,Understanding Random Forests是他的博士論文。
本文從隨機森林原理入手,介紹了ensemble方法,分析了隨機森林的bound,複雜度等,詳細闡述了隨機森林可以解決哪些問題。然後以sklearn中的random forests為例介紹了如何實現一個隨機森林分類/回歸器,深入淺出。
如果你想學習隨機森林,無論是入門還是精通,這篇文章都是不二之選。
他爹Breiman的論文,回到原點,「重現出發,一起學習」。
《機器學習》周志華版+sklearn源碼學習+項目實踐。
三級火箭,就可以飛起來啦!
Google: random forest, paper
推薦閱讀:
※EM演算法怎麼用在聚類上?
※機器視覺需要學習哪些數學知識?
※圖像金字塔除了sift演算法之外還有什麼應用?
※ICCV2015 有什麼值得關注的亮點?