當咱們運用訓練好了的模型來預測未知數據時候發現有較大偏差,那麼咱們下一步能夠作什麼呢?算法
通常來講能夠選擇如下幾種方法:網絡
可是要選擇什麼方法來改進咱們的算法,咱們須要運用一些機器學習診斷法來協助咱們判斷。機器學習
1、評估h(x) ---- Evaluating a Hypothesis函數
一個好的Hypothesis:有小的訓練偏差同時沒有過擬合性能
咱們的訓練是經過最小化訓練偏差來獲得h(x), 可是有小的訓練偏差並不表明它必定就是一個好的Hypothesis,極可能會發生過擬合致使泛化能力差。學習
過擬合檢驗:測試
把數據集分紅訓練集(70%)和測試集(30%)lua
用訓練集訓練出一個模型以後,咱們經過測試集來評估這個模型spa
2、模型選擇和交叉驗證集 ---- Model Selection and Train_Validation_Test set3d
當咱們不肯定多項式模型最高該幾回或者正則化參數應該取多大的時候,咱們可使用交叉驗證集來幫助選擇模型。(微調模型的超參數:多項式最高次,正則化參數)
交叉驗證(cross validation):
數據集:訓練集(60%),交叉驗證集(20%), 測試集(20%)
模型選擇過程(model selection):
不少人僅僅把數據集分紅了訓練集和交叉驗證集,使用交叉驗證集選擇模型同時測出偏差做爲預測效果。當數據集很大時也許能夠獲得比較好的泛化偏差,可是通常來講這樣並很差。
3、診斷誤差和方差 ---- Diagnosing Bias and Variance
當一個模型表現不是很好時,通常來講是兩種狀況:誤差比較大(欠擬合),方差比較大(過擬合)。
泛化性能用指望泛化偏差表示,而指望泛化偏差能夠分解爲誤差,方差和噪聲。
Bias:描述的是預測值與真實值之間的差距。
Variance:描述的是預測值的變化範圍,離散程度,也就是離其真實值的距離。
誤差度量了學習算法的指望預測與真實結果的偏離程度,即刻畫了學習算法自己的擬合能力;(準確性)
方差度量了一樣大小的訓練集的變更所致使的學習性能的變化,即刻畫了數據擾動所形成的影響;(穩定性)
判斷誤差和方差(多項式次數及λ的值):
咱們經過將訓練集和交叉驗證集的代價函數偏差與多項式的次數繪製在同一張圖表上來分析
如表所示,當Jcv(Θ)和Jtrain(Θ)都比較大並且近似時,屬於高誤差問題。(欠擬合)
當Jtrain(Θ)比較小,並且Jcv(Θ)遠大於Jtrain(Θ)時,屬於高方差問題。(過擬合)
一樣的,咱們將訓練集和交叉驗證集的代價函數偏差與λ的值繪製在同一張圖表上來分析(在選擇模型時,λ的值通常取兩倍步長)
注意:這裏咱們在計算訓練集偏差、驗證集偏差和測試集偏差時都不考慮正則化項(只包含數據的平方偏差)。
能夠看出,當λ比較小時,可能出現過擬合問題(高方差),此時訓練集偏差比較小,驗證集偏差比較大。
當λ比較大時,對每一個參數的懲罰因子都很大,可能出現欠擬合問題(高誤差),此時訓練集偏差和驗證集偏差都比較大。
4、學習曲線 ---- Learning Curves
訓練集大小的影響:
對於高誤差的狀況,增長訓練集並無用
對於高方差的狀況,增長訓練集也許是有用的;
6、針對高方差和高誤差的狀況能夠採起的措施
對於神經網絡,越簡單的神經網絡計算量小可是容易欠擬合。相反的,越複雜的神經網絡容易過擬合,但咱們可使用正則化項來克服過擬合,通常來講用複雜的神經網絡比簡單的神經網絡效果好,固然計算量比較大。對於隱藏層數量的選擇,通常來講一層是比較合理的選擇,可是你想要從一層、兩層、三層...裏面作最合理的選擇,能夠用交叉驗證集作模型選擇。