隨機森林VS神經網絡:哪個更好?

隨機森林 人工智能 算法 Python AI中國 2019-06-20
點擊上方關注,All in AI中國
隨機森林VS神經網絡:哪個更好?

隨機森林和神經網絡是兩種廣泛使用的機器學習算法。這兩種方法有什麼區別?什麼時候應該使用神經網絡,什麼時候應該使用隨機森林? 
您看待數據變化的方式改變了您看待業務戰略的方式。

哪個更好:隨機森林或神經網絡?這是一個常見問題,答案非常簡單:視情況而定。我將嘗試向您展示何時使用隨機森林好以及何時使用神經網絡好。

首先,隨機森林(RF)和神經網絡(NN)是不同類型的算法。 RF是決策樹的集合,在集合中,每個決策樹處理樣本並預測輸出標籤(在分類的情況下)。集合中的決策樹是獨立的,每個人都可以預測最終的反應。神經網絡是連接神經元的網絡。沒有其他神經元,神經元就無法運作 - 它們是相互連接的。通常,它們按層分組並處理每層中的數據並傳遞給下一層,最後一層神經元負責做決定。

隨機森林只能使用表格數據。(什麼是表格數據?它是表格格式的數據)。另一方面,神經網絡可以使用許多不同的數據類型:

  • 表格數據
  • 圖像
  • 音頻數據
  • 文本數據 - 可以在預處理後由NN處理,例如使用詞袋。理論上,RF也可以處理這些數據,但在實際應用中,經過這樣的預處理後,數據將變得稀疏,RF將被卡住。

所以現在你有一些直覺,當你處理圖像、音頻或文本數據時,你應該選擇NN。

那麼表格數據呢?

對於表格數據,您應該檢查兩種算法並選擇更好的一種。但是,相對於神經網絡我更喜歡隨機森林,因為它們更容易使用。我會告訴你原因。

隨機森林與神經網絡 - 數據預處理

理論上,隨機森林應該使用缺失和分類數據。但是,sklearn實現不處理此問題(link1,link2)。要為Random Forest(在python和sklearn包中)準備數據,您需要確保:

  • 您的數據中沒有缺失值
  • 將分類數據轉換為數值

神經網絡的數據預處理需要填充缺失值並將分類數據轉換為數字。更重要的是,需要進行特徵縮放。在具有不同範圍的特徵的情況下,模型訓練將存在問題。如果不將特徵縮放到相同的範圍,那麼具有較大值的特徵將在訓練中被視為更重要,這是不需要的。更重要的是,梯度值可能會爆炸,神經元可能會飽和,這將使得無法訓練NN。總之,對於神經網絡訓練,您需要執行以下預處理:

  • 填寫缺失值
  • 將分類數據轉換為數字
  • 將特徵縮放到相同(或至少相似)的範圍內

請記住,用於準備訓練數據的所有預處理都應該用於生產。對於NN,您有更多的預處理步驟,因此在生產系統中實施更多步驟!

隨機森林與神經網絡 - 模型訓練

數據準備就緒,我們可以訓練模型。

對於隨機森林,您可以設置集合中的樹木數量(這很容易,因為RF中的樹越多越好),您可以使用默認的超參數,它應該可以工作。

你需要一些神奇的技能來訓練神經網絡

  • 您需要定義NN體系結構。通常2或3層就足夠了。每層使用多少個神經元?使用什麼激活功能?使用什麼權重初始化?
  • 架構準備好了之後,你需要選擇一個訓練算法。你可以從簡單的隨機梯度下降開始,但還有很多其他的(RMSprop,Adagrad,Adam,Adadelta ......看看Keras的優化器)。讓我們選擇'簡單'SGD:你需要設置學習率、動量、衰減。沒有足夠的超參數?您還需要設置批量大小(批次 - 每次權重更新顯示的樣本數)。

你知道什麼是有趣的。上面提到的每個NN超參數都很關鍵。例如,您在第二個隱藏層中設置了太大的學習率或沒有足夠的神經元,那麼您的NN訓練將陷入局部極小值。

實證例子

別說了,告訴我結果!好吧,讓我們開始訓練模型。

我將從OpenML.org數據存儲庫中的9個數據集上訓練隨機森林和神經網絡。

數據集描述:

隨機森林VS神經網絡:哪個更好?

如您所見,我使用的數據集相當小,最多可達幾千行和幾列。我希望有一些小數據用於快速示例,儘管如此,它們涵蓋了一些可能的用例範圍。您可以通過openml.org中的id訪問每個數據集。我將使用70%的數據進行訓練,其餘的則使用隨機分割進行測試。

對於隨機森林和神經網絡訓練,我使用了我的開源AutoML軟件包mljar-supervised。我更喜歡在這裡使用AutoML方法,因為它為我進行數據預處理並調優超參數。

隨機森林VS神經網絡:哪個更好?

最後,我將簡單集成計算為隨機森林和神經網絡預測的平均值。

值得一提的是使用AutoML訓練NN的細節。以下是在AutoML中選擇的NN超參數:

隨機森林VS神經網絡:哪個更好?

AutoML正在創建具有1、2或3層的神經網絡,並繪製神經元的數量。對於訓練,使用批量大小等於256的SGD。

與5次重複比較的實證結果(logloss越低越好):

隨機森林VS神經網絡:哪個更好?

隨機森林與神經網絡的logloss度量

也許有可能通過神經網絡可以獲得更好的結果,但需要專家進行大量的手動調整。

下一個令人驚訝的事情是簡單集成平均值的結果,它僅在3個案例(id為31,44,179的數據集)中略微改善了最終預測。

結論

當您左右為難時,不知道選擇隨機森林還是神經網絡。您應該根據您擁有的數據類型來決定。您應該使用神經網絡:

  • 圖片
  • 音頻
  • 文本

如果您要使用表格數據,則首先檢查隨機森林是值得的,因為它更容易。隨機森林需要較少的預處理,訓練過程更簡單。因此,在生產系統中使用RF更簡單。如果您對模型性能不滿意,您應該嘗試調整和訓練神經網絡。有很多超參數可以在NN中調整,如果您有足夠的知識和經驗,您可以用NN獲得非常好的結果。

相關推薦

推薦中...