1. Bagging
Bootstrapping ( 간단하게 복원 추출이라고 생각하면 될 것 같다 : 공을 뽑는데 뽑은 후에 다시 넣으면 전체 N 이 변하지 않는?)
이렇게 추출된 데이터를 사용해서 training 을 한다. 물론 tree 기반의 알고리즘을 사용하여... (DecisionTree...)
이런 과정을 k번 반복하는데 간단하게 bootstrapping 에 대한 생각을 해보면 복원 추출이라면 분명 중복되는 추출이 생길 것이다. (데이터가 일정 크기 이상이라는 전제에서?) 그렇다면 중복된 데이터의 추출로 이미 자리를 빼앗겨 버린 기존에 남아있는 데이터들을 자연스럽게 test data (or validataion data) 가 될 것이고 이것으로 weak learner ( D.T ) 와 같은 학습기의 성능을 평가하고 k개의 이 학습기들의 성능을 평균으로 내어 도출하는 것이다.
참고, 이 때 k번 과정을 반복한 Prediction error 의 평균을 도출하는 과정을 Out of bag error 라고 한다 (OOB)
Tree 기반의 알고리즘으로 좋은 성능을 내려면 Hyperparameter 의 보완으로 트리의 깊이나 node 의 수가 늘어나면서 자연스럽게 overfitting 의 가능성이 높아진다. 이때 bias 는 유지하고 variance 을 낮추려는 방법으로 bagging 을 선택하게 되었다.
2. RandomForest
Bagging model 의 Variance 는 Var(X+Y) = Var(X) + Var(Y) + 2CoV(X, Y) 와 같은 형태이기 때문에,
간단히 설명하면 전체 데이터에서 복원 추출하였으나, 각 트리들은 중복되는 데이터를 다수 가지고 있기 때문에 weak learner의 학습에 대한 독립성을 보장할 수 없다. (Cov(X, Y) != 0 : 비슷한 트리가 만들어질 확률이 높다.)
Tree 의 증가에 따라 모델 전체의 분산이 증가할 수 있게 된다는 말이되는데, 이때 Tree 간 분산을 줄이는 방법으로 학습기의 변수 설정은 random 하게 sampling 하게 된다 따라서 각 학습기에 상관성이 줄어는 것으로 Covariance 를 줄여가는 것이다.
일반적으로 정규화(Regularization) 의 효과를 기대할 수 있다.
3. Boosting
오분류된 데이터에 초점을 맞추어 더 많은 가중치를 주는 방법이다
Adaboost -- 초기 가중치를 동일하게 0.1 로 설정하고 다음 학습기에 가중치를 꾸준히 update 하는 방식이다.
학습이 잘 이루어지지 않는 weak learner 에 가중치를 전달하는 것.
4. Gradient Boosting
기존 boosting 방법과는 조금 다르게 이전 round 의 학습기에서 생산된 에러를 예측하는 weak learner 를 생성하는 방법이다.
5. Xgboost
간단하게, Gradient Boosting 의 방법에서 regularization term 을 사용하여 overfitting 을 막는 것.
6. LightGBM
Xgboost 의 경우 level-wise loss 를 사용한 것이었다. 설명하자면 tree 를 구성할 때, 아래로 한 줄씩 만든달까?...
LightGBM 은 leaf-wise loss 를 사용하는데 단위가 가지가 되기 때문에 가지 단위로 내려간다.
이것은 Overfitting 에 민감하기 때문에 대량의 training set 이 필요하다.
extra) Catboost
Stacking : 모델의 output 값을 새로운 독립 변수로 이용
Extra ) Ensemble of Ensemble : weak learner 의 자리에 ensemble 사용
데이터의 사용은 Kaggle 에서 태양열 수요 예측과 COVID-19 확진자의 현재 상태를 예측 하는 모델을 사용하였고,
태양열 수요 예측(?)에서는 LSTM 을 Bagging 의 방법으로 사용하는 것을 진행하였다.
'MachineLeaning' 카테고리의 다른 글
Class Imbalanced Problem (0) | 2021.09.01 |
---|---|
Unsupervised Learning - Clustering ( KMeans, Hierarchical, DBSCAN) (0) | 2021.09.01 |
Decision Tree (0) | 2021.08.30 |
Support Vector Machine (0) | 2021.08.30 |
Linear Discriminant Analysis (LDA) & QDA (0) | 2021.08.30 |