본문 바로가기
인공지능

9번째 인공지능 - 배깅(Bagging), 배깅피쳐(Bagging Feature)

by ⁜±µ♪ 2022. 8. 16.

배깅(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)이라는 것이 있습니다. 이것도 한번 알아볼까요?

부스팅은 배경과는 차이가 있습니다. , 한 모델들의 예측이 다른 모델의 예측에 영향을 줄 수 있습니다.

하나의 모델이 예측을 하면 예측값에 따라 데이터에 가중치가 부여되고, 그 가중치가 다른 모델의 예측에 영향을 줍니다. 그러니까 배깅은 모델 하나가 각각 독립적으로 예측을 하지만, 부스팅은 그 전의 모델의 예측이 그다음 모델의 예측에 영향을 주는 것입니다.

정리하면 배깅은 모델들이 독립적이고, 동시에 병렬로 학습됩니다. 그러니 속도가 빠릅니다. 적은 데이터 만으로도 준수한 일반화 성능을 얻을 수 있죠.

부스팅 개념 사진

하지만 부스팅은 모델들의 학습이 다른 모델에 영향을 주기에 순차적으로 학습됩니다. 오답에는 높은 가중치, 정답에는 낮은 가중치를 주는 것이죠. 보통 배깅보다 성능이 뛰어납니다만, 시간이 오래 걸리고, 과적합의 문제도 있습니다.

그래서 성능이 문제라면 부스팅을 선택하여 쓰고, 오버피팅의 문제가 도드라지면 배경을 씁니다. , 상황에 맞게 선택하여 쓰는 것이죠.

부스팅 개념 사진 2번째

사실 배깅과 부스팅을 포함한 모델 결합의 아이디어인 앙상블 학습은 성능이 강력합니다. 이 모든 게 작은 나무 한 그루에서 시작되었다는 것을 잊지 마세요. 머신러닝에서 트리 모델을 무시할 수가 없는 게 바로 이런 이유에서 입니다..

앙상블 학습 사진

 

댓글