#Deciding what to try next?(決定下一步做什麼)
如何改進算法?
- 使用更多訓練樣本(但有時候沒有用)
- 嘗試使用更少的特徵(仔細挑選一小部分來防止過擬合)
- 使用更多特徵
- 增加多項式特徵
- 增加或減小正則化參數λ
#Evaluationg a hypothesis(評估假設)
僅僅因爲一個假設具有很小的訓練誤差並不能說明它一定是一個好的假設。
#評價假設的標準方法:
將數據分成兩部分,第一部分成爲訓練集,第二部分成爲測試集;
典型的分割方法是按照7:3的比例(隨機)。
1、對訓練集進行學習得到參數θ,即最小化訓練誤差J(θ)
2、計算出測試誤差,實際上是測試集的平方誤差的平均值
*misclassification error(錯誤分類)/zero one misclassification error(0/1分類錯誤):定義測試誤差
#Model selection & training/validation/test sets(模型選擇&訓練、驗證、測試集)
訓練誤差並不能很好地估計出實際的generalization error(泛化錯誤),即該假設對新樣本的泛化能力。
如果你想選擇一個模型,即選擇一個degree of polynomial(多項式次數),從幾個中選出來一個擬合這個模型並且估計這個擬合好的模型假設對新樣本的泛化能力:
首先選擇第一個模型,然後最小化訓練誤差,得到一個參數向量θ;
然後再選擇第二個模型擬合訓練集,得到另外一個參數向量θ;
以此類推,然後對所有這些模型求出測試集誤差,爲了從這些模型中選出最好的一個,要看哪個模型有最小的測試誤差;
*我們的參數向量很可能是對泛化誤差過於樂觀的估計,因爲我是用測試集擬合得到的參數d,再在測試集上評估假設就不公平了,因爲我用測試集擬合得到的參數,用測試集選擇了多項式的次數,所以假設很可能對於測試集的表現好過對於新的它沒見過的樣本,而後者纔是我們真正關心的。
爲了解決模型選擇出現的問題,通常採用如下方法:
把數據分爲三個部分,training set(測試集)、cross validation set(交叉驗證集cv)、test set(測試集),典型比例是6:2:2。
要用驗證集(交叉驗證集)來選擇模型而不是原來的測試集:
1、選取第一種假設,最小化代價函數,以此類推;
2、用交叉驗證集來測試,而不像原來一樣用測試集來測試這些假設;
3、選擇交叉驗證誤差最小的那個假設作爲模型。
*省下測試集用來衡量或者估計算法選出的模型的泛化誤差。
#Diagnosing bias VS variance(診斷偏差VS方差)
即underfitting(欠擬合)問題 VS overfitting(過擬合)問題
- 如果算法有bias(偏差)問題,則訓練集誤差會比較大,交叉驗證誤差也會很大,接近訓練誤差;
- 如果算法有variance(方差)問題,則訓練誤差很小,交叉驗證誤差遠大於訓練集誤差。
#Regularization & bias/variance(正則化&偏差、方差)
如何自動地選擇出一個最合適的正則化參數λ的值?
對於訓練集、驗證集誤差的定義都是平均誤差平方和或者是不使用正則化項時訓練集驗證集和測試集的平均誤差平方和的一半。
用交叉驗證集來評價,選交叉驗證誤差最小的那個模型作爲最終選擇。
當改變正則化參數λ時,交叉驗證誤差和訓練誤差怎麼變化:
#Learning curves(學習曲線)
判斷某個學習算法是否處於偏差、方差問題或是二者皆有。
繪製訓練集的平均誤差平方和,或者交叉驗證集的平均誤差平方和:
#總結
- 收集更多的訓練集數據:對於解決high variance(高方差)問題有幫助;
- 減少特徵數量:對high variance(高方差)問題有效;
- 增加特徵:通常是解決high bias(高偏差)問題的一個方法;
- 增加多項式特徵:也屬於增加特徵;
- 增大λ:可修正high bias(高偏差)問題;
- 減小λ:可修正high variance(高方差)問題;
- 簡單神經網絡參數不多,容易欠擬合,但最大優勢是計算量小;
- 複雜神經網絡參數較多,容易過擬合,可使用正則化來修正。
PS.內容爲學習吳恩達老師機器學習的筆記【https://study.163.com/course/introduction/1004570029.htm】