랜덤 포레스트

지혜로운 숲의 결정 방식

by 이연곤

의사결정나무 한 그루와 그 나무들이 빽빽하게 모인 숲. 이 둘 중에 뭐가 더 현명하다고 했는지 기억나시나요?

숲이였죠.

앞서 하나의 의사결정 나무가 모여서 엄청나게 강력한 숲, '랜덤포레스트'를 만들 수 있다고 했습니다.



그런데 이런 질문을 할 수 있죠 -

나무가 모여서 숲이 되는 건 알겠는데 왜 굳이 그렇게까지 해야 할까

그냥 아주 똑똑한 나무 한 그루만 잘 키우면 되는 거 아닌가

왜 굳이 힘들게 숲을 만들어야 하는 걸까


그래서 함께 따라가 볼 여정은 이렇습니다 -

먼저 나무와 숲이 각각 뭔지 알아보고,

왜 나무 하나로는 부족한지 그 한계를 짚어 볼 거예요.

그리고 이 숲을 지혜롭게 만드는 비밀은 뭔지,

또 숲은 어떻게 최종 결정을 내리는지,

마지막으로 장점과 단점은 무엇인지까지

차근차근 알아보겠습니다.


자, 그럼 똑똑한 숲이 어떻게 작동하는지 그 비밀을 파헤쳐 보러 가볼까요~




하나의 나무, 하나의 숲


첫 번째로, 숲 전체를 이해하려면 당연히 그 숲을 이루는 나무 한 그루부터 제대로 알아야겠죠.

이 랜덤포레스트를 구성하는 가장 기본적인 단위, 그러니까 나무 한 그루에 해당하는 게 바로 '의사결정나무' (Decision Tree) 입니다.


앞서 살펴보았죠, 마치 스무고개 하는 거랑 똑같다고 보시면 됩니다.


털이 있나요? → 예 → 날개가 있나요? → 아니요


이런 식으로 계속 질문을 던져서 답을 찾아가는 아주 직관적인 모델이죠.

이 의사결정나무의 가장 큰 장점은 그 결정 과정이 우리 눈에 훤히 보인다는 거예요.

하지만 바로 그 단순함이 양날의 검이 됩니다. 정확도가 좀 떨어지는 경향이 있고,

특히 '과적합' (Overfitting) 이라는 치명적인 약점을 가지고 있다고 했습니다.


그리고 이 골치 아픈 과적합 문제를 해결하기 위해 숲이 등장한다고 했습니다!


나무들을 여러 개 모으는 기술. 이걸 전문 용어로 '앙상블 학습' (Ensemble Learning) 이라고 부른다고 했지요.

이름은 좀 어려워 보이지만 원리는 간단합니다. 백지장도 맞들면 낫다는 속담 아시죠? 딱 그겁니다.

보통 전문가 한 명의 의견보다는 여러 전문가의 의견을 종합할 때 더 좋은 결론이 나오는 것처럼

머신러닝에서도 여러 모델을 합치는 게 훨씬 더 성능이 좋아요. 말 그대로 집단지성의 힘을 빌리는 거죠.



그런데, 그냥 숲이 아니라 지혜로운 숲으로 만드는 데는 아주 특별한 비법이 숨어 있습니다.

그냥 똑같은 나무를 수백 그루 복사해서 붙여넣기만 하면, 그냥 나무 한 그루랑 다를 게 없습니다. 아무 의미가 없어요.

핵심은 숲을 이루는 나무 하나하나를 저마다 다른 개성과 관점을 가진 독립적인 전문가로 만드는 겁니다.




무작위성이 지혜로운 숲을 만든다


과연 어떻게 나무마다 다른 개성과 관점을 가진 독립적인 전문가로 만드는 게 가능할까요? 그 비밀의 재료는 바로 무작위성(randomness), 즉 랜덤 입니다.


'랜덤포레스트'라는 이름에 괜히 랜덤(random)이 들어간 게 아니에요.


아주 영리하게 두 가지 다른 방식으로 이 무작위성을 활용해서 숲 전체의 힘을 극대화합니다.


첫번째 비법은 배깅(Bagging)

쉽게 말해 나무들한테 데이터를 나눠 줄 때 공평하게 나눠 주지 않는 거예요. 원본 전체 데이터에서 무작위로 데이터를 막 뽑아서 각 나무한테 주는 거죠.

근데 여기서 진짜 중요한 포인트는 '복원 추출', 즉 뽑았던 걸 다시 집어넣고 또 뽑는다는 겁니다.


그래서 어떤 데이터는 여러 번 뽑히고 어떤 데이터는 아예 한 번도 못 뽑힐 수도 있어요.

결국 나무마다 조금씩 다른 편향된 데이터를 보고 배우게 되는 거죠.

출발선부터 다르게 만들어 주는 셈입니다.



두 번째 비법은 특성 무작위성

이건 나무가 결정을 내리는 매 순간마다 적용됩니다.

나무한테 모든 정보를 다 보여주는 게 아니라 정보의 일부를 무작위로 가린 다음에 "여기 있는 것들 중에서만 최선의 선택을 해 봐라" 하는 거예요.


마치 여러 전문가에게 일부러 서로 다른 도구만 쥐여 주고 같은 문제를 풀게 하는 거죠.

그럼 당연히 저마다 다른 방식으로 문제에 접근하고 다른 해결책을 내놓게 되겠죠.



이중 무작위성의 힘

이렇게 데이터를 랜덤으로 주고,

고려할 정보까지 랜덤으로 제한하는 이중 장치를 걸어두면,

정말 어마어마한 효과가 나타납니다.


숲을 이루는 나무들은 서로 다른 걸 보고, 다른 기준으로 배웠기 때문에

아주 다양하고 독립적인 전문가가 되는 거죠.


그럼 뭐가 좋을까요?

한 나무가 실수를 해도 다른 수많은 나무들이 그걸 바로잡아 줄 수 있고요.

결과적으로 숲 전체는 한두 개의 실수에 흔들리지 않는 훨씬 안정적이고 강인한 모델이 되는 겁니다.

과적합 문제도 자연스럽게 해결되고요.




숲은 어떻게 결정하는가?


이렇게 저마다 개성이 뚜렷한 수백 명의 전문가 아니 수백 그루의 나무들이 모였습니다.

그럼 이 숲은 새로운 문제가 닥쳤을 때 과연 어떻게 딱 하나의 결론을 내리는 걸까요?


그 방법은 놀라울 정도로 민주적이고 간단합니다.


문제 유형에 따라 딱 두 가지 방식을 쓰는데요.

예를 들어 사진 속 동물이 고양이냐 개냐처럼 정답이 딱 정해져 있는 '분류' 문제에서는 다수결 투표를 합니다. "나는 고양이에 한 표", "나도 고양이" 이렇게 가장 많은 표를 받은 쪽이 최종 결정이 되는 거죠.

반면에 내일 기온이 몇 도일지 예측하는 것처럼 숫자를 맞히는 '회귀' 문제에서는 모든 나무가 내놓은 예측값의 평균을 구해서 그걸 최종 결과로 삼습니다.

아주 합리적이죠.



야생동물 보호 구역을 한 번 상상해 보세요. 어떤 나무는 동물의 식습관 변화만 뚫어지게 쳐다보고,

다른 나무는 동물의 활동량 데이터만 분석하고,

또 다른 나무는 동물의 혈액 검사 결과만 봅니다.

이렇게 각자 다른 전문 분야를 가진 나무들이 모여서 종합적으로 판단하니까

한 명의 수의사가 혼자서는 놓칠 수 있는 아주 복잡하고 미묘한 질병의 신호까지도 훨씬 더 잘 잡아낼 수 있게 되는 거죠.




숲의 장점


이 원리는 비단 동물들을 돌보는 데만 쓰이는 게 아닙니다.

암세포를 찾아내는 의료 영상 분석

카드 사용 내역에서 사기 거래를 잡아내는 금융사기 탐지

발전소 같은 복잡한 시스템의 고장을 미리 예측하는 일


단 하나의 오류가 엄청난 결과를 낳을 수 있는 수많은 중요 분야에서 이 '랜덤포레스트'는 정말 강력한 해결사로 활약하고 있습니다.


이렇게 랜덤포레스트의 가장 큰 장점은 정확도입니다. 나무 한 그루일 때보다 훨씬 높고 안정적인 성능을 보여주죠.



숲의 단점


물론 세상에 완벽한 건 없겠죠. 강력한 랜덤포레스트라고 해서 장점만 있는 건 아닙니다.

단점도 아주 명확해요.


수백 개의 나무가 투표해 내린 결정이다 보니까 왜 그런 결론이 나왔는지 그 이유를 속 시원하게 설명하기가 굉장히 어려워져요. 일종의 블랙박스 모델이 다시금 되어 버리는 거죠.


그리고 당연히 나무가 많아지는 만큼 컴퓨터 메모리도 더 많이 필요하고요.



결국 핵심적인 트레이드오프는 바로 이겁니다. 나무 한 그루가 가진 단순하고 명쾌한 설명 능력을 포기하는 대신 숲이 주는 강력한 정확도를 얻는 거죠.

성능이냐 해석 가능성이냐, 이 둘 사이에서 현명한 줄타기를 해야 하는 겁니다.




집단지성


그러나, 랜덤포레스트는 적절한 성능과 자원 효율성 사이에서 실용적인 최적의 지점을 차지하고 있는 모델이라고 할 수 있습니다.

특히 엑셀 시트처럼 표 형태로 잘 정리된 데이터를 다룰 때는 정말 발군의 성능을 보여주기 때문에

많은 데이터 분석가들이 가장 먼저 고려하는 알고리즘 중 하나로 꼽히죠.



랜덤포레스트의 핵심은 단순히 기술적인 원리를 넘어서는 깊은 철학을 담고 있는 것 같습니다.


바로 서로 다른 관점,

다른 경험을 가진 개체들이 모였을 때


그 집단이 얼마나 더 현명하고, 또 얼마나 더 강인한 결정을 내릴 수 있는가에 대한

아주 명확한 증명 아닐까요?





마지막으로 여러분께 이런 질문을 하나 던지면서 마무리하고 싶네요. 혹시 여러분은 인생에서 중요한 결정을 내릴 때 어떻게 다양한 관점을 모으고 계신가요?


혹시 너무 한쪽 이야기만 듣고 있지는 않나요?


더 나은 결정을 돕는 여러분만의 랜덤포레스트는 과연 무엇인지, 한 번쯤 생각해 보시는 건 어떨까요?

:)




이전 08화의사결정나무