標籤:com post 檢測 計算 使用 ati cti 技術分享 就是
這一節我們學習兩個非常有用的診斷方法,可以用來提高演算法的表現。他們就是學習曲線(learning curve)和驗證曲線(validation curve)。學習曲線可以判斷學習演算法是否過擬合或者欠擬合。
使用學習曲線判別偏差和方差問題
如果一個模型相對於訓練集來說過於複雜,比如參數太多,則模型很可能過擬合。避免過擬合的手段包含增大訓練集,但這是不容易做到的。通過畫出不同訓練集大小對應的訓練集和驗證集準確率,我們能夠很輕鬆滴檢測模型是否方差偏高或偏差過高,以及增大訓練集是否有用。
的左上方子圖中模型偏差很高。它的訓練集和驗證集準確率都很低,很可能是欠擬合。解決欠擬合的方法就是增加模型參數,比如,構建更多的特徵,減小正則項。
右上方子圖中模型方差很高,表現就是訓練集和驗證集準確率相差太多。解決過擬合的方法有增大訓練集或者降低模型複雜度,比如增大正則項,或者通過特徵選取減少特徵數。
這倆問題可以通過驗證曲線解決。
我們先看看學習曲線是怎麼回事吧:
learning_curve中的train_sizes參數控制產生學習曲線的訓練樣本的絕對/相對數量,此處,我們設定的train_sizes=np.linspace(0.1, 1.0, 10),將訓練集大小劃分為10個相等的區間。learning_curve預設使用分層k折交叉驗證計算交叉驗證的準確率,我們通過cv設定k。
中可以看到,模型在測試集表現很好,不過訓練集和測試集的準確率還是有一段小間隔,可能是模型有點過擬合。
用驗證曲線解決過擬合和欠擬合
驗證曲線是非常有用的工具,他可以用來提高模型的效能,原因是他能處理過擬合和欠擬合問題。
驗證曲線和學習曲線很相近,不同的是這裡畫出的是不同參數下模型的準確率而不是不同訓練集大小下的準確率:
我們得到了參數C的驗證曲線。
和learning_curve方法很像,validation_curve方法使用採樣k折交叉驗證來評估模型的效能。在validation_curve內部,我們設定了用來評估的參數,這裡是C,也就是LR的正則係數的倒數。
觀察,最好的C值是0.1。
Python機器學習中文版目錄(http://www.aibbt.com/a/20787.html)
轉載請註明出處,Python機器學習(http://www.aibbt.com/a/pythonmachinelearning/)
Python機器學習:6.3 使用學習曲線和驗證曲線 調試演算法