
深度森林原理及實現
1 思想
1.1 作者周志華認為學習樣本的差異性得到足夠體現的時候,集成學習的效果會得到相應的提高。
1.2 多樣的結構對集成學習是十分重要的。
1.3 Deep Forest 就是基於該想法來設計實現的。
2 介紹
Deep Forest是傳統的森林在廣度和深度上的一種集成。
2.1 在深度上集成的目的:提高分類能力
2.2 在廣度上集成的目的:體現輸入數據的差異性
3 深度學習與深度森林的關聯:
3.1 深度學習最大的貢獻是表征學習,發現更好的features。而后面用於分類(或其他任務)的function,往往也只是普通的softmax(或者其他一些經典而又簡單的方法)而已。
3.2 所以,只要特征足夠好,分類函數本身並不需要復雜。目前DL的成功,主要依靠神經網絡對數據特征的強大表征能力,那么這種成功能否復刻到其他模型上呢?
3.3 南京大學的周志華老師嘗試提出一種深度的tree模型,叫做gcForest,用文中的術語說,就是“multi-Grained Cascade forest”,多粒度級聯森林。此外,還提出了一種全新的決策樹集成方法,使用級聯結構讓 gcForest 做表征學習。
4 深度森林的整體架構
gcforest分類模型整體架構
4.1 如上圖所示,該深度森林用於三分類任務,主要有兩部分構成:1)multi-Grained Scanning 2)Cascade Forest
4.2 multi-Grained Scanning:提取數據不同粒度的特征
4.2.1 通過多個尺度的滑動窗口來獲取input中的局部數值(不同於卷積操作,這里的窗口僅用於數值的獲取,未進行數值的重新表示)。
4.2.2 將4.2.1處理得到的結果序列作為ForestA和ForestB的輸入,由森林得出每個輸入對應類別的概率。
4.2.3 將多個森林的多個結果進行拼接作為轉換后的特征(用作Cascade Forest模塊的輸入)
4.3 Cascade Forest
4.3.1 特點:
1)每一層都由多個森林集成得到。就森林而言,本身已經是一種決策樹的集成的產物,因此,級聯森林是一種集成的集成(即超集成)。
2)每一層有兩種不同的森林構成:一種是完全隨機森林,另外一種是隨機森林。
4.3.2 工作流程:
5.查漏補缺(1 完全隨機森林和隨機森林)
5.1 完全隨機森林:由多棵樹組成,每棵樹包含所有的特征,並且隨機選擇一個特征作為分裂樹的分裂節點。一直分裂到每個葉子節點只包含一個類別或者不多於是個樣本結束。
5.2 隨機森林:同樣有多棵樹構成,每棵樹通過隨機選取Sqrt(特征總數)個特征 ,然后通過GINI分數來篩選分裂節點。
5.3 區別:兩種森林的不同主要在於其特征空間的不同,完全隨機森林是在完整的特征空間中隨機選取特征來分裂,而普通隨機森林是在一個隨機特征子空間內通過gini系數來選取分裂節點。
6 級聯森林的層數選擇問題
6.1 gcForest中級聯森林部分的level是自適應的,不用人工提前設定。
6.2 原理:
6.2.1 首先會在一級結束后做一個性能測試,然后再繼續生成下一級,當擴展一個新的級后,整個級聯的性能將在驗證集上進行估計,如果沒有顯着的性能增益,訓練過程將終止。
6.2.2 因此,gcForest能夠通過適當的終止,來決定其模型的復雜度,這就使得相對於DNN,gcForest在即使面對小數據集的情況下一樣使用,因為它的結構不依賴於大量的數據生成。
7 總結
7.1 gcForest可以處理不同規模的數據,具有更加穩定良好的學習性能。深度神經網絡需要大規模的訓練數據,而 gcForest 在僅有小規模訓練數據的情況下也照常運轉。
7.2 gcForest不需要設置超參數,通過在具體數據集上訓練誤差最小化來自動設定。實際上,在幾乎完全一樣的超參數設置下,gcForest在處理不同領域的不同數據時,也能達到極佳的性能。
7.3 相比於神經網絡,深度森林的樹結構具有更好的解釋性。
