23/100 正則化回歸(Lasso, Ridge, ElasticNet) 🎛 防止模型過擬合,讓預測能力更穩定!

更新 發佈閱讀 11 分鐘

AI時代系列(1) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》


23/100 第三週:監督學習(回歸)


23. 正則化回歸(Lasso, Ridge, ElasticNet) 🎛 防止模型過擬合,讓預測能力更穩定!


🎛 正則化回歸(Lasso, Ridge, ElasticNet)


📌 防止模型過擬合,讓預測能力更穩定!


在多元線性回歸中,當特徵數量較多或特徵之間存在高相關性(共線性)時,模型容易過擬合(Overfitting),導致在測試集上的表現變差。正則化回歸(Regularization Regression) 透過 加入懲罰項 來限制模型的複雜度,使其更具泛化能力(Generalization)。

________________________________________


📌 1️⃣ 為什麼需要正則化回歸?


當模型過度擬合時,會發生什麼?


過擬合(Overfitting):模型在訓練數據表現很好,但在測試數據上表現很差

模型對噪聲過於敏感:如果有不相關的特徵,模型會錯誤地學習這些特徵

共線性問題:當特徵之間高度相關時,模型的權重係數(Weights)可能變得極端


📌 解決方案:使用 Lasso、Ridge、ElasticNet,讓模型更穩健!

________________________________________


📌 2️⃣ 正則化回歸的三種方法


🎯 (1) Ridge 回歸(L2 正則化)


核心概念:透過 L2 正則化,讓所有的回歸係數 wi 變小,而不會讓它們變為 0


適用情境:特徵較多,且希望「保留所有特徵」但減少過擬合


Ridge 回歸的公式,就是「模型預測誤差」加上「係數變大的懲罰」,兩者一起考慮,讓模型又準確又不會過度依賴某些特徵。


小比喻 🌟


就像一個人做事要準確(預測準確),但又不能用力過猛(係數太大),所以這個公式幫你兩邊兼顧,找到「準確但穩定」的好方案!


✅ 效果:

讓模型更穩定

減少過擬合,但不會讓某些權重變為 0

________________________________________


🎯 (2) Lasso 回歸(L1 正則化)


核心概念:透過 L1 正則化,可以讓某些特徵的權重變成 0,達到 特徵選擇(Feature Selection) 的效果


適用情境:當特徵較多,且希望「自動篩選不重要的特徵」


Lasso 回歸公式,就是「預測誤差」加上「係數大小的懲罰(用絕對值)」,這樣可以讓不重要的特徵自動被淘汰(權重變成 0),模型就會變得更簡單、更乾淨!


小比喻 🌟


你可以把它想像成:


做模型就像整理書架。Lasso 不只是整理書籍的順序,還會「直接把沒用的書丟掉」(係數變 0),讓你的書架(模型)乾淨又高效。


✅ 效果:

可自動選擇重要特徵,忽略不重要的特徵

當 α 變大時,部分特徵的 wi 變為 0

________________________________________


🎯 (3) ElasticNet 回歸(L1 + L2 正則化)


核心概念:結合 Lasso(L1)與 Ridge(L2),兼具「特徵選擇」與「防止過擬合」的效果

適用情境:特徵數量多,且有共線性問題


數學公式:ElasticNet 是把 Lasso(L1) 和 Ridge(L2) 兩種方法合併,既能「自動篩選掉不重要的特徵」,又能「避免模型過度依賴某些特徵」,達到平衡效果。


小比喻 🌟

你可以想像成:


ElasticNet 就像是在整理書櫃時,同時會


淘汰沒用的書(L1:特徵選擇),


又限制留下來的書不要佔太多空間(L2:防止過度依賴)。

✅ 效果:

讓部分權重變為 0(類似 Lasso)

但不會讓所有不重要的特徵完全消失(類似 Ridge)

________________________________________


📌 3️⃣ Python 實作(Ridge, Lasso, ElasticNet)


✅ (1) 產生數據


我們使用房價預測範例:

python


import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.linear_model import Ridge, Lasso, ElasticNet, LinearRegression

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error, r2_score


# 產生隨機數據(50 筆數據)

np.random.seed(42)

X1 = np.random.randint(20, 200, size=50) # 房屋面積

X2 = np.random.randint(1, 50, size=50) # 房齡

X3 = np.random.randint(1, 10, size=50) # 樓層數


# 房價計算(模擬真實情況)

y = 5000 * X1 - 3000 * X2 + 2000 * X3 + 10000 + np.random.randint(-50000, 50000, size=50)


# 轉換為 DataFrame

df = pd.DataFrame({'面積': X1, '房齡': X2, '樓層': X3, '房價': y})


# 分割訓練集與測試集

X = df[['面積', '房齡', '樓層']]

y = df['房價']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

________________________________________


✅ (2) 訓練模型


python


# 訓練普通線性回歸

lin_reg = LinearRegression()

lin_reg.fit(X_train, y_train)


# 訓練 Ridge 回歸(L2 正則化)

ridge_reg = Ridge(alpha=1.0)

ridge_reg.fit(X_train, y_train)


# 訓練 Lasso 回歸(L1 正則化)

lasso_reg = Lasso(alpha=1.0)

lasso_reg.fit(X_train, y_train)


