결정트리 한 그루는 잘 외우고 잘 틀려요. 조금씩 다른 나무 여러 그루를 심고 다수결로 답하면 훨씬 튼튼해져요 — 앙상블의 힘!
🖱️ 캔버스를 클릭하면 선택한 색(🔵/🔴)의 점이 추가되고, 점 근처를 클릭하면 삭제돼요. 점이 바뀌면 숲 전체가 즉시 다시 자라요.
두 무리가 겹치고 엉뚱한 점도 섞여 있어요. 이 데이터에서 100% 정확도를 좇으면 어떤 일이 벌어질까요? (과적합 실험용)
가로축 x, 세로축 y (둘 다 0~10). 🌲 숲 전체 모드에서 배경색은 나무들의 투표 결과예요 — 파랑 표가 많을수록 파랑, 빨강(주황) 표가 많을수록 주황, 표가 반반으로 갈리는 곳은 하얗게 남아요. 🌳 나무 한 그루 모드는 개별 나무의 딱딱한 결정 영역(보라 선 = 그 나무의 질문들)이에요. 관전 포인트: T가 커질수록 잡음 점 주변의 작은 색 섬이 사라지고 경계가 부드러워지는 것!
각 나무는 깊이 6까지 자라 훈련 점을 거의 외워요(정확도가 높아 보이죠). 하지만 진짜 볼 것은 배경 모양 — 한 그루는 지저분하고, 숲의 다수결은 부드럽고 안정적이에요.
from sklearn.ensemble import RandomForestClassifier
import numpy as np
# X: (n, 2) 좌표 데이터, y: 0(빨강) / 1(파랑) 라벨
X = np.array(coords) # 예: [[7.2, 6.1], [2.3, 4.5], ...]
y = np.array(labels)
# 나무 100그루 — 각 나무는 부트스트랩 샘플 + 랜덤 특징으로 자라요
model = RandomForestClassifier(n_estimators=100, max_depth=6)
model.fit(X, y) # 학습: 숲 심기 🌲🌲🌲
print("정확도:", model.score(X, y)) # 예측은 100그루의 다수결!