기타 주제

이 단원에서는 다음 주제를 살펴봅니다.

  • 랜덤 포레스트 해석
  • 랜덤 포레스트 학습
  • 랜덤 포레스트의 장단점

랜덤 포레스트 해석

랜덤 포레스트는 결정 트리보다 해석하기가 더 복잡합니다. 랜덤 포레스트에는 임의의 노이즈로 학습된 결정 트리가 포함됩니다. 따라서 결정 트리 구조를 판단하는 것이 더 어렵습니다. 그러나 몇 가지 방법으로 랜덤 포레스트 모델을 해석할 수 있습니다.

랜덤 포레스트를 해석하는 한 가지 방법은 단순히 CART 알고리즘을 사용하여 결정 트리를 학습하고 해석하는 것입니다. 랜덤 포레스트와 CART는 모두 동일한 핵심 알고리즘으로 학습되므로 데이터 세트의 동일한 전역 뷰를 공유하게 됩니다. 이 옵션은 간단한 데이터 세트에 적합하며 모델의 전반적인 해석을 이해합니다.

변수 중요도 역시 좋은 해석성 접근 방식입니다. 예를 들어 다음 표는 인구 조사 데이터 세트(성인이라고도 함)에 대해 학습된 랜덤 포레스트 모델에 대한 다양한 특성의 변수 중요도에 대한 순위를 지정합니다.

표 8. 14가지 특성의 변수 중요도.

특성 합계 점수 정확도 평균 감소 AUC의 평균 감소율 평균 최소 심도 노드 수 PR-AUC 평균 감소 루트로 표시
relationship

4203592.6입니다.

0.0045

0.0172

4.970회

57040

0.0093

1095

capital_gain

3363045.1입니다.

0.0199포인트

0.0194

2.852

56468

0.0655포인트

457

marital_status

3128996.3입니다.

0.0018

0.0230

6.633

52391

0.0107

750

연령

2,520,658.8

0.0065

0.0074

4.969회

356784

0.0033

200

education

2015905.4입니다.

0.0018

-0.0080

5.266

115751

-0.0129

205

occupation

1939409.3입니다.

0.0063

-0.0040

5,017

221935

-0.0060

62

education_num

1673648.4입니다.

0.0023

-0.0066

6,009명

58303

-0.0080

197

fnlwgt

156,4189.0

-0.0002

-0.0038

9.969

431987

-0.0049

0

hours_per_week

1333976.3입니다.

0.0030

0.0007

6,393

206526

-0.0031

20

capital_loss

866863.8

0.0060

0.0020

8.076

58531

0.0118

1

workclass

644208.4

0.0025

-0.0019

9.898

132196

-0.0023

0

native_country

538841.2

0.0001

-0.0016

9.434

67211

-0.0058

0

성별

226,049.3

0.0002

0.0002

10.911

37754

-0.0011

13

race

168,180.9

-0.0006

-0.0004

11.571명

42262

-0.0031

0

보시다시피 변수 중요도의 정의가 서로 다르기 때문에 특성의 순위가 달라질 수 있습니다.

모델 구조에서 발생하는 변수 중요도 (예: 합계 점수, 평균 최소 깊이, 노드 수, 위 표의 루트 수)는 결정 트리 (섹션 '장바구니 | 변수 중요도' 참조) 및 랜덤 포레스트에 대해 유사하게 계산됩니다.

순열 변수 중요도 (예: 위의 표에서 {accuracy, auc, pr-auc}의 평균 감소)는 검증 데이터 세트를 사용하여 모든 머신러닝 모델에서 계산할 수 있는 모델 제약이 없는 측정값입니다. 하지만 랜덤 포레스트에서는 검증 데이터 세트를 사용하는 대신 즉시 사용 가능한 평가로 순열 변수 중요도를 계산할 수 있습니다.

SHAP(Shapley Additive exPlanations)는 모델에 관계없이 개별 예측이나 모델별 해석을 설명합니다. (모델 무관한 해석에 대한 소개는 Molnar의 해석 가능한 머신러닝을 참고하세요.) SHAP는 보통 컴퓨팅 비용이 높지만 결정 포레스트의 경우 속도가 상당히 빨라질 수 있으므로 결정 포레스트를 해석하는 좋은 방법입니다.

사용 예

이전 강의에서는 tfdf.keras.CartModel를 호출하여 작은 데이터 세트에 대해 CART 결정 트리를 학습시켰습니다. 랜덤 포레스트 모델을 학습시키려면 tfdf.keras.CartModeltfdf.keras.RandomForestModel로 바꾸면 됩니다.

model = tfdf.keras.RandomForestModel()
model.fit(tf_train_dataset)

장단점

이 섹션에서는 랜덤 포레스트의 장단점을 간단히 요약합니다.

장점:

  • 결정 트리와 마찬가지로 랜덤 포레스트는 기본적으로 숫자 및 범주형 특성을 지원하며 특성 사전 처리가 필요하지 않은 경우가 많습니다.
  • 결정 트리는 독립적이므로 랜덤 포레스트가 동시에 학습될 수 있습니다. 결과적으로 랜덤 포레스트를 빠르게 학습시킬 수 있습니다.
  • 랜덤 포레스트의 기본 매개변수는 보통 좋은 결과를 냅니다. 이러한 매개변수를 조정해도 모델에 미치는 영향은 거의 없습니다.

단점:

  • 결정 트리는 프루닝되지 않으므로 클 수 있습니다. 노드가 100만 개 이상인 모델이 일반적입니다. 랜덤 포레스트의 크기 (및 추론 속도)가 때때로 문제가 될 수 있습니다.
  • 랜덤 포레스트에서는 내부 표현을 학습하고 재사용할 수 없습니다. 각 결정 트리 (및 각 결정 트리의 각 브랜치)는 데이터 세트 패턴을 다시 학습해야 합니다. 이렇게 하면 특히 테이블이 아닌 데이터 세트 (예: 이미지, 텍스트)의 일부 데이터 세트에서 랜덤 포레스트가 다른 메서드보다 더 나쁜 결과를 초래합니다.