訓練和驗證公式不同你好@russ_wolfinger ,
我對 XGBoost 生成預測公式的方式有疑問。 我在一些數據上運行了“舊”版本的 XGBoost,預測公式與現在略有不同。 我認為這可能是這篇文章中提到的 XGBoost 的更新
https://community.jmp.com/t5/XGBoost-Early-Adopter/Applying-the-XGBoost-model-to-new-data/gpm-p/241796#M20
我通常運行 XGBoost,只對數據進行訓練和驗證拆分(單個驗證列)。 現在,當我運行 XGBoost 時,我會得到一個預測列,用於說明何時:Validation==Training 和何時:Validation==Validation。 公式略有不同,最終預測公式選擇任一解決方案。 我不明白它為什麼這樣做。
平台不應該只使用訓練數據生成模型,然後使用驗證數據來選擇最佳擬合值嗎? 它生成兩個不同的公式,然後對訓練公式或驗證公式進行平均,這似乎很奇怪。 這似乎使得在合併到另一個數據表時更難以預測未來的數據。
事實上,我剛剛嘗試過,新的 Predictor 列(使用 N Val 和 N Trn)並沒有填充新的預測。 訓練和驗證的預測列確實如此,但如上所述,公式不同,因此輸出也不同。 我們如何處理新數據?
謝謝,
DS
回复:訓練和驗證公式不同你好@russ_wolfinger ,
感謝您的反饋,這確實有助於了解如何為更新的 XGBoost 加載項正確編碼驗證列(取決於是否進行 k 折疊)。 我剛剛使用重新編碼的驗證列對其進行了測試,它可以正常工作。
感謝您的幫助!
謝謝,
DS
回复:訓練和驗證公式不同你好@SDF1 ,
對困惑感到抱歉。預測公式設置為在進行 k 折疊時自動計算折疊外預測。如果我正確理解了您的情況,則代碼實際上可能會執行與您的驗證列的兩個級別相對應的 2 倍 CV。這就是為什麼有兩個不同的公式。
要僅執行單個保留驗證集,您必須將驗證列更改為連續值,0 表示訓練,1 表示驗證。我們設置此約定是為了處理這兩種情況,但意識到它與其他 JMP 平台的工作方式不同。
為了預測新數據,您可能必須手動設置 val 列的值,如您鏈接的上一篇文章中所述,然後公式應該傳播。
希望這可以解決問題-如果沒有,請告訴我。很高興你正在推進這個!
拉斯