흔들리는 나무를 많이 평균내
무작위 숲은 학습 자료에서 복원추출한 부트스트랩 표본마다 결정나무를 하나씩 키워. 회귀에서는 나무 예측의 평균을, 분류에서는 범주 투표나 확률 평균을 사용해. 단일 깊은 나무는 분산이 크지만 서로 조금씩 다른 많은 나무를 평균내면 우연한 분할이 상쇄되어 일반화가 안정돼.
특성 무작위화가 나무를 서로 다르게 만들어
모든 분할에서 전체 특성을 보면 강한 특성 하나가 거의 모든 나무의 첫 질문이 되어 나무끼리 비슷해질 수 있어. 무작위 숲은 각 분할에서 일부 특성만 후보로 보여 나무 사이 상관을 낮춰. 개별 나무는 조금 약해져도 평균했을 때 분산 감소가 커지는 이유야.
나무 수는 안정될 때까지 늘려
n_estimators를 늘리면 보통 성능이 나빠지진 않지만 학습 시간, 예측 시간, 메모리는 계속 늘어. 몇십 개에서 시작해 수백 개까지 OOB나 검증 점수가 평평해지는 지점을 그려. 점수가 충분히 안정되면 더 많은 나무는 작은 분산 감소만 주므로 운영 예산에 맞춰 멈춰.
나무의 모양을 조절해
max_features는 각 분할에서 볼 특성 수를 정해 나무 다양성과 개별 강도를 바꿔. max_depth와 min_samples_leaf는 개별 나무의 복잡도를 제한해. 기본값이 강한 출발점이지만 자료가 작거나 잡음이 많다면 잎의 최소 표본 수를 늘리는 게 도움이 돼. 폴드 간 흔들림과 학습·검증 차이로 조절해.
OOB 표본은 공짜에 가까운 점검 창이야
각 나무의 부트스트랩 표본에는 원본 행의 약 36.8%가 빠져. 해당 행을 보지 않은 나무들의 예측을 모으면 out-of-bag 점수를 계산할 수 있어. oob_score=True는 별도 학습 없이 일반화 추정치를 주지만 시간, 집단, 자료 전처리 경계를 대신 지키지는 않아. 최종 모델 비교에는 문제에 맞는 교차검증과 시험 자료가 여전히 필요해.
확률과 중요도는 따로 검증해
무작위 숲의 확률은 순위는 좋아도 완벽히 보정되지 않을 수 있으니 신뢰도 그림을 봐. 기본 feature_importances_는 가능한 분할점이 많거나 고유값이 많은 특성을 선호하는 편향이 있어. 홀드아웃 자료에서 순열 중요도를 계산하고 연관된 특성이 기여를 나눠 갖는 현상도 설명해야 해.
표 자료의 튼튼한 두 번째 기준선
로지스틱 회귀 다음으로 복잡한 비선형 관계를 큰 튜닝 없이 잡고 싶을 때 무작위 숲이 좋아. 스케일링이 필요 없고 병렬 학습이 쉬운 대신 결과물이 크고 예측 때 많은 나무를 통과해야 해. 그래디언트 부스팅이 종종 조금 더 정확하지만 무작위 숲의 안정성과 단순한 튜닝이 운영에서는 이길 수 있어.