통계 실험실 차트
넘스탯 로고
넘스탯
LEARN · SIMULATE · VERIFY

확률부터 LLM까지, 원리부터 제대로 배우는 자기주도 학습 플랫폼

로그인
학습 메뉴
도움말

결정 트리 & 랜덤 포레스트 실습실

"질문 하나가 공간을 두 조각으로" — 한 칼 긋기에서 시작해 트리를 키우고, 숲의 투표까지

원하는 개념·랩·가이드를 검색해보세요

Ctrl K
기계학습 이론으로상세 이론 학습

스무고개처럼 질문을 쌓아 분류하는 모델 — 그리고 그 트리 여러 그루의 투표

결정 트리는 "x가 3보다 큰가?" 같은 질문으로 공간을 반복해서 쪼개는 모델입니다. 사람이 읽을 수 있는 몇 안 되는 ML 모델이지만, 혼자서는 잘 흔들립니다. 그 약점을 트리 여러 그루의 투표(랜덤 포레스트)가 어떻게 고치는지까지 한 번에 체험해 보세요.
이 페이지에서 배우고 나면
  • 분할 하나가 "얼마나 좋은 질문"인지 재는 지니 이득을 직접 조작하며 체득합니다.
  • 트리가 깊어질 때 훈련 정확도와 테스트 정확도가 갈라지는 과적합의 순간을 목격합니다.
  • 같은 트리 50그루는 왜 소용없고, 부트스트랩이 왜 숲을 만드는지 실측으로 확인합니다.
예측 먼저 — 실험 전에 답을 정해 보세요
예측 → 실험 → 확인

정답을 몰라도 괜찮습니다 — 먼저 예측을 정해야 시뮬레이션 결과가 기억에 남습니다. 예측을 고른 뒤 아래 시뮬레이션으로 직접 확인하고, 그다음 결과를 열어 보세요.

1. max_depth를 끝까지(8) 올려 훈련 정확도를 100%로 만들면, 테스트 정확도는 어떻게 될까요?
2. 부트스트랩 없이 같은 데이터로 키운 트리 50그루를 투표시키면, 1그루일 때와 비교해 어떻게 될까요?
로그인하면 예측 기록이 계정에 저장됩니다

어느 기기에서든 이어서 학습하고, 오답 기반 복습 추천을 받을 수 있습니다.

카카오로 시작하기네이버로 시작하기구글로 시작하기
회원가입 절차 없음 — 닉네임만 저장하며, 이메일·연락처는 수집하지 않습니다.
🌲 결정 트리 & 랜덤 포레스트 시뮬레이터

한 칼 긋기 → 트리 키우기 → 숲 만들기. 모든 수치는 브라우저에서 CART 를 실제로 학습한 실측값입니다.

두 뭉치
비스듬한 경계
XOR 사분면
초승달+노이즈
검은 선을 드래그하세요 — 파랑(●)과 주황(■)을 가장 잘 가르는 위치는 어디일까요?
내 지니 이득 0.500
내 정확도 100.0%
실측 요약 — 이 실습이 보여주는 것

4가지 합성 데이터(두 뭉치·비스듬한 경계·XOR·초승달+노이즈, 시드 고정·7:3 훈련/테스트 분할)에서 CART 결정 트리를 브라우저로 실제 학습하는 3탭 실험입니다. ① 분할선을 직접 드래그해 지니 이득을 채점받고 알고리즘의 최적 스텀프와 대결, ② depth·min_samples_leaf 슬라이더로 트리를 키우며 잎 타일·트리 다이어그램·분할 돋보기(후보 전수 이득 곡선)를 관찰, ③ 부트스트랩 OFF로 시작하는 숲에서 복제 숲의 무의미와 배깅의 분산 감소를 투표 히트맵으로 확인합니다. XOR 데이터는 어디를 잘라도 스텀프 이득이 0.02 이하지만 depth 3에서 테스트 95.8%로 풀립니다.

  • 두 뭉치(120점) 실측: 최적 스텀프(x ≤ 0.069) 하나의 이득이 0.500(지니 0.5 → 0)으로 훈련·테스트 모두 100% — 쉬운 문제는 질문 하나로 끝나며, 깊이는 문제의 난이도가 요구할 때만 필요하다
  • 초승달+노이즈(라벨 노이즈 8% 내장, 200점) 실측: depth 8이면 훈련 99.3%까지 오르지만 테스트는 85.0%에 멈추고, 잎 26개 중 15개가 점 1~2개를 위해 지어진 외딴 방(빗금)이다 — 훈련 완벽 = 노이즈 암기의 신호
  • 비스듬한 경계(160점) 실측: 단일 트리(depth 8) 테스트 81.3% → 부트스트랩 숲 30그루 89.6%(+8.3%p). 반면 부트스트랩 OFF면 트리 50그루도 예측이 1그루와 완전히 동일한 만장일치 복제 숲 — 앙상블의 힘은 개수가 아니라 다양성에서 나온다

