隨機森林VS神經網路:哪個更好?
https://www.toutiao.com/a6700795235598860811/
隨機森林和神經網路是兩種廣泛使用的機器學習演算法。這兩種方法有什麼區別?什麼時候應該使用神經網路,什麼時候應該使用隨機森林?
您看待資料變化的方式改變了您看待業務戰略的方式。
哪個更好:隨機森林或神經網路?這是一個常見問題,答案非常簡單:視情況而定。我將嘗試向您展示何時使用隨機森林好以及何時使用神經網路好。
首先,隨機森林(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個資料集上訓練隨機森林和神經網路。
資料集描述:
如您所見,我使用的資料集相當小,最多可達幾千行和幾列。我希望有一些小資料用於快速示例,儘管如此,它們涵蓋了一些可能的用例範圍。您可以通過openml.org中的id訪問每個資料集。我將使用70%的資料進行訓練,其餘的則使用隨機分割進行測試。
對於隨機森林和神經網路訓練,我使用了我的開源AutoML軟體包mljar-supervised。我更喜歡在這裡使用AutoML方法,因為它為我進行資料預處理並調優超引數。
最後,我將簡單整合計算為隨機森林和神經網路預測的平均值。
值得一提的是使用AutoML訓練NN的細節。以下是在AutoML中選擇的NN超引數:
AutoML正在建立具有1、2或3層的神經網路,並繪製神經元的數量。對於訓練,使用批量大小等於256的SGD。
與5次重複比較的實證結果(logloss越低越好):
隨機森林與神經網路的logloss度量
也許有可能通過神經網路可以獲得更好的結果,但需要專家進行大量的手動調整。
下一個令人驚訝的事情是簡單整合平均值的結果,它僅在3個案例(id為31,44,179的資料集)中略微改善了最終預測。
結論
當您左右為難時,不知道選擇隨機森林還是神經網路。您應該根據您擁有的資料型別來決定。您應該使用神經網路:
- 圖片
- 音訊
- 文字
如果您要使用表格資料,則首先檢查隨機森林是值得的,因為它更容易。隨機森林需要較少的預處理,訓練過程更簡單。因此,在生產系統中使用RF更簡單。如果您對模型效能不滿意,您應該嘗試調整和訓練神經網路。有很多超引數可以在NN中調整,如果您有足夠的知識和經驗,您可以用NN獲得非常好的結果。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2647266/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 哪個才是解決迴歸問題的最佳演算法?線性迴歸、神經網路還是隨機森林?演算法神經網路隨機森林
- 使用神經網路生成抽象隨機藝術神經網路抽象隨機
- 一文詳解隨機神經網路結構搜尋 (SNAS)隨機神經網路
- 決策樹VS隨機森林——應該使用哪種演算法?(附程式碼&連結)隨機森林演算法
- 神經網路:numpy實現神經網路框架神經網路框架
- 神經網路神經網路
- 神經網路入門篇:詳解隨機初始化(Random+Initialization)神經網路隨機random
- 雙向迴圈神經網路+條件隨機場進行分詞神經網路條件隨機場分詞
- 機器學習整理(神經網路)機器學習神經網路
- 33個神經網路「煉丹」技巧神經網路
- LSTM神經網路神經網路
- 8、神經網路神經網路
- 企業網盤哪個更好?
- 隨機森林演算法隨機森林演算法
- 隨機森林的祕密隨機森林
- R:microtable包隨機森林隨機森林
- 隨機森林、EM、HMM、LDA隨機森林HMMLDA
- 聊聊從腦神經到神經網路神經網路
- 圖神經網路GNN 庫,液體神經網路LNN/LFM神經網路GNN
- 用一個畫素攻陷神經網路神經網路
- 神經網路不收斂的 11 個原因神經網路
- 隨機森林和機器學習隨機森林機器學習
- 【神經網路篇】--RNN遞迴神經網路初始與詳解神經網路RNN遞迴
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 人工神經網路(ANN)神經網路
- 卷積神經網路卷積神經網路
- 迴圈神經網路神經網路
- 神經網路(neural networks)神經網路
- 生成型神經網路神經網路
- 隨機森林演算法梳理隨機森林演算法
- 決策樹和隨機森林隨機森林
- 【機器學習】搭建神經網路筆記機器學習神經網路筆記
- 機器學習:神經網路構建(上)機器學習神經網路
- 機器學習:神經網路構建(下)機器學習神經網路
- 一個故事看懂AI神經網路工作原理AI神經網路
- Tensorflow系列專題(四):神經網路篇之前饋神經網路綜述神經網路
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記