배깅(Bagging), 배깅피쳐(Bagging Feature)
● 500개의 행이 있는 학습 데이터 셋이 있다고 가정해봅시다. 이 중 임의로 50개씩 행을 선택해서 하나의 의사결정트리를 만드는 게 '와꾸''틀'의 골자입니다.
● 이 틀는'배깅(Bagging)'이라고 불립니다.
● 이런 식으로 트리를 만들면 모든 트리들이 다 다를 거라는 것을 추정해볼 수 있습니다. 아하! 정리하면 배경은 학습 데이터의 일부를 각각 다르게 학습시켜 서로 다른 의사결정 트리를 만드는 기법이로군요!
● 배깅의 목적은? 트리의 다양성을 확보하는 데 있습니다.
● 근데 배깅에서 잊지 말아야 할 것이 있습니다. 바로 '중복'을 허용한다는 점이죠.
● 500개의 행이 있는 가방(bag)에서 임의로 50개 뽑아 첫 번째 트리를 만들고 그 50개의 행은 가방에 도로 집어넣습니다.. 그리고 다시 500개의 행에서 또 임의로 100개를 뽑아 두 번째 트리를 만든 후 다시 가방에 집어넣는 과정을 계속해서 반복하여 '중복'을 보장합니다.
● 그런데 말입니다. 배깅은 '트리의 개수'만 적용하는 것이 아닙니다. 의사결정트리에서의 '속성'에도 접목할 수 있습니다. 이를 '배깅피쳐(Bagging Feature)'라 부릅니다. 트리를 만들 때, 사용될 속성(feature)을 제한하는 것이죠. 이 또한 트리의 '다양성'을 확보하기 위해 실시합니다.
● 조금 더 자세히 살펴봅시다. 원래 트리를 만들 때는 모든 속성들을 살펴보고 정보 획득량이 가장 많은 특성을 반영하는 질문을 선택해서 그걸 기준으로 데이터를 분할했습니다.
● 그러나 여기서 전체 속성을 다 고려하지 않고, 일부 몇 개만 고려하여 트리를 작성하도록 합니다.
● 예를 들면 총 36개의 속성이 있는데, 그 중 6개의 속성만 뽑아서 살펴보고, 그 중 정보 획득량이 가장 높은 걸 기준으로 데이터를 분할하는 겁니다. 그 다음 단계에서도 다시 임의로 6개의 속성만 선택해서 살펴보고를 6번 반복합니다. 여기서도 '중복'을 허용합니다.
● 그렇다면 몇 개씩 속성을 뽑는 게 좋을까요? 총 속성이 36개면 6개, 즉 전체 속성의 개수의 제곱근만큼 선택하는 게 가장 좋다고 합니다. 이유는 몰라도, 경험적으로 그렇다고 합니다. 일종의 a rule of thumb(경험 법칙)인 셈이죠.
● 성능이 그렇게하면 좋다고 하니까 군말 없이 따르기로 합니다.
● 이렇게 '배깅'이라는 와꾸를 짜서 서로 다른 다양한 트리들을 만들 수 있게 되었으니 이것들을 모아 ‘숲’을 이루도록 하면 되겠군요.
● 트리들이 이질적일수록 랜덤 포레스트의 성능은 좋아집니다.
● 협동학습에서 모둠 형성의 기본전제는 '이질 집단' 입니다. 이질적일수록 이해는 어려울 수 있어도, 이롭습니다.
● '배깅'을 통해 오늘도 사람을, 인생을 배웁니다.
총속성이개인데 6개의 속성을 뽑아 배깅한다고 했을 때6번만 반복하는 것이 아님을 부연합니다. 배깅할때 몇 번 반복할지는 내가 만들고자 하는 트리의 개수에 따라 결정됩니다.
● 데이터의 값을 예측할 때 하나의 모델만 사용하지 않고, 여러 개의 모델을 '조화''조화'롭게 학습시켜 예측의 정확도를 높이는 방법을 앙상블 학습이라 했습니다.
● 다른 말로는 모델 결합(model combining)이라고도 하죠.
● 하나의 모델로 원하는 성능이 나오지 않을 경우 앙상블 학습을 시켜 성능을 향상할 수 있다는 것이 골자입니다.
● 지난번 익혔던 배깅은 사실 Bag에서 유래한 것이 아니라, 'Bootstrap Aggregation'의 약자입니다. 배깅은 샘플을 여러 번 뽑는 Bootstrap을 통해 각 모델을 학습시켜 결과물을 집계(Aggregation)하는 방법입니다.
● 아하, 부트스트랩(Bootstrap)은 중복을 허용한 리샘플링을 의미하는 것이로군요.
● 그런데 말입니다. 부스팅(Boosting)이라는 것이 있습니다. 이것도 한번 알아볼까요?
● 부스팅은 배경과는 차이가 있습니다. 즉, 한 모델들의 예측이 다른 모델의 예측에 영향을 줄 수 있습니다.
● 하나의 모델이 예측을 하면 예측값에 따라 데이터에 가중치가 부여되고, 그 가중치가 다른 모델의 예측에 영향을 줍니다. 그러니까 배깅은 모델 하나가 각각 독립적으로 예측을 하지만, 부스팅은 그 전의 모델의 예측이 그다음 모델의 예측에 영향을 주는 것입니다.
● 정리하면 배깅은 모델들이 독립적이고, 동시에 병렬로 학습됩니다. 그러니 속도가 빠릅니다. 적은 데이터 만으로도 준수한 일반화 성능을 얻을 수 있죠.
● 하지만 부스팅은 모델들의 학습이 다른 모델에 영향을 주기에 순차적으로 학습됩니다. 오답에는 높은 가중치, 정답에는 낮은 가중치를 주는 것이죠. 보통 배깅보다 성능이 뛰어납니다만, 시간이 오래 걸리고, 과적합의 문제도 있습니다.
● 그래서 성능이 문제라면 부스팅을 선택하여 쓰고, 오버피팅의 문제가 도드라지면 배경을 씁니다. 즉, 상황에 맞게 선택하여 쓰는 것이죠.
● 사실 배깅과 부스팅을 포함한 모델 결합의 아이디어인 앙상블 학습은 성능이 강력합니다. 이 모든 게 작은 나무 한 그루에서 시작되었다는 것을 잊지 마세요. 머신러닝에서 트리 모델을 무시할 수가 없는 게 바로 이런 이유에서 입니다..
'인공지능' 카테고리의 다른 글
8번째 인공지능 - 의사결정트리 (0) | 2022.08.16 |
---|---|
7번째 인공지능 - 유클리디안 거리, 맨해튼 거리, 의사결정 트리 (0) | 2022.08.16 |
6번째 인공지능 - SVM, 커널, 커널트릭, K-최근접 이웃(KNN) 알고리즘 (0) | 2022.08.16 |
5번째 인공지능 - 신경 세포 뉴런, SVM (0) | 2022.08.16 |
4번째 인공지능 - 기울기 소실 문제 (0) | 2022.08.16 |
댓글