맨위로가기 타임라인 바로가기

랜덤 포레스트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

랜덤 포레스트는 앙상블 학습 방법의 일종으로, 여러 개의 의사 결정 트리를 결합하여 분류 및 회귀 문제를 해결하는 기법이다. 1990년대 초반에 개발되었으며, 얄리 아미트와 도널드 게먼의 연구, 틴 캄 호의 랜덤 부분 공간 선택 아이디어, 레오 브레이먼의 연구 등을 기반으로 한다. 배깅(bootstrap aggregating)과 랜덤 노드 최적화(randomized node optimization)를 활용하며, 엑스박스 키넥트의 신체 추적, 컴퓨터 단층 촬영 영상 분석, 뇌종양 검출 등 다양한 분야에 응용된다. 높은 정확도와 빠른 학습 속도를 제공하지만, 모델의 해석이 어렵고, 선형적인 관계의 데이터에서는 성능이 저하될 수 있다는 단점이 있다.

더 읽어볼만한 페이지

  • 결정 트리 - ID3 알고리즘
    ID3 알고리즘은 존 로스 퀸란이 1979년에 개발한 의사 결정 트리 학습 알고리즘으로, 정보량의 기대값을 계산하여 트리의 노드를 생성하며, 학습 효율이 높지만 국소 최적해 문제와 과적합 가능성 등의 단점도 가진다.
  • 결정 트리 - 결정 트리 학습법
    결정 트리 학습법은 데이터 마이닝의 지도 학습 방법으로, 입력 변수를 기반으로 목표 변수를 예측하는 트리 형태의 모델을 생성하며, 해석 용이성, 자료 가공 용이성, 다양한 자료형 적용 가능성 등의 장점과 과적합 및 민감성 등의 단점을 가진다.
  • 계산통계학 - 인공 신경망
  • 계산통계학 - 확률적 경사 하강법
    확률적 경사 하강법은 기계 학습에서 목적 함수를 최소화하는 반복적 최적화 알고리즘으로, 대규모 데이터 세트에서 일부 데이터만 사용하여 경사를 추정하여 계산 비용을 줄이고, 서포트 벡터 머신, 로지스틱 회귀, 심층 신경망 등 다양한 모델 훈련에 활용되며, Adam과 같은 파생 최적화기가 널리 사용된다.
  • 결정 이론 - 정책
    정책은 특정 목표 달성을 위해 조직이 마련한 의사 결정 지침이며, 대상, 기능, 효과, 도입 방식 등에 따라 분류되고, 다양한 분야에 존재하며, 정책 순환 모형을 통해 개발 과정을 분석한다.
  • 결정 이론 - 확률
    확률은 사건의 가능성을 수치화한 개념으로, 도박에서 시작되어 수학적으로 발전했으며, 다양한 해석과 요소, 응용 분야를 가지며 양자역학, 사회 현상 등에도 적용된다.
랜덤 포레스트
개요
종류앙상블 학습
분야지도 학습
상세 정보
기반결정 트리
작동 방식훈련 데이터로부터 여러 개의 결정 트리를 구성
각 트리는 입력 변수의 임의 부분집합을 사용하여 분할 규칙을 학습
특징높은 정확도
과적합 방지
변수 중요도 평가 가능
사용 예시분류
회귀
군집화

2. 역사

랜덤 포레스트는 여러 의사 결정 트리를 결합하여 예측 성능을 높이는 앙상블 학습 방법이다. 랜덤 포레스트의 역사는 다음과 같이 요약될 수 있다.


  • 초기 아이디어: 얄리 아미트(Yali Amit영어)와 도널드 게먼(Donald Geman영어)은 단일 트리를 확장할 때 가능한 결정 중 임의의 부분집합에서 검색하는 아이디어를 제시했다.[51] 틴 캄 호(Tin Kam Ho영어)는 임의의 부분공간을 선택하는 아이디어를 제안했다.[52] 이러한 아이디어는 훈련 데이터를 무작위로 선택된 부분공간에 투영하여 트리 간의 차이를 만드는 데 활용되었다.
  • 개념 정립: 레오 브레이먼(Leo Breiman)의 논문[53]에서 현재의 랜덤 포레스트 개념이 확립되었다. 브레이먼은 CART와 유사한 방법을 사용하여 상관관계가 없는 트리들로 포레스트를 구성하고, 랜덤 노드 최적화와 배깅을 결합하는 방법을 제시했다.
  • 추가 발전: 1993년 잘츠버그와 히스는 랜덤 의사 결정 숲의 일반적인 방법을 제안했다.[10] 1995년 호는 경사 초평면으로 분할하는 트리의 숲이 과적합되지 않으면서 정확도를 높일 수 있음을 보였다.[1] 이후 연구들에서는 다른 분할 방법도 일부 특징 차원에 무작위로 둔감하도록 강제하면 유사하게 작동한다는 결론을 내렸다.[2]
  • 영향: 브레이먼의 랜덤 포레스트 개념은 아미트와 게먼의 연구,[9] 호의 랜덤 부분 공간 선택 아이디어,[2] 토마스 G. 디터리히(Thomas G. Dietterich)의 무작위 노드 최적화 아이디어[11]에 영향을 받았다.
  • 이론적 결과: 브레이먼의 논문[6]은 OOB 오차를 일반화 오차의 추정치로 사용하고, 순열을 통한 변수 중요도를 측정하는 방법을 제시했다. 또한, 숲의 트리 강도와 트리의 상관 관계에 따라 달라지는 일반화 오차에 대한 이론적 결과를 제공했다.

2. 1. 기원

랜덤 포레스트는 여러 결정 트리를 학습시키는 앙상블 방법으로, 초기에는 얄리 아미트와 도널드 게먼의 연구[51]와 틴 캄 호의 아이디어[52]가 영향을 미쳤다. 아미트와 게먼은 단일 트리를 확장할 때 가능한 결정 중 임의의 부분집합에서 검색하는 아이디어를 도입했고, 호는 임의의 부분공간을 선택하는 아이디어를 제시했다. 이러한 아이디어는 포레스트가 성장할 때 각 트리를 학습하기 전에 훈련 데이터를 임의로 선택된 부분공간으로 투영하여 트리 간의 차이를 발생시키는 방식으로 활용되었다.

이후 레오 브레이먼의 논문[53]에서 현재의 랜덤 포레스트 개념이 정립되었다. 브레이먼은 CART와 유사한 방법을 사용하여 상관관계가 없는 트리들로 포레스트를 구성하고, 랜덤 노드 최적화와 배깅을 결합하는 방법을 제시했다.

1993년 잘츠버그와 히스는 여러 개의 트리를 생성한 다음 다수결 투표를 사용하여 결합하는 무작위 의사 결정 트리 알고리즘을 사용하는 랜덤 의사 결정 숲의 일반적인 방법을 처음 제안했다.[10] 1995년 호는 경사 초평면으로 분할하는 트리의 숲이 훈련 데이터에 과적합되지 않으면서 정확도를 높일 수 있음을 확립했다.[1] 단, 숲이 무작위로 선택된 특징 차원에만 민감하도록 제한되어야 한다. 동일한 맥락의 후속 연구[2]는 다른 분할 방법도 일부 특징 차원에 무작위로 둔감하도록 강제하는 한 유사하게 작동한다는 결론을 내렸다. 더 복잡한 분류기가 거의 단조적으로 더 정확해진다는 이러한 관찰은 분류기의 복잡성이 과적합으로 인해 손상되기 전에 특정 수준의 정확도로만 성장할 수 있다는 일반적인 믿음과 뚜렷한 대조를 이룬다.

브레이먼의 랜덤 포레스트 개념은 아미트와 게먼의 연구[9]와 호의 랜덤 부분 공간 선택 아이디어[2]에 영향을 받았다. 또한, 각 노드의 결정이 결정론적 최적화 대신 무작위 절차에 의해 선택되는 무작위 노드 최적화의 아이디어는 토마스 G. 디터리히에 의해 처음 소개되었다.[11]

레오 브레이먼의 논문[6]은 CART와 유사한 절차를 사용하여 상관 관계가 없는 트리의 숲을 구축하는 방법과 무작위 노드 최적화 및 배깅을 결합하는 방법을 설명하며, 현대 랜덤 포레스트의 기반을 형성했다. 이 논문에서는 OOB 오차를 일반화 오차의 추정치로 사용하고, 순열을 통한 변수 중요도를 측정하는 등의 새로운 요소들이 포함되었다. 또한 숲의 트리 강도와 트리의 상관 관계에 따라 달라지는 일반화 오차에 대한 경계의 형태로 랜덤 포레스트에 대한 첫 번째 이론적 결과를 제공했다.

레오 브레이먼[42]은 랜덤 포레스트와 커널 방법 간의 연관성을 처음으로 발견했다. Lin과 Jeon[43]은 랜덤 포레스트와 적응형 최근접 이웃 간의 연관성을 확립하여 랜덤 포레스트를 적응형 커널 추정으로 볼 수 있음을 시사했다. Davies와 Ghahramani[44]는 커널 랜덤 포레스트(KeRF)를 제안했으며, 이는 경험적으로 최첨단 커널 방법보다 성능이 우수함을 보였다. Scornet[41]은 처음으로 KeRF 추정치를 정의하고 KeRF 추정치와 랜덤 포레스트 간의 명시적인 연관성을 제시했다. 그는 또한 중심 랜덤 포레스트[45]와 균일 랜덤 포레스트[46]를 기반으로 한 커널에 대한 명시적 표현을 제공했는데, 이는 랜덤 포레스트의 두 가지 단순화된 모델이다. 그는 이 두 KeRF를 중심 KeRF와 균일 KeRF라고 명명하고, 일관성 속도에 대한 상한을 증명했다.

