안녕하세요, 이번 포스팅부터는 Ensemble Learning 에 대해서 배워보도록 하겠습니다.
우선, 이번 포스팅에서는 Ensemble Learning에 대한 정의 및 목적, 그리고 종류에 대해서 간략하게 오리엔테이션으로 다루어보고자 합니다.
1. 정의 및 목적
앙상블 학습은 새로운 예측값에 대하여 미리 학습된 모델들을 통해 분류 문제에 대해서는 다수결로, 그리고 회귀 문제에 대해서는 평균값으로 예측 하는 학습 방법입니다. 앙상블을 쉽게 이해하기 위해서 그림을 하나 그려보았습니다.
N개의 Base Learner가 내재되어 있는 앙상블 학습 모델에 새로운 입력값 Xk 가 들어오게 되면, N개의 Base Learner에서 N개의 예측값이 나오게 됩니다. 그리고 N개의 예측값에 대해서 다수결이나 평균값으로 예측값 (Yk)으로 출력합니다.
하지만 이 때, 앙상블 내부에 내재되는 Base Learner들은 두 가지 조건을 만족해야합니다.
(1) Error rate : p < 0.5
첫번 째 조건은 어찌보면 당연합니다. Base Learner의 Error가 0.5보다 작아야 한다는 것입니다. 즉, 그냥 랜덤하게 찍는 것보다는 성능이 더 좋아야지 앙상블을 쓰는 의미가 생깁니다.
(2) Two classifiers are diverse if they make different errors on new data points. (Independence)
두번 째 조건은 각 Base Learner 간의 독립성입니다. 예를 들어서, 하나의 Base Learner가 error가 높아진다고 해서, 다른 Base Learner도 그에 영향을 받아서, error가 높아지면 좋은 성능을 내기가 힘듭니다.
따라서 두 가지 조건을 종합해보면, 각각의 Base Learner들의 정확도가 0.5이상이면서, 독립인 Base Learner들을 사용하면 좋은 성능의 앙상블 학습 모형을 만들 수 있습니다.
그렇다면, 왜 앙상블 학습을 하는 것일까요??
주된 이유는 바로, robust한 모델을 만들기 위해서입니다. 앙상블 학습은 모델의 분산을 줄여주는 효과를 가지고 있기 때문에, 입력값의 사소한 차이에도 민감하게 반응하는 문제에 대해서 매우 유용한 결과를 창출합니다.
2. 종류
앙상블의 종류에는 크게 4가지가 있습니다.
(1) Manipulating the training data
첫번째 방법은 바로 training data에 변화를 주면서, 새로운 Base Learner를 학습시키는 방법입니다.
이러한 방법은 overfitting이 자주 발생하는 알고르짐에 대하여 좋은 효과를 가져옵니다. (Ex: Decision Tree, Neural network)
Manipulating the training data 방법에는 크게 Bootstrap, Cross-validation, AdaBoost가 있습니다.
각 방법에대한 자세한 내용은 다음 포스팅들에서 다루도록 하겠습니다.
(2) Manipulating the input features
두번째 방법은 input features에 변화를 주면서, 새로운 Base Learner를 학습시키는 방법입니다.
가장 유명한 알고리즘으로는 Random Forest가 있습니다.
(3) Manipulating the output targets
세번째 방법은 input features에 변화를 주면서, 새로운 Base Learner를 학습시키는 방법입니다.
이 방법의 알고리즘은 Class가 많을 때 유용한 방법입니다.
그림으로 도식화하면 다음과 같습니다.
만약 10개의 Class가 있다고 가정할 때, Class를 2 그룹으로 묶어서 이진 분류 문제로 바꿉니다. 그리고, 새로운 데이터가 들어오면 2개의 그룹중에 하나로 배정이 될텐데, 배정인 된 그룹에 속한 Class에 Vote를 한 표씩 추가합니다. 위의 그림에서는 Class A로 배정되므로, Class 1,3,5,7,10에 대하여 Vote를 1표 추가합니다. 같은 방법으로 N개의 이진 분류 Classfier를 만들어 Xk 를 예측해서 가장 높은 Vote를 받은 Class로 예측합니다.
(4) Injecting Randomness
Injecting Randomness는 말 그대로, 랜덤성을 주입하는 것입니다.
예를 들어서, 의사결정나무를 학습할 때, Information gain이 가장 큰 방향으로 가지를 늘려나가는데, 이 때 항상 그렇게 하지 않고, Information gain 에 비례하도록 확률을 주어서 학습하는 것입니다. 즉, 물론 Information gain이 높은 방향으로 학습 될 확률이 높지만, 항상 그렇게 되지는 않기 때문에, 다양한 모델이 생성됩니다.
'데이터 다루기 > 머신러닝 이론' 카테고리의 다른 글
[머신러닝] Ensemble Learning (3) Boosting (AdaBoost) (0) | 2019.07.02 |
---|---|
[머신러닝] Ensemble Learning (2) Bagging (0) | 2019.07.02 |
[머신러닝] 의사결정 나무 (Decision Tree) (0) | 2019.06.13 |
[머신러닝] Logistic Regression (0) | 2019.06.13 |
[머신러닝] Lasso Regression (0) | 2019.06.12 |