# 訓練 ElasticNet 回歸(L1 + L2 正則化)

elasticnet_reg = ElasticNet(alpha=1.0, l1_ratio=0.5)

elasticnet_reg.fit(X_train, y_train)

________________________________________


✅ (3) 預測與評估


python


models = {

"線性回歸": lin_reg,

"Ridge 回歸": ridge_reg,

"Lasso 回歸": lasso_reg,

"ElasticNet 回歸": elasticnet_reg

}


for name, model in models.items():

y_pred = model.predict(X_test)

mse = mean_squared_error(y_test, y_pred)

r2 = r2_score(y_test, y_pred)

print(f"{name} - MSE: {mse:.2f}, R²: {r2:.4f}")


📌 結果解析


線性回歸(Linear Regression):可能會過擬合

Ridge(L2):減少過擬合,但所有特徵仍被保留

Lasso(L1):可能會將部分不重要特徵的權重設為 0

ElasticNet(L1 + L2):適合特徵較多的情況,綜合 Lasso & Ridge 的優勢

________________________________________


📌 4️⃣ 如何選擇?


Ridge(L2 正則化)適合在特徵數量較多,但希望保留所有特徵的情境使用,它的優點是能有效降低過擬合風險,讓模型更穩定,但缺點是無法自動挑選出重要特徵,所有特徵都會被保留下來。


相比之下,Lasso(L1 正則化)更適用於當希望自動篩選出最重要特徵的場合,它的優勢在於可以讓部分特徵的權重變成零,實現特徵選擇,不過有時也可能過度忽略掉一些其實有用的特徵。


至於 ElasticNet 則結合了 Ridge 和 Lasso 的優點,特別適合特徵數量龐大又存在共線性問題的情境,它同時具備防止過擬合與自動篩選特徵的效果,但需要額外調整兩個超參數,才能達到最佳效果。

________________________________________


🎯 結論


✅ Ridge(L2):防止過擬合,適合特徵較多的情況

✅ Lasso(L1):能自動選擇重要特徵,適合特徵較多但部分不相關的數據

✅ ElasticNet(L1+L2):適合特徵相關性較高的情境


🚀 下一步:進一步探索「多項式回歸」來處理非線性關係! 🎯


留言
avatar-img
留言分享你的想法!
avatar-img
Hansen W的沙龍
12會員
274內容數
AIHANS沙龍是一個結合AI技術實戰、產業策略與自我成長的知識平台,主題涵蓋機器學習、生成式AI、創業經驗、財務規劃及哲學思辨。這裡不只提供系統化學習資源與實作案例,更強調理性思維與行動力的結合。無論你是AI初學者、創業者,還是追求人生升維的行者,都能在這裡找到前進的方向與志同道合的夥伴。
Hansen W的沙龍的其他內容
2025/05/27
多元線性回歸單元,教你一次掌握多維特徵建模、共線性診斷與 Python 實戰,讓房價、銷售額等預測更精準,打下進階回歸與正則化基礎。透過真實數據實驗,從特徵選擇、模型訓練到評估指標,一站式建立多變量思維,快速提升商業分析與決策能力。
Thumbnail
2025/05/27
多元線性回歸單元,教你一次掌握多維特徵建模、共線性診斷與 Python 實戰,讓房價、銷售額等預測更精準,打下進階回歸與正則化基礎。透過真實數據實驗,從特徵選擇、模型訓練到評估指標,一站式建立多變量思維,快速提升商業分析與決策能力。
Thumbnail
2025/05/27
想快速掌握機器學習核心?本單元以房價案例手把手示範線性回歸,從理論、Python 實作到評估指標,一條直線即可洞悉數據趨勢,建立建模信心,是所有 AI 新人不可錯過的啟蒙課!更結合 MSE、R² 等評估技巧,助你打下回歸分析扎實基礎,邁向進階多元模型。
Thumbnail
2025/05/27
想快速掌握機器學習核心?本單元以房價案例手把手示範線性回歸,從理論、Python 實作到評估指標,一條直線即可洞悉數據趨勢,建立建模信心,是所有 AI 新人不可錯過的啟蒙課!更結合 MSE、R² 等評估技巧,助你打下回歸分析扎實基礎,邁向進階多元模型。
Thumbnail
2025/05/26
掌握 Pandas、NumPy,一站精通數據清理、缺失值補齊、特徵選擇與 PCA 降維!模組化範例搭配自測題,快速鞏固概念並排除常見坑,助你打造更穩定、公平且高效的 AI 模型。入門到實戰必讀,快速開啟數據科學核心能力!
Thumbnail
2025/05/26
掌握 Pandas、NumPy,一站精通數據清理、缺失值補齊、特徵選擇與 PCA 降維!模組化範例搭配自測題,快速鞏固概念並排除常見坑,助你打造更穩定、公平且高效的 AI 模型。入門到實戰必讀,快速開啟數據科學核心能力!
Thumbnail
看更多
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 AI說書 - 從0開始 - 93 介紹了 The Corpus of Linguistic Acceptability (CoLA),其核心思想為:如果該句子在語
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 AI說書 - 從0開始 - 93 介紹了 The Corpus of Linguistic Acceptability (CoLA),其核心思想為:如果該句子在語
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News