반응형

원본 링크



How Random Forests Can Keep You From Decision Tree

나무의 일생은 씨앗에서 시작한다. 씨앗이 자라고 젊은 식물이 된다. 젊은 식물은 몇년동안 나무로 바뀐다. 그리고 나서 나무는 자신의 영역을 숲으로 바꾼다. 거대한 숲 모두는 처음에 하나의 씨앗에서 시작했다. 따라서 규칙 기반 시스템(rule based system)도 비슷한 단계를 거친다.


Forest

데이터는 이 생애에서 씨앗이다. 데이터를 키우는 것이 데이터셋이 되고 데이터셋이 바로 젊은 식물이다. 결정트리 알고리즘은 데이터셋을 규칙기반 트리로 바꾼다. 이것이 데이터셋에 적용되고 나무가 된다.


결정 트리

여기서 랜덤포레스트(random forest)는 결정트리에서 파생된 새로운 알고리즘이다. 모든 데이터셋에 결정트리 알고리즘을 적용하는 대신 데이터셋이 하위 데이터셋으로 나뉘고 동일한 결정트리 알고리즘이 이 하위 데이터셋에 적용된다. 결정은 하위 데이터셋의 결과중 가장 많은 수를 갖는 것으로 만들어진다.


랜덤포레스트


Decision Tree is Good, but Random Forests are Better

그러면 왜 전통적인 결정 트리 알로기즘이 랜덤포레스트로 발전했을까? 모든 데이터셋에서 작업하는 것은 오버피팅의 원인이 될 수 있다. 다르게 말하면 이것은 학습대신 기억을 할 수 있다. 이런 경우, 훈련셋에서는 높은 정확도를 갖지만, 새로운 인스턴스에서는 실패할 것이다.

또한 랜덤포레스트는 여러개의 작은 데이터셋에서 동작한다. 데이터셋 크기를 증가시키는 것은 결정 트리에서 기하급수적으로 학습시간을 증가시킬 것이다. 따라서 랜덤포레스트에서 학습 절차를 병렬화할 수 있다. 이런 방법으로 학습시간이 결정트리보다 짧아진다.

만약 결정트리가 주변의 현명한(wise/sage) 사람이라면 랜덤포레스트는 여러명의 똑똑한(smart) 사람이다. 현명한사람은 모든 분야를 알지만 똑똑한 사람은 다른 분야에서 전문가일 수 있다. 똑똑한 사람은 아마도 올바른 답을 답하지만 항상 질문할 수 있는 기회가 있는 것은 아니다. 그러나 똑똑한 사람들을 모으는 것은 아마도 가장 받아들일 수 있을 것이다.

여러분은 아마도 Voltron이라는 만화 시리즈를 기억할 것이다. 요즘은 넷플릭스에서 재방송하고 있다. 요약해보면, 5대의 다른 사자로봇이 있고 이 사자로봇은 각각 싸울 수 있는 능력이 있다. 또한 합체하여 Voltron이라는 거대 로봇이 될 수 있다. 매화에서 사자로봇 각자가 싸우지만 적을 물리치기 위해 결국 합체하여 Voltron이 된다. 랜덤포레스트가 합체한 Voltron과 같다.


Voltron is a super robot combined from 5 different robots

여전히 태양아래에서 새로운 것은 없다!



Python Code

직접 코딩하는 것은 알고리즘을 더 잘 이해하는데 도움이 된다. 여기에서 랜덤포레스트를 파이썬으로 구현한 것을 찾을 수 있다.(Chefboost)


반응형

+ Recent posts