如何修改模型篩選平台中的超參數JMP 專家您好,
我發現模型篩選平台非常有用。我已經透過調優設計表找出了超參數,所以我想知道是否有辦法在模型篩選平台(例如JSL)中修改超參數。
如果平台無法修改超參數,我可以使用文章中的預設參數嗎?
期待你的答复
進階統計建模回覆:如何修改模型篩選平台中的超參數嗨@Wang123 ,
歡迎來到社區!
您讀過有關模型篩選的文檔嗎?要直接回答您的問題,JMP 幫助中的答案如下: “建模平台在模型擬合中使用預設選項和調整參數。您可以嘗試透過直接調用平台並選擇不同的選項來改進擬合,使其超過預設結果。
因此預設情況下,您無法在 Model Screening 平台(可能透過 JSL)中調整超參數,且這不是該平台的使用。模型篩選是 AutoML,其目的是快速擬合大量不同類型的機器學習模型,以便更好地了解哪種類型的模型似乎正確擬合資料。完成此探索階段後,您可以使用對應模型的平台透過調整設計表來調整超參數,並可能進一步提高模型的效能。
請注意,機器學習演算法在超參數配置方面具有各種敏感性/穩健性:例如,隨機森林是最穩健的 ML 演算法之一,其中超參數對其性能影響很小。請參閱[1802.09596] 可調節性:機器學習演算法超參數的重要性 (arxiv.org)
從技術上講,您可能能夠做您想做的事情,但需要注意幾個警告:
- 如果您想要擬合多個模型並調整它們,您可能必須使用巢狀交叉驗證(如果已經使用交叉驗證)或在訓練集上使用交叉驗證(並使用驗證集來比較模型的效能)。此處新增的資料分割是為了確保您不會過度擬合超參數優化,並且部分資料仍然可以用於以公平且「盡可能公正」的方式進行演算法比較和選擇。
- 此模型篩選平台可能存在的問題是交叉驗證選項預設是隨機的。根據您的資料集和特徵/輸入的分佈,這可能不是一個明智的選擇,並且無法提供資料集的公平評估和代表性。解決方法可能是建立分層公式(K 倍)驗證列並在模型篩選的驗證面板中使用它: 啟動 Make Validation Column Platform (jmp.com)
- 如果您確實想嘗試使用此平台或任何 AutoML 平台調整多個模型,請考慮需要擬合的模型數量以及所需的時間和計算:您需要擬合每種選定類型的模型 KxK' 次(嵌套交叉驗證,K = 用於模型驗證的外部折疊數量,K' = 用於超參數調整的內部折疊數量)。根據您的資料集、其維度和複雜性,這種「強力」方法可能不合理且無法實現。

