訓練集,驗證集,測試集

2021-09-11 04:31:30 字數 1339 閱讀 1294

普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。超引數是指訓練開始之前設定的引數,不在梯度下降的更新範圍內,比如網路層數、網路節點數、迭代次數、學習率等等.

1.訓練集

確定模型後,用於訓練普通引數

2.驗證集(交叉驗證集cv)

驗證集在每個epoch訓練完成後,用來測試一下當前模型的準確率,初步評估模型的能力,從而調整模型的超引數。因為驗證集跟訓練集沒有交集,因此這個準確率是可靠的。從狹義來講,驗證集沒有參與梯度下降的過程,也就是說是沒有經過訓練的;但從廣義上來看,驗證集卻參與了乙個「人工調參」的過程,我們根據驗證集的結果調節了迭代數、調節了學習率等超引數,使得結果在驗證集上最優。

3.測試集

雖然驗證集沒有對模型的引數產生影響,但是我們卻根據驗證集的測試結果的準確度來調整超引數,所以驗證集對結果還是有影響的,使得模型在驗證集上達到最優。就是在很多個模型中,驗證集選擇了代價函式最小的乙個模型。雖然在這個模型上代價很小,但並不代表在其他資料上代價也小。所以需要乙個完全沒有經過訓練的測試集,用來評估模最終模型的泛化能力。

類別驗證集測試集

是否參與訓練

nono

作用用於調超引數,監控模型是否發生過擬合(以決定是否停止訓練)

評估最終模型泛化能力

使用次數

多次使用,以不斷調參

僅僅一次使用

缺點模型在一次次重新手動調參並繼續訓練後所逼近的驗證集,可能只代表一部分非訓練集,導致最終訓練好的模型泛化效能不夠.

測試集為了具有泛化代表性,往往資料量比較大,測試一輪要很久,所以往往只取測試集的其中一小部分作為訓練過程中的驗證集.

乙個形象的比喻:

訓練集-----------學生的課本;學生根據課本裡的內容來掌握知識。

驗證集------------作業,通過作業可以知道不同學生學習情況、進步的速度快慢。

測試集-----------考試,考的題是平常都沒有見過,考察學生舉一反三的能力。

傳統上,一般三者切分的比例是:8:1:1,驗證集並不是必須的。這個規則是建立在資料集比較小的情況下,例如只有1w條資料或者更小。 在大資料時代小,我們一般面臨的都是百萬級甚至億級的資料量。這時候的拆分規則就會變化一下。比如我們有一百萬行的資料,那麼這時候的拆分就不能按照8:1:1來了。 可能是98:1:1的規則比較合適,因為百萬級的資料即便只有1%也有一萬行,用來評估模型效果已經有了比較不錯的效果。把更多的資料留給training set來獲得更好的模型是比較好的選擇。

訓練集 驗證集 測試集

訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...

訓練集 測試集 驗證集

訓練集 用來訓練和擬合模型。驗證集 當通過訓練集訓練出多個模型後,使用驗證集資料糾偏或比較 測試集 模型泛化能力的考量。泛化 對未知資料的 能力 from sklearn.model selection import train test split import numpy as np from ...

訓練集 驗證集 測試集

用途 資料集train 訓練 訓練集validation test 驗證 驗證集test evaluate 測試 評估 測試集現在測試集和驗證集分的都不太清楚,每個人叫法不同,驗證集通常可以從測試集中選出一小部分。用python劃分資料集 import os path o rgb list fold...