對數據集訓練時,只對訓練集進行訓練還是都訓練?

吳曉普


如果要想對自己的數據集進行測試,那就需要對其進行訓練集,驗證集和測試集的劃分。

我們訓練機器學習模型,目的是使用已有數據來預測未知的數據,通常我們稱模型對未知數據的預測能力稱為泛化能力。為了評估一個模型的泛化能力,通常我們會將數據分成訓練集和測試集,訓練集用來訓練模型,測試集用來評估模型的泛化能力。

這裡有幾點需要注意:

通常將數據集的80%作為訓練集,20%作為測試集;

通常需要在開始構建模型之前把數據集進行劃分,防止數據窺探偏誤,也就是說我們避免瞭解太多關於測試集中的樣本特點,防止我們認為的挑選有助於測試集數據的模型,這樣的結果會過於樂觀,但是實際上並沒有預期的那樣優秀;

通常我們在構建模型的時候需要將數據進行處理,包括一些數據的清洗,數據的特徵縮放(標準化或者歸一化),此時我們只需要在訓練集上進行這些操作,然後將其在訓練集上得到的參數應用到測試集中,也就是說,在工作流程中,你不能使用在測試數據集上計算的得到的任何結果。比如:我們得到的屬性中可能有缺失值,因為在這些操作之前,我們已經把數據集分成了訓練集和測試集,通常的做法是通過計算屬性值的中位數來填充缺失值,注意此時計算屬性值的中位數是通過訓練集上的數據進行計算的,當我們得到一個模型的時候,如果想要測試模型的測試誤差來近似泛化誤差的時候,可能此時的測試集也會有一些缺失值,此時對應屬性的缺失值是通過訓練集計算的中位數來進行填充的。


分享到:


相關文章: