---
# System prepended metadata

title: Regression
tags: [李宏毅]

---

Regression
===
###### tags: `李宏毅`

## 課程資訊
* [影片](https://www.youtube.com/watch?v=fegAeph9UaA&ab_channel=Hung-yiLee)
* [講義](https://drive.google.com/file/d/1iXWaDCofiGRjbC9s6b7YzMmIzaGjDO1h/view?usp=sharing)

## 實作步驟
### 1. 定義 Model
Model 就是一群 Function，只要能寫成 $y=b+\sum_{}^{}w_ix_i$ 形式的就是 Linear Model。
![](https://i.imgur.com/jFqF3FO.png)

### 2. 判斷 Function 的好壞
需要有足夠的訓練資料，再定義 Loss Function L 就可以判斷一個 Function 的好壞。

Loss Function 的 Input 是一個 Function，可以判斷 Input Function 有多不好，$L(f)=L(w,\ b)$。直接把訓練資料代入 Loss Function 就可以知道目前這個 Input Function 的表現。以下圖的 Loss Function 為例就是把實際的值減掉預測的值的平方和。
![](https://i.imgur.com/jvF2cVx.png)

### 3. 找到最好的 Function
要做的事情就是把所有 w(weight)、b(bias) 都試一遍，L(Loss Function) 最小的就是最好的 Function。以下圖的 L 來看，其實有 Closed-Form Solution，只是也可以用 Gradient Descent。只要 Loss Function 可微分就可以用 Gradient Descent。
![](https://i.imgur.com/wdYOrBb.png)


微分值和 η(learning rate) 會決定參數調整的幅度。
$w^1\ = w^0\ -\ η\dfrac{dL}{dw}$
在有些時候參數調整會掉入 Local Minimum，但是我們希望的是 Global Minimum，不過在 Linear Regression 不影響。因為 L 是 Convex，就是說沒有 Local Optimal。
![](https://i.imgur.com/TcUWO2T.png)


就算有多個參數也一樣，只要對 L 個別做偏微分然後調整值就好。而這個調整值就是 Gradient，下例假設有兩個參數 w、b。
$▽L\ =\left(
\begin{array}{ccc}
\dfrac{∂L}{∂w}\\
\dfrac{∂L}{∂b}\\
\end{array}
\right)$
![](https://i.imgur.com/4cj5xXS.png)

## Model Selection
在步驟 1 時，只有考慮一次項的 Function，但是其實可以選擇更複雜的 Model。

如下圖，如果使用更高次方的 Model，可以在 Training Data 表現得更好，但是不一定能在 Testing Data 也比較好，這就是 Overfitting。
![](https://i.imgur.com/cpMiMCC.png)

所以有時候不一定是 Model 不夠好，而是考慮的條件不對。多考慮一些條件才能把 Error 降下去。

## Regularization
在步驟 2 定義了 Loss Function 為實際值減掉預測值得平方和，而 Regularization 則是再加上 w 的平方乘以 λ。也就是說 w 越小越不容易受到 Regularization 的影響，當 w 小時 Function 會比較平滑。而我們喜歡平滑的 Function，因為它比較不受到輸入的影響，也因此給我們比較好的結果。
$L=\sum_{n}^{}(y^n(b+\sum_{}^{}w_ix_i))^2+λ\sum_{}^{}(w_i)^2$
![](https://i.imgur.com/lg2Mtfi.png)

最後的結果除了會針對輸入的 Error 做修正，也會考慮到 w 的大小，所以在 Training Data 不一定表現得比較好，但是在 Testing Data 卻有可能更好。所以選擇 λ 的大小也是重要的因素。
![](https://i.imgur.com/LFYS7Zd.png)
