1. 程式人生 > >【機器學習】線性迴歸演算法的過擬合比較

【機器學習】線性迴歸演算法的過擬合比較

回顧

  • 過擬合與欠擬合 主要介紹了什麼是欠擬合什麼是過擬合
  • 對抗過擬合 主要介紹了線性迴歸中對抗過擬合的方法,主要包括:L1-norm的LASSO迴歸、L2-norm的Ridge迴歸,此外還有一個沒有提到,L1-norm和L2-norm結合的Elasitc Net(彈性網路)

Ridge模型具有較高的準確性、魯棒性以及穩定性;LASSO模型具有較高的求解速度;
如果既要考慮穩定性也考慮求解的速度,就使用Elasitc Net

後面我們將對線性迴歸、LASSO迴歸、Ridge迴歸以及Elasitc Net模型的過擬合比較

下面我們首先來看看過擬合是什麼樣子的

線性迴歸過擬合示例

圖中真實資料點是由
y = 1.8 x 3 +

x 2 14 x 7
y = 1.8*x^3 + x^2 - 14*x - 7

再加上隨機數產生的,表示三階模型應該是最好的模型

在這裡插入圖片描述

上圖我們通過多項式線性迴歸實現了不同階數的資料擬合程度
當階數為1時,為一條直線,不能夠很好的擬合數據,屬於欠擬合
當階數為3時,基本與資料擬合,正確率基本為1,因為我們加入了隨機數,所以3階模型不可能百分百擬合
當階數為5時,正確率達到了1,已經達到了最大值,再往後就是過擬合了
當階數為9時,我們可以明顯發現,曲線在前面一段有突變,出現嚴重過擬合,往後就更過擬合了

原始碼可見:Github下的06_過擬合.py

迴歸演算法過擬合比較

在這裡插入圖片描述

圖中我們可以看出:

  • 線性迴歸在9階時出現了過擬合,而其他迴歸模型沒有
  • 因為其他三個模型都對過擬合進行的處理

原始碼可見:Github07_迴歸各種演算法的過擬合比較.py