Ensemble
===
###### tags: `李宏毅`
## 教材
* [pdf](https://drive.google.com/file/d/1epR5B2AC-3ptS_EWGZHXW43eptGIjZZe/view?usp=sharing)
* [youtube](https://www.youtube.com/watch?v=tH9FH1DH5n0&ab_channel=Hung-yiLee)
## Bagging
把 N 個 Training Data 取樣 N' 成多個 Set,然後針對這四個 Set 分別訓練一個模型。

最後再取平均或 Voting,做 Bagging 是為了減緩 Overfitting。

Decision Tree 很容易 Overfitting,因為它一定可以 Fit 出任何一種 Training Data,所以 Random Forest 就是 Bagging of Decision Tree。

## Boosting
跟 Bagging 用在很複雜的 Model 相反,Boosting 是用在 Weak Classifier。Boosting 保證只要能產生 Error Rate 小於 50% 的 Classifier,在 Boosting 後就可以拿到 0% Error Rate。

取得不同的 Classifier 的方式是使用不同 Training Data Set 訓練,可以 Re-sampling 或 Re-weighting。

## Adaboost
基於 f1 訓練 f2。

把 f1 訓練錯的資料的 Weight 放大,所以一開始 Error Rate 會增加。

實際上做 Re-weighting 的方法,就是在 f1 答錯時,就把那筆資料的權重乘以 d1,反之除以 d1。

總之最後要讓 Error Rate 等於 0.5,推導如下。


## Adaboost 數學推導
證明 Weak Classifier 越多,會讓 Error Rate 越低。



Adaboost 有個神奇的現象,Training Data 的 Error Rate 可能很早就會變 0,但是 Testing Data 的 Error Rate 卻可以持續下降。這是因為在算 H(x) 會希望 $α_tf_t(x)$ 越大越好,所以雖然 Training Data 的 Error Rate 一樣,但是 Testing Data 的卻可以持續下降。

Adaboost 之所以可以讓 Testing Data 的 Error Rate 持續下降是因為 Adaboost 的 $\hat{y}^ng(x^n)$ 相乘像是 Logistic Regression 一樣越來越低,而不是跟 ReLU 一樣到了正值之後都一樣。

## Gradient Boosting
Loss Function 如下。

把 L(g) 對 g 做偏微分。



## Voting
除了用來訓練各個 Classifier 的 Training Data 外,還要有個 Training Data 用來訓練 Final Classifier。
