기계학습에서 Random Forest(무작위의 숲)란 무엇인가? (ver 1.0)

“So what’s wrong if there happens to be one guy in the world who enjoys trying to understand you?”
― Haruki Murakami, Norwegian Wood

스크린샷 2015-08-19 오후 9.12.37.png

Random Forest는 소위 bagging approach 방식을 사용하는 대표적인 Machine Learning Algorithm이다.

Bagging이란 bias-variance trade off를 극복하기 위해 사용되는 방법이다.

Bias와 Variance는 학습 오류(Learning Error)를 구성하는 두 요소인데 Bias가 높으면 예측결과가 실제결과와 비교해서 부정확한 것이고 Variance가 높으면 예측결과가 어떤 dataset(training set)에서는 엄청 잘 맞다가 다른 dataset에서는 크게 안 맞고 이렇게 예측결과의 안정성이 떨어지는 것(낮은 stability or overfitting)경우이다.

Bias-Variance Trade Off란 기계학습 알고리즘에서 Bias를 줄이면 Variance가 높아지고 하듯이 두가지 Learning Error들이 일종의 Zero Sum 게임 양상을 보이는 경향인데 Bias-Variance를 극복하는 방법이 Bagging이라는 것이다.

Bagging은 Bootstrap Aggregation의 약자인데 주어진 데이터(training set)에서 랜덤하게 subset을 N번 sampling해서 (좀 더 정확하게는 observations과 features들을 random하게 sampling) N개의 예측모형을 만들어 개별 예측모형이 voting하는 방식으로 예측결과를 결정하여 Low Bias는 유지하고 High Variance는 줄이는 방법이다.

Random Forest는 이런 Bagging 계열의 가장 대표적이고 예측력 좋은 알고리즘이다. 예측결과의 정확성(Low Bias)은 개별 예측모형에 쓰이는 알고리즘(decision tree)의 평균값으로 유지되는 반면 낮은 안정성(High Variance)은 Central Limit Theorem에 의해 낮아진다. (N개의 Decision Tree가 투표를 통해 결정하는 방식)

Decision Tree는 애써 번역하자면 의사결정나무인데 우리나라 열두고개나 flowchart처럼 특정 질문에 대한 응답을 따라가는 방식으로 데이터를 분류해가는 알고리즘(classifier)이다. (C4.5가 가장 대표적인 decision tree classifier임)

Classifier란 기계학습/데이터 마이닝의 대표적인 도구(분류기)인데 데이터를 특정 class로 분류하는 알고리즘이다. 예를 들자면 환자와 관련한 데이터들(나이, 혈압, 가족력, 종양 크기, 흡연여부 등의 attributes)을 통해 특정 환자가 암에 걸릴지(암 class) 안 걸릴지(no 암 class)를 분류해 내는 것이다.

Central Limit Theorem(중심극한정리)는 모집단의 분포와 무관하게 표본의 크기가 충분히 크면 표본들의 평균(표본평균)의 분포가 정규분포를 따른다는 것인데 Random Forest 역시 표본들(개별 decision tree들)의 평균값을 사용하기 때문에 Variance가 줄어들게 되는 것이다. (예측력이 높고 안정성이 떨어지는 decision tree여러 개를 평균해서 사용하여 예측력은 유지하고 안정성은 올림)

블로그 구독자님께서 아래와 같이 정정해주셨습니다. bias-variance trade-off 관점에서 random forest가 중심극한 정리에 의해 variance가 줄어든다고 하셨는데 이는 사실이 아닙니다. 왜냐하면 중심극한 정리는 오직 sample이 독립일 때만 성립하기 때문이죠. bagging 방법론은 그 태생적인 배경 때문에 독립일 수 없구요.

그럼 마냥 좋기만 하냐? 아니다. Random Forest는 결과가 나온 과정을 사람이 이해할 수가 없다. (결과를 설명 못함. black box)
사용하기는 엄청 쉽고 (세가지 hyperparameter만 정의해주면 됨. 1 - decision tree 갯수, 2 - 각각의 decision tree에 사용할 features 숫자, 3 - 전체 data set 크기의 몇 %로 sampling 할 것인지 - 통상 80%) 정확도와 안정성이 뛰어나지만 결과에 대해 묻는 것도 따지는 것도 허락하지 않는다는 것이다.

 
148
Kudos
 
148
Kudos

Now read this

People Analytics이 뭐냐고 물으신다면

People Analytics 정의 People Analytics는 “인적자원관리에 수학/과학을 적용한 것이다”라고 (정없게) 정의할 수 있다. 좀 더 풀어서 정의한다면 People Analytics는 “행동과학, 통계학, 기계학습, 데이터 시각화 기술을 인적자원 데이터에 적용하여 직원과 관련한 주요 문제들에 대해 확률과 객관에 기반한 의사결정을 내리도록 하여 궁극적으로 더 좋은 사업 성과를 성취할 수 있도록 하는... Continue →