바로잡는 오개념: "트리를 많이 심을수록 무조건 좋아진다"는 생각 — CART는 결정론적이라 같은 데이터에서는 항상 같은 트리가 나오고, 다양성 없는 투표는 1그루와 동일하다. 부트스트랩(표본 재추출)과 특징 무작위가 트리들을 서로 다르게 만들어야 비로소 투표가 분산을 줄인다.

AI 튜터에게 물어보기
베타

— 정답 대신 힌트로 유도합니다. 지금 화면의 실험 상태를 알고 답해요.

예: “방금 결과가 이론과 다른데 왜죠?”, “이 값을 올렸는데 왜 반대로 변하죠?”

AI 답변은 부정확할 수 있습니다. 핵심 개념은 반드시 시뮬레이션 실측으로 확인하세요. 질문 0/5 · 하루 질문 한도가 있습니다
트리의 문법 — 축평행 분할과 계단 근사

결정 트리의 질문은 항상 "특징 하나 ≤ 임계값" 꼴이라, 경계는 축에 평행한 직선(2D에서는 사각형 타일)뿐입니다. 비스듬한 경계를 만나면 계단 모양으로 근사할 수밖에 없어요 — 탭 ①에서 "비스듬한 경계" 데이터를 골라 보면 한 칼로는 한계가 뚜렷하고, 탭 ②에서 depth를 올리면 계단이 촘촘해지는 것을 볼 수 있습니다. 같은 데이터를 사선 하나로 가르는 로지스틱 회귀와 비교해 보면 두 모델의 문법 차이가 선명해집니다.

트리 가족 비교 — 언제 무엇을 쓸까?
결정 트리 1그루

규칙을 사람이 읽어야 할 때(설명 가능성). 단, 데이터가 조금만 바뀌어도 구조가 흔들린다.

해석 쉬움
불안정
과적합 주의
랜덤 포레스트

부트스트랩 + 특징 무작위로 서로 다른 트리를 만들어 투표. 분산이 줄어 안정적 — 표 형태 데이터의 강력한 기본기.

병렬 학습
분산 감소
튼튼한 기본값
그래디언트 부스팅

앞 트리의 오차를 다음 트리가 이어서 고치는 순차 학습(XGBoost·LightGBM). 정확도 최상급, 튜닝은 더 예민.

순차 학습
편향 감소
대회 단골
직접 해보기 — 실습 과제
  1. 알고리즘 이기기: "두 뭉치" 데이터에서 선을 그어 지니 이득을 최대로 만든 뒤 "알고리즘의 선 보기" — 최적 대비 몇 %까지 따라잡았나요?
  2. 한 칼의 한계: "XOR 사분면"에서 어디를 잘라도 이득이 거의 0임을 확인 → ② 탭에서 depth 3으로 풀어 보세요 (탐욕 알고리즘이 첫 수를 낭비해도 반복이 해결합니다)
  3. 과적합 목격: "초승달+노이즈"에서 depth 1→8 스윕. 훈련·테스트 칩이 갈라지는 깊이와 빗금 방(외딴 잎)의 개수를 기록하세요
  4. 가지치기의 손맛: depth 8인 채 min_samples_leaf를 1→5로 — 빗금 방이 사라지며 테스트 정확도가 움직이는 것을 확인하세요
  5. 복제 숲의 반전: ③ 탭에서 부트스트랩 OFF로 트리 수 1→50 (변화 0) → 부트스트랩 ON → "숲 다시 심기"를 트리 1그루/30그루에서 각각 연타하며 경계의 흔들림을 비교하세요
📖 더 깊이 학습하기
  • Breiman, Friedman, Olshen & Stone (1984): Classification and Regression Trees — CART 원전, 지니 불순도 분할
  • Breiman (2001): "Random Forests", Machine Learning 45 — 배깅 + 특징 무작위의 결합
  • James, Witten, Hastie & Tibshirani (2021): An Introduction to Statistical Learning 8장 — 트리·배깅·부스팅의 표준 입문
  • scikit-learn 문서: DecisionTreeClassifier, RandomForestClassifier — 실무 하이퍼파라미터 레퍼런스