2. 2. 발전

초기 랜덤 포레스트는 얄리 아미트(Yali Amit영어)와 도널드 게먼(Donald Geman영어)의 연구[51]에 영향을 받았는데, 이들은 단일 트리를 확장할 때 가능한 결정 중 임의의 부분집합에서 검색하는 아이디어를 도입했다. 틴 캄 호(Tin Kam Ho영어)의 임의의 부분공간 선택 아이디어[52] 역시 랜덤 포레스트 디자인에 영향을 주었다. 이 방법은 포레스트가 성장할 때 각 트리를 학습하기 전에 훈련 데이터를 무작위로 선택된 부분공간으로 투영시켜 트리 사이에 차이를 발생시킨다.

레오 브레이먼(Leo Breiman)의 논문[53]에서 현재의 랜덤 포레스트 개념이 만들어졌다. 이 논문은 랜덤 노드 최적화와 배깅을 결합한 방법, CART를 사용해 상관관계가 없는 트리들로 포레스트를 구성하는 방법을 제시했다.

랜덤 의사 결정 숲의 일반적인 방법은 1993년 잘츠버그와 히스에 의해 처음 제안되었으며,[10] 여러 개의 트리를 생성한 다음 다수결 투표를 사용하여 결합하는 무작위 의사 결정 트리 알고리즘을 사용했다. 1995년 호는 이 아이디어를 더욱 발전시켰다.[1] 호는 경사 초평면으로 분할하는 트리의 숲이 훈련 데이터에 과적합되지 않으면서 정확도를 높일 수 있음을 확립했다. 단, 숲이 무작위로 선택된 특징 차원에만 민감하도록 제한되어야 한다. 동일한 맥락의 후속 연구[2]에서는 다른 분할 방법도 일부 특징 차원에 무작위로 둔감하도록 강제하는 한 유사하게 작동한다는 결론을 내렸다. 더 복잡한 분류기(더 큰 숲)가 거의 단조적으로 더 정확해진다는 이러한 관찰은, 분류기의 복잡성이 과적합으로 인해 손상되기 전에 특정 수준의 정확도로만 성장할 수 있다는 일반적인 믿음과 뚜렷한 대조를 이룬다. 숲 방법이 과적합에 저항하는 이유는 클라인버그의 확률적 차별 이론에서 찾을 수 있다.[3][4][5]

브레이먼의 랜덤 포레스트 개념 초기 개발은 아미트와 게만의 연구에 영향을 받았다.[9] 이들은 노드를 분할할 때 사용 가능한 결정의 무작위 하위 집합을 검색한다는 아이디어를 단일 트리를 성장시키는 맥락에서 소개했다. 호의 랜덤 부분 공간 선택 아이디어[2] 또한 랜덤 포레스트 설계에 영향을 미쳤다. 이 방법은 트리 숲을 성장시키고 각 트리 또는 각 노드를 맞추기 전에 훈련 데이터를 무작위로 선택된 부분 공간에 투영하여 트리 간의 변동을 도입한다. 토마스 G. 디터리히(Thomas G. Dietterich)는 각 노드의 결정이 결정론적 최적화 대신 무작위 절차에 의해 선택되는 무작위 노드 최적화 아이디어를 처음 소개했다.[11]

레오 브레이먼(Leo Breiman)의 논문[6]에서 랜덤 포레스트가 적절하게 소개되었다. 이 논문은 CART와 유사한 절차를 사용하여 상관 관계가 없는 트리의 숲을 구축하는 방법, 무작위 노드 최적화 및 배깅을 결합하는 방법을 설명한다. 또한, 이 논문은 이전에 알려진 것과 새로운 것들을 포함한 여러 구성 요소를 결합하여 현대 랜덤 포레스트의 기반을 형성하며, 특히 다음과 같다.

  • OOB 오차를 일반화 오차의 추정치로 사용.
  • 순열을 통한 변수 중요도 측정.


이 보고서는 또한 숲의 트리 강도와 트리의 상관 관계에 따라 달라지는 일반화 오차에 대한 경계의 형태로 랜덤 포레스트에 대한 첫 번째 이론적 결과를 제공한다.

3. 알고리즘

랜덤 의사 결정 숲은 1993년 잘츠버그(Salzberg)와 히스(Heath)가 처음 제안했으며,[10] 여러 개의 트리를 생성한 다음 다수결 투표를 사용하여 결합하는 무작위 의사 결정 트리 알고리즘을 사용했다. 1995년 호(Ho)는 경사 초평면으로 분할하는 트리의 숲이 훈련 데이터에 과대적합되지 않으면서 정확도를 높일 수 있음을 보였다. 단, 숲이 무작위로 선택된 특징 차원에만 민감하도록 제한되어야 한다.[1]

레오 브레이먼(Leo Breiman)의 논문[6]은 CART와 유사한 절차를 사용하여 상관 관계가 없는 트리의 숲을 구축하는 방법, 무작위 노드 최적화 및 배깅을 결합하는 방법을 설명한다. 또한 OOB 오차를 일반화 오차의 추정치로 사용하고, 순열을 통한 변수 중요도 측정하는 등 현대 랜덤 포레스트의 기반을 형성하는 여러 구성 요소를 결합하였다.

의사 결정 트리는 다양한 기계 학습 작업에 널리 사용되지만, 정확도가 떨어지는 경우가 많다.[12] 특히 깊게 성장한 트리는 과대적합되어 낮은 편향과 매우 높은 분산을 보인다. 랜덤 포레스트는 동일한 훈련 세트의 서로 다른 부분에서 훈련된 여러 개의 깊은 의사 결정 트리를 평균화하여 분산을 줄인다.[12] 이는 편향의 작은 증가와 해석 가능성의 일부 손실을 대가로 하지만, 일반적으로 최종 모델의 성능을 크게 향상시킨다.

랜덤 포레스트의 학습 알고리즘은 다음과 같다.

1. 학습 데이터로부터 부트스트랩을 통해 ''B''개의 서브 샘플을 랜덤하게 생성한다.

2. 각 서브 샘플을 트레이닝 데이터로 사용하여 ''B''개의 결정 트리를 만든다.

3. 지정된 노드 수 n_\mathrm{min}에 도달할 때까지 다음 과정을 반복하여 노드를 생성한다.


  • 트레이닝 데이터의 설명 변수 중 ''m''개를 무작위로 선택한다.
  • 선택된 설명 변수 중에서 트레이닝 데이터를 가장 잘 분류하는 변수와 임계값을 이용하여 노드의 분할 함수를 결정한다.


핵심은 랜덤 샘플링된 트레이닝 데이터와 랜덤하게 선택된 설명 변수를 사용하여 상관 관계가 낮은 결정 트리 집합을 생성하는 것이다.

'''파라미터 권장 값'''

  • n_\mathrm{min}: 분류 - 1, 회귀 - 5
  • ''m'': 설명 변수의 총수를 ''p''라고 할 때, 분류 - \sqrt{p}, 회귀 - ''p/3''

3. 1. 결정 트리 학습법

결정 트리 훈련 단계


결정 트리(Decision tree)는 결정을 내리기 위해 사용하는 트리로, 결정 과정을 간단한 문제들로 이루어진 계층 구조로 나눈다. 간단한 문제에 대해서는 매개변수(예: 모든 노드의 테스트 매개변수, 종단 노드에서 매개변수 등)를 사용자가 직접 설정할 수 있지만, 보다 복잡한 문제의 경우 학습 데이터로부터 트리 구조와 매개변수를 모두 자동으로 학습한다.

큰 범주에서 볼 때, 결정 트리의 기능은 오프라인 단계(훈련 또는 학습)와 온라인 단계(테스트) 두 가지로 나눌 수 있다. 훈련 단계에서는 종단 노드에 대한 매개변수와 내부 노드와 관련된 노드 분할 함수(split function)의 매개변수를 최적화하는 작업이 진행된다.

트리의 훈련 과정을 이해할 때, 훈련 데이터의 부분집합을 트리의 가지들과 연관시켜 생각하는 것이 편하다. 예를 들어, 노드 1(그림에서와 같이 0부터 너비-우선순위로 각 노드에 숫자가 부여된다)에 도달하는 훈련 데이터의 부분집합을 S_{1}이라고 하고, 노드 1의 왼쪽과 오른쪽 자식 노드를 각각 S_{1}^{\mathrm{L}}, S_{1}^{\mathrm{R}}라고 하자. 이 때, 각 분할 노드 j는 다음과 같은 관계식을 갖는다.

:S_{j}=S_{j}^{\mathrm{L}}\cup S_{j}^{\mathrm{R}}, S_{j}^{\mathrm{L}}\cap S_{j}^{\mathrm{R}}=\emptyset, S_{j}^{\mathrm{L}}=S_{2j+1}, S_{j}^{\mathrm{R}}=S_{2j+2}.

데이터 포인트 \{\mathbf{v}\}의 훈련 집합 S_{0} 및 실제 데이터 레이블(ground truth label)이 주어졌을 때, 트리의 매개변수는 정의한 목적 함수를 최소화 하도록 선택된다. 트리의 성장을 언제 멈출지 결정하기 위해 미리 정의된 여러 가지 멈춤 조건이 적용된다.

