回覆列表
  • 1 # 資料邊際Margin

    當然是對訓練集進行訓練。當你把在訓練集上訓練好的模型調參完畢時,再拿到測試集上進行測試,看看是否出現過擬合或者欠擬合的情況,如果出現,再回頭調整。

    訓練集

    這個是最好理解的,用來訓練模型內參數的資料集,Classfier直接根據訓練集來調整自身獲得更好的分類效果

    驗證集

    用於在訓練過程中檢驗模型的狀態,收斂情況。驗證集通常用於調整超引數,根據幾組模型驗證集上的表現決定哪組超引數擁有最好的效能。

    同時驗證集在訓練過程中還可以用來監控模型是否發生過擬合,一般來說驗證集表現穩定後,若繼續訓練,訓練集表現還會繼續上升,但是驗證集會出現不升反降的情況,這樣一般就發生了過擬合。所以驗證集也用來判斷何時停止訓練

    測試集

    測試集用來評價模型泛化能力,即之前模型使用驗證集確定了超引數,使用訓練集調整了引數,最後使用一個從沒有見過的資料集來判斷這個模型是否Work。

    三者區別

    形象上來說訓練集就像是學生的課本,學生 根據課本里的內容來掌握知識,驗證集就像是作業,透過作業可以知道 不同學生學習情況、進步的速度快慢,而最終的測試集就像是考試,考的題是平常都沒有見過,考察學生舉一反三的能力。

    為什麼要測試集

    訓練集直接參與了模型調慘的過程,顯然不能用來反映模型真實的能力,這樣一些 對課本死記硬背的學生(過擬合)將會擁有最好的成績,顯然不對。同理,由於驗證集參與了人工調參(超引數)的過程,也不能用來最終評判一個模型,就像刷題庫的學生也不能算是學習好的學生是吧。所以要透過最終的考試(測試集)來考察一個學(模)生(型)真正的能力。

  • 2 # 資料技術博文

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

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

    這裡有幾點需要注意:

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

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

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

  • 中秋節和大豐收的關聯?
  • 衛生間頂面處掉白色晶體是什麼?