由於神經網路的複雜性,它們常常被認為是解決所有機器學習問題的「聖杯」。而另一方面,基於樹的方法並未得到同等重視,主要原因在於這類演算法看起來很簡單。然而,這兩種演算法看似不同,卻像一枚硬幣的正反面,都很重要。
基於樹的方法通常優於神經網路。本質上,將基於樹的方法和基於神經網路的方法放在同一個類別中是因為,它們都透過逐步解構來處理問題,而不是像支援向量機或Logistic 迴歸那樣透過複雜邊界來分割整個資料集。
很明顯,基於樹的方法沿著不同的特徵逐步分割特徵空間,以最佳化資訊增益。不那麼明顯的是,神經網路也以類似的方式處理任務。每個神經元監視特徵空間的一個特定部分(存在多種重疊)。當輸入進入該空間時,某些神經元就會被啟動。
神經網路以機率的視角看待這種逐段模型擬合 (piece-by-piece model fitting),而基於樹的方法則採用確定性的視角。不管怎樣,這兩者的表現都依賴模型的深度,因為它們的組件與特徵空間的各個部分有關聯。
包含太多組件的模型(對於樹模型而言是節點,對於神經網路則是神經元)會過度擬合,而組件太少的模型根本無法給出有意義的預測。 (二者一開始都是記憶資料點,而不是學習泛化。)
要想更直觀地了解神經網路是如何分割特徵空間的,可閱讀這篇介紹通用近似定理的文章:https://medium.com/analytics-vidhya/you-dont-understand-neural-networks-until-you-understand-the-universal-approximation-theory-85b3e7677126。
雖然決策樹有許多強大的變體,如隨機森林、梯度提升、AdaBoost 和深度森林,但一般來說,基於樹的方法本質上是神經網路的簡化版本。
基於樹的方法透過垂直線和水平線逐段解決問題,以最小化熵(優化器和損失)。神經網路透過激活函數來逐段解決問題。
基於樹的方法是確定性的,而不是機率性的。這帶來了一些不錯的簡化,例如自動特徵選擇。
決策樹中被活化的條件節點類似於神經網路中被活化的神經元(訊息流)。
神經網路透過擬合參數對輸入進行變換,間接指導後續神經元的活化。決策樹則明確地擬合參數來指導資訊流。 (這是確定性與機率性相對應的結果。)
資訊在兩個模型中的流動相似,只是在樹模型中的流動方式更簡單。
當然,這是一個抽象的結論,甚至可能是有爭議的。誠然,建立這種聯繫有許多障礙。不管怎樣,這是理解基於樹的方法何時以及為什麼優於神經網路的重要部分。
對於決策樹而言,處理表格或表格形式的結構化資料是很自然的。大多數人都同意用神經網路執行表格資料的迴歸和預測屬於大材小用,所以這裡做了一些簡化。選擇 1 和 0,而不是機率,是這兩種演算法之間差異的主要根源。因此,基於樹的方法可成功應用於不需要機率的情況,如結構化資料。
例如,基於樹的方法在 MNIST 資料集上表現出很好的效能,因為每個數字都有幾個基本特徵。不需要計算機率,這個問題也不是很複雜,這就是為什麼設計良好的樹集成模型性能可以媲美現代卷積神經網絡,甚至更好。
通常,人們傾向於說「基於樹的方法只是記住了規則」,這種說法是對的。神經網路也是一樣,只不過它能記住更複雜的、基於機率的規則。神經網路並非明確地對 x>3 這樣的條件給出真 / 假的預測,而是將輸入放大到很高的值,從而得到 sigmoid 值 1 或產生連續表達式。
另一方面,由於神經網路非常複雜,因此使用它們可以做很多事情。卷積層和循環層都是神經網路的傑出變體,因為它們處理的資料往往需要機率計算的細微差別。
很少有圖像可以用 1 和 0 建模。決策樹值不能處理具有許多中間值(例如0.5)的資料集,這就是為什麼它在MNIST 資料集上表現很好的原因,在MNIST 中,像素值幾乎都是黑色或白色,但其他資料集的像素值不是(例如ImageNet)。類似地,文本有太多的資訊和太多的異常,無法用確定性的術語來表達。
這也是神經網路主要用於這些領域的原因,也是神經網路研究在早期(21 世紀初之前)停滯不前的原因,當時無法獲得大量圖像和文字數據。神經網路的其他常見用途僅限於大規模預測,例如 YouTube 影片推薦演算法,其規模非常大,必須使用機率。
任何公司的資料科學團隊可能都會使用基於樹的模型,而不是神經網絡,除非他們正在建造一個重型應用,例如模糊 Zoom 影片的背景。但在日常業務分類任務上,基於樹的方法因其確定性特質,使這些任務變得輕量級,其方法與神經網路相同。
在許多實際情況下,確定性建模比機率建模更自然。例如,預測使用者是否從某電商網站購買一樣商品,這時樹模型是很好的選擇,因為使用者天然地遵循基於規則的決策過程。使用者的決策過程可能看起來像這樣:
#一般來說,人類遵循基於規則和結構化的決策過程。在這些情況下,機率建模是不必要的。
以上是機器學習:不要低估樹模型的威力的詳細內容。更多資訊請關注PHP中文網其他相關文章!