學習筆記之多項式迴歸和Pipeline及偏差和方差

今天我們簡單談下,多項式迴歸和Pipeline的應用。
之前我們瞭解了線性迴歸,線性迴歸的假設條件是:數據存在線性關係。並不是所有的數據具有線性關係。我們想要使用迴歸,可以對特徵進行升維處理,轉化成多項式迴歸。

一、多項式迴歸

研究一個因變量與一個或多個自變量間多項式的迴歸分析方法,稱爲多項式迴歸(Polynomial Regression)。多項式迴歸是線性迴歸模型的一種,其迴歸函數關於迴歸係數是線性的。其中自變量x和因變量y之間的關係被建模爲n次多項式。

二、Pipeline

在使用sklearn建模時,我們可以考慮把簡單的數據處理、特徵處理、建模做成流水線的形式。此時用到Pipeline功能.

Pipeline就是將這些步驟都放在一起。參數傳入一個列表,列表中的每個元素是管道中的一個步驟。每個元素是一個元組,元組的第一個元素是名字(字符串),第二個元素是實例化。

三、代碼實現過程

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler

poly_reg =Pipeline([('poly',PolynomialFeatures(degree=2)),
                   ('scalar',StandardScaler()),
                   ('lr_reg',LinearRegression())]
)
poly_reg.fit(X,y)
y_predict = poly_reg.predict(X)
plt.scatter(x, y)
plt.plot(np.sort(x), y_predict[np.argsort(x)], color='r')
plt.show()

在這裏插入圖片描述

四、偏差和方差

模型誤差 = 偏差 + 方差 + 不可避免的誤差(噪音)。一般來說,隨着模型複雜度的增加,方差會逐漸增大,偏差會逐漸減小。

偏差(bias):偏差衡量了模型的預測值與實際值之間的偏離關係。例如某模型的準確度爲96%,則說明是低偏差;反之,如果準確度只有70%,則說明是高偏差。

方差(variance):方差描述的是訓練數據在不同迭代階段的訓練模型中,預測值的變化波動情況(或稱之爲離散情況)。從數學角度看,可以理解爲每個預測值與預測均值差的平方和的再求平均數。通常在模型訓練中,初始階段模型複雜度不高,爲低方差;隨着訓練量加大,模型逐步擬合訓練數據,複雜度開始變高,此時方差會逐漸變高。

偏差和方差的權衡關係:
在這裏插入圖片描述偏差和方差是無法完全避免的,只能儘量減少其影響。主要的挑戰來自方差,一般處理高方差的方法有:

降低模型複雜度
減少數據維度;降噪
增加樣本數
使用驗證集
正則化

完整代碼
參考文章:https://mp.weixin.qq.com/s/KnOZ2mK15G1w9fRZCVHJmQ
https://mp.weixin.qq.com/s/K_4DH7BC7jIF2-ltHBWGmA

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