T개의 트리로 구성된 하나의 포레스트의 경우, 일반적으로 훈련 과정은 각 트리에 대해 독립적으로 T번 반복된다. 랜덤 트리 또는 포레스트에서 주목할 사실은 랜덤성(randomness영어)이 오직 훈련 과정에만 존재한다는 것이다. 트리가 형성된 후 고정되어 있다면 테스트 단계에서는 완전히 결정론적인 특성을 보인다. 즉, 동일한 입력 데이터에 대해 항상 동일한 결과를 낸다.

결정 트리 테스트 단계


이전에 본 적 없는 데이터 \mathbf{v}가 입력으로 주어졌을 때, 각 결정 트리는 사전에 정의된 많은 테스트 값을 계층적으로 적용한다. 루트 노드에서 시작해, 각 노드의 분할 함수를 입력 데이터 \mathbf{v}에 적용한다. 입력 데이터는 이진 테스트의 결과에 따라 오른쪽 또는 왼쪽 자식 노드로 보내진다. 이 과정은 입력 데이터가 단말 노드에 도달할 때까지 반복된다.

트리에서 단말 노드는 대개 입력 \mathbf{v}에 대한 출력 값을 내는 예측기(분류기(classifier영어) 또는 회귀기(regressor영어))를 갖는다. 포레스트의 경우 각 트리 예측기들의 조합으로 단일 예측치를 만든다.

랜덤 의사 결정 숲의 일반적인 방법은 1993년 잘츠버그(Salzberg)와 히스(Heath)에 의해 처음 제안되었으며,[10] 여러 개의 트리를 생성한 다음 다수결 투표를 사용하여 결합하는 무작위 의사 결정 트리 알고리즘을 사용했다. 이 아이디어는 1995년 호(Ho)에 의해 더 발전되었다.[1] 호(Ho)는 경사 초평면으로 분할하는 트리의 숲이 훈련 데이터에 과대적합되지 않으면서 정확도를 높일 수 있음을 확립했다. 단, 숲이 무작위로 선택된 특징 차원에만 민감하도록 제한되어야 한다. 동일한 맥락의 후속 연구[2]는 다른 분할 방법도 일부 특징 차원에 무작위로 둔감하도록 강제하는 한 유사하게 작동한다는 결론을 내렸다. 더 복잡한 분류기(더 큰 숲)가 거의 단조적으로 더 정확해진다는 이러한 관찰은 분류기의 복잡성이 과적합으로 인해 손상되기 전에 특정 수준의 정확도로만 성장할 수 있다는 일반적인 믿음과 뚜렷한 대조를 이룬다. 숲 방법이 과적합에 저항하는 이유는 클라인버그(Kleinberg)의 확률적 차별 이론에서 찾을 수 있다.[3][4][5]

레오 브레이먼(Leo Breiman)의 랜덤 포레스트 개념 초기 개발은 노드를 분할할 때 사용 가능한 결정의 무작위 하위 집합을 검색한다는 아이디어를 단일 트리를 성장시키는 맥락에서 소개한 아미트(Amit)와 게만(Geman)의 연구에 영향을 받았다.[9] 호(Ho)의 랜덤 부분 공간 선택 아이디어[2] 또한 랜덤 포레스트 설계에 영향을 미쳤다. 이 방법은 트리 숲을 성장시키고 각 트리 또는 각 노드를 맞추기 전에 훈련 데이터를 무작위로 선택된 부분 공간에 투영하여 트리 간의 변동을 도입한다. 마지막으로, 각 노드의 결정이 결정론적 최적화 대신 무작위 절차에 의해 선택되는 무작위 노드 최적화 아이디어는 토마스 G. 디터리히(Thomas G. Dietterich)에 의해 처음 소개되었다.[11]

랜덤 포레스트의 적절한 소개는 레오 브레이먼(Leo Breiman)의 논문에서 이루어졌다.[6] 이 논문은 CART와 유사한 절차를 사용하여 상관 관계가 없는 트리의 숲을 구축하는 방법과 무작위 노드 최적화 및 배깅을 결합하여 설명한다. 또한, 이 논문은 이전에 알려진 것과 새로운 것들을 포함한 여러 구성 요소를 결합하여 현대 랜덤 포레스트의 기반을 형성하며, 특히 다음과 같다.

# OOB 오차를 일반화 오차의 추정치로 사용.

# 순열을 통한 변수 중요도 측정.

이 보고서는 또한 숲의 트리 강도와 트리의 상관 관계에 따라 달라지는 일반화 오차에 대한 경계의 형태로 랜덤 포레스트에 대한 첫 번째 이론적 결과를 제공한다.

의사 결정 트리는 다양한 기계 학습 작업에 널리 사용되는 방법이다. 하스티 등은 트리 학습이 "특징 값의 스케일링 및 다양한 변환에 불변하고, 관련 없는 특징의 포함에 강하며, 검사 가능한 모델을 생성하기 때문에 데이터 마이닝을 위한 거의 '기성품 절차'"라고 말한다. 하지만 정확도가 떨어지는 경우가 많다.[12]

특히, 매우 깊게 성장한 트리는 매우 불규칙한 패턴을 학습하는 경향이 있다. 즉, 과대적합되어 낮은 편향과 매우 높은 분산을 보인다. 랜덤 포레스트는 동일한 훈련 세트의 서로 다른 부분에서 훈련된 여러 개의 깊은 의사 결정 트리를 평균화하여 분산을 줄이는 방법이다.[12] 이는 편향의 작은 증가와 해석 가능성의 일부 손실을 대가로 하지만, 일반적으로 최종 모델의 성능을 크게 향상시킨다.

랜덤 포레스트의 학습 알고리즘은 다음과 같다.

# 학습을 수행할 관측 데이터로부터, 부트스트랩에 의한 랜덤 샘플링으로 ''B''개의 서브 샘플을 생성한다.

# 각 서브 샘플을 트레이닝 데이터로 하여, ''B''개의 결정 트리를 작성한다.

# 지정된 노드 수 n_\mathrm{min}에 도달할 때까지, 다음 방법으로 노드를 생성한다.

## 트레이닝 데이터의 설명 변수 중, ''m''개를 랜덤하게 선택한다.

## 선택된 설명 변수 중, 트레이닝 데이터를 가장 잘 분류하는 것과 그 때의 임계값을 이용하여, 노드의 분할 함수를 결정한다.

요점은 랜덤 샘플링된 트레이닝 데이터와 랜덤하게 선택된 설명 변수를 사용하여 상관 관계가 낮은 결정 트리 집합을 생성하는 것이다.

'''파라미터 권장 값'''

  • n_\mathrm{min}: 분류의 경우 1, 회귀의 경우 5
  • ''m'': 설명 변수의 총수를 ''p''라고 할 때, 분류의 경우 \sqrt{p}, 회귀의 경우 ''p/3''

3. 2. 배깅 (Bagging)

랜덤 포레스트 모델 훈련 과정을 나타낸 그림이다. 훈련 데이터 세트(이 경우 250개 행과 100개 열)는 무작위로 ''n''번 반복하여 복원 추출된다. 그런 다음 각 샘플에 대해 결정 트리를 훈련한다. 마지막으로 예측을 위해 모든 ''n''개 트리의 결과를 집계하여 최종 결정을 내린다.


배깅(bagging)은 bootstrap aggregating의 약자로, 부트스트랩을 통해 조금씩 다른 훈련 데이터에 대해 훈련된 기초 분류기(base learner)들을 결합(aggregating)시키는 방법이다.[54] 부트스트랩이란, 주어진 훈련 데이터에서 중복을 허용하여 원 데이터셋과 같은 크기의 데이터셋을 만드는 과정을 말한다.

배깅을 이용하여 T개의 결정 트리들로 구성된 랜덤 포레스트를 학습하는 과정. S_{0}는 전체 학습 데이터 집합을 의미한다. S_{0}^{t}t 번째 결정 트리를 위해 배깅을 통해 임의로 선택된 학습 데이터들로, S_{0}의 부분집합이다.


랜덤 포레스트의 훈련 알고리즘은 트리 학습기에 배깅이라는 일반적인 기술을 적용한다. 응답 변수 = , ..., 을 갖는 훈련 세트 = , ..., 가 주어지면, 배깅은 반복적으로 (''B''번) 훈련 세트에서 복원 추출을 통한 무작위 샘플링을 선택하고 이러한 샘플에 트리를 적합시킨다.

훈련 후, 보이지 않는 샘플 에 대한 예측은 회귀 트리의 경우 에 대한 모든 개별 회귀 트리의 예측을 평균화하여 수행할 수 있다.

