Chuyển đến nội dung chính

第 6 課:線性迴歸和直覺的梯度下降

以易於理解的程度理解損失函數、梯度下降和正則化,足以調試迴歸模型。

🧠 人工智慧與機器學習 — 第 5 課 第 6 課:線性迴歸與直覺 梯度下降

機器學習:從基礎到高級

第 1 部分:監督學習基礎

亞洲開發網

簡介

訓練完第一個模型後,下一個問題是:模型為什麼要學習?本文可協助您以足夠直觀的方式理解線性迴歸,以便讀取損失、除錯結果並了解模型何時學習正確或錯誤。

課程目標

  • 了解線性迴歸試圖學習什麼。
  • 直觀掌握損失函數、梯度下降和正則化。
  • 知道何時使用線性迴歸,何時不強制使用。

線性迴歸在做什麼?

想像一下您想要預測區域的房價。線性模型試圖找出最佳直線,使預測價格與實際價格之間的誤差最小。

基本公式:

$$ \hat{y} = w_1x_1 + w_2x_2 + ... + w_nx_n + b $$

損失函數:衡量模型有多糟糕的指標

對於回歸,一個熟悉的損失是 MSE:

$$ MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y_i})^2 $$

意思很通俗:預測模型偏離現實越多,損失就越大。平方有助於嚴重懲罰距離太遠的點。

梯度下降:模型如何修正錯誤

梯度下降是一個迭代過程:預測、計算損失、了解如何增加或減少權重,然後多次更新,直到模型更加穩定。

如果學習率太大,模型很容易來回跳動,不收斂。如果太小,模型學習速度會非常慢。

最小程式碼範例

從 sklearn.linear_model 導入線性迴歸,嶺
從 sklearn.metrics 導入mean_absolute_error
從 sklearn.model_selection 導入 train_test_split

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

模型=線性迴歸()
model.fit(X_train, y_train)
preds = model.predict(X_test)

印出('MAE:',mean_absolute_error(y_test,preds))
print('截距:', model.intercept_)
print('係數:', model.coef_)

正規化以防止過度學習

  • Ridge 通常有助於更平滑的加權。
  • Lasso 可以將某些權重推至 0,適合當您想要選擇特徵時。

常見錯誤

  • 資料標準化已完成,但未以相同的方式應用於測試集。
  • 結論是係數是因果關係。
  • 只看訓練分數而不看測驗錯誤。

練習練習

  • 在同一資料集上訓練線性迴歸和嶺。
  • 比較兩個模型的 MAE。
  • 用 5 行短文寫下:Ridge 什麼時候比純線性迴歸更好?

完成標準

  • [ ]用簡單的語言解釋損失函數。
  • 了解用於更新權重的梯度下降。
  • 在實際範例中比較線性迴歸和嶺迴歸。

逐步練習(進階)

  1. 選擇至少具有 6 個特徵的迴歸資料集。
  2. 使用線性迴歸訓練基線,無需正規化。
  3. 使用 5 個不同的 alpha 值測試 Ridge。
  4. 繪製一張圖表,比較每個 alpha 的 MAE。
  5. 寫評論:太大的 alpha 如何影響偏差/變異數?

應提交工件

  • Notebook 有 Linear 與 Ridge 的比較。
  • MAE 和 RMSE 結果表。
  • 關於選擇正規化的 8-10 行結論。

自測題

  • 為什麼 MSE 比 MAE 對異常值更敏感?
  • 學習率如何影響收斂速度?
  • 什麼時候 Lasso 比 Ridge 值得嘗試?