Machine-Learning

為什麼我和我的同事對測試集和驗證集的定義相反?

  • May 24, 2021

在我的碩士課程中,我了解到在構建 ML 模型時:

  1. 在訓練集上訓練模型
  2. 將其性能與驗證集進行比較
  3. 調整設置並重複步驟 1-2
  4. 當您滿意時,將最終模型與測試(保留)集進行比較

當我開始作為 DS 工作時,我提出了一個關於測試集和驗證集大小的問題,因為看起來好像有人給它們貼錯了標籤。這引起了混亂,因為顯然其他人都使用了第 2 步中的“測試”集,並為第 4 步保留了“驗證”集。

我以為我學錯了,沒有造成任何傷害,因為我只是將術語轉換為一致。但是,我在重新研究一些深度學習書籍時發現,根據 Keras 的創建者的說法,我一直都是對的!就在我寫這個問題之前,我發現這個問題表明測試/驗證集的其他定義是正確的……

這是約定好的事情嗎?經典機器學習方法和深度學習從業者之間是否存在關於正確術語的分歧?據我所知,沒有人真正討論過一些統計學家/數據科學家如何對這兩個術語使用完全相反的定義。

對於機器學習,我主要看到了 OP 描述的用法,但我也遇到了很多來自這種用法的困惑。


從歷史上看,我猜發生的事情(至少在我的領域,分析化學)是隨著模型變得越來越複雜,在某些時候人們注意到驗證和確認需要獨立的數據(在我們的術語中,幾乎所有的測試都是例行的完成模型將被視為驗證的一部分,而驗證又是更廣泛的方法驗證任務的一部分)。輸入驗證集和方法,例如交叉驗證(其最初目的是估計泛化誤差)。

後來,人們開始使用我們稱之為內部驗證/驗證的泛化誤差估計,例如交叉驗證或隨機拆分來改進/優化他們的模型。輸入超參數調整。

再次,人們意識到估計精化模型的泛化誤差需要獨立的數據。並且還需要一個新名稱,因為已經建立了對用於精煉/優化的數據的“驗證集”的使用。輸入測試集。

因此,我們遇到了所謂的驗證集用於模型開發/優化/細化的情況,因此不再適合用於模型驗證和驗證的目的。


具有例如分析化學(或工程)背景的人肯定會將他們為方法驗證目的使用/獲取的數據作為他們的驗證數據* - 這是這些領域中術語的正確用法。

*(除非他們知道機器學習中術語的不同用法,在這種情況下,他們通常會解釋他們到底在說什麼)。


就個人而言,為了避免由於領域之間的術語衝突而導致的持續混亂,我已經開始使用“優化數據/集”來處理用於超參數調整的數據(Andrew Ng 的開發集也適合我)以及最終獨立測試數據的“驗證數據/集”(我們通常所做的測試實際上是驗證而不是驗證,因此避免了另一個常見錯誤:我們通常所做的測試甚至不接近分析化學中的完整方法驗證,很高興知道這一點)

我發現有助於避免混淆的另一個策略是從拆分為 3 個數據集回到拆分為訓練和驗證數據,然後將超參數調整描述為訓練過程的一部分,其中恰好包括另一個拆分為用於擬合模型的數據用於優化超參數的參數和數據。

引用自:https://stats.stackexchange.com/questions/525697

comments powered by Disqus