\hat{f} = \frac{1}{B} \sum_{b=1}^Bf_b (x')

분류 트리의 경우에는 다수결 투표를 통해 예측을 수행한다.

이러한 부트스트래핑 절차는 모델의 분산을 감소시키기 때문에 더 나은 모델 성능을 이끌어낸다. 이는 단일 트리의 예측이 훈련 세트의 노이즈에 매우 민감하지만, 트리들이 서로 상관 관계가 없는 한 여러 트리의 평균은 그렇지 않다는 것을 의미한다. 단순히 단일 훈련 세트에서 많은 트리를 훈련하면 강하게 상관 관계가 있는 트리(또는 훈련 알고리즘이 결정적이면 여러 번 동일한 트리)가 생성된다. 부트스트랩 샘플링은 서로 다른 훈련 세트를 표시하여 트리의 상관 관계를 해제하는 방법이다.

또한, 에 대한 모든 개별 회귀 트리의 예측의 표준 편차로 예측의 불확실성에 대한 추정을 할 수 있다.

\sigma = \sqrt{\frac{\sum_{b=1}^B (f_b(x') - \hat{f})^2}{B-1} }.

샘플의 수 (즉, 트리의 수)는 자유 매개변수이다. 일반적으로 훈련 세트의 크기와 특성에 따라 수백에서 수천 개의 트리가 사용된다. 는 교차 검증을 사용하거나, 각 훈련 샘플 에 대한 평균 예측 오차인 ''out-of-bag error''를 관찰하여 최적화할 수 있다. 이는 부트스트랩 샘플에 가 없는 트리만 사용한다.[13]

랜덤 의사 결정 숲의 일반적인 방법은 1993년 잘츠버그(Salzberg)와 히스(Heath)에 의해 처음 제안되었으며,[10] 여러 개의 트리를 생성한 다음 다수결 투표를 사용하여 결합하는 무작위 의사 결정 트리 알고리즘을 사용했다.

'''파라미터 권장 값'''

  • : 분류의 경우 1, 회귀의 경우 5
  • ''m'': 설명 변수의 총수를 ''p''라고 할 때, 분류의 경우 \sqrt{p}, 회귀의 경우 ''p/3''

3. 3. 특징(feature) 무작위 선택

초기 랜덤 포레스트는 얄리 아미트와 도널드 게먼의 연구[51]와 틴 캄 호의 아이디어[52]에 영향을 받았다. 아미트와 게먼은 단일 트리를 확장할 때 가능한 결정 중 임의의 부분집합에서 검색하는 아이디어를 제시했고, 호는 임의의 부분공간을 선택하는 아이디어를 냈다. 포레스트가 성장할 때, 각 트리를 학습하기 전에 훈련 데이터를 임의로 선택된 부분공간으로 투영시켜 트리 사이에 차이를 만들었다.

현재의 랜덤 포레스트 개념은 레오 브레이먼의 논문[53]에서 나왔다. 이 논문은 랜덤 노드 최적화와 배깅을 결합한 방법과 같이 CART를 사용해 상관관계가 없는 트리들로 포레스트를 구성하는 방법을 제시했다.

각 트리 노드마다 '''분할 함수'''가 있으며, 0(거짓) 또는 1(참) 값을 가진다. 노드에 도달한 데이터는 분할 함수 결과에 따라 왼쪽 또는 오른쪽 자식 노드로 보내진다. 이 분할 함수는 매개변수 \boldsymbol{\theta} = (\phi,\psi, \tau)에 따라 결정된다.

  • \phi는 벡터 \mathbf{v}에서 몇 개의 특징만을 선택하는 필터 함수이다. 이를 특징 배깅이라고도 한다. 특징을 선택하는 이유는 배깅으로 얻은 트리들 간의 상관성 때문이다. 즉, 한 개 또는 극소수의 특징들이 결과에 대해 강한 예측 성능을 가지면, 훈련 과정 중 여러 트리 노드에서 이러한 특징들이 중복되어 선택되고 결과적으로 트리들이 상관화되기 때문이다.
  • \psi는 분할 함수의 기하학적 특성을 나타낸다. 평행한 초평면, 비스듬한 초평면, 일반적인 평면 등이 사용될 수 있다.[55]
  • \tau는 이진 테스트의 부등식에서 임계값들을 가진 매개변수 벡터이다.


노드 분할 함수는 선형적일 때와 비선형일 때 다음과 같이 표현될 수 있다.

  • 선형적일 때: h(\mathbf{v}, \boldsymbol{\theta}_{j})=[\tau_{1}>\phi(\mathbf{v})\cdot\psi>\tau_{2}]
  • 비선형일 때: h(\mathbf{v}, \boldsymbol{\theta}_{j})=[\tau_{1}>\phi(\mathbf{v})^{\top }\psi\, \phi(\mathbf{v})>\tau_{2}]


랜덤 포레스트는 학습 과정에서 각 후보 분할 시 특성의 랜덤 하위 집합을 선택하는 수정된 트리 학습 알고리즘을 사용한다. 이 과정을 "특성 배깅"이라고도 한다. 이렇게 하는 이유는 일반적인 부트스트랩 표본에서 트리의 상관 관계 때문이다. 하나 또는 소수의 특성이 응답 변수에 대한 매우 강력한 예측 변수인 경우, 이러한 특성은 여러 트리에서 선택되어 상관 관계를 발생시킨다.

일반적으로 p개의 특성을 가진 분류 문제의 경우, 각 분할에서 \sqrt{p} (내림)개의 특성이 사용된다.[12] 회귀 문제의 경우, 발명자들은 기본값으로 최소 노드 크기가 5인 p/3 (내림)을 권장한다.[12] 실제로, 이러한 매개변수의 최적 값은 모든 문제에 대해 개별적으로 조정되어야 한다.[12]

'''파라미터 권장 값'''

  • n_\mathrm{min}: 분류의 경우 1, 회귀의 경우 5
  • ''m'': 설명 변수의 총수를 ''p''라고 할 때, 분류의 경우 \sqrt{p}, 회귀의 경우 p/3

3. 4. 앙상블 모델

결정 트리는 오프라인 단계(훈련 또는 학습)와 온라인 단계(테스트) 두 가지 주요 기능으로 구성된다. 랜덤 포레스트는 여러 개의 결정 트리를 결합하여 앙상블 모델을 형성한다.

앙상블 모델을 이용한 랜덤 포레스트 테스트 과정. 각 결정 트리로부터 얻어진 결과를 평균, 곱하기, 또는 과반수 투표 방식을 통해 최종 결과를 도출해낸다.


포레스트의 모든 트리들은 독립적으로 훈련된다. 테스트 단계에서 데이터 포인트는 모든 트리에 동시에 입력되어 종단 노드에 도달한다. 이 과정은 병렬로 진행될 수 있어, CPU 또는 GPU를 통해 높은 계산 효율성을 얻을 수 있다. 포레스트의 예측 결과는 모든 트리의 예측 결과들의 평균으로 계산된다. 분류의 경우 다음 공식과 같다.

:p(c|\mathbf{v})=\frac{1}{T}\sum_{t=1}^{T}p_{t}(c|\mathbf{v})

다른 방법으로는 트리들의 결과들을 곱하는 방식이 있다.

:p(c|\mathbf{v})=\frac{1}{Z}\prod_{t=1}^{T}p_{t}(c|\mathbf{v}),

여기서 Z는 확률 정규화를 위한 상수이다.

랜덤 의사 결정 숲의 일반적인 방법은 1993년 잘츠버그(Salzberg)와 히스(Heath)에 의해 처음 제안되었으며,[10] 여러 개의 트리를 생성한 다음 다수결 투표를 사용하여 결합하는 무작위 의사 결정 트리 알고리즘을 사용했다.

4. 주요 특징 및 성질

랜덤 포레스트는 여러 개의 결정 트리를 생성하고 각 트리의 예측을 결합하여 최종 예측을 하는 앙상블 학습 방법이다. 1993년 잘츠버그(Salzberg)와 히스(Heath)가 처음 제안했으며,[10] 1995년 호(Ho)에 의해 더욱 발전되었다.[1] 호는 경사 초평면으로 분할하는 트리의 숲이 훈련 데이터에 과적합되지 않으면서 정확도를 높일 수 있음을 보였다. 단, 숲은 무작위로 선택된 특징 차원에만 민감하도록 제한되어야 한다.

레오 브레이먼(Leo Breiman)의 논문[6]에서는 CART와 유사한 절차를 사용하여 상관 관계가 없는 트리의 숲을 구축하는 방법, 무작위 노드 최적화 및 배깅을 결합하는 방법을 설명하며, 이는 현대 랜덤 포레스트의 기반이 되었다. 해당 논문에서는 OOB 오차를 일반화 오차의 추정치로 사용하고, 순열을 통한 변수 중요도를 측정하는 방법을 제시했다.

랜덤 포레스트는 학습 과정에서 각 후보 분할 시 특성의 랜덤 하위 집합을 선택하는 "특성 배깅" 과정을 거친다. 이는 일반적인 부트스트랩 표본에서 트리의 상관 관계를 줄이기 위함이다. 일반적으로 분류 문제에서는 p개의 특성 중 (내림)개의 특성이 각 분할에서 사용되며,[12] 회귀 문제에서는 p/3 (내림)개의 특성이 사용된다.[12]

랜덤 포레스트는 다음과 같은 장점을 가진다.


  • 설명 변수가 많아도 잘 작동한다.
  • 학습 및 평가 속도가 빠르다.
  • 의사 결정 트리 학습은 병렬 처리가 가능하다.
  • 설명 변수의 중요도를 산출할 수 있다.
  • OOB 오차 계산을 통해 교차 검증과 같은 평가가 가능하다.
  • 에이다 부스트 등에 비해 특정 설명 변수에 대한 의존성이 적어, 쿼리 데이터의 설명 변수가 결손되어 있어도 좋은 출력을 제공한다.


랜덤 포레스트는 k-최근접 이웃 알고리즘과 유사한 "가중 이웃 방식"으로 볼 수 있다.[34]

4. 1. 변수 중요도

데이터 집합 \mathcal{D}_n =\{(\mathbf{v}_i, Y_i)\}_{i=1}^n에서 변수(variable영어)의 중요성을 측정하기 위한 첫 단계는 데이터에 맞춰 랜덤 포레스트를 훈련시키는 것이다. 훈련 과정에서 각 데이터 포인트에 대한 OOB-오차(out-of-bag error영어)가 기록되고 포레스트 전체에서 평균을 낸다. OOB (out-of-bag영어) 데이터는 부트스트랩을 통한 임의 중복 추출 시 훈련 데이터 집합에 속하지 않는 데이터를 말하며, OOB-오차는 이 데이터의 실제 값과 각 트리로부터 나온 예측 결과 사이의 오차로 정의된다.[53] 배깅을 사용하지 않는 경우, OOB 데이터 대신 독립된 테스트 데이터를 이용하여 오차를 계산할 수도 있다.

훈련 후, 데이터 포인트의 j번째 특징 값을 치환하고, 이 변경된 데이터 집합에 대해 포레스트의 OOB-오차를 다시 계산한다. j번째 변수의 중요도 점수는 모든 트리에 대해 원본 데이터 집합의 OOB-오차와 값이 치환된 데이터 집합의 OOB-오차 차이의 평균으로 정의된다. 이 점수는 차이의 표준편차에 의해 정규화된다.[53]

큰 중요도 점수를 가지는 변수는 작은 값을 갖는 변수보다 높은 순위의 중요성을 갖게 된다.

변수 중요성을 결정하는 이 방법에는 몇 가지 단점이 있다.

  • 특징이 서로 다른 수의 값을 가질 때, 랜덤 포레스트는 더 많은 값을 가진 특징을 선호한다. 이 문제에 대한 해결책으로는 부분 치환[24][25][26] 및 편향되지 않은 트리를 생성하는 것이 있다.[27][28]
  • 데이터에 유사한 관련성의 상관된 특징 그룹이 포함된 경우, 큰 그룹보다 작은 그룹이 선호된다.[29]
  • 공선성 특징이 있는 경우, 이 절차는 중요한 특징을 식별하지 못할 수 있다. 해결책은 상관된 특징 그룹을 함께 치환하는 것이다.[30]


랜덤 포레스트의 특징 중요도에 대한 이 접근 방식은 분할 중에 불순도를 많이 감소시키는 변수를 중요하게 간주한다.[31] 이는 레오 브레이먼(Leo Breiman)의 저서 ''분류 및 회귀 트리''에 설명되어 있으며,[32] 사이킷런과 R에서 기본 구현으로 사용된다. 정규화되지 않은 평균 중요도는 다음과 같이 정의된다.

:\text{정규화되지 않은 평균 중요도}(x)=\frac{1}{n_T} \sum_{i=1}^{n_T} \sum_{\text{노드 }j \in T_i | \text{분할 변수}(j) = x} p_{T_i}(j)\Delta i_{T_i}(j),

여기서

  • x는 특징이다.
  • n_T는 숲 속의 트리 수이다.
  • T_i는 트리 i이다.
  • p_{T_i}(j)=\frac{n_j}{n}는 노드 j에 도달하는 샘플의 비율이다.
  • \Delta i_{T_i}(j)는 노드 j에서 트리 t의 불순도 변화이다.


노드에 속하는 샘플에 대한 불순도 척도로는 다음 통계를 사용할 수 있다.

그런 다음 모든 특징에 대해 정규화하여 얻어지며, 정규화된 특징 중요도의 합은 1이다.

`sci-kit learn` 기본 구현은 오해의 소지가 있는 특징 중요도를 보고할 수 있다.[30]

  • 높은 기수 특징을 선호한다.
  • 훈련 통계를 사용하므로 테스트 세트에 대한 예측에 대한 특징의 유용성을 반영하지 않는다.[33]

4. 2. 과적합 방지

일반적으로 결정 트리를 이용한 방법은 결과 또는 성능의 변동 폭이 크다는 단점이 있다. 학습 데이터에 따라 생성되는 결정 트리가 랜덤성에 따라 매우 다르기 때문에 일반화하여 사용하기 어렵다. 특히, 결정 트리는 계층적 접근방식이라 중간에 오류가 발생하면 다음 단계로 오류가 계속 전파되는 특성이 있다. 배깅 또는 랜덤 노드 최적화(Randomized node optimization)와 같은 랜덤화 기술은 결정 트리의 이러한 단점을 극복하고 좋은 일반화 성능을 갖도록 한다.[6]

랜덤 포레스트는 랜덤성(randomness영어)에 의해 트리들이 서로 조금씩 다른 특성을 갖는다는 특징이 있다. 이 특성은 각 트리들의 예측(prediction영어)들이 비상관화(decorrelation영어) 되게 하며, 결과적으로 일반화(generalization영어) 성능을 향상시킨다. 또한, 랜덤화는 포레스트가 노이즈가 포함된 데이터에 대해서도 강인하게 만들어 준다.[6]

랜덤화는 각 트리들의 훈련 과정에서 진행되며, 랜덤 학습 데이터 추출 방법을 이용한 앙상블 학습법인 배깅(bagging영어)과 랜덤 노드 최적화가 자주 사용된다. 이 두 가지 방법은 서로 동시에 사용되어 랜덤화 특성을 더욱 증진시킬 수 있다.[6]

레오 브레이먼(Leo Breiman)의 논문에서는 CART와 유사한 절차를 사용하여 상관 관계가 없는 트리의 숲을 구축하는 방법과 무작위 노드 최적화 및 배깅을 결합하는 방법을 설명한다. 또한, OOB 오차를 일반화 오차의 추정치로 사용하고, 순열을 통한 변수 중요도를 측정하는 등 이전 연구와 새로운 연구 결과들을 결합하여 현대 랜덤 포레스트의 기반을 형성했다.[6]

토마스 G. 디터리히(Thomas G. Dietterich)는 각 노드의 결정이 결정론적 최적화 대신 무작위 절차에 의해 선택되는 무작위 노드 최적화의 아이디어를 처음 소개했다.[11]

호(Ho)는 랜덤 부분 공간 선택 아이디어를 통해 랜덤 포레스트 설계에 영향을 미쳤다.[2] 이 방법은 트리 숲을 성장시키고 각 트리 또는 각 노드를 맞추기 전에 훈련 데이터를 무작위로 선택된 부분 공간에 투영하여 트리 간의 변동을 도입한다.

매우 깊게 성장한 트리는 과대적합되어 낮은 편향과 매우 높은 분산을 보일 수 있다. 랜덤 포레스트는 동일한 훈련 세트의 서로 다른 부분에서 훈련된 여러 개의 깊은 의사 결정 트리를 평균화하여 분산을 줄이는 방법이다.[12] 이는 편향의 작은 증가와 해석 가능성의 일부 손실을 대가로 하지만, 일반적으로 최종 모델의 성능을 크게 향상시킨다.

4. 3. OOB (Out-of-Bag) 오차

랜덤 포레스트를 구성하는 과정에서 각 데이터 포인트에 대한 OOB-오차(out-of-bag error영어)가 구해진다. OOB(out-of-bag영어) 데이터는 부트스트랩을 통한 임의 중복 추출 시 훈련 데이터 집합에 속하지 않는 데이터를 말하며, OOB-오차는 이 데이터의 실제 값과 각 트리로부터 나온 예측 결과 사이의 오차로 정의된다. 만약 훈련 과정에서 배깅을 사용하지 않는다면, OOB 데이터 대신 독립된 테스트 데이터를 이용해 오차를 계산할 수도 있다.[53]

훈련 단계 이후 데이터 포인트의 j번째 특징의 중요성을 측정하기 위해서, 훈련 데이터 가운데 j번째 특징 값을 치환하고, 이 변경된 데이터 집합에 대해 포레스트의 OOB-오차를 다시 계산한다. j번째 변수의 중요도 점수는 모든 트리에 대해서 원본 데이터 집합의 OOB-오차와 값이 치환된 데이터 집합의 OOB-오차 차이의 평균으로 정의된다. 이 점수는 차이들의 표준편차에 의해 정규화된다.[53]

큰 중요도 점수를 가지는 변수는 작은 값을 갖는 변수보다 높은 순위의 중요성을 갖게 된다.

4. 4. 근접 이웃 알고리즘과의 관계

랜덤 포레스트와 ''k''-최근접 이웃 알고리즘 간의 관계는 2002년 이 린(Yi Lin)과 전용호(Jeon, Yongho)에 의해 밝혀졌다.[57] 이들은 두 알고리즘을 이웃 가중치 구조(weighted neighborhoods schemes) 모델을 통해 통합할 수 있음을 보였다.

이 모델은 데이터 집합 \mathcal{D}_n =\{(\mathbf{v}_i, Y_i)\}_{i=1}^n에서 새로운 데이터 포인트 \mathbf{v'}의 예측값 \hat{Y}을 이웃한 데이터 포인트들과 가중치 함수 W를 통해 구한다.

:\hat{Y} = \sum_{i=1}^n W(\mathbf{v}_i, \mathbf{v'})Y_i\,

여기서 W(\mathbf{v}_i, \mathbf{v'})i번째 데이터 포인트 \mathbf{v}_i와 새로운 데이터 포인트 \mathbf{v'} 사이의 가중치를 나타내며, 음이 아닌 값을 갖는다. 임의의 \mathbf{v'}에 대해 모든 가중치의 합은 1이다.

각 모델에서 가중치 함수는 다음과 같이 정의된다.

  • k-최근접 이웃 알고리즘에서, \mathbf{v'}와 가장 가까운 ''k''개의 데이터 포인트 \mathbf{v}_i에 대해 W(\mathbf{v}_i, \mathbf{v'}) = {1 \over k}이고, 그 외의 데이터 포인트에 대해서는 W(\mathbf{v}_i, \mathbf{v'}) =0 이다.
  • 결정 트리에서, W(\mathbf{v}_i, \mathbf{v'})는 새로운 데이터 포인트 \mathbf{v'}\mathbf{v}_i와 같은 단말 노드로 떨어질 확률을 의미한다.
  • 랜덤 포레스트에서는 독립적인 가중치 함수 W_j를 갖는 ''m''개 트리 집합들의 예측값을 평균내어 사용한다. 따라서 포레스트 전체의 예측값은 다음과 같이 표현할 수 있다.

:\hat{Y} = \frac{1}{m}\sum_{j=1}^m\sum_{i=1}^n W_{j}(\mathbf{v}_i, \mathbf{v'}) \, Y_i = \sum_{i=1}^n\left(\frac{1}{m}\sum_{j=1}^m W_{j}(\mathbf{v}_i, \mathbf{v'})\right) \, Y_i,

이 식은 포레스트 전체가 개별 트리의 가중치 평균값으로 이웃 가중치 구조를 이룬다는 것을 보여준다. 여기서 \mathbf{v'}의 이웃 \mathbf{v}_i는 포레스트 중 적어도 하나의 트리에서 \mathbf{v'}와 같은 종단 노드로 떨어지는 데이터 포인트를 의미한다. 즉, \mathbf{v'}의 이웃은 트리의 구조와 데이터 집합의 구조에 복합적으로 의존하며, 랜덤 포레스트에서 이웃들의 분포는 각 매개변수들의 지역적 중요성에 따라 달라진다.[57]

5. 수학적 표기법 및 이론

일반적인 데이터 포인트는 벡터 \mathbf{v}=(x_{1},x_{2},\cdots,x_{d})\in \mathbb{R}^{d}로 정의된다. 여기서 x_{i}스칼라 입력을 나타낸다. 실제 응용에서 입력 차원 d는 매우 크며, 무한대가 되기도 한다. 그러나 랜덤 트리 또는 랜덤 포레스트 계산에서는 \mathbf{v} 내의 d개 모든 원소를 사용하지 않고, 필요한 기저(basis)에 있는 값들만 취급하는 것이 일반적이다.

종종 입력을 가능한 모든 입력 집합으로부터 함수 \phi(\mathbf{v})에 의해 임의로 추출된 것으로 간주한다. \phi(\mathbf{v})는 입력 부분집합을 선택하는 함수로, 다음과 같이 정의된다.

:\phi:\mathbb{R}^{d}\mathbb \rightarrow \mathbb{R}^{d'},\, \textrm{with}\, d'\ll d.

5. 1. 정보 획득량과 섀넌 엔트로피

훈련 단계에서 트리의 각 노드는 들어오는 데이터들을 최적으로 분리하기 위해 정보 획득량(information gain영어)을 기준으로 사용한다. 다시 말해 각 노드에서 정보 획득량(신뢰)을 최대화하는 방향으로 데이터를 분리한다. 정보 획득량은 다음과 같이 정의된다.

:I=H(S)-\sum_{i\in \{\mathrm{L},\mathrm{R}\}}\frac{\left | S^{i} \right |}{\left | S \right |}H(S^{i}),

여기서 S는 한 노드에 도달하는 데이터 집합을, S^{i}는 이 노드의 i\in \{\mathrm{L},\mathrm{R}\}, 왼쪽 혹은 오른쪽 방향 자식 노드로 들어가는 데이터 집합을 나타낸다(SS^{i}의 관계식은 훈련과 테스트 과정 참조). 또한, \left |\, \cdot \, \right |H(S)는 각각 데이터 집합에 속한 데이터 개수와 섀넌 엔트로피(Shannon entropy영어)를 가리킨다.

위 수식에서 볼 수 있듯이, 정보 획득량을 최대화하기 위해서는 결국 섀넌 엔트로피가 최소화되어야 한다. 섀넌 엔트로피는 확률 변수의 조합으로 정보원(여기서는 S)에 대한 불확실성을 보여주는 것으로 아래와 같이 정의된다.

:H(S)=-\sum_{c\in \mathcal{C}}p\log(p(c)),

여기서 \mathcal{C}는 전체 부류(class영어) 집합을 나타내며, p(c)는 각 부류에 대한 확률 질량 함수이다.

5. 2. 노드 분할 함수

하나의 일반적인 데이터 포인트는 벡터 \mathbf{v}=(x_{1},x_{2},\cdots,x_{d})\in \mathbb{R}^{d}로 정의된다. 여기서 x_{i}스칼라 입력을 나타낸다. 랜덤 트리 또는 랜덤 포레스트 계산에서는 \mathbf{v} 내의 d개의 모든 원소를 사용하지 않고, 필요한 기저(basis)에 있는 값들만 취급하는 것이 일반적이다.

입력은 함수 \phi(\mathbf{v})에 의해 임의로 추출된 것으로 간주하는 것이 편리하다. \phi(\mathbf{v})는 입력의 부분집합을 선택하는 함수로, 다음과 같이 정의된다.

:\phi:\mathbb{R}^{d}\mathbb \rightarrow \mathbb{R}^{d'},\, \textrm{with}\, d'\ll d.

각 트리의 노드마다 '''분할 함수'''(split function영어)를 가지며, 다음과 같이 표현할 수 있다.

:h(\mathbf{v}, \boldsymbol{\theta}_{j})\in \left \{ 0, 1 \right \},

0은 거짓(false영어), 1은 참(true영어)을 가리킨다. 노드에 도달한 데이터는 분할 함수 결과에 따라 왼쪽 또는 오른쪽의 자식 노드로 보내진다. 이러한 분할 함수는 매개변수 \boldsymbol{\theta} = (\phi,\psi, \tau)에 따라 결정된다.

  • \phi는 필터 함수로 벡터 \mathbf{v}에서 몇 개의 특징(feature영어)들만을 선택한다. 이 과정은 특징 배깅(feature bagging영어)이라고도 불린다.
  • \psi는 분할 함수의 기하학적 특성을 나타낸다. 평행한 초평면(axis-aligned hyperplane영어), 비스듬한 초평면(oblique hyperplane영어) 또는 일반적인 평면(general surface영어) 등이 사용될 수 있다.[55]
  • \tau는 매개변수 벡터로 이진 테스트(binary test영어)의 부등식에서 임계값(threshold value영어)들을 가지고 있다.


따라서 노드 분할 함수는 다음과 같이 표현될 수 있다.

  • 노드 분할 함수가 선형적일 때


:h(\mathbf{v}, \boldsymbol{\theta}_{j})=[\tau_{1}>\phi(\mathbf{v})\cdot\psi>\tau_{2}]

  • 노드 분할 함수가 비선형일 때


:h(\mathbf{v}, \boldsymbol{\theta}_{j})=[\tau_{1}>\phi(\mathbf{v})^{\top }\psi\, \phi(\mathbf{v})>\tau_{2}]

랜덤 포레스트는 학습을 수행할 관측 데이터로부터, 부트스트랩에 의한 랜덤 샘플링으로 ''B''개의 서브 샘플을 생성하고, 각 서브 샘플을 트레이닝 데이터로 하여, ''B''개의 결정 트리를 작성한다. 지정된 노드 수 n_\mathrm{min}에 도달할 때까지, 다음 방법으로 노드를 생성한다.

# 트레이닝 데이터의 설명 변수 중, ''m''개를 랜덤하게 선택한다.

# 선택된 설명 변수 중, 트레이닝 데이터를 가장 잘 분류하는 것과 그 때의 임계값을 이용하여, 노드의 분할 함수를 결정한다.

'''파라미터 권장 값'''

  • n_\mathrm{min}: 분류의 경우 1, 회귀의 경우 5
  • ''m'': 설명 변수의 총수를 ''p''라고 할 때, 분류의 경우 \sqrt{p}, 회귀의 경우 ''p/3''

5. 3. 훈련 목적 함수

하나의 일반적인 데이터 포인트를 벡터 \mathbf{v}로 정의한다.

:\mathbf{v}=(x_{1},x_{2},\cdots,x_{d})\in \mathbb{R}^{d},

여기서, x_{i}스칼라 입력을 나타낸다. 실제 응용에서 입력의 차원 d는 매우 큰데, 심지어 무한대가 되기도 한다. 그러나 랜덤 트리 또는 랜덤 포레스트의 계산에서 \mathbf{v}내의 d개의 모든 원소를 사용하지 않으며, 필요한 기저(basis)에 있는 값들만 취급하는 것이 일반적이다.

종종 입력을 가능한 모든 입력들의 집합으로부터 하나의 함수 \phi(\mathbf{v})에 의해 임의로 추출된 것으로 생각하는 것이 편하다. \phi(\mathbf{v})는 입력의 부분집합을 선택하는 함수로, 다음과 같이 정의한다.

:\phi:\mathbb{R}^{d}\mathbb \rightarrow \mathbb{R}^{d'},\, \textrm{with}\, d'\ll d.

큰 범주에서 볼 때, 결정 트리의 기능은 오프라인 단계(훈련 또는 학습)와 온라인 단계(테스트) 두 가지로 나눌 수 있다.

훈련 단계에서는 종단 노드에 대한 매개변수와 내부 노드와 관련된 노드 분할 함수(split function)의 매개변수를 최적화하는 작업이 진행된다.

트리의 훈련 과정을 이해할 때, 훈련 데이터의 부분집합을 트리의 가지들과 연관시켜 생각하는 것이 편하다. 예를 들어, 노드 1(그림에서와 같이 0부터 너비-우선순위로 각 노드에 숫자가 부여된다)에 도달하는 훈련 데이터의 부분집합을 S_{1}이라고 하고, 노드 1의 왼쪽과 오른쪽 자식 노드를 각각 S_{1}^{\mathrm{L}}, S_{1}^{\mathrm{R}}라고 하자. 이 때, 각 분할 노드 j는 다음과 같은 관계식을 갖는다.

:S_{j}=S_{j}^{\mathrm{L}}\cup S_{j}^{\mathrm{R}}, S_{j}^{\mathrm{L}}\cap S_{j}^{\mathrm{R}}=\emptyset, S_{j}^{\mathrm{L}}=S_{2j+1}, S_{j}^{\mathrm{R}}=S_{2j+2}.

데이터 포인트 \{\mathbf{v}\}의 훈련 집합 S_{0} 및 실제 데이터 레이블(ground truth label)이 주어졌을 때, 트리의 매개변수는 정의한 목적 함수를 최소화 하도록 선택된다. 트리의 성장을 언제 멈출지 결정하기 위해 미리 정의된 여러 가지 멈춤 조건이 적용된다.

T개의 트리로 구성된 하나의 포레스트의 경우, 일반적으로 훈련 과정은 각 트리에 대해 독립적으로 T번 반복된다. 랜덤 트리 또는 포레스트에서 주목할 사실은 랜덤성(randomness영어)이 오직 훈련 과정에만 존재한다는 것이다. 트리가 형성된 후 고정되어 있다면 테스트 단계에서는 완전히 결정론적인 특성을 보인다. 즉, 동일한 입력 데이터에 대해 항상 동일한 결과를 낸다.

노드 분할 함수의 매개변수 \boldsymbol{\theta}의 가능한 모든 경우를 포함하는 집합을 \mathcal{T}라고 한다면, j번째 노드의 훈련 단계에서 \mathcal{T}_{j}\subset\mathcal{T} 인 부분집합 \mathcal{T}_{j}를 만든다. 매개변수의 최적값 \boldsymbol{\theta}_{j}^{*}\mathcal{T}_{j}안에서, 정보 획득량(information gain영어)으로 정의되는 목적 함수(objective function영어)를 최대로 만들게 하는 값으로 계산된다.

:\boldsymbol{\theta}_{j}^{*}=\arg\underset{\boldsymbol{\theta}_{j}\in\mathcal{T}_{j}}{\max}I_{j},

:I_{j}=I(S_{j},S_{j}^{\mathrm{L}},S_{j}^{\mathrm{R}},\boldsymbol{\theta}_{j})=H(S_{j})-\sum_{i\in\left \{ \mathrm{L},\mathrm{R} \right \}}\frac{\left | S_{j}^{i} \right |}{\left | S_{j} \right |}H(S_{j}^{i}). (결정 트리 참조)

'''임의성의 정도'''(the amount of randomness영어)는 \left | \mathcal{T}_{j} \right | / \left | \mathcal{T} \right |로 결정된다. \left | \mathcal{T} \right |=\infty 로 고정시켜 두고 랜덤 포레스트를 훈련시키는 경우, 매개변수 \rho=\left | \mathcal{T}_{j} \right |를 도입하여 임의성 정도를 설명할 수 있다. 이 같은 경우, \rho = 1,...,\infty가 임의성의 정도를 결정하는 것으로 볼 수 있다. 보통 \rho의 값은 랜덤 포레스트의 트리들의 모든 노드에서 동일한 값을 사용한다. 만약 \rho=\left | \mathcal{T} \right | 이면, 랜덤 포레스트의 모든 트리들은 서로 동일하게 되며, 전체 시스템에 임의성이 주입되지 않는다. \rho=1 인 경우에는 최대의 임의성과 비상관화(uncorrelated)된 트리들을 얻게 된다.

5. 4. 임의성의 정도

랜덤 포레스트에서 '''임의성의 정도'''(the amount of randomness영어)는 \left | \mathcal{T}_{j} \right | / \left | \mathcal{T} \right |로 결정된다. 여기서 \mathcal{T}는 노드 분할 함수의 매개변수 \boldsymbol{\theta}의 가능한 모든 경우를 포함하는 집합이고, \mathcal{T}_{j}j번째 노드의 훈련 단계에서 만들어지는 부분집합이다(\mathcal{T}_{j}\subset\mathcal{T}).[1]

만약 \left | \mathcal{T} \right |=\infty로 고정하고 랜덤 포레스트를 훈련시키는 경우, 매개변수 \rho=\left | \mathcal{T}_{j} \right |를 도입하여 임의성의 정도를 설명할 수 있다. 이 경우 \rho = 1,...,\infty가 임의성의 정도를 결정한다. 보통 \rho 값은 랜덤 포레스트의 모든 트리 노드에서 동일하게 사용된다.[1]

만약 \rho=\left | \mathcal{T} \right |이면, 랜덤 포레스트의 모든 트리들은 서로 동일하게 되며, 전체 시스템에 임의성이 주입되지 않는다. 반면 \rho=1인 경우에는 최대의 임의성과 비상관화(uncorrelated)된 트리들을 얻게 된다.[1]

6. 응용 사례

랜덤 포레스트는 다양한 분야에서 활용되며, 특히 관측치 간의 비유사성(dissimilarity)을 측정하는 데 유용하다. 이는 레이블이 없는 데이터 간의 비유사성을 정의하는 데 사용될 수 있다.[6][35] 랜덤 포레스트 비유사성은 혼합된 변수 유형 처리에 용이하고, 입력 변수의 단조 변환에 불변하며, 이상치(Outlier)에 강건하다는 장점이 있다.[36]

KeRF와 랜덤 포레스트는 각 셀의 점의 수가 제어되는 경우 유사한 예측을 제공한다. 나무의 수가 무한대로 갈 때 무한 랜덤 포레스트와 무한 KeRF가 존재하며, 각 셀의 관측치 수가 제한적일 경우 이들의 추정치는 비슷하다.

6. 1. 키넥트(Kinect) 신체 추적

엑스박스 360에서 사용되는 모션 캡처 주변기기인 키넥트는 랜덤 포레스트를 이용하여 주어진 입력에서 신체의 각 부분을 분류한다.[58] 훈련 단계에서는 미리 신체부분들이 라벨화(pre-labeled) 되어있는 깊이 지도(depth map영어)에서 2,000개의 픽셀(pixel)을 임의로 추출해 300,000장의 깊이 지도당 트리 하나씩 총 세 개의 깊이(depth) 값이 20인 트리를 구성한다. 트리 구성 시 1,000개의 코어 클러스터(core cluster영어)를 사용한 GPU 연산으로 하루 정도의 시간이 걸린다. 테스트 단계에서는 앞서 구성한 트리들을 이용하여 임의의 입력 깊이 사진의 배경을 제외한 모든 픽셀들을 분류하는데 엑스박스 GPU에서 5밀리초(200프레임/초)의 시간 성능을 보인다.

6. 2. 컴퓨터 단층 촬영(CT) 영상 분석

안토니오 크리미니시(Antonio Criminisi영어) 등은 랜덤 포레스트를 이용하여 3차원 컴퓨터 단층 촬영 영상(CT) 내에서 주어진 복셀에 대해 해당 해부학 구조가 어디인지 검출하고 해당 위치를 파악하는 방법을 제안하였다.[59]

훈련 단계에서는 해당 복셀이 어떤 해부학 구조인지, 그리고 해당 구조의 바운딩 박스(bounding box) 정보를 가지는 55개의 복셀 포인트들을 가지고 6개의 트리를 통해 동시에 학습한다. 테스트 단계에서는 각 트리로부터 얻어진 주어진 복셀이 각 해부학 구조에 포함될 확률들의 평균을 통해 최종 확률을 계산하여, 이 확률이 해당 해부학 구조에 속할 가능성(0에서 1 사이의 값)이 0.5 이상인지 아닌지를 확인하여 결정한다.

6. 3. 뇌종양 검출

마이크로소프트 연구소, 브라운 대학교, 캠브리지 대학교 연구팀은 다채널 자기공명영상(Multi-channel Magnetic resonance image영어)으로 촬영된 뇌 영상에서 고악성도 신경교종(High-grade gliomas영어)을 검출하기 위해 랜덤 포레스트를 적용하였다.[60] 기존의 많은 종양 검출 연구들이 전체적인 종양 덩어리를 검출하는 데 초점을 맞췄다면, 이 연구팀에서는 랜덤 포레스트가 내재적으로 다중 클래스 특성을 지니는 점을 이용하여 서로 다른 종류의 신경 조직을 동시에 검출하는 연구를 진행하였다. 특히 기존의 신경 조직 검출 알고리즘에 비해 전처리 과정 등이 많이 요구되지 않으며, 비교적 간단한 복잡도 모델로 높은 검출 정확도를 보이는 결과를 얻어 랜덤 포레스트의 유용성을 증명하였다.

6. 4. 기타 응용 분야

랜덤 포레스트 예측기는 그 구조의 일부로서 자연스럽게 관측치 간의 비유사성 측도를 생성한다. 이와 유사하게, 원본 "관측된" 데이터와 기준 분포에서 추출된, 적절히 생성된 합성 데이터를 구별하도록 포레스트를 훈련시켜 레이블이 없는 데이터 간의 비유사성을 정의할 수 있다.[6][35] 랜덤 포레스트 비유사성은 혼합된 변수 유형을 매우 잘 처리하고, 입력 변수의 단조 변환에 불변하며, 이상치(Outlier)에 강건하다는 장점이 있다. 랜덤 포레스트 비유사성은 고유한 변수 선택으로 인해 많은 반연속 변수를 쉽게 처리할 수 있다. 예를 들어, "Addcl 1" 랜덤 포레스트 비유사성은 각 변수가 다른 변수에 얼마나 의존하는지에 따라 각 변수의 기여도를 가중한다. 랜덤 포레스트 비유사성은 조직 마커 데이터를 기반으로 환자 클러스터를 찾는 등 다양한 응용 분야에 사용되어 왔다.[36]

7. 한계점

다항 로지스틱 회귀나 나이브 베이즈 분류기와 같은 선형 모델이 의사 결정 트리를 대신하여 랜덤 포레스트의 기본 추정기로 제안되고 평가되었다.[37][38][39] 예측 변수와 목표 변수 간의 관계가 선형이면, 기본 학습자는 앙상블 학습자와 동일하게 높은 정확도를 가질 수 있다.[40][37]

랜덤 포레스트는 성능과 해석 가능성을 모두 달성하기 위해, 일부 모델 압축 기술을 사용하여 동일한 의사 결정 기능을 충실하게 재현하는 최소한의 "환골탈태" 의사 결정 트리로 변환할 수 있다.[37][47][48]

7. 1. 해석의 어려움

Y = m(\mathbf{X}) + \varepsilon라고 가정한다. 여기서 \varepsilon\mathbf{X}와 독립적이고 유한한 분산 \sigma^2<\infty를 가진 중심화된 가우시안 노이즈이다. 또한, \mathbf{X}[0,1]^d에서 균일하게 분포하며 m은 립시츠 연속이다. Scornet[41]은 중심화된 KeRF와 균일 KeRF의 일관성 속도에 대한 상한을 증명했다.

k\rightarrow\inftyn/2^k\rightarrow\infty를 제공하면 모든 n에 대해 다음을 만족하는 상수 C_1>0가 존재한다.

\mathbb{E}[\tilde{m}_n^{cc}(\mathbf{X}) - m(\mathbf{X})]^2 \le C_1 n^{-1/(3+d\log 2)}(\log n)^2.

  • 설명 변수 중 의미 있는 변수가 노이즈 변수보다 극단적으로 적은 경우에는 제대로 작동하지 않는다.

7. 2. 계산 복잡성

Y = m(\mathbf{X}) + \varepsilon라고 가정한다. 여기서 \varepsilon\mathbf{X}와 독립적이고 유한한 분산 \sigma^2<\infty를 가진 중심화된 가우시안 노이즈이다. 또한, \mathbf{X}[0,1]^d에서 균일하게 분포하며 m은 립시츠 연속이다. Scornet[41]은 중심화된 KeRF와 균일 KeRF의 일관성 속도에 대한 상한을 증명했다.

k\rightarrow\inftyn/2^k\rightarrow\infty인 경우, 상수 C>0가 존재하여 다음이 성립한다.

:\mathbb{E}[\tilde{m}_n^{uf}(\mathbf{X})-m(\mathbf{X})]^2\le Cn^{-2/(6+3d\log2)}(\log n)^2

설명 변수 중 의미 있는 변수가 노이즈 변수보다 극단적으로 적은 경우에는 제대로 작동하지 않는다.

7. 3. 희소한 데이터 문제

랜덤 포레스트는 단일 의사 결정 트리보다 더 높은 정확도를 달성하는 경우가 많지만, 의사 결정 트리의 해석 가능성을 희생한다. 의사 결정 트리는 선형 모델, 규칙 기반 머신 러닝, 어텐션(머신 러닝) 기반 모델과 함께 쉽게 해석할 수 있는 머신 러닝 모델의 비교적 작은 그룹에 속한다. 이러한 해석 가능성은 의사 결정 트리의 주요 장점 중 하나이다. 이를 통해 개발자는 모델이 데이터에서 현실적인 정보를 학습했는지 확인할 수 있으며, 최종 사용자는 모델이 내린 결정에 대한 신뢰와 확신을 가질 수 있다.[37][12] 예를 들어, 의사 결정 트리가 결정을 내리는 경로를 따라가는 것은 매우 쉽지만, 수십 또는 수백 개의 트리의 경로를 따라가는 것은 훨씬 더 어렵다.

특성이 대상과 선형적으로 상관 관계가 있는 경우, 랜덤 포레스트가 기본 학습자의 정확도를 향상시키지 못할 수 있다.[37][40] 여러 범주형 변수가 있는 문제에서도 마찬가지이다.[49] 설명 변수 중 의미 있는 변수가 노이즈 변수보다 극단적으로 적은 경우에도 제대로 작동하지 않는다.

참조

[1] 간행물 Random Decision Forests http://ect.bell-labs[...] 2016-06-05
[2] 논문 The Random Subspace Method for Constructing Decision Forests http://ect.bell-labs[...]
[3] 논문 Stochastic Discrimination https://pdfs.semanti[...]
[4] 논문 An Overtraining-Resistant Stochastic Modeling Method for Pattern Recognition
[5] 논문 On the Algorithmic Implementation of Stochastic Discrimination https://pdfs.semanti[...]
[6] 논문 Random Forests
[7] 문서 U.S. trademark registration number 3185828, registered 2006/12/19.
[8] 웹사이트 RANDOM FORESTS Trademark of Health Care Productivity, Inc. - Registration Number 3185828 - Serial Number 78642027 :: Justia Trademarks https://trademarks.j[...]
[9] 논문 Shape quantization and recognition with randomized trees http://www.cis.jhu.e[...] 2008-04-01
[10] 문서 "k-DT: A multi-tree learning method."
[11] 논문 An Experimental Comparison of Three Methods for Constructing Ensembles of Decision Trees: Bagging, Boosting, and Randomization
[12] 서적 The Elements of Statistical Learning http://www-stat.stan[...] Springer
[13] 서적 An Introduction to Statistical Learning http://www-bcf.usc.e[...] Springer
[14] 논문 A Data Complexity Analysis of Comparative Advantages of Decision Forest Constructors http://ect.bell-labs[...] 2015-11-13
[15] 논문 Extremely randomized trees http://orbi.ulg.ac.b[...]
[16] 간행물 Enhancing random forests performance in microarray data classification.
[17] 문서 Feature weighting random forest for detection of hidden web search interfaces.
[18] 문서 Enriched Random Forest.
[19] 문서 Enriched random forest for high dimensional genomic data.
[20] 문서 A weighted random forests approach to improve predictive performance.
[21] 문서 Trees weighting random forest method for classifying high-dimensional noisy data.
[22] 웹사이트 Documentation for R package randomForest https://cran.r-proje[...] 2012-10-16
[23] 논문 Reinforcement Learning Trees 2015
[24] 간행물 Bias of importance measures for multi-valued attributes and solutions https://www.research[...]
[25] 논문 Permutation importance: a corrected feature importance measure 2010-05
[26] 논문 Role of Data Analytics in Infrastructure Asset Management: Overcoming Data Size and Quality Problems 2020-06-01
[27] 논문 Unbiased split selection for classification trees based on the Gini index https://epub.ub.uni-[...]
[28] 논문 Cross-Validated Variable Selection in Tree-Based Methods Improves Predictive Performance 2017
[29] 논문 Classification with correlated features: unreliability of feature ranking and solutions 2011-07
[30] 웹사이트 Beware Default Random Forest Importances http://explained.ai/[...] 2023-10-25
[31] 서적 Pattern Recognition Techniques Applied to Biomedical Problems https://books.google[...] Springer Nature 2020-02-29
[32] 서적 Classification and Regression Trees https://www.taylorfr[...] Routledge 2017-10-25
[33] 문서 https://scikit-learn.org/stable/auto_examples/inspection/plot_permutation_importance.html 31. Aug. 2023
[34] 기술보고서 Random forests and adaptive nearest neighbors
[35] 논문 Unsupervised Learning with Random Forest Predictors
[36] 논문 Tumor classification by tissue microarray profiling: random forest clustering applied to renal cell carcinoma 2005-04
[37] 논문 Using Machine Learning to Examine Impact of Type of Performance Indicator on Flexible Pavement Deterioration Modeling http://ascelibrary.o[...] 2021-02-01
[38] 논문 Random Forests for multiclass classification: Random MultiNomial Logit
[39] 간행물 Database and Expert Systems Applications: 18th International Conference, DEXA 2007, Regensburg, Germany, September 3-7, 2007, Proceedings
[40] 논문 A comparison of random forest regression and multiple linear regression for prediction in neuroscience https://linkinghub.e[...] 2013-10-01
[41] arXiv Random forests and kernel methods
[42] 논문 Some infinity theory for predictor ensembles https://statistics.b[...]
[43] 논문 Random forests and adaptive nearest neighbors
[44] arXiv The Random Forest Kernel and other kernels for big data from random partitions
[45] 논문 Consistency for a simple model of random forests
[46] arXiv Analysis of purely random forests bias
[47] 논문 Explainable decision forest: Transforming a decision forest into an interpretable tree. https://www.scienced[...] 2020
[48] 논문 Born-Again Tree Ensembles http://proceedings.m[...] PMLR 2020
[49] Thesis The Application of Data Analytics to Asset Management: Deterioration and Climate Change Adaptation in Ontario Roads (Doctoral dissertation) https://tspace.libra[...] 2019-11
[50] 논문 Random Forests
[51] 저널 인용 http://citeseerx.ist[...]
[52] 저널 인용 http://ieeexplore.ie[...]
[53] 저널 인용 http://link.springer[...]
[54] 저널 인용 http://statistics.be[...]
[55] 기술보고서 http://research.micr[...]
[56] 웹인용 Documentation for R package randomForest http://cran.r-projec[...] 2015-04-27
[57] 기술보고서 http://citeseerx.ist[...]
[58] 저널 인용 http://dl.acm.org/ci[...]
[59] 저널 인용 http://link.springer[...]
[60] 저널 인용 http://link.springer[...]
[61] 콘퍼런스 http://jamie.shotton[...]

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com