本文爲《吳恩達機器學習》的要點記錄算法
當咱們運用訓練好了的模型來預測未知數據的時候發現有較大的偏差,咱們下一步能夠作什麼?一般咱們會有下面選擇:網絡
那麼如何選擇呢?能夠經過一些機器學習診斷法來作出決定。機器學習
爲了檢驗算法是否過擬合,咱們將數據分紅訓練集、測試集和交叉驗證集,好比可使用60%的數據做爲訓練集,用20%的數據做爲測試集,用20%的數據做爲交叉驗證集。在訓練過程當中能夠這樣選擇 模型:函數
當運行一個學習算法時,若是這個算法的表現不理想,那麼多半是出現兩種狀況:要麼是誤差比較大,要麼是方差比較大。換句話說,出現的狀況要麼是欠擬合,要麼是過擬合問題。 那麼這兩種狀況,哪一個和誤差有關,哪一個和方差有關,或者是否是和兩個都有關?性能
對於誤差和方差的理解: www.zhihu.com/question/20…學習
咱們一般會經過將訓練集和交叉驗證集的代價函數偏差與多項式的次數繪製在同一張圖表上來幫助分析是高誤差仍是高方差:測試
上面:設計
通常咱們採用下面方法選擇:cdn
咱們能夠經過不斷增長訓練集大小,來觀察當前訓練模型是處於 誤差 or 方差 問題:blog
上圖訓練模型處於高誤差/欠擬合的狀況,這時增長數據到訓練集不必定能有幫助。
上圖訓練模型處於高方差/過擬合的狀況,增長更多數據到訓練集可能能夠提升算法效果。
使用較小的神經網絡,相似於參數較少的狀況,容易致使高誤差和欠擬合,但計算代價較小使用較大的神經網絡,相似於參數較多的狀況,容易致使高方差和過擬合,雖然計算代價比較大,可是能夠經過正則化手段來調整而更加適應數據。 一般選擇較大的神經網絡並採用正則化處理會比採用較小的神經網絡效果要好。 對於神經網絡中的隱藏層的層數的選擇,一般從一層開始逐漸增長層數,爲了更好地做選擇,能夠把數據分爲訓練集、交叉驗證集和測試集,針對不一樣隱藏層層數的神經網絡訓練神經網絡,而後選擇交叉驗證集代價最小的神經網絡。
構建一個學習算法的推薦方法爲:
咱們能夠將咱們的算法預測的結果分紅四種狀況:
則:
查準率 =
查全率 =
類偏斜狀況表現爲咱們的訓練集中有很是多的同一種類的樣本,只有不多或沒有其餘類的樣本。
例如咱們但願用算法來預測癌症是不是惡性的,在咱們的訓練集中,只有0.5%的實例是惡性腫瘤。假設咱們編寫一個非學習而來的算法,在全部狀況下都預測腫瘤是良性的,那麼偏差只有0.5%。然而咱們經過訓練而獲得的神經網絡算法卻有1%的偏差。這時,偏差的大小是不能視爲評判算法效果的依據的。
爲了不偏斜類問題, 咱們須要保證查準率和召回率的相對平衡。
例,在全部咱們預測有惡性腫瘤的病人中,實際上有惡性腫瘤的病人的百分比,越高越好,這時咱們的查全率是比較高的。
若是咱們但願只在很是確信的狀況下預測爲真(腫瘤爲惡性),即咱們但願更高的查準率,咱們可使用比0.5更大的閥值,如0.7,0.9。這樣作咱們會減小錯誤預測病人爲惡性腫瘤的狀況,同時卻會增長未能成功預測腫瘤爲惡性的狀況。
若是咱們但願提升查全率,儘量地讓全部有多是惡性腫瘤的病人都獲得進一步地檢查、診斷,咱們可使用比0.5更小的閥值,如0.3。
咱們能夠將不一樣閥值狀況下,查全率與查準率的關係繪製成圖表,曲線的形狀根據數據的不一樣而不一樣:
那怎麼選擇閾值呢? 一種方法是計算F1值(F1 Score),其計算公式爲:
若是你有大量的數據,並且你訓練了一種帶有不少參數的學習算法,增大訓練集的數量,能夠提供一個高性能的學習算法。