ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 간단하게 설명한 Random Forest
    MACHINE LEARNING 2018. 3. 3. 08:22
    반응형

    이 문서는 영문으로된 내용을 구글 번역기를 활용하여 번역한 내용입니다. 
    개인적인 공부 및 추후 다시 볼 수 있도록 하기 위해 개인 블로그에 번역 내용을 옮겨 놓았습니다.
    원문과 내용이 다를시 책임지지 않으며, 저작권 문제가 발생시 언제든 삭제 될 수 있습니다. 

    원문보기 : https://medium.com/@williamkoehrsen/random-forest-simple-explanation-377895a60d2d



    간단하게 설명한 Random Forest

    직관적인 예로 Random Forest을 이해합니다

    기술적 개념을 배울 때, 나는 바닥에서 시작해서 즉시 길을 잃는 것보다 높은 수준의 개요로 시작하여 세부 사항으로 내려가는 것이 낫다는 것을 알게 되었습니다. 이 라인을 따라 이 게시물은 직관적인 예를 사용하여 강력한 기계 학습 알고리즘인 Random Forest의 개념적 틀을 제공합니다. 기본적인 아이디어를 얻은 후, 간단한 구현으로 나아가서 그 기법이 어떻게 작동하는지, 그리고 그것이 나에게 유용할지 알아보고 마침내 이론을 깊이 파고들어 세부 사항을 연구합니다. 이를 염두에 두고 Random Forest에 대한 개요를 이해한 후, 이 포스트의 2부를 자유롭게 확인하십시오. 이 두 가지를 종합해 보면 학습 과정의 첫 두 단계를 정복하고 원하는 만큼 Random Forest와 기계 학습에 뛰어들 준비가 되어 있습니다.

     

    의사 결정 트리(Decision Tree)

    Random Forest 모델을 이해하려면 먼저 Random Forest의 기본인 의사 결정 트리에 대해 배워야 합니다. 우리는 누구나 일상 생활에서 의사 결정 트리를 사용하는데, 설령 그 이름을 모르는 사람이라 할지라도 그 과정을 인식 할 수 있을 것이라고 확신합니다. 이 개념을 설명하기 위해 우리는 매일 도시의 최고 기온을 예측하는 예제를 사용합니다. 상황을 똑바로 유지하기 위해 워싱턴 주 시애틀을 사용 하겠지만 여러분은 자신의 도시를 자유롭게 선택하십시오.

    단일 최대 온도 질문에 답하기 위해선 실제로 일련의 쿼리를 통해 작업해야 합니다. 우리는 도메인 지식을 바탕으로 초기 합리적인 범위를 형성하는 것으로 시작하는데, 우리가 시작하기 전에 그 시간을 모른다면 이 문제의 답은 30-70도(화씨) 일 수 있습니다. 점차적으로 일련의 질문과 답변을 통해 우리는 하나의 예측을 할 수 있을 정도로 자신감을 가질 때까지 이 범위를 줄입니다.

    무엇이 좋은 질문입니까? 음, 우리가 가능한 한 범위를 제한하고 싶다면, 당면한 문제와 관련된 질문을 생각하는 것이 현명할 것입니다. 기온은 일년 중 시간에 따라 크게 다르므로 시작하기에 적합한 것은 다음과 같습니다. 계절은 무엇입니까? 이 경우 계절은 겨울이므로 예측 범위를 30-50도로 제한 할 수 있습니다. 왜냐하면 우리는 겨울 동안 태평양 북서쪽의 일반적인 최고 기온을 알기 때문입니다. 이 첫 번째 질문은 이미 우리의 범위를 반으로 줄였기 때문에 좋은 선택이었습니다. 만약 우리가 요일처럼 관련이없는 질문을 했다면, 예측의 범위를 전혀 줄일 수 없었을 것입니다. 그럼에도 불구하고 이 질문 하나로는 우리의 추정치를 좁히기에 충분하지 않습니다. 따라서 우리는 더 많은 정보를 찾아야 합니다. 좋은 후속 질문은 다음과 같습니다.이 날의 평균 평균 기온은 무엇입니까? 12월 27일 시애틀의 경우, 해답은 46도 입니다. 이를 통해 우리는 40-50도까지 범위를 더 제한할 수 있습니다. 다시 말하지만, 이것은 우리의 추정 범위를 크게 줄였기 때문에 좋은 질문입니다.

    올해는 평균보다 따뜻하거나 추울 수 있기 때문에 두 가지 질문만으로는 예측하기가 어렵습니다. 그러므로, 우리는 또한 올해가 비정상적으로 따뜻하거나 추운지 알기 위해 오늘의 최고 기온을 보고 싶어할 것입니다. 우리의 질문은 간단합니다. 오늘의 최고 기온는 무엇입니까? 만약 오늘의 최고 기온이 43도라면, 올해는 더 추울 것이고 내일에 대한 우리의 추정치는 역사적인 평균보다 조금 낮아야 합니다. 이 시점에서 우리는 내일 최고 기온을 44도로 예측할 수 있다고 확신할 수 있습니다. 더 확신을 갖고 싶다면, 우리는 AccuWeather나 Weather Underground와 같은 추가 출처를 참고하여 우리가 정신 모델에 통합할 수 있는 최고 기온 예측과 같은 정보를 얻을 수 있습니다. 그러나 어떤 시점에서는 더 많은 질문에 대한 답변이 줄어들며 계속해서 더 많은 데이터를 수집 할 수 없습니다. 우선 이 세 가지 질문을 이용해서 예측을 해보겠습니다.

    우리는 일련의 질문을 사용했고, 각 질문은 우리가 단일 예측을 할 수 있을 만큼 확신할 수 있을 때까지 가능한 값을 좁혔습니다. 우리는 변화하는 질문과 대답만을 가지고 일상 생활에서 이 결정 과정을 반복합니다. 이 시점에서 우리는 의사 결정 트리와 연결될 준비가 거의 되어 있지만, 우리가 답을 찾기 위해 취한 직관적인 단계를 그래픽으로 표현하는 데 잠시 시간을 할애해 보겠습니다.

    온도 예측을 위한 의사결정 프로세스

    더 많은 정보를 얻을 수 있는 우리의 추정치입니다. 결국 우리는 데이터 수집을 중단하고 결정을 내립니다. 이 경우는 최대 온도 예측입니다. 문제에 대한 우리의 자연스러운 접근 방식은 우리가 질문과 답변의 흐름도라고 부르는 것입니다. 사실, 이 플로우차트는 의사 결정 트리의 기본 모델입니다! 그러나 인간으로서 우리는 이치에 맞는 지름길을 택하지만 기계에 대해서는 직관적이지 않기 때문에 완전한 의사 결정 트리를 구축하지 못했습니다.

    여기에 제시된 의사 결정 프로세스와 실제 의사 결정 트리에는 두 가지 주요 차이점이 있습니다. 첫째, 우리는 질문에 대한 답변이 다른 경우 예를 들어 겨울이 아닌 여름인 경우와 같이 예상치 못한 다른 지점을 나열하는 것을 게을리했습니다. 우리는 ‘오늘날의 최대 온도가 어느 정도인가?’라는 질문을 던지면 그 답은 실제 값이 될 수 있습니다. 대조적으로, 기계 학습에서 구현 된 의사 결정 트리는 모든 질문에 대한 가능한 모든 대안을 나열하고 모든 질문을 참/거짓 형식으로 질문합니다. 이것은 인간이 자연스럽게 생각하는 방식이 아니기 때문에 이해하기가 조금 어렵습니다. 아마도 이 차이를 나타내는 가장 좋은 방법은 예측 프로세스에서 실제 의사 결정 트리를 만드는 것입니다.

    온도 예측을 위한 기계 학습 의사결정 트리

    각 질문 (흰색 블록)에는 참 또는 거짓이라는 두 가지 답변만 있습니다. 또한 각각의 참 및 거짓 대답에 대해 별도의 가지가 있습니다. 질문에 대한 대답이 무엇이든, 우리는 결국 예측에 도달합니다(녹색 블록에 표시). 이 ‘컴퓨터 친화적’ 버전의 의사결정 트리는 직관적인 모델과는 다르게 보일 수 있지만, 정확히 같은 방식으로 작동한다. 왼쪽 노드에서 시작하여 길을 따라 질문에 답하는 방식으로 진행합니다. 예를 들어, 겨울은 계절이므로 참 지점을 선택하십시오. 우리는 역사적 평균이 46이라고 말 했으므로 두 번째 질문도 참입니다. 마지막으로 오늘의 최대 온도가 43 일 때 세 번째 답변은 True입니다. 따라서 최종 예측은 내일 최대 온도는 40도이며 우리의 추측인 44와 비슷합니다.

    이 모델은 의사 결정 트리의 모든 기본 특성을 포함합니다. 나는 의도적으로 ‘질문’이 형성되는 방식과 임계값이 설정되는 방식 등 모든 기술적 세부 사항을 빠뜨렸습니다. 하지만 개념적으로 모델을 이해하거나 파이썬 코드로 구현하기 위해 이러한 세부 사항이 필요하지는 않습니다.

    내가 언급해야 할 의사결정 트리의 한 측면은 그것이 실제로 어떻게 학습되는지 입니다. 우리는 질문에 대한 대답이 세상의 틀에 어떻게 들어맞는지에 따라 예상 범위를 정제했습니다. 계절이 겨울이면, 우리의 추정치는 여름보다 낮습니다. 그러나 의사 결정 트리의 컴퓨터 모델은 사전 지식이 없으며 그 자체로 '겨울 = 더 차가운'연결을 만들 수 없습니다. 우리가 제공하는 데이터로부터 문제에 대한 모든 것을 학습해야 합니다. 우리는 일상적인 경험을 통해 플로우 차트에서 나온 답변을 합리적인 예측으로 변환하는 방법을 알고 있습니다. 하지만, 모델은 오늘날의 온도가 과거 평균보다 따뜻하다면 내일의 최대 온도도 더 따뜻할 수 있도록 이러한 관계 각각을 가르쳐야 합니다. 감독된 기계 학습 모델로서, Random Forest는 데이터(오늘날의 온도, 과거 평균 등)를 모델 구축의 학습(또는 피팅) 단계에서 출력(내일 최대 온도) 단계로 맵핑하는 법을 배웁니다.

    훈련 과정에서 우리는 모델에게 문제 영역(전날의 온도, 올해의 계절, 과거 평균)과 관련된 과거 데이터를 제공하고, 모델이 예측하는 법을 배우고 싶은 실제 가치를 제시합니다. 모델은 데이터(기계 학습의 기능으로 알려짐)와 예측하고자 하는 값(목표라고 함) 간의 관계를 학습합니다. 의사 결정 트리는 위에 표시된 구조를 형성하여 가장 정확한 추정을 가능하게하기 위해 질문할 최상의 질문을 계산합니다. 의사 결정 트리에 내일을 예측해 달라고 요청할 때, 우리는 그것을 훈련(기능) 중에 사용했던 것과 동일한 데이터로 제공해야 하며, 의사 결정 트리는 배운 구조를 바탕으로 한 추정치를 우리에게 제공해야 합니다. 인간이 경험에서 배우는 것처럼 의사 결정 트리는 예제에 의해 학습됩니다. 단, 문제에 통합할 수 있는 이전 지식이 없습니다. 훈련전에 합리적인 추정을 할 수 있는 능력 측면에서 우리는 의사 결정 트리보다 훨씬 ‘똑똑합니다’. 하지만 품질 데이터로 충분한 교육을 받은 후에는 의사 결정 트리의 예측 능력이 훨씬 뛰어날 것입니다. 의사 결정 트리에는 교육 후에도 문제에 대한 개념적 이해가 없습니다. 모델의 ‘원근법’에서, 그것은 단순히 입력으로 숫자를 받고 훈련 중에 본 것과 일치하는 다른 숫자를 출력하는 것입니다. 다시 말해, 의사 결정 트리는 온도에 대한 지식이 전혀없는 대상에 일련의 기능을 매핑하는 방법을 배웠습니다. 의사 결정 트리에 다른 날씨 관련 질문을 하면 특정 작업에 대해 교육을 받았기 때문에 대응 방법을 찾을 수 없습니다.

    이것은 기본적으로 의사 결정 트리의 전체 상위 수준의 개념입니다. 예측으로 이어지는 질문의 흐름 차트입니다. 이제, 우리는 하나의 의사 결정 트리에서 Random Forest로의 강력한 도약을 해보겠습니다!

     

    의사 결정 트리에서 Random Forest로

    최고 기온에 대한 나의 예측은 틀렸습니다. 그리고 여러분한테 그 말을 하고 싶지 않지만, 여러분도 그렇습니다. 고려해야 할 요소가 너무 많아서 각 개인의 추측은 높거나 낮을 가능성이 있습니다. 모든 사람은 서로 다른 배경 지식을 가지고 문제에 직면하게되며 질문에 대한 똑같은 대답을 완전히 다르게 해석 할 수 있습니다. 기술적인 측면에서 예측은 올바른 대답을 중심으로 널리 퍼져 있기 때문에 분산되어 있습니다. 자, 만약 우리가 수백 또는 수천명의 개인들로부터 예측을 받아들인다면, 그 중 일부는 높고 일부는 낮은 예측을 하고, 그것들을 평균화하기로 결정한다면 어떨까요? 축하합니다. 우리는 Random Forest를 만들었습니다! Random Forest 뒤에 있는 근본적인 아이디어는 많은 의사 결정 트리를 단일 모델로 결합하는 것입니다. 개별적인 의사 결정 트리(또는 인간)에 의한 예측은 정확하지 않을 수도 있지만 함께 결합하면 평균적으로 예측에 더 가깝습니다.

    왜 Random Forest가 단일 의사 결정 트리보다 나을까요? 우리는 수백 명의 인간이 최대 온도 문제에 대한 추정치를 얻는다는 용어에 대해 생각해 봐야합니다. 예측을 모아서 어느 한 개인보다 훨씬 많은 지식을 통합할 수 있습니다. 각 개인은 자신의 배경 경험과 정보 소스를 문제에 제공합니다. 어떤 사람들은 Accuweather를 맹신 할 수 있지만 다른 사람들은 NOAA (National Oceanic and Atmospheric Administration) 예측만을 볼 것입니다. 아마도 한 사람은 기상학자 친구에게 의존하는 반면 다른 사람은 100년 동안의 온도 데이터를 이용하고 있을 것입니다. 한 개인에게만 물어보면, 우리는 그들의 제한된 범위의 정보만을 이용하게 되지만, 모든 사람의 예측을 결합함으로써 우리의 정보망은 훨씬 더 커지게 됩니다. 게다가 각 사람의 정보원이 다양할수록 Random Forest는 더 강렬해집니다. 만약 NOAA가 불량으로 변해서 100도 이상의 예측을 할때 모두가 NOAA에 의존한다면, 우리의 모델은 쓸모가 없을 것입니다. 만약 ‘숲(forest)’에 속한 사람들이 여러 가지 기상 관측소를 사용한다면, 우리의 모델은 하나의 정보원으로부터 큰 영향을 받지 않을 것이고 우리는 계속해서 합리적인 예측을 할 수 있습니다.

    사람들이 예측을 하기 위해 여러 출처에 의존할 수 있는 것처럼, 숲의 각 결정 트리는 질문을 할 때 임의의 부분 집합을 고려하고 임의의 집합의 교육 데이터 포인트에만 액세스할 수 있습니다. 이런 현상은 숲의 다양성을 증가시켜 전체 예측과 ‘Random Forest’라는 이름을 더욱 강력하게 만듭니다. (이것은 우리가 온도의 연속적인 값을 예측하는 문제와 같은 회귀 과제의 경우입니다. 다른 종류의 문제는 분류로 알려져 있습니다. 여기서 목표는 흐린 또는 맑은 것과 같은 개별 클래스 레이블입니다. 이 경우 Random Forest는 예상 클래스에 대해 과반수 득표를 합니다.). 이를 염두에 두고, 우리는 이제 Random Forest의 모든 개념적 부분을 이해했습니다!

     

    마무리

    머신러닝은 처음에는 위협적으로 보일지 모르지만, 전체 분야는 과거의 데이터로부터 ‘학습’할 수 있는 매우 정확한 모델을 산출하기 위해 결합된 단순한 아이디어들 입니다. Random Forest도 예외는 아닙니다. Random Forest를 만드는 방법은 두 가지 기본 아이디어로, 둘 다 일상 생활에서 잘 알려져 있습니다.

    1. 결정으로 이어지는 질문 및 답변의 흐름도 구축
    2. 무작위와 다양한 군중의 지혜

    Random Forest 모델의 힘으로 이어지는 것은 이러한 기본 아이디어의 조합입니다.

    이제 여러분이 Random Forest의 개념적 틀을 가지기를 바라면서, 이 포스트의 두 번째 부분을 살펴보도록 권합니다. 여기서 우리는 파이썬 프로그래밍 언어의 최대 온도 문제를 위해 Random Forest를 구현하는 전체 과정을 걸을 것입니다. 전에는 프로그램한 적이 없더라도 따라갈 수 있습니다! 이 글이 당신의 호기심을 불러일으켰다면, 더 많은 것을 배울 수 있는 자원이 세상에 있습니다. 때로는 새로운 개념을 배우려고할 때 너무 많은 자원에 압도될 수 있으므로, Random Forest의 창시자(Leo Breiman)가 만든 훌륭한 웹 사이트, Random Forest에 대한 무료 Coursera 시리즈 및 온라인으로 구할 수 있는 책인 Introduction to Statistical Learning (by James, Witten, Hastie, and Tibshirani) 로 제한하길 권장합니다.

    언제나처럼, 나는 어떤 피드백과 건설적인 비판에 감사합니다. 내 이메일은 wjk68@case.edu입니다.

    반응형
Designed by Tistory.