機器學習: 數據與過擬合

機器學習裏的迴歸函數就是通過不斷去擬合數據集裏的數據來生成的,如果太簡單會出現偏差,太複雜又會出現過擬合現象。

過擬合

下面就是一個過擬合的例子。

這個數據集的迴歸函數可能用一次函數會更合理一些。

欠擬合與過擬合對比

過擬合 (Overfitting) 的相反就是欠擬合 (Underfitting),下面給出兩個擬合的錯誤率對比曲線。

欠擬合沒什麼好說的,隨着擬合函數複雜度提高,誤差肯定下降。而過擬合在較爲複雜的情況下對於原始數據集裏的數據預測趨於 100% 正確,因爲這個時候擬合函數是完全連通數據集裏的所有數據的。

數據分類

注意,這裏說的分類不是指分類器裏的分類,而是將訓練數據分成不同類來測量擬合函數的優劣。

分成訓練數據和測試數據

這可能是入門機器學習的第一想法了,數據集除了訓練就是測試。

這種方法的好處在於:

  • 通過訓練數據測出機器學習算法的哪個參數值最好

  • 通過測試數據評判哪個算法性能更好

校驗數據

第三種方法是將一部分的訓練數據作爲校驗數據,這些校驗數據是專門用來測量模型的擬合程度的。

這種方法也有自己的缺點:

  • 會浪費掉一些訓練數據,畢竟分走了一部分

  • 會讓模型趨於簡單化,因爲有校驗數據的存在,會一直去防止過擬合

交叉檢驗

一種更好的數據集分類是每次都從訓練數據裏拿不同的數據作爲校驗數據,最後再做一下平均值來測量結果即可。

上圖是做了 4 次校驗,每次都取不同的校驗數據。當然多少次校驗也是個問題,少了訓練數據會變少,多了又會有一些 Noise。一般 5 ~ 10 次是最好的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章