優化模型性能:產品經理需要了解的數據劃分與評估策略

0 評論 1112 瀏覽 4 收藏 9 分鐘

如何做好模型的性能評估?我們不妨從兩個關鍵階段來切入探討。這篇文章里,作者就做了對應的解讀,并闡述了在訓練過程中可能遇到的數據泄露問題和相關解決方案,一起來看一下吧。

01

在機器學習的世界里,模型的性能評估是至關重要的。本文將深入探討評估模型性能的兩個關鍵階段,并揭示在訓練過程中可能遇到的數據泄露問題及其解決方案。

1. 模型開發階段和調整階段的性能評估

在這個階段,可能會嘗試不同的機器學習算法,或者對選定的算法進行超參數調整(即調整模型的“表盤”,這里的表盤是一個比喻,指的是模型的內部參數,如學習率、樹的深度等)。在每次嘗試或調整后,都需要評估模型性能,以便了解這些變化是否提高了模型的預測能力。

這通常在驗證集上進行評估來實現。驗證集是從原始訓練數據中分離出來的,用于在模型訓練過程中評估模型性能的數據集。這樣做的目的是確保在優化模型時,實際上是超者提高性能方向前進,而不是讓模型過擬合或性能下降。

2. 模型最終確定后的性能評估

一旦確定了模型的參數和結構(即模型“最終確定”),需要在完全獨立的測試集上評估模型的性能。測試集包含了模型在訓練過程中從為見過的數據,有助于評估模型在實際應用中的泛化能力。這個階段的性能評估是為了驗證模型在面對新數據時的表現, 確保模型不僅在訓練數據上表現良好,也能在實際應用中準確預測。

3. 模型的數據劃分

在模型開發和調整階段,模型進行訓練之前,就需要從測試集中分離出一份驗證集,這樣做的目標就是為了確保驗證集數據在整個模型訓練過程中不會被模型接觸到,從而保證驗證集能夠提供一個獨立的評估環境。即使在模型進行參數或結構調整,優化模型性能的多輪迭代中,使用的也是同一份驗證集。

但是在交叉驗證中,則不成立。在交叉驗證中,訓練集被劃分成若干分相同的數據量的數據集,每個部分輪流作為驗證集,其他作為測試集。

02

上文也提了在模型優化多輪迭代中,使用同一份驗證集的問題。這在傳統的機器學習中,會存在一個潛在問題,即在多輪迭代優化中使用同一份驗證集可能會導致模型“記住”驗證集的數據,這被稱為信息泄露(Information Leakage)。

為了避免這種情況,通常會在每次迭代中使用不同的驗證集,或者采用交叉驗證的方式(小數量集數據訓練模型時選擇交叉驗證更優)。

下面說說數據集的一般步驟:

  • 數據預處理:在任何模型訓練之前,首先對整個數據集進行清洗、特征工程等預處理步驟。
  • 劃分數據集:將預處理后的數據集按照一定比例(如常見的60%訓練集,20%驗證集,20%測試集)劃分訓練集。這個過程是在模型訓練之前完成的,以確保數據集的隨機性和獨立性。
  • 訓練模型:使用訓練集數據來訓練模型,這個階段,模型只會接觸到訓練集中的數據。
  • 驗證模型:在模型訓練完成后,使用驗證集數據來評估模型的性能。這個過程中,模型會嘗試對驗證集中的數據進行預測,但不會影響模型的訓練過程 。
  • 調整模型:根據驗證集上的表現,可能需要調整模型的超參數或結構。這個過程可能會多次進行,每次都使用驗證集來評估調整后模型的性能。
  • 最終評估:在確定了最佳模型后,使用測試集來對模型進行最終評估。測試集數據在整個過程中都不會被模型接觸到,因此它提供了一個最接近實際應用場景的評估。

而在訓練模型階段會產生一個比較嚴重的問題-數據泄露(Data Leakage)。它指的是在訓練模型的過程中,模型意外接觸到了本應該在測試階段才出現的數據或信息。而這種情況的出現一般發生在數據準備和預處理階段,訓練集和測試集數據之間的界限被破壞時。

數據泄露的具體表現可能包括:

  • 特征泄露:訓練模型時使用了測試集中的特征,或者在特征工程中,使用了未來信息(比如,時間序列數據中的未來的值),導致模型在訓練集上的表現被高估,而在實際應用中性能下降。
  • 統計信息泄露:在訓練過程中使用了測試集的統計信息(如均值、標準差等)來調整模型參數,這使得模型在測試集上的表現被高估 。
  • 模型參數泄露:在模型選擇或超參數調整過程中,使用了測試集的信息,導致模型對測試集的過擬合。

以下補充說明一些特征泄露示列:

1)時間戳泄露

假設你有一個包含過去幾年房產交易數據的數據集,其中每個交易記錄都有一個時間戳(日期)。如果你在訓練模型時,不小心將這些時間戳作為特征輸入,并且這些時間戳包含了未來房價變動的信息,那么模型可能會學習到這些未來信息,從而在訓練集上表現得很好。

這并不意味著模型真正理解了房價變動的內在規律,因為它依賴的是未來信息,而不是基于當前和過去的數據來預測未來。

2)未來數據泄露

如果是預測明天的天氣,在訓練模型時,你不小心將后天的天氣預報作為特征輸入。模型可能會學會基于后天的天氣來預測明天的天氣,這顯然是不合理的,因為模型在實際應用中無法預知未來幾天的天氣。

3)數據清洗錯誤

在處理數據時,可能會發現某些異常值或錯誤數據,并決定將它們從數據集中移除。然而,如果這些異常值在測試集中仍然存在,而模型在訓練時已經“學會”了忽略這些值,那么在測試集上模型可能會表現不佳,因為它沒有學會如何處理這些真實的異常情況 。

4)第三方信息

假設正在構建一個預測用戶是否會購買某個產品的模型。在訓練過程中,不小心將用戶在社交媒體上的活動數據(如點贊、分享等)作為特征。這些數據可能包含了用戶購買意愿的線索,但這些信息在用戶實際購買行為發生之前是不可用的。這樣,模型在訓練集上的表現可能會很好,但在實際應用中,由于缺乏這些社交媒體數據,模型的預測能力會下降。

總結一下,為了解決這些問題,我們需要確保數據集的正確劃分,并且在訓練和驗證過程中嚴格遵守這些劃分。此外,交叉驗證和定期更換驗證集也是預防數據泄露的有效策略。

本文由 @陶培林 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!