十 機器學習的實用建議和指導

2021-10-13 13:09:13 字數 2935 閱讀 4032

2 模型選擇

3 判斷過擬合與欠擬合

4 如何選擇正則化係數

5 學習曲線

6 來點實際應用

如果在測試集上誤差很大,我們有以下幾種方法來嘗試減小誤差:

但是很多時候選擇以上哪一種方法是憑感覺的,這可能會浪費很多時間,以下我們將介紹幾種方法,讓我們提高效率

我們用訓練集的誤差來評估,訓練集一般是從整體資料集中隨機選出來的30%的資料點。

本節來討論如何確定正則化引數λ,如何確定回歸多項式的次數,該選用哪些特徵來構建學習演算法

假設我們要做乙個多項式回歸,但是不知道該用幾次多項式來作為回歸模型,可能的選擇有d=1, 2, 3, …, 10,這個多項式次數d可以看做是乙個多出來的引數。

×以下三步是錯誤做法

首先我們針對每個種多項式的次數用訓練集擬合出來乙個引數向量θ(d)

對以上擬合出來的每一組θ(d),在測試集上計算其誤差jtest(θ(d))

選擇誤差最小的模型。

但是通過這個測試集選出的模型引數不能代表這個模型真正的泛化能力,這是因為我們用測試集擬合了未定的引數d,也就是我們選擇了在測試集上表現最好的d,很可能是對泛化能力的過於樂觀的估計,未來沒見過的樣本才是d真正的測試集

所以我們將手中的樣本分為三個部分:

我們就有了在三個集上的誤差:

有了新的資料集分類,我們重新進行模型選擇的步驟:

下圖表示在進行擬合時方差(交叉驗證集上)和偏差(訓練集上)隨著擬合多項式次數d的變化趨勢。

如果λ選擇太小,則會出現過擬合,若λ選擇太大,則會出現欠擬合(因為過度簡化模型了)。

我們令λ從0開始逐漸增大,λ=0, 0.1, 0.2, 0.4, 0.8, 1.6, …,在訓練集上分別訓練出θ(1), θ(2), θ(3),……,帶入交叉驗證集上去計算jcv(θ(i)),選擇最小的jcv(θ(i))對應的λ,假設這裡選擇θ(5)。

注:這裡的交叉驗證集其實是λ的訓練集,而λ和θ的泛化能力是靠測試集檢驗的。

若我們的模型如下圖所示:

注意:我們此處定義了一種訓練結束後衡量訓練集誤差的項jtrain(θ)

則隨著λ的變化,jtrain(θ)和jcv(θ)的變化趨勢是:

在λ較小時能很好擬合訓練集,因為懲罰項很小,故偏差很小,λ增大,則在訓練集上的表現變差。而不論λ過大還是過小,在交叉驗證集上都會令代價函式取得較大的值。

用來判斷模型是否陷入了高方差或者是偏差

假設我們用二次函式來對m個資料點進行擬合。

當訓練集樣本數m較小時,用二次函式能較好的進行擬合,偏差較小,而隨著訓練集增大,二次函式開始愈來愈難擬合所有的樣本點了,偏差開始增大。

而當樣本點較少時,擬合出的模型不具有很好的泛化效能,因此在交叉驗證集上表現出較大的方差,而樣本點較多時,泛化效能會提高。

因為引數很少,當資料點很多時,驗證集上的誤差和訓練集上的誤差將會很接近。

並且此時驗證集上的誤差和訓練集上的誤差都很大,因為用二次多項式對該樣本進行擬合顯然次數不夠,這與3中的-曲線反應的高偏差(欠擬合)的情況相一致。

這說明,當我們的模型處在高偏差(bias)之中時,即使增大訓練集,增大樣本個數,對誤差(error)的減小也是無用的。

此時驗證集上的誤差很大,訓練集上的誤差很小,此時發生了過擬合,這與3中的曲線反應的高方差(過擬合)的情況相一致。

但是如果我們繼續增大樣本數,jcv會逐漸下降,jtrain會逐漸增大,並趨於一致。這說明,當我們的模型處在高方差(variance)之中時,增大訓練集,增大樣本個數,對驗證集上誤差(error)的減小是有幫助的。

假設我們正在使用正則化線性回歸去**乙個房子的房價,但是你訓練出的模型在測試集上出現了很大的誤差。你有以下解決方案:

增大訓練集→可以解決高方差問題

減小訓練集→可以解決高方差問題

增加特徵數→解決高偏差問題

增加多項式的項數(x1

2, x1x2…)→解決高偏差問題

增大λ→解決高偏差問題(個人感覺說反了,是解決高方差的過擬合問題)

減小λ→解決高方差問題(個人感覺說反了,是解決高偏差的欠擬合問題)

一般來講網路越複雜越好,但是這樣會增大計算量,並且出現過擬合問題(加入正則化項來解決)。

一般用單隱層神經網路,但實際應用中可以用交叉驗證集的方法來試驗幾個隱層的神經網路效果最好。

機器學習入門 應用機器學習的建議

機器入門系列文章中,我已經根據課程,介紹了許多演算法,比如線性回歸 logistic回歸,以及神經網路,等等。而針對具體的問題,我們採取了某種演算法,實現後,發現效果不好,需要改進。有些時候需要增加資料量,有些時候則不需要 我們需要評估乙個模型的好壞,從而比較選出更優者 或者根據模型出現的問題,提出...

Coursera 應用機器學習的建議

偏差方差權衡 損失函式和收斂情況 誤差分析和銷蝕分析對順序敏感,所以需要經過多次試驗。訓練集 交叉驗證集和測試集 訓練集是用來學習的樣本集,通過匹配一些引數來建立乙個分類器。驗證集是用來調整分類器的引數的樣本集,比如在神經網路中選擇隱藏單元數。驗證集還用來確定網路結構或者控制模型複雜程度的引數。測試...

ML學習十 應用及其學習的建議

當我們運用訓練好了的模型來 未知資料的時候發現有較大的誤差,我們下一步可以做什麼 下面是幾種方法 我們不應該隨機選擇上面的某種方法來改進我們的演算法,而是運用一些機器學習診斷法來幫助我們知道上面哪些方法對我們的演算法是有效的。我們將以此為基礎來討論如何避免過擬合和欠擬合的問題。為了檢驗演算法是否過擬...