正則化的線性迴歸 嶺迴歸、Lasso迴歸

概述

正則化的線性迴歸

嶺迴歸就是正則化的線性迴歸,線性迴歸容易出現過擬合,正則化是防止過擬合的常用方法。換句話說是修正後的最小二乘法。

線性迴歸的誤差函數
f(w)=12i=1n(yy)2 f(w) = \frac{1}{2}\sum_{i=1}^{n}{(y-y`)^2}

優化的誤差函數是原來線性迴歸的均方誤差上加上L2範數的懲罰項(修正項),懲罰模型的複雜程度。

f(w)=12i=1n(yy)2+12aj=1nw2 f(w) = \frac{1}{2}\sum_{i=1}^{n}{(y-y`)^2}+\frac{1}{2}a*\sum_{j=1}^{n}{w^2}

Lasso迴歸也是正則化的線性迴歸。和嶺迴歸的差別在於修正項取的絕對值

f(w)=12i=1n(yy)2+12aj=1nw f(w) = \frac{1}{2}\sum_{i=1}^{n}{(y-y`)^2}+\frac{1}{2}a*\sum_{j=1}^{n}{|w|}

嶺迴歸效果

嶺迴歸效果圖
Lasso迴歸效果

Lasso迴歸效果圖
線性迴歸效果

線性迴歸效果圖
  • 多項式特徵構造 PolynomialFeatures

如果有a,b兩個特徵,那麼它的2次多項式爲(1,a,b,a^2,ab, b^2)

PolynomialFeatures有三個參數

degree:控制多項式的度
interaction_only: 默認爲False,如果指定爲True,那麼就不會有特徵自己和自己結合的項,上面的二次項中沒有a2和b2。

include_bias:默認爲True。如果爲True的話,那麼就會有上面的 1那一項

例子1,interaction_only爲默認的False時

c=[[5,10]] #c=[[a,b]],這裏要注意a的shape,如果是list形式,則將a.shape=-1,1

pl=PolynomialFeatures()

b=pl.fit_transform©

b
輸出:array([[ 1., 5., 10., 25., 50., 100.]]) #符合(1,a,b,a^2,ab, b^2)

例子2,interaction_only=True時

c=[[5,10]]

pl=PolynomialFeatures(interaction_only=True)

b=pl.fit_transform©

b
輸出:array([[ 1., 5., 10., 50.]]) #輸出中不包含a^2 和b^2 項

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