為了建立可靠的機器學習模型,資料集的拆分是不可或缺的。拆分過程包括將資料集分為訓練集、驗證集和測試集。本文旨在詳細介紹這三個集合的概念、資料拆分的技術以及容易出現的陷阱。
#訓練集
訓練集是用於訓練和使模型學習資料中隱藏的特徵/模式的資料集。
在每個epoch中,相同的訓練資料被重複輸入神經網路架構,模型繼續學習資料的特徵。
訓練集應該具有多樣化的輸入集,以便模型在所有場景下都得到訓練,並且可以預測未來可能出現的資料樣本。
驗證集
驗證集是一組數據,與訓練集分開,用於在訓練期間驗證模型效能。
此驗證程序提供的資訊可協助調整模型的超參數和配置。該模型在訓練集上進行訓練,同時,在每個epoch之後對驗證集進行模型評估。
將資料集拆分為驗證集的主要目的是防止模型過度擬合,即該模型非常擅長對訓練集中的樣本進行分類,但不能對沒有見過的數據進行泛化和準確分類。
測試集
測試集是一組單獨的數據,用於在完成訓練後測試模型。它在準確度、精確度等方面提供了一個無偏的最終模型性能指標。簡單來說,測試集可反映出模型的效能。
在資料集中建立不同的樣本和分割有助於判斷真實模型的效能。資料集拆分率取決於資料集中存在的樣本數量和模型。
資料集拆分常見推論
如果有多個超參數需要調整,機器學習模型需要更大的驗證集來最佳化模型性能。同樣,如果模型的超參數較少或沒有超參數,則可以輕鬆使用一小組資料來驗證模型。
如果模型用例導致錯誤預測會嚴重影響模型效能,則最好在每個時期後驗證模型以使模型學習不同的場景。
隨著資料維度/特徵的增加,神經網路函數的超參數也隨之增加,使得模型更加複雜。在這些情況下,應將大量資料與驗證集一起保存在訓練集中。
1.隨機抽樣
隨機抽樣是最古老和最受歡迎的劃分資料集的方法。顧名思義,資料集被打亂,樣本被隨機挑選並根據使用者給出的百分比放入訓練、驗證或測試集中。
然而,這種方法有一個明顯的缺點。隨機抽樣在類別平衡資料集上效果最佳,即每個資料集類別中樣本數量大致相同的資料集。在類別不平衡資料集的情況下,這種資料拆分方法可能會產生偏差。
2.分層抽樣
分層抽樣緩解具有不平衡類別分佈的資料集中的隨機抽樣問題。可以保留每個訓練集、驗證集和測試集中的類別分佈。分層抽樣是一種更公平的資料拆分方式。
3.交叉驗證
交叉驗證或K-Fold交叉驗證是一種更強大的資料分割技術,其中對不同樣本訓練和評估模型“K”次。
使用K-Fold交叉驗證將機器學習模型暴露給不同的資料分佈。一定程度上減輕了在訓練和驗證集中選擇資料時可能出現的偏差。在使用K-Fold交叉驗證方案時,通常會報告平均值和標準差值。
因此K-Fold交叉驗證也存在與隨機抽樣相同的問題,資料分佈可能會出現偏差。可以使用分層,在產生資料的「K」個子集或部分時,保持資料的類比。
1.使用低品質的訓練資料
#由於機器學習演算法對訓練資料很敏感,即使訓練集中的微小變化/錯誤也會導致模型效能出現重大錯誤。因此訓練資料的品質對於提高模型效能至關重要。
2.過度擬合
當機器學習模型無法對未知的資料進行分類時,就會發生過度擬合。訓練資料中的雜訊或波動被視為特徵並由模型學習。這導致模型在訓練集中表現出色,但在驗證和測試集中表現不佳。
3.過度強調驗證和測試集指標
#驗證集度量是決定模型訓練路徑的量測。在每個時期之後,機器學習模型都會在驗證集上進行評估。根據驗證集指標,計算對應的損失項,修改超參數。應選擇指標,以便它們對模型性能的整體軌跡產生積極影響。
#以上是資料拆分的技術與陷阱-訓練集、驗證集與測試集的使用方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!