時序資料「隨機切分」=訓練集偷看未來,離線分數虛高、上線見光死。切換三種切法,親眼看洩漏怎麼發生、Walk-Forward 滾動窗怎麼做才對。
① 隨機切分:適合「彼此獨立」的資料(一人一筆的表格);時序用它=洩漏。
② 依時間切分:最後一段當測試(如最後 12 天)——最貼近上線情境的單次評估。
③ Walk-Forward/TimeSeriesSplit:多輪滾動——第 1 輪用 Day1–24 訓練、Day25–36 驗證;第 2 輪擴到 Day1–36 訓練、Day37–48 驗證……每輪都只用過去推未來,評估既穩又無偏。
隨機切分讓訓練集混入測試日附近(甚至更晚)的資料,模型間接「看過答案的鄰居」;上線時沒有未來可看,效能現形。
TimeSeriesSplit/Walk-Forward 滾動窗:訓練期永遠早於驗證期。不能用隨機 K-fold,也不是 StratifiedKFold 的事。
依時間切:以最後一段期間(如最近 3 個月)作測試集,並確保特徵在「預測時點」都拿得到(無事後欄位)。
中級科目二、三連兩屆考「隨機切分時序→上線崩」情境(門市營收、盜刷預測、零售銷量);正解關鍵字=「依時間先後切分」「Walk-Forward/前進式驗證」「滾動窗」。常與資料洩漏、目標洩漏混合出題。
擴張窗(expanding)訓練集從頭累積越來越長;滾動窗(rolling)固定長度往前滑。趨勢穩定用擴張、環境變快用滾動。
切分時不可以(會洩漏);但「切好之後」訓練集內部的 batch 順序打亂通常沒問題(視模型而定,RNN 序列樣本除外)。
要:訓練 → 驗證 → 測試依時間先後排列,測試永遠是最未來的一段。