模型選擇、過擬合和欠擬合
訓練誤差和泛化誤差
在解釋上述現象之前,我們需要區分訓練誤差(training error)和泛化誤差(generalization error)。通俗來講,前者指模型在訓練資料集上表現出的誤差,後者指模型在任意乙個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以使用之前介紹過的損失函式,例如線性回歸用到的平方損失函式和softmax回歸用到的交叉熵損失函式。
機器學習模型應關注降低泛化誤差。
模型選擇
驗證資料集
從嚴格意義上講,測試集只能在所有超引數和模型引數選定後使用一次。不可以使用測試資料選擇模型,如調參。由於無法從訓練誤差估計泛化誤差,因此也不應只依賴訓練資料選擇模型。鑑於此,我們可以預留一部分在訓練資料集和測試資料集以外的資料來進行模型選擇。這部分資料被稱為驗證資料集,簡稱驗證集(validation set)。例如,我們可以從給定的訓練集中隨機選取一小部分作為驗證集,而將剩餘部分作為真正的訓練集。
k折交叉驗證
由於驗證資料集不參與模型訓練,當訓練資料不夠用時,預留大量的驗證資料顯得太奢侈。一種改善的方法是k折交叉驗證(k-fold cross-validation)。在k折交叉驗證中,我們把原始訓練資料集分割成k個不重合的子資料集,然後我們做k次模型訓練和驗證。每一次,我們使用乙個子資料集驗證模型,並使用其他k-1個子資料集來訓練模型。在這k次訓練和驗證中,每次用來驗證模型的子資料集都不同。最後,我們對這k次訓練誤差和驗證誤差分別求平均。
過擬合和欠擬合
接下來,我們將**模型訓練中經常出現的兩類典型問題:
一類是模型無法得到較低的訓練誤差,我們將這一現象稱作欠擬合(underfitting);
另一類是模型的訓練誤差遠小於它在測試資料集上的誤差,我們稱該現象為過擬合(overfitting)。 在實踐中,我們要盡可能同時應對欠擬合和過擬合。雖然有很多因素可能導致這兩種擬合問題,在這裡我們重點討論兩個因素:模型複雜度和訓練資料集大小。
模型複雜度
為了解釋模型複雜度,我們以多項式函式擬合為例。給定乙個由標量資料特徵x和對應的標量標籤y組成的訓練資料集,多項式函式擬合的目標是找乙個k階多項式函式
y^=b+∑k=1kxkwk
來近似 y。在上式中,wk是模型的權重引數,b是偏差引數。與線性回歸相同,多項式函式擬合也使用平方損失函式。特別地,一階多項式函式擬合又叫線性函式擬合。
給定訓練資料集,模型複雜度和誤差之間的關係:
image name
訓練資料集大小
影響欠擬合和過擬合的另乙個重要因素是訓練資料集的大小。一般來說,如果訓練資料集中樣本數過少,特別是比模型引數數量(按元素計)更少時,過擬合更容易發生。此外,泛化誤差不會隨訓練資料集裡樣本數量增加而增大。因此,在計算資源允許的範圍之內,我們通常希望訓練資料集大一些,特別是在模型複雜度較高時,例如層數較多的深度學習模型。
3 11 模型選擇 欠擬合和過擬合
前者指模型在訓練資料集上表現出的誤差,後者指模型在任意乙個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以使用之前介紹過的損失函式,例如線性回歸用到的平方損失函式和softmax回歸用到的交叉熵損失函式。由於驗證資料集不參與模型訓練,當訓練資料不夠用時...
模型過擬合與欠擬合
機器學習中,經常討論到的乙個話題就是泛化能力。泛化能力的強弱決定了模型的好壞,而影響泛化能力的則是模型的擬合問題。機器學習的目的並不是為了對訓練集的做出正確的 而是對沒有在訓練集中出現的資料進行正確的 但是對訓練集之外的資料 的前提是,模型在訓練集上的表現很好,基本可以滿足大部分資料的 這樣才會被用...
過擬合和欠擬合
嘗試不同的模型 既然有一種可靠的方法來測量模型精度,那麼可以嘗試使用其他模型,並檢視哪種模型可以提供最佳 但是對模型有什麼選擇?可以在scikit learn的文件中看到決策樹模型有很多選項 比您長期想要或需要的更多 最重要的選項決定了樹的深度。回想一下這個微課程的第一課,樹的深度是衡量它在進行 之...