李宏毅教授課程影片
==
## Regression
output為數值
一些例子:

### Step1:Model

$y = b+w*x_{cp}$ 這是一個linear的model
$y = b + \Sigma w_ix_i$
而w, b 為兩個參數,所以會生成infinite不同model,而等等trianing data會把不可能的w, b 過濾掉
### Step2:Goodness of Function

接下來我們要判斷一個function是好是壞
我們會有一堆Model作為input
然後我們定義一Loss function L
$L:\\
input:funtion\\
output:這個funtion有多不好$
$\begin{split}
L(f)&=L(w,b)\\
&=判斷f之好壞\\&=\displaystyle\sum_{n=1}^{N}(實際數值-使用(b,w)所預測
之數值)^2\\
&=\displaystyle\sum_{n=1}^{N}(\hat{y}^n-(b+w\cdot x^n_{cp}))^2
\end{split}$

用圖表示的話
- 藍色:loss值小 -> 誤差小
- 紅色:loss值大 -> 誤差大
### Step3:Best Function
$找最佳之function\equiv找最小之loss$

只要L是可以微分的便可以用gradient Decent 來解
### 單一參數

1. 隨機選一初始值$w_0$
2. 用微分計算斜率,若
- 斜率<0, 增加w(右移)
- 斜率>0, 減少w(左移)
3. 移動距離$w_1=w_0-\eta \frac{\mathrm{d}L}{\mathrm{d}w}|_{w=w^0}$取決於目前之
- 微分值$\frac{\mathrm{d}L}{\mathrm{d}w}|_{w=w^0}$,依據目前斜率來看要移動多少,很斜移多一點,很平移少一點
- 事先定好的數值learning rate $\eta$
4. 不斷重複這操作可以找到local optimal $w^t$
### 兩個參數
有兩個參數w, b 跟一個參數的操作是一模一樣的
$w^*, b^* = argminL(w,b)$
操作與單一參數是一樣的
1. 隨機隨機選初始值$w^0, b^0$
2. 計算$w^0, b^0$之偏微分
3. 算出移動到的下個點$w_1=w_0-\eta \frac{\partial L}{\partial w}|_{w=w^0}\\b_1=b_0-\eta \frac{\partial L}{\partial b}|_{b=b^0}$
4. 不斷重複這操作,找到local optimal $w^t, b^t$

可以求得其微分公式如下
每次偏微分就沿著等高線的切先方向,往loss較低的地方前進。
### 問題
因為用gragient 求得之loacl optimal 很可能因為你再不同初始位置而得到不同的local 如下圖(左)所表示

但是**在linaer regression之情況下**,如果loss function照上面的方法定義,L會是convex$\equiv$就上上面右圖那樣,只會有一個低點,不會有local optimal,會像上圖那樣呈現單一橢圓型,會找到同一組solution
### Result
最關心的是new data放進我們的預測後所產生之error大小

從上圖可以看到cp值在較大與較小的地方誤差值較大,為了改善這情可以使用二次式來將低誤差值

由上圖可以看到使用二次式可以明顯降低error值,不管在training或是testing
在不同次方之多項式可以得到不一樣的結果,高次方多項式預測不一定會比較好
### Overfitting

**Overfitting**:traning data之error下降,但是testing data之error上升之情形
所以我們要找出最適合之model
#### Hidden Factors
用寶可夢來看的話不同物種會產生不同之模型
## 重新設計
### 使用不同分類
加入不同物種的分類,不同之物種使用不同之lenear function

上面就分開帶不同的linear function

可以整理成一大個linear function,然後用$\delta$來判斷不同物種的分類。
$\delta=1, if \ x_s是某物種 \\ \delta=0, otherwise$

可以看上圖,error值比起沒有分物種的時候下降許多
training(15.4 -> 3.8), testing(18.4 -> 14.3)
#### Hidden factors2
可能考慮其他引響因素,weight, height, HP等等,將這三個一起加入training 可以發現training error變得很低,但是testing error爆了 -> 產生overfitting
## 重新Regularization

在原本之linear function再加入 $\lambda\sum(w_i)^2$
其中我們會希望 **$w_i$越小越好**
$\equiv$ 希望function可以呈現較平滑的狀態
$\equiv$ 再輸入有雜訊的時候,平滑的funtion會受到較小的影響,會有較好的結果
$\lambda$ 值越大,代表smooth的部分影響越大 $\equiv$越平滑

$\lambda$ 越大對training之error也越大,但是對testing之error則會改善
所以$lambda$之質要自己去調配
## Conclusion

所以目前之average error = 11.1 ,如果放到實際情況,error值會更大,接卸來會需要用validation去解決
### error來源是哪裡?
error 之來源可以分成
- bias
- variance
## Bias與variance

令$\hat f$為目標function
做一次實驗的結果為$f^*$
然後許多次實驗之後取他的期望值$\bar f$
得
$\bar f$與$\hat f$之距離為**Bias**
$f^*$與$\bar f$之距離為**variance**

根據上面的範例我們可以知道,越高維度的function會產生越大的variance,Bias越小。而越低維度之function 產生較小,Bias越大。
可以得到
variance很大 -> Overfitting
bias很大 -> Underfitting

在未來如果要improve模型的話,要先分析目前是overfitting 或是underfitting
### 【Underfitting】
前面有提到,發生 Underfitting 的根本原因是由於模型太過簡單,所以根本的解決方案就是提高模型的複雜度,可以透過:
1. 增加訓練的疊代次數
2. 調整超參數 ( 修改模型架構 )
3. 生成更多的特徵來訓練模型
4. 如果有使用正規化 ( Regularization ) 可先將其移除
5. 更換一個更複雜的模型
### 【Overfitting】
前面有提到,發生 Overfitting 的根本原因是由於模型太過複雜,所以根本的解決方案就是降低模型的複雜度,可以透過:
1. Early Stopping
2. 增加訓練資料(很強的方法,但是實際上很困難,因為資料有限)
3. 降低特徵維度
4. 如果沒有使用正規化 ( Regularization ) 可以將其加入
5. 調整超參數 ( 修改模型架構 )
## Validation
因為training set之後我們會用testing set去判斷他好壞,但是testing set又分public與private,public已知而private未知,往往會public 之error很低但是private error會增加
model在訓練的時候只仰賴training set,不能用testing set不然會失準,所以將data set 分為training / test / validation,用validation set 去檢驗再挑出最適合的model
### Cross Validation

將trainig set 分為training set 與 validation set
training set -> 用來train model
validation set -> 用來選model
令 現在model 3表現最好,則選擇再用全部的training set train 一次model 3
(盡量選一次就好,不要太在意public set的值)
### N-fold Cross Validation
如果不相信某次分training set跟validation set的結果,可以
將training set 分N等份,用輪轉的方式分別做trainig 與validation,再取其Avg error最佳的model,再拿去testing set 測

上面分別用兩個trainig set 做model, 一個validation做檢測,輪流用,再看最後平均的error。
往往一直調整public 的training set會造成private分數下降的狀況
## 參考資料
https://www.youtube.com/watch?v=fegAeph9UaA
https://www.youtube.com/watch?v=D_S6y0Jm6dQ
https://jason-chen-1992.weebly.com/home/-bias-variance-tradeoff
https://ithelp.ithome.com.tw/articles/10240556