机器学习笔记七之机器学习诊断
本節目錄:
假設我們需要用一個線性模型來預測房價,當我們運用訓練好了的模型來預測未知數據的時候發現有較大的誤差,下一步可以做什么?
改進機器學習性能的方法:
嘗試減少特征的數量
嘗試獲得更多的特征
嘗試增加多項式特征
嘗試減少正則化程度
嘗試增加正則化程度
具體使用時,我們應該運用一些機器學習診斷法幫助我們了解哪些算法是有效的。
上述方法稱為 機器學習診斷法 。診斷法的意思是,這是一種測試法,你通過執行這種測試,能夠深入了解某種算法到底是否有用。這通常能夠告訴你,改進一種算法可以達到的效果,什么樣的嘗試才是有意義的。
1 評估假設
評估假設函數,以此為基礎討論如何避免過擬合和欠擬合問題。
當我們確定學習算法的參數的時候,我們考慮的是選擇參量來使訓練誤差最小化,有人
認為得到一個非常小的訓練誤差一定是一件好事,但我們已經知道,僅僅是因為這個假設具
有很小的訓練誤差,并不能說明它就一定是一個好的假設函數。而且我們也學習了過擬合假
設函數的例子,所以這推廣到新的訓練集上是不適用的。
那么,你該如何判斷一個假設函數是過擬合的呢?對于這個簡單的例子,我們可以對
假設函數?(𝑥)進行畫圖,然后觀察圖形趨勢,但對于特征變量不止一個的這種一般情況,還
有像有很多特征變量的問題,想要通過畫出假設函數來進行觀察,就會變得很難甚至是不可
能實現。
因此,我們需要另一種方法來評估我們的假設函數過擬合檢驗。
為了檢驗算法是否過擬合,我們將數據分成訓練集和測試集,通常用 70%的數據作為
訓練集,用剩下 30%的數據作為測試集。很重要的一點是訓練集和測試集均要含有各種類型
的數據,通常我們要對數據進行“洗牌”,然后再分成訓練集和測試集。
2 模型選擇和交叉驗證
4 診斷偏差和方差
當你運行一個學習算法時,如果這個算法的表現不理想,那么多半是出現兩種情況:要么是偏差比較大,要么是方差比較大。換句話說,出現的情況要么是欠擬合,要么是過擬合問題。那么這兩種情況,哪個和偏差有關,哪個和方差有關,或者是不是和兩個都有關?
能弄清楚怎樣評價一個學習算法,能夠判斷一個算法是偏差還是方差有問題,因為這個問題對于弄清如何改進學習算法的效果非常重要,高偏差和高方差的問題基本上來說是欠擬合和過擬合的問
題。
對于訓練集,當 𝑑 較小時,模型擬合程度更低,誤差較大;隨著 𝑑 的增長,擬合程度提高,誤差減小。
對于交叉驗證集,當 𝑑 較小時,模型擬合程度低,誤差較大;但是隨著 𝑑 的增長,誤差呈現先減小后增大的趨勢,轉折點是我們的模型開始過擬合訓練數據集的時候。
如果我們的交叉驗證集誤差較大,我們如何判斷是方差還是偏差呢?根據上面的圖表,我們知道:
4 正則化和偏/方差
選擇𝜆的方法為:
1.使用訓練集訓練出 12 個不同程度正則化的模型
2.用 12 個模型分別對交叉驗證集計算的出交叉驗證誤差
3.選擇得出交叉驗證誤差最小的模型
4.運用步驟 3 中選出模型對測試集計算得出推廣誤差,我們也可以同時將訓練集和交叉驗證集模型的代價函數誤差與 λ 的值繪制在一張圖表上:
5 學習曲線
使用學習曲線來判斷某一個學習算法是否處于偏差、方差問題。學習曲線是學習算法的一個很好的合理檢驗(sanity check)。學習曲線是將訓練集誤差和交叉驗證集誤差作為訓練集實例數量(𝑚)的函數繪制的圖表。
即,如果我們有 100 行數據,我們從 1 行數據開始,逐漸學習更多行的數據。思想是:當訓練較少行數據的時候,訓練的模型將能夠非常完美地適應較少的訓練數據,但是訓練出來的模型卻不能很好地適應交叉驗證集數據或測試集數據。
也就是說在高偏差/欠擬合的情況下,增加數據到訓練集不一定能有幫助。
6 小結
本節我們可以得到這樣的結論:
使用較小的神經網絡,類似于參數較少的情況,容易導致高偏差和欠擬合,但計算代價較小使用較大的神經網絡,類似于參數較多的情況,容易導致高方差和過擬合,雖然計算代價比較大,但是可以通過正則化手段來調整而更加適應數據。
通常選擇較大的神經網絡并采用正則化處理會比采用較小的神經網絡效果要好。
對于神經網絡中的隱藏層的層數的選擇,通常從一層開始逐漸增加層數,為了更好地作選擇,可以把數據分為訓練集、交叉驗證集和測試集,針對不同隱藏層層數的神經網絡訓練神經網絡, 然后選擇交叉驗證集代價最小的神經網絡。
總結
以上是生活随笔為你收集整理的机器学习笔记七之机器学习诊断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KDE/QT vs GNOME/GTK
- 下一篇: 设置GNOME或者KDE为默认的启动桌面