iT邦幫忙

0

Day 26|進階線性模型:Ridge(L2)與 Lasso(L1)正規化回歸抗共線性與特徵篩選實戰

  • 分享至 

  • xImage
  •  

第二十六天,我們要回到連續型數值的預測任務,深入探討傳統線性回歸(OLS)的兩大致命傷——多元共線性 與 模型過度擬合。當輸入特徵數量眾多且彼此高度相關時,普通線性回歸的權重係數會劇烈震盪,導致模型泛化能力崩潰。為了解決這個問題,統計學家在損失函數中引入了「懲罰項(Penalty)」,衍生出兩大經典模型:Ridge 脊回歸(L2 正規化) 與 Lasso 套索回歸(L1 正規化)。今天我們建立純 Python 腳本 day26_regularization_regression.py,掌握正規化超參數 $\alpha$ 的影響,並觀察 Lasso 如何自動將無效特徵係數歸零以實現特徵挑選。

第一部分
新建 day26_regularization_regression.py。首先模擬一組房價預測數據,刻意加入 2 個高相關的共線性特徵以及 3 個純雜訊特徵,切分資料集後使用 StandardScaler 標準化(正規化回歸對特徵尺度極為敏感,標準化是強制前置步驟):
https://ithelp.ithome.com.tw/upload/images/20261021/20184472WQTP3Q31oK.png
https://ithelp.ithome.com.tw/upload/images/20261021/20184472iKzcj0EVBd.png

第二部分
分別訓練三種模型:普通線性回歸、Ridge 脊回歸(L2 懲罰項)與 Lasso 套索回歸(L1 懲罰項),並列印三者的權重係數進行對比:
https://ithelp.ithome.com.tw/upload/images/20261021/20184472zgzP1KyGvw.png

第三部分
評估三種模型在獨立測試集上的均方誤差(MSE)與 $R^2$ 判定係數,並繪製各特徵在三種模型下的權重大小長條圖,直觀檢視 Lasso 的係數稀疏化(將無效特徵歸零」特性:
https://ithelp.ithome.com.tw/upload/images/20261021/20184472DGBM89Uv5U.png

第四部分
在終端機輸入 python day26_regularization_regression.py 執行驗證,觀察普通回歸在共線性特徵上係數互相抵消的異常現象,以及 Lasso 如何俐落地將雜訊特徵A與雜訊特徵B的權重直接壓至 0.00。確認存檔(Ctrl + S)後推送到 GitHub 進行版本控制:
https://ithelp.ithome.com.tw/upload/images/20261021/20184472xCgo8X5H6n.png

今日心得/遇到的問題
今天深入了解了正規化背後的數學意義。普通線性回歸在遇到共線性時,容易算出過度膨脹的正負係數;而 Ridge(L2) 透過懲罰大係數,強制將所有權重等比例收縮,維持模型穩定性;Lasso(L1) 則因幾何形狀具備稜角,能直接將不具預測力的特徵權重壓縮為 0,自帶特徵篩選功能。在進入任何正規化迴歸前,務必使用 StandardScaler 將特徵對齊到相同尺度,否則懲罰項會對單位較大的特徵產生偏見。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言