測試集的細微差異
測試資料集這個領域的發展雖然相對資淺,也因此在運用方式和時機方面往往會有爭議,但仍被認為是機器學習大部分層面的最佳做法。 讓我們先看一些要考慮的事項。
測試資料集可能會造成誤導
雖然測試資料集有助於識別過度學習,但可能會讓我們獲得虛假的信心。 具體而言,測試資料集只有在能夠反映我們預期會在真實世界中看到的情形時才真的有用。 例如,我們的測試集非常小,無法代表在真實世界中可能會看到的各種資料。 測試資料集最多也只會和其來源一樣好。 如果我們的測試資料集來自有偏差的來源,所得到的計量將不會反映真實世界中發生的情況。
例如,假設我們想要找出搜救次數與犬隻開始接受訓練的年齡之間有何關聯性。 如果我們的測試資料集只有三隻狗,這三隻狗可能無法代表真實世界中的各種工作犬。 此外,想像一下我們從一個飼養機構獲得測試集,但他們不知道如何處理幼犬。 我們的模型可能會預測年齡較大的犬隻最適合訓練,而我們的測試資料集會確認這一點,但事實上,其他訓練單位卻可能在年齡較小的犬隻上獲得巨大成功。
測試資料集不是免費的
我們已經發現,訓練資料越多,我們的模型就越不可能過度適用。 同樣地,測試資料集越大,我們越會覺得測試結果值得信賴。 不過,我們使用的資料量通常有限,而資料點不能同時在訓練集和測試集內。 這表示當我們取得的測試資料集越大,所取得的訓練資料集就會越小,反之亦然。 確切要過濾多少資料才能在測試資料集中使用,須視個別情況而定,但根據可用的資料量而定,常見的範圍是 10-50%。
訓練和測試並非唯一的方法
值得注意的是,訓練和測試雖很常見,卻不是唯一廣泛使用的方法。 其中兩個較常見的替代方案是留出法和統計法。
留出方法
留出法就像「訓練與測試」,但不會將資料集分割成兩個部分,而是會分成三個部分:訓練、測試 (也稱為驗證) 和留出。訓練與測試資料集如先前所述。 留出資料集是一種測試資料集,只會在我們準備好將模型部署到真實世界運作時使用一次。 換句話說,要等到我們使用過各種的訓練方式、各種模型等項目完成實驗後,才會用到留出資料集。
這種方法能夠應對我們通常會使用不同的模型和訓練方式來進行實驗的情況。 例如,我們調整模型、發現它在測試資料集的效果不好、變更訓練中模型的某些方面,然後再試一次,直到獲得良好的結果為止。 這表示我們特地改變我們的模型,以配合一組特定的資料,就和常見的訓練在使用訓練資料集時一樣。 藉由這樣做,我們最終可能獲得本質上太過度訓練的模型,無法用在我們的測試資料集上。
第三個資料集的概念是,我們也可以對此進行測試。 這種方法表示我們要以三種方式分割資料,也就是說,我們要用更少的訓練資料來開始訓練。 如果我們沒有大量資料可供使用,這種方法會讓我們比較無法獲得優秀的模型。
統計方法
源自統計資料的簡化模型通常不需要測試資料集。 相反地,模型過度學習的程度可直接以統計顯著性來計算:也就是 p-值。
這些統計方法威力強大、眾所周知,而且是現代科學的基礎。 其好處是不需要分割訓練集,並可讓我們更精確地了解我們可以多信賴模型。 例如,p 值為 0.01 表示,有極小的可能是模型發現真實世界中實際上並不存在的關聯性。 相反地,p 值為 0.5 則表示,雖然模型使用訓練資料時效果不錯,但和在真實世界中丟銅板決定的機率差不多。
這些方法的缺點是,它們只會輕易地運用在某些模型類型,例如我們練習過的線性回歸模型。 除了最簡單的模型外,這些計算可能會極度複雜而無法正確執行,因此不是當前的課程所要討論的內容。 這些計算也受到資料選取上相同的限制,如果訓練資料有偏差,p 值就會產生誤導。