今天我們簡單談下,多項式迴歸和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