iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
Google Developers Machine Learning

Machine Learning Day30系列 第 20

[Day20] Lasso 和 Ridge 正規化回歸

Lasso 為 Linear Regression 加上 L1,
Ridge 為 Linear Regression 加上 L2,
正則化函數是⽤來衡量模型的複雜度,
避免模型有over-fitting的問題。

Lasso

參考文章Regularized Regression | 正規化迴歸 – Ridge, Lasso, Elastic Net | R語言

Lasso模型在目標函式中所使用的是一階懲罰式(L1 Penalty)λ∑pj=1|βj|。

https://ithelp.ithome.com.tw/upload/images/20191013/201125688SRB1YubYm.png

Lasso模型則真的會將係數推進成0(如下圖)。
因此,Lasso模型不僅能使用正規化(regulariztion)來優化模型,
亦可以自動執行變數篩選(Feature selection)。

從上圖我們可以看到,在log(λ)=−6時,所有8個變數(圖表上方數字)都包還在模型內,
而當在log(λ)=−3時只剩下6個變數,
最後當在log(λ)=−1時,只剩2個變數被保留在模型內。
因此,當遇到資料變數非常多時,Lasso模型是可以幫你識別並挑選出有最強(也最一致)訊號的變數。

from sklearn.linear_model import Lasso
 
reg = Lasso(alpha=0.1) # 其中可以調整 alpha 值決定正則化的強度
reg.fit(X, y)
print(reg.coef_) # 印出訓練後的模型參數

Ridge

Ridge Regression透過將懲罰參數λ∑pj=1β2j加入目標函式中。
也因為該參數為對係數做出二階懲罰,故又稱為L2 Penalty懲罰參數。
https://ithelp.ithome.com.tw/upload/images/20191013/20112568kFlu6Vds4x.png

而L2懲罰參數的值可以透過「tuninig parameter, λ」來控制。
當λ→0,L2懲罰參數就跟OLS回歸一樣,目標函式只有最小化SSE;
而當λ→∞時,懲罰效果最大,迫使所有係數都趨近於0。

from sklearn.linear_model import Ridge
 
reg = Ridge (alpha=0.1) #調整alpha值決定正則化的強度
reg.fit(X, y) 
print(reg.coef_) # 印出訓練後的模型參數,數值都明顯小於單純的線性回歸

通常數值不用一開始就使用「正規化迴歸」,
可以確認線性迴歸有over-fitting問題,
再試試看「正規化迴歸」。


以上,打完收工。


上一篇
[Day19] 線性迴歸VS羅吉斯迴歸
下一篇
[Day21] 模型選擇-決策樹
系列文
Machine Learning Day3026
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言