군중은 똑똑하다2 — AdaBoost

딥벨리데이션
5 min readApr 13, 2017

지난 회 ‘군중은 똑똑하다’ 편에서 Random Forest 모델에 대하여 알아보았습니다. Random Forest는 수많은 의사 결정 트리들을 모아서 의사 결정 ‘숲’을 만든 후 투표에 의한 결정을 내린는 앙상블 방식이 요점이었습니다. 오늘은 Random Forest 외에도 데이터 사이언티스트들이 자주 쓰는 또 다른 모델, 숲의 군중보다 조금 더 똑똑한 군중, AdaBoost (Adaptive Boosting)에 대해서 설명해 보도록 하겠습니다.

출처

AdaBoost 역시 Random Forest처럼 의사 결정 트리 기반의 (tree-based) 모델입니다. 하지만 Random Forest처럼 각각의 트리들이 독립적으로 존재하지는 않습니다. 예를 들어, 아래의 상황에서 ‘+’와 ‘-’들을 구분해 내는 것이 목적이라고 가정합시다.

출처: Analytics Vidhya

AdaBoost는 첫 번째 의사 결정 트리를 생성합니다. 좌측에서부터 약 1/5 지점을 기준으로 왼쪽은 ‘+’, 오른쪽은 ‘-’라는 아주 단순한 결정을 내립니다. 한번 그은 선으로는 최선의 결과이긴 하지만, 이 결정은 두 기호를 완벽하게 분리하지 못합니다. 세 개의 ‘+’들이 ‘-’라고 잘못 지정되었네요. 저희는 틀린 것을 또 틀리고 싶지는 않습니다. 다음번에는 저 세 개의 ‘+’들을 정확하게 맞추기 위해서 ‘가중치’를 크게 조정합니다. ‘가중치’가 상향되었으니, 틀리면 다른 이미 맞춘 기호들을 틀리는것보다 피해가 큽니다. 재조정된 ‘가중치’로 AdaBoost는 두번째 의사 결정 트리를 생성합니다.

저번에 놓친 +들이 더 커진 것을 볼 수 있습니다.

이번에는 우측에서 약 1/5 지점을 기준으로 왼쪽은 ‘+,’ 오른쪽은 ‘-’라는 결정을 내립니다. 역시 한 번의 선으로 나눌 수 있는 최선의 결과이고, 세 개의 ‘+’들을 모두 맞추기는 했지만, 이번에는 세 개의 ‘-’가 +라고 잘못 지정되었습니다. AdaBoost는 같은 과정을 반복합니다.

이번에는 상단으로부터 약 1/3 지점의 가로선을 기준으로 기호들이 나뉘는군요! 기호들의 ‘배점'을 주의 깊게 살펴봅시다. 첫번째와 두번째 의사 결정 트리에서 성공적으로 맞춘 세 개의 기호들의(원으로 표시되어있는) 배점은 줄어든 반면에, 두번째 트리가 틀린 기호들의 배점은 또다시 상향 조정되었습니다.

이처럼 트리들이 생성되었으니, 이제는 Random Forest와 같이 생성한 트리들을 합칠 차례입니다. 세가지 트리들을 합친다면 …

위와 같은 다소 복잡한 경계들이 형성되고, 훨씬 더 정확한 예측을 할 수 있게 됩니다.

Random Forest와 AdaBoost의 근본적인 차이는 각각의 트리를 생성하는 방식에 있습니다. Random Forest는 각각의 트리들이 상당히 우수합니다. 퀴즈 프로그램에 나간다고 생각한다면, 국어, 수학, 역사, 음악, 미술, 체육 등 각기 다른 분야에 우수한 전교 5등과 함께 출전하는 것과 같은 원리입니다. 이들은 퀴즈 프로에 나가기 전까지 같은 학교에 있을 필요도, 서로 알 필요도 없습니다. 내신은 같이 출전한 전교 1등 팀에게 밀릴지도 모릅니다. 하지만, 내신에 중요한 ‘국영수' 위주의 학습을 위주로 한 1등 팀은 서로 아는 것도 비슷하여 철학 문제가 출제된다면 다 같이 틀려, 퀴즈 대회에서만큼은 전교 5등 팀 Random Forest가 전교 1등팀을 꺽을 수 있습니다.

하지만 이러한 강적도 전교 50등이 모인 AdaBoost팀의 적수는 되지 못합니다. AdaBoost팀은 Random Forest팀과는 다르게 같은 동네에서 자란 죽마고우들 입니다. 개개인들은 공부를 잘하지 못하지만, 서로의 강점과 약점들은 빠짐없이 알고 있습니다. 친구들이 자주 틀리는 문제들을 위주로 공부해서, 내신을 몰라도 퀴즈 대회에서 만큼은 최강의 팀이 되죠.

그럼 Random Forest 같은것은 필요 없고, AdaBoost만 쓰면 되냐고요? 그것은 아닙니다. AdaBoost, 확실히 정확도는 높지만 팀을 구성하는데 오래 걸립니다. AdaBoost는 퀴즈 대회에 출전하고 싶은 학생 한명을 고른 후, 친구들을 한명씩 불러와야 하는 반면에, Random Forest는 대회에 참가하고 싶은 전교 5등을 구하는 공고문 하나만 올리면 끝나기 때문입니다. 이 것을 전문적인 용어로 “병행 연산 (parallel computing)”이라고 합니다. Random Forest의 트리들은 여러 대의 컴퓨터로 만들 수 있어서 연산적인 측면의 어드밴티지가 있죠. 그래서 시간적인 제약이 많은 현실 세계에서는 Random Forest가 많이 사랑받고 있는 이유입니다.

하지만 AdaBoost의 이러한 협력 방식, 어떤 의미에서는 진정한 협력이 아닐까요? 정확도만이 배울 점이아닌 것 같습니다.

이 현 2017–04–12

--

--