有關嵌套交叉驗證的更多資源:
https://inria.github.io/scikit-learn-mooc/python_scripts/cross_validation_nested.html
https://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html
https://medium.com/@cd_24/a-guide-to-nested-cross-validation-with-code-step-by-step-6a8ad06d5af2#:~:text=Nested%20cross%2Dvalidation%20is%20a,內部%20loop%20for%20超參數%20調整.
我的建議是按順序進行並使用該平台最擅長的地方,比較非常不同的演算法並選擇最有前途的演算法。然後,您可以優化似乎性能最佳的(少數)模型上的超參數,以稍微提高效能。在此過程中要小心,避免資料洩漏,因此,在選擇並優化最終模型之前,切勿使用測試集(或者,您可能會在測試集上獲得樂觀的結果,而在將演算法用於新資料時,會出現意外的結果) 。
這個過程對我來說比使用暴力方法更有意義,因為超參數優化不會「神奇地」使演算法比更合適的演算法/方法學得更好。
我希望這個答案(即使不是你所期望的)對你有幫助,
回覆:如何修改模型篩選平台中的超參數嗨,維克多_G,
謝謝你的回复,這對我來說非常有啟發。我也可以嘗試這種方法,首先使用模型篩選平台,然後使用適當的演算法。
為了避免過度擬合,K折交叉驗證對於小數據是一個好方法。但是,某些演算法平台(不是 Model Screening)不支援 K 折交叉驗證,例如 Bootstrap Forest、Boosted Tree 和 Baive Bayes。當然,分層公式(K 折)驗證列不適合。在模型篩選平台和超參數優化中選擇了最有前途的演算法後,您能分享一些關於如何在小數據方面更好地訓練模型的經驗嗎?
最後,點擊「Run Selected」按鈕後,我發現 Model Screening 平台中帶有 K 折交叉驗證的每個演算法都可以自動產生一個驗證折疊。那麼,我可以在具有最佳超參數的相同演算法中使用此驗證折疊來避免過度擬合嗎?
期待您的回音。
回覆:如何修改模型篩選平台中的超參數嗨@Wang123 ,
很高興聽到我的回答很有幫助。
要成功使用機器學習,您需要在開始任何分析之前為機器學習專案設定策略和框架。大多數時候,機器學習專案可能會失敗,因為起點(資料收集注意事項)或結束階段(測試條件和監控)沒有得到很好的考慮和定義:
- 起點:考慮一下您是如何收集資料的:您的資料集對於您想要執行的任務的代表性如何?數據是在什麼背景下收集的:在觀察性研究中,還是在 DoE 等受控實驗中?資料採樣和特徵/變數分佈是否與模型環境中發生的情況相似(例如變數範圍/水平、類別或值之間的不平衡或平衡、反應分佈、類似的測量設備性能、測量的不確定性、 . ..)?
這些問題只是您在使用資料進行機器學習時需要考慮和定義的一些範例,可以幫助管理您的期望。
- 結束階段:您需要知道如何測試最終模型。您是否可以分割資料集並保留一小部分用於測試目的,或者您是否計劃獲取新資料來測試和監控模型的效能?
以下是與您的問題相關的一些其他建議和指導以及其他評論:
- 為了避免任何誤解,了解每組之間的用途和需求非常重要:
- 訓練集:用於模型的實際訓練,
- 驗證集:用於模型最佳化(例如超參數微調、特徵/閾值選擇…)和模型選擇,
- 測試集:用於對新/未見資料的所選模型進行泛化和預測效能評估。在這個階段,你不應該有多個模型參與競爭。
- 在資料集較小的情況下,有多種選擇來實現模型驗證(模型比較和選擇):
- 如果您處理小型資料集,請選擇簡單的演算法。一般來說,模型中的(超)參數數量越多,訓練資料集就需要越大,因為您需要更多的資料來精確估計模型中的每個(超)參數。在處理小型資料集時,我寧願選擇穩健的演算法,例如隨機森林、支援向量機和廣義回歸/分類。
我創建了一些關於它的 LinkedIn 文章以獲得更多解釋:- 隨機森林
- 支援向量機
這兩種演算法要么需要調整的超參數很少,對超參數調整的性能魯棒(參見上面提到的:https: //arxiv.org/abs/1802.09596 ),要么具有幫助它們避免過度擬合和減少預測變異數的訓練特異性(引導樣本例如,隨機森林中的一部分)。
我不會使用提升樹或提升演算法,因為它們的重點是透過順序糾正先前的錯誤來盡可能減少偏差(系統錯誤)。這使它們成為非常有效的預測演算法,但它們高度敏感並受到訓練集的影響,可能具有較差的泛化性能和較高的方差。
更一般地說,有兩種處理 ML 演算法的方法:
- 要么你的資料集大小、約束和許多其他選擇標準減少了模型的數量和可能性,你只需嘗試幾個模型來選擇最有希望的模型。這是我今年所做的演講的錄音,其中包括空間填充混合 DoE 和機器學習的使用: 增強域 E 的實驗設計和機器學習之間的協同作用... - JMP 用戶社區選擇,您可能對自己項目的選擇標準有一些想法。
- 您不知道哪個模型可能表現得更好,並且您希望在演算法之間進行第一次探索性建模測試/競爭。在這種情況下,您可以嘗試使用資料的子集(60-80%) 來訓練模型並比較它們,或者如果您的資料集非常小,則完全使用它與交叉驗證來完成第一個探索部分。一旦您確定了有前途的演算法,請嘗試使用具有明確驗證策略的單獨模型平台(例如,使用固定種子進行分層 K 折疊交叉驗證以實現可重複性)。
作為關於交叉驗證和結果顯示方式的最後評論,可能會有幾個警告:
- 將顯示每次折疊的結果。不要運行在特定折疊上訓練和驗證的模型,這將被視為“作弊”,因為您正在選擇最佳的數據分割來提高模型性能,這會影響您期望在新數據/測試上獲得的整體性能放。
- K 折交叉驗證有一個誤導性的名稱,因為它不是一種正確的驗證方法,而更像是一種“穩健性測試”,用於查看模型在不同資料分區下的行為方式。請參閱: MFML 065 - 了解 k 折交叉驗證 (youtube.com)
因此,此步驟中的重要資訊不是模型在每個折疊上的單獨性能,而是性能的規律性和相似程度(所有折疊上的平均性能和標準差性能)。如果您在結果中看到差異/高方差,這可能表示模型可能不適合您的任務和/或您的資料具有奇異的單一點(待檢查),從而使模型混淆並阻止其概括/查找模式。
- 最後,交叉驗證完成後,對於如何處理結果還沒有共識。有些在整個資料集上重新訓練選定的模型,有些正在整合在每個折疊上訓練的各個模型,或堆疊預測...這是有關此部署階段的連結如何從評估到最終模型( substack.com)
選擇對您更有意義的選項。
您也可以在這篇文章中找到補充討論和答案: 交叉驗證 - 驗證列方法
抱歉,篇幅較長,希望這個大答案能帶給您一些幫助!:)
回覆:如何修改模型篩選平台中的超參數嗨,維克多_G,
感謝您的協助。無論是具有超參數調整功能的模型篩選平台還是具有K-fold功能的所有單獨模型平台都可以輕鬆解決我的問題。遺憾的是兩個平台都缺少一些功能。
經過一番思考,我還想問以下步驟是否適合:
(1)分層抽樣,80%訓練集和20%測試集。
(2) 在訓練集中(80%),我用K折交叉驗證訓練了多種機器學習演算法在模型篩選平台中。當然,這一步使用預設的超參數。經過比較,我發現部分演算法是最優的,像是Bootstrap Forest。
(3)然後,我透過調優設計表明確了Bootstrap Forest的最佳超參數。
(4) 在訓練集(80%)中,我用最佳超參數重新擬合了 Bootstrap Forest 演算法。當然,我還可以擬合其他演算法。
(5)在測試集(20%)中,我進一步評估了Bootstrap Forest和其他演算法的模型效能。
上述步驟在JMP中是否適合?
在步驟2中,我可以只報告文章中預設超參數的模型比較結果(K折交叉驗證的結果)嗎?當然,我們知道很多文章都是從步驟3開始,然後是步驟2,所以他們報告模型與最佳超參數的比較結果。
在步驟4中,我沒有設定任何交叉驗證方法,這是正確的嗎?或者還有別的辦法嗎?
期待您的回音。
回覆:如何修改模型篩選平台中的超參數嗨,維克多_G,
你的回覆太有意義了我知道如何製作 K-Folds 驗證柱。據我所知,有些演算法平台不支援K折交叉驗證,像是Bootstrap Forest、Boosted Tree、Baive Bayes等。這可以在 JMP 幫助中找到: https://www.jmp.com/support/help/en/18.0/index.shtml#page/jmp/kfold-and-holdback-validation.shtml 。在這種情況下,我必須將我們的小資料分成訓練集、驗證集和測試集。有沒有辦法在這些演算法平台(Bootstrap Forest、Boosted Tree 和 Baive Bayes)中使用 K 折交叉驗證?
正如您所說“將顯示每次折疊的結果。不要運行在特定折疊上訓練和驗證的模型,這將被視為作弊......”,另一個人說“最後,一旦完成交叉驗證,就會有對於如何處理結果沒有達成共識。我不知道哪種方式比較合適,特定折疊訓練還是整個訓練集訓練?
期待您的回音。
回覆:如何修改模型篩選平台中的超參數嗨@Wang123 ,
抱歉,您關於在某些建模平台中限制使用 K 折交叉驗證列的說法是正確的。
一種可能的解決方法是建立一個通用的驗證列公式(80% 訓練和20% 驗證的分層採樣),在模型平台中使用它,並使用「模擬」功能產生許多交叉驗證樣本和結果以評估穩健性。我在另一篇文章中描述了該方法: 已解決:回應:如何將許多重複驗證自動化並匯總到一個輸出選項卡... - JMP 用戶社區
關於你的第二個問題,我個人的觀點是疊加各個模型的預測,以便每個單獨的模型對最終預測有相同的貢獻。這似乎是最中立的方法,並且可以減少偏差和(主要是)變異數(「群體智慧」方法),以及防止過度擬合。由於各個模型的貢獻,這也可能是估計不確定性預測區間的好機會。
對於小型資料集來說,整合過於複雜,因為各個模型的組合需要額外的驗證,以確保最終的整合模型不會過度擬合並且能夠泛化。
根據您對 ML 演算法的深入了解,還可以使用使用整個資料集並在其上訓練最終模型的選項,並將交叉驗證模型的結果與「未經驗證」模型的結果進行比較以發現任何跡象的過度擬合。
同樣,使用簡單模型和正則化/限制技術極大地有助於防止過度擬合。
希望這個回答對你有幫助
回覆:如何修改模型篩選平台中的超參數嗨@Wang123 ,
我發現步驟 1) 和 2) 合適。
步驟3)和步驟4)可以結合起來,找到多個模型的最佳超參數,對其進行評估、比較並選擇最終模型。此步驟還需要一個驗證策略,因為在沒有任何驗證的情況下最佳化超參數會導致過度擬合。根據(K 倍?)驗證集上的超參數最佳化結果,您選擇一個似乎最合適的演算法。
根據您的驗證策略,您可以保持演算法原樣訓練(如果您使用了驗證集來比較和選擇模型),或者如果您使用了 K 折交叉驗證(以獲得平均值),則可以進行模型堆疊各個模型的預測)。
在步驟 5 中,您將評估最終模型在新資料和未見過的資料上的表現。此階段應該只有 1 個演算法/模型。驗證用於比較和選擇模型,而不是測試階段。
關於您的問題:
“在步驟2中,我可以只報告文章中預設超參數的模型比較結果(K折交叉驗證的結果)嗎?” :這取決於您想展示/演示什麼。如果您想解釋為什麼選擇某些特定模型,您可以使用步驟 2 的結果。隨機森林等一些穩健的模型來說並不總是重要)。
“在第4步中,我沒有設定任何交叉驗證方法,這是正確的嗎?或者還有其他方法嗎?”我不建議對整個訓練集進行重新擬合,除非您使用強大的演算法並具有確保不會過度擬合的指標。隨機森林通常是穩健演算法的良好範例,並透過袋外樣本進行內部驗證(用於連續回應): https://www.jmp.com/support/help/en/17.2/#page/jmp/overview - of-the-bootstrap-forest-platform.shtml#
比較袋內和袋外樣本的指標可以幫助您評估隨機森林是否可能過度擬合。
如果您使用不同的演算法和/或不確定其穩健性,只需保留上一步的最佳化(和驗證!)模型(如果您使用 K 折交叉驗證,則保留堆疊模型)。
希望最後的回答對你有幫助
PS:如果答案對您有幫助,請不要忘記“接受為解決方案”,這是其他 JMP 用戶無需閱讀所有內容即可快速找到解決方案的好方法。
回覆:如何修改模型篩選平台中的超參數嗨,維克多_G,
感謝您的寶貴觀點!這些對我來說非常有幫助。