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

dicksonjyl560101發表於2019-06-11

https://www.toutiao.com/a6700795235598860811/


隨機森林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獲得非常好的結果。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2647266/,如需轉載,請註明出處,否則將追究法律責任。

相關文章