理解和應用基於樹的方法進行預測篩選和建模
請參閱如何:
- 使用分區、引導森林和提升樹的模型
- 了解決策樹的優缺點
- 優點:發現非線性關係,獲得易於理解的結果,篩選大量因素
- 缺點:一次處理一個反應,形成 if-then 語句而不是數學公式,高變異性可能導致相似資料的模型有重大差異
- 建立 JMP 分區分類樹,使用拆分來定義預測變數和分類回應之間的關係
- 定義樣本數量、樹(模型)大小和取樣率,以使用隨機森林技術建立 Bootstrap 森林模型
- 定義層數、每棵樹的分割數、學習率和取樣率,以建立將較小模型組合成最終模型的提升樹模型
- 解釋結果並調整模型
- 指定並執行利潤矩陣報告以識別分類回應的錯誤分類,並使用混淆矩陣和決策矩陣解釋結果
註:17:00、38:00含問答
預測建模和機器學習回覆:理解和應用基於樹的方法進行預測篩選和建模感謝兩位非常詳細的分析,我需要一些時間來處理你們的所有建議,稍後會回覆。 我知道我的資料集中存在著許多挑戰,其中一個挑戰是它不平衡,它是大量歷史資料和添加的一些實驗的混合。 我們開發人員希望從所有數據中獲取信息,而不是扔掉任何東西。 這些實驗可能看起來像是異常值,但實際上並非異常值,它們是具有有意義結果的單點。 由於我的數據集將在歐洲發現峰會上展示,因此我們可以在其上線時進一步討論。 BR
回覆:理解和應用基於樹的方法進行預測篩選和建模@彼得_赫什:我不確定你這句話的意思“基於樹的模型非常容易受到異常值的影響” ,因為基於樹的方法對異常值相當穩健,或至少異常值的影響可以忽略不計。 這方面已經有很多例子和出版物,這也是為什麼這種類型的模型經常被使用和著名的原因,因為它們的「簡單性」和低預處理/清理步驟(不需要對異常值進行大量工作,以及處理缺失值、沒有分佈假設等...)。 異常值對迴歸模型和隨機森林的影響的比較(以及應用於兩種演算法的處理異常值的不同技術的好處(劇透:這對隨機森林演算法沒有太大影響))可以在這裡看到:如何讓您的機器學習模型對異常值具有穩健性 - KDnuggets
@彼得_赫什@喬治然而,選擇基於樹的模型還需要考慮其他事項,以下是一些:
- 過擬合這主要發生在決策樹和提升樹(如果沒有進行適當的驗證)。 隨機森林往往不太容易過度擬合,因為引導過程:有一個個體樹的獨立訓練,每個都適合訓練資料的引導樣本。 透過引導過程,某些樣本不會「用於」建立單一樹(稱為「袋外」(OOB)樣本),但可用於估計模型中的誤差(因此充當“驗證”,對模型未見的數據的誤差進行估計)。
- 相關性/多重共線性: 噸不同的基於樹的模型以不同的方式處理變數之間的多重共線性或相關性。 如果您的資料集中具有很強的相關性/多重共線性,您可能會遇到一些差異:當查看決策樹特徵重要性圖(或梯度提升樹)時,您可以看到僅選擇「最佳」特徵(具有最佳分割屬性的特徵),而其他特徵(與第一個特徵相關)是未選擇且特徵重要性為0(或接近0)。 這是正常的,因為決策樹使用所有預測變數並嘗試確定每個層級的最佳分割,因此「較差」和相關的特徵將被丟棄。因此,重新載入決策/提升樹可能會導致存在相關性/多重共線性的不同模型(因為它可能不會總是每次選擇相同的特徵/變數)。 當查看隨機森林特徵重要性圖時,您可以看到所有特徵都有一個分數,甚至是相關的特徵。 這是由於特徵裝袋,即為森林中的每個決策樹隨機選擇特徵,從而使每個特徵在各個樹中都有相同的「機會」被選擇。 因此,重新載入該模型應該會得到非常相似的模型。
- 噪音(或偏差/方差權衡):B osted 樹比隨機森林更準確。 在提升樹中,每棵樹都經過迭代訓練以修正先前樹的錯誤,因此演算法能夠捕捉資料中的複雜模式。 然而,如果資料有噪聲,提升樹可能會過度擬合並開始對噪聲進行建模。 因此,根據資料集大小和資料中的噪聲,可以在提升樹和隨機森林之間做出選擇:第一個非常準確,但對噪聲不穩健(像決策樹一樣低偏差、高方差),而在比較 RF 不太準確/精確,但對噪音更穩健(偏差與森林中的每棵樹相同,由於裝袋過程,方差低於決策樹或提升樹)。
除了前面的幾點之外,您還必須考慮您的目標(預測/解釋?)、用於評估模型在此資料集上的表現的指標的影響、資料集的大小和維度(變數數量與變數數量)。觀察數量)、數據的代表性等......
如果您使用的是小型資料集(可能有雜訊),那麼隨機森林可能是比提升樹/決策樹更安全、更穩健的替代方案。
除了什麼@彼得_赫什建議,如果您的提升樹的折疊/驗證列具有不同的性能,則表明您的資料子集可能具有異常值,因此請嘗試在多元平台中查看距離(Jackknife/Mahalanobis)可以啟用您可以發現並識別該子集中的常見觀察結果。
抱歉回答太長了,希望對你有幫助
回覆:理解和應用基於樹的方法進行預測篩選和建模@喬治很好的問題。@Victor_G有一些很好的解決方案,包括模型平均或 k 折整合建模。聽起來您的數據有很多噪音,模型隨著額外的運行而變化。如果沒有一些額外的因素或運行來幫助更好地理解資料的可變性,此時模型可能不是很有用。
測試這一點的一種方法是為保留驗證建立多個驗證列。如果使用不同驗證列的這些模型彼此顯著不同,則表示資料的隨機子集不能代表整個資料。這意味著如果不進行一些更改,您將很難建立準確的預測模型。
基於樹的模型非常容易受到異常值的影響,因此在運行模型之前檢查異常值可能是個好主意。
希望這對我們有所幫助,讓我們知道事情進展如何。
回覆:理解和應用基於樹的方法進行預測篩選和建模@喬治關於你的問題我可能有一些想法:
- 嘗試 K 折交叉驗證(使用「分析」->「預測建模」中提供的「模型篩選」平台)來評估模型的穩健性。 您將獲得每次折疊的結果,因此無論訓練或驗證集中有哪些運行,都可以更輕鬆地評估您的模型是否穩健。
您可以保存每個模型的公式(在 K-1 折疊上進行訓練,在 1 折疊上進行驗證),然後可以對在不同折疊上創建的這些單獨模型進行整合或平均,但需要保留一些資料完全消失,因為在這裡您將平均在資料和驗證集上創建的不同模型,因此為了對模型進行公平評估,需要創建一個獨立的測試集並完全「刪除」測試資料以避免任何資訊/資料外洩或過度擬合。
- 如果您想對模型進行可重複的測試(或「修復」最終模型),您可以透過鍵入任意數字來修復隨機種子:這樣,使用腳本和固定隨機種子重新加載模型將使您始終能夠擁有相同的結果。
- 最後,您也可以嘗試建立不同的提升樹(或其他基於樹的模型),透過最佳化超參數或對其值(深度、最小尺寸分割等)進行一些差異,以便進行最佳化模型或個人模型中的一點多樣性,然後透過整合或平均將它們組合起來。
希望這幾個想法可以幫助你
回覆:理解和應用基於樹的方法進行預測篩選和建模@彼得_赫什,感謝您發布這個精彩的影片! 在我的例子中,我有可變數據,並且使用決策樹會導致不同運行的不同模型,正如您所說,決策樹有這個「缺點」。 在您的情況下,您使用了驗證列,這表示訓練和測試的選擇不再是隨機的。 在我的例子中,使用“保留部分”是運行之間“噪音”的另一個來源。對於如何獲得更穩定的模型,或如何定義/修復最終模型,有什麼想法或策略嗎? 我使用提升樹,因為它在模型比較中表現最好。先致謝!