PART 03 정형 데이터 마이닝
CHAPTER 05 · ENSEMBLE LEARNING ②

부스팅 Boosting
랜덤포레스트 Random Forest

약한 학습기의 오류를 보완하는 순차 학습과, 붓스트랩 및 변수 무작위성을 활용하는 병렬적 나무 앙상블을 그림·공식·R 실습·기출문제로 학습합니다.

🎯 개념 → 원리 → 비교 → 실습 → 기출📖 교재 428~432쪽 · PDF 51~55페이지✅ 기출 29번·30번 수록🔎 원문 중 부정확한 내용 정정 표시
01 / The Big Picture

앙상블 분석을 한눈에

📖 교재 424~427쪽•PDF 47~50페이지앙상블 개요·배깅의 배경 이론

Ensemble Learning = 여러 예측모형을 결합하여 단일 모형보다 안정적이거나 우수한 예측 성능을 얻고자 하는 접근

Bagging

배깅

Bootstrap Aggregating

여러 붓스트랩 표본에 독립적으로 학습시킨 모형을 결합

기억: 복원추출 → 병렬 학습 → 투표·평균
Boosting

부스팅

Sequential Error Correction

앞선 학습기의 오류를 보완하도록 다음 학습기를 순차 학습

기억: 오류 → 가중치 → 반복 개선
Random Forest

랜덤포레스트

Bagging + Feature Randomness

붓스트랩으로 여러 트리를 만들고 분할 후보 변수도 무작위로 선택

기억: 붓스트랩 + 랜덤 변수 + 다수결
Stacking

스태킹

Meta Learning

다양한 기본 모형의 예측값을 메타학습기가 다시 결합

기억: 모형 예측 → 상위모형 학습
💡 핵심 구분: 배깅·랜덤포레스트는 모형 간 다양성 확보가 중요하고, AdaBoost는 이전 분류의 오류에 주목합니다. 스태킹은 예측값을 학습하는 별도 결합 모형을 사용합니다.
02 / Boosting

부스팅: 틀린 문제를 더 열심히 학습

📖 교재 428쪽•PDF 51페이지부스팅 정의 · AdaBoost · 기출 29번

Weak Learner(약한 학습기)를 순차적으로 결합하여 Strong Learner(강한 학습기)를 구성합니다.

교재 이론 · 개념

부스팅(Boosting)의 정의와 특징

  • 각각의 예측력이 약한 학습기들을 순차적으로 결합해 성능을 높입니다.
  • AdaBoost(Adaptive Boosting)는 Freund와 Schapire가 제안한 대표적인 부스팅 알고리즘입니다.
  • 이진분류에서 무작위 추측보다 조금 더 잘 분류하는 약한 학습기들을 반복해 학습시킬 수 있습니다.
  • 앞의 학습에서 잘못 분류한 관측치에 더 큰 비중을 부여하여 다음 학습에 반영합니다.
  • 가중치가 부여된 개별 학습기의 예측 결과를 결합하여 최종 분류를 결정합니다.
시험 보충: 훈련오차를 빠르게 감소시킬 수 있지만, 배깅보다 항상 좋은 것은 아닙니다. 잡음·이상치·설정에 따라 일반화 성능이 달라질 수 있습니다.

🔁 AdaBoost 작동 과정

1. 동일 가중치처음 모든 관측치에 균등한 비중
→
2. 약한 분류기가중 오차를 고려하여 학습
→
3. 가중치 갱신오분류 관측치에 더 집중
↻ 여러 번 반복 → 학습기별 성능을 반영한 가중 투표(Weighted Vote)
Learner 1 · α₁Learner 2 · α₂Learner 3 · α₃…

αₜ는 개별 학습기의 결합 가중치입니다. 더 잘 분류한 학습기가 일반적으로 더 큰 영향력을 가집니다.

👆 클릭해서 이해하는 AdaBoost 4단계

① 모든 관측치에서 동일하게 출발

6개 관측치의 초기 가중치를 각각 1/6로 두고 첫 번째 약한 분류기를 학습합니다.

막대는 이해를 돕는 예시이며 실제 데이터 계산 결과는 아닙니다. 주황색: 오분류 관측치
AdaBoost · 개념 공식

오차와 학습기 가중치

εt = Σi Dt(i) · 𝟙[yi ≠ ht(xi)]

εₜ = 현재 관측치 가중치를 반영한 오분류율

αt = ½ ln[(1 − εt) / εt]

αₜ = 해당 약한 학습기를 최종 예측에 반영하는 가중치 (표준 이진 AdaBoost)

H(x) = sign[Σt αtht(x)]

각 학습기의 예측을 가중 합산하여 최종 분류

혼동하기 쉬운 지점

가중치가 두 종류입니다

① 관측치 가중치 Dₜ(i)
훈련 관측치별 중요도를 의미합니다. 매 반복에서 정규화하여 합이 1이 되도록 합니다.
② 학습기 가중치 αₜ
약한 학습기의 최종 투표 영향력입니다. αₜ의 합이 반드시 1일 필요는 없습니다.
교재의 “n개 분류기에 각각 가중치를 설정(단, 가중치 합은 1)”이라는 설명은 관측치 가중치와 학습기 가중치를 구분해야 정확합니다.
🎯 암기 문장: “부스팅은 앞선 모형이 틀린 관측치를 더 중요하게 다루며, 순차적으로 모형을 학습해 결합한다.”
03 / Random Forest

랜덤포레스트: 서로 다른 나무를 많이 만든다

📖 교재 429쪽•PDF 52페이지랜덤포레스트 기본 이론

Breiman(2001)이 제안한 랜덤포레스트는 의사결정나무들의 예측을 결합하는 대표적인 앙상블 알고리즘입니다.

교재 이론 · 개념

Random Forest의 정의와 특징

  • 의사결정나무가 데이터 변화에 민감하여 예측 변동성(분산)이 클 수 있다는 점을 개선하려고 합니다.
  • 각 트리마다 복원추출한 붓스트랩 자료를 사용합니다.
  • 트리의 각 분할 마디(node)에서 전체 변수 중 무작위로 일부만 후보로 뽑습니다.
  • 뽑힌 후보 변수 중에서 불순도 감소를 가장 크게 하는 분할을 선택합니다.
  • 여러 트리의 결과를 결합하여 분류는 일반적으로 다수결, 회귀는 평균으로 예측합니다.
  • 다수의 예측변수와 복잡한 비선형 관계에도 적용할 수 있으나, 단일 트리에 비해 결과 해석은 어렵습니다.

🌳 Random Forest 작동 과정

원본 데이터전체 관측치와 예측변수
→
붓스트랩트리별 복원추출 표본
→
무작위 변수각 마디에서 mtry개 후보 선택
🌳 Tree 1🌲 Tree 2🌳 Tree 3🌲 Tree 4…
분류 → 다수결 / 회귀 → 평균

다양한 나무들의 오류가 서로 완전히 같지 않도록 만들어 앙상블의 예측 안정성을 높이는 전략입니다.

① Bootstrap

관측치를 무작위 추출

각 트리는 같은 크기의 복원추출 표본으로 학습합니다. 동일한 관측치가 한 표본에 여러 번 등장할 수 있습니다.

② Random Features

변수도 무작위 추출

각 마디마다 분할 후보 변수를 무작위로 추출합니다. 이후 후보 중 최적의 분할을 찾습니다.

③ Aggregation

최종 예측을 결합

범주형 종속변수는 일반적으로 다수결, 연속형 종속변수는 평균을 사용합니다.

🔑 랜덤포레스트는 “중요한 변수를 먼저 고르는 방법”이 아닙니다. 변수 중요도는 학습 후 계산할 수 있는 해석·평가 지표이며, 분할 후보 선정은 기본적으로 무작위입니다.

📈 강점

  • 단일 의사결정나무의 분산을 줄이고 예측을 안정화할 수 있습니다.
  • 변수 간 비선형성·상호작용을 유연하게 모델링합니다.
  • 변수 중요도 및 OOB 오차율 등을 산출할 수 있습니다.
  • 많은 변수를 가진 자료에서도 경쟁력 있는 성능을 보이는 경우가 있습니다.

⚠️ 유의할 점

  • 단일 트리보다 의사결정 과정의 설명이 어려울 수 있습니다.
  • 데이터 특성에 따라 다른 방법보다 정확도가 낮을 수도 있습니다.
  • 변수 중요도는 인과관계를 의미하지 않으며 측정 방식별 편향에 주의해야 합니다.
  • 결측치 처리, 클래스 불균형, 매개변수 튜닝 등이 필요할 수 있습니다.
04 / Bootstrap & OOB

붓스트랩과 36.8%의 의미

📖 교재 429쪽•PDF 52페이지붓스트랩 36.8% · OOB는 보충 설명

Bootstrap: 원자료에서 복원추출하여 원자료와 같은 크기(n)의 표본을 만드는 과정

원자료 (예: 8개 관측치)
12345678
서로 다른 관측치 8개
→
복원추출 표본 (예시)
22355688
선택되지 않은 관측치: 1, 4, 7 → OOB
약 36.8%

Out-of-Bag (OOB): 한 개의 붓스트랩 표본에 선택되지 않을 확률의 큰 표본 근삿값.
전체 표본 크기가 n일 때 특정 관측치가 뽑히지 않을 확률은 아래와 같습니다.

P(특정 관측치가 제외됨) = (1 − 1/n)n → e−1 ≈ 0.368

반대로 한 개의 붓스트랩 표본에는 고유한 원관측치가 평균적으로 약 63.2% 포함됩니다(큰 n에서의 근삿값). 숫자는 모든 표본에서 정확히 같은 비율을 보장하지 않습니다.

OOB Error

OOB 오차율

각 관측치를 학습에 사용하지 않은 트리들로만 예측한 뒤 실제값과 비교하여 계산합니다. 랜덤포레스트의 내부 성능 추정치로 널리 사용됩니다.

실습에서 확인할 항목: r.f$err.rate
Variable Importance

변수 중요도

변수를 섞었을 때 예측이 얼마나 나빠지는지(퍼뮤테이션) 또는 분할에서 불순도가 얼마나 줄었는지 등으로 평가할 수 있습니다.

실습에서 확인할 항목: importance(r.f), varImpPlot(r.f)
05 / Compare

배깅 · 부스팅 · 랜덤포레스트 · 스태킹 비교

📖 교재 424~432쪽•PDF 47~55페이지관련 이론 종합 비교

방법론의 차이를 구분하는 것이 앙상블 분석 기출문제의 핵심입니다.

비교 기준배깅 Bagging부스팅 Boosting랜덤포레스트 RF스태킹 Stacking
핵심 발상서로 다른 표본으로 학습이전의 오류를 보완표본 + 분할 변수 무작위화기본 모형의 예측을 다시 학습
학습 순서독립/병렬 가능순차적독립/병렬 가능기본 모형 학습 후 메타모형
데이터 처리복원추출 표본AdaBoost는 오분류 가중치 조정복원추출 + 무작위 후보 변수기본모형 예측값(누수 방지 필요)
대표 기본모형결정나무 등약한 분류기(예: 얕은 나무)의사결정나무서로 다른 알고리즘 가능
최종 결합투표 / 평균가중 투표·가중 합투표 / 평균메타학습기 결과
시험 암기어붓스트랩오분류 가중치무작위 변수 선택메타학습기

부스팅은 이렇게 생각

모형 A틀린 데이터 확인
→
모형 B오류 보완
→
모형 C다시 보완
“앞에서 틀린 것을 다음이 더 신경 쓴다”

랜덤포레스트는 이렇게 생각

🌳 다른 표본🌲 다른 변수🌳 다른 트리
“여러 나무가 각자 예측하고, 의견을 모은다”
06 / R Programming

R 실습: iris 데이터의 랜덤포레스트 분류

📖 교재 429~431쪽•PDF 52~54페이지랜덤포레스트 R 예제 및 그래프

교재의 randomForest, varImpPlot, predict, margin 학습 내용을 실제 실행 가능한 코드로 정리했습니다.

INPUT

데이터

150

iris 자료 관측치 수 (3개 품종, 각 50개)

SPLIT

학습 · 평가

70 : 30

층화 추출: 훈련 105개 / 테스트 45개

FOREST

트리 · 후보변수

500 / 2

ntree=500, mtry=2 (설정 예시)

R · randomForest / iris · 실행 예제
# 0. 패키지 설치(최초 1회)와 로드
# install.packages("randomForest")
library(randomForest)

# 1. 자료 준비: 종별 70% 학습 / 30% 테스트
set.seed(123)
data(iris)
idx <- unlist(lapply(
  split(seq_len(nrow(iris)), iris$Species),
  function(ids) sample(ids, size = floor(0.7 * length(ids)))
))
train.data <- iris[idx, ]
test.data  <- iris[-idx, ]

# 2. 랜덤포레스트 분류 모형 적합
r.f <- randomForest(
  Species ~ ., data = train.data,
  ntree = 500, mtry = 2, importance = TRUE
)
print(r.f)                         # OOB 혼동행렬·오차율 등

# 3. OOB 오차율 확인 및 추이 시각화
tail(r.f$err.rate[, "OOB"], 1)
plot(r.f)

# 4. 변수 중요도 산출 및 시각화
importance(r.f)
varImpPlot(r.f, type = 2)        # MeanDecreaseGini

# 5. 테스트 데이터 예측 및 혼동행렬
pre.rf <- predict(r.f, newdata = test.data)
table(예측 = pre.rf, 실제 = test.data$Species)
mean(pre.rf == test.data$Species) # 테스트 정확도

# 6. 분류 마진: 양수면 올바른 분류
plot(margin(r.f))                # 학습 데이터의 OOB 예측 기반
① set.seed(123)

난수 기반 표본추출과 모델의 결과를 재현하기 위한 설정입니다.

② mtry = 2

각 마디에서 최적 분할을 탐색할 때 무작위로 고려하는 후보 변수 수입니다.

③ varImpPlot(r.f, type=2)

불순도 감소 기반 중요도(분류에서는 MeanDecreaseGini)를 시각화합니다.

④ table(예측, 실제)

혼동행렬을 보고 각 품종을 얼마나 정확하게 맞혔는지 확인합니다.

⑤ plot(r.f)

트리 수가 늘어날 때 OOB 오차율이 어떻게 변화하는지 표시합니다.

⑥ plot(margin(r.f))

실제 범주에 대한 투표비율과 가장 높은 다른 범주 투표비율의 차이를 표시합니다.

실습 해석 유의: 교재의 표는 이미지 인식 과정에서 열과 행이 섞인 것으로 보이므로 숫자를 임의로 복원하지 않았습니다. 실제 혼동행렬과 정확도는 위 코드를 실행해 얻은 결과를 사용하세요. set.seed는 표본 분할을 재현하도록 돕지만 R 환경·패키지 버전 등에 따라 세부 결과가 달라질 수 있습니다.
07 / Exam Practice

핵심개념 체크 · 기출 29·30번

📖 교재 428쪽 · 432쪽•PDF 51 · 55페이지기출 29번 · 30번

답을 선택하고 [채점하기]를 누르면 정답과 풀이가 나타납니다. 객관식 2문항은 제공된 교재 내용을 바탕으로 구성했습니다.

Q29 · 제31회 기출Boosting · 기초교재 428쪽 · PDF 51p
다음 중 분류가 잘못된 데이터에 더 높은 가중치를 부여하여 모델을 반복적으로 학습시키는 앙상블 기법은 무엇인가?
정답: ② 부스팅(Boosting)
AdaBoost는 오분류 관측치의 가중치를 증가시키고 다음 약한 분류기를 학습하는 과정을 반복합니다. 배깅은 붓스트랩 표본의 독립적인 학습을 결합하고, 랜덤포레스트는 분할 변수에 추가 무작위성을 줍니다. 스태킹은 기본 모델의 예측을 메타모형이 결합합니다.
Q30 · 앙상블 모형Random Forest · 비교교재 432쪽 · PDF 55p
다음 중 앙상블(Ensemble) 모형에 대한 설명으로 가장 적절하지 않은 것은?
정답: ① 랜덤포레스트에 대한 잘못된 설명
기본 랜덤포레스트는 중요도가 높은 변수를 우선적으로 골라 분할하는 것이 아니라, 각 노드에서 일부 후보 변수를 무작위로 선택하고 그 후보들 중 최적의 분할을 고르는 방식입니다. ②는 AdaBoost를 전제로 한 설명이고 ③, ④는 각 방법의 기본 원리에 부합합니다.
⭐ 최종 암기: “잘못 분류된 관측치 가중치 증가” = 부스팅 / “무작위 후보 변수 중 최적 분할” = 랜덤포레스트 / “복원추출 후 독립 결합” = 배깅.
08 / Accuracy Notes

교재 설명을 정확하게 이해하기 위한 보충

📖 교재 428~432쪽•PDF 51~55페이지원문 관련 보충·정정

제공된 본문 중 혼동을 줄 수 있는 표현을 학술적으로 정확하게 풀어 설명했습니다.

교재·인식 원문의 표현정확한 이해 및 보충
“AdaBoost의 분류기 가중치 합은 1”관측치의 가중치 합은 정규화해 1로 만듭니다. 반면 학습기별 결합 가중치 α의 합은 반드시 1이 아닙니다.
“배깅보다 부스팅의 예측오차가 향상된다”많은 과제에서 성능이 개선될 수 있지만 항상 부스팅이 우월한 것은 아닙니다. 잡음, 이상치 및 하이퍼파라미터 영향을 받습니다.
“랜덤포레스트는 배깅과 부스팅보다 무작위성이 더 크다”기본 RF의 정확한 특징은 배깅과 분할 후보 변수의 무작위 선택을 결합한다는 것입니다. 부스팅과 무작위성의 크기를 일률적으로 비교할 수 없습니다.
“랜덤포레스트는 약한 학습기들을 선형 결합한다”여러 트리의 예측을 결합합니다. 분류는 다수결, 회귀는 통상 산술평균을 사용합니다. 개별 트리를 반드시 약한 학습기로 규정할 필요는 없습니다.
“분류는 다수결, 회귀는 평균 또는 중앙값”일반적인 랜덤포레스트의 표준 회귀 예측은 평균입니다. 중앙값을 사용하는 변형·집계 전략은 별도 구분해야 합니다.
“변수제거 없이 수천 개 변수에서 정확한 성능”고차원 변수도 처리할 수 있지만 정확도가 보장되는 것은 아닙니다. 변수 품질, 데이터 구조, 학습 설정을 확인해야 합니다.
“붓스트랩에서 36.8%가 한 번도 선택되지 않는다”표본 크기가 충분히 클 때 개별 관측치가 특정 붓스트랩 표본에서 제외될 확률의 근삿값입니다. 실제 미선택 비율은 표본마다 달라집니다.
09 / References

대표 문헌 · R 공식 도움말

📖 추가 참고문헌교재 쪽수와 별도

원 논문과 통계 소프트웨어 설명서를 근거로 핵심 개념 및 R 함수의 사용법을 확인할 수 있습니다.

  1. Breiman, L. (1996). Bagging predictors. Machine Learning, 24, 123–140. https://doi.org/10.1007/BF00058655
  2. Breiman, L. (2001). Random forests. Machine Learning, 45, 5–32. https://doi.org/10.1023/A:1010933404324
  3. Freund, Y., & Schapire, R. E. (1997). A decision-theoretic generalization of on-line learning and an application to boosting. Journal of Computer and System Sciences, 55(1), 119–139. https://doi.org/10.1006/jcss.1997.1504
  4. R Documentation. randomForest: Classification and Regression with Random Forest. 공식 R 문서
  5. R Documentation. varImpPlot: Variable Importance Plot. 공식 R 문서
  6. R Documentation. margin: Margins of randomForest Classifier. 공식 R 문서
  7. Breiman, L., & Cutler, A. Random Forests—How they work. UC Berkeley 설명
학습자료 범위: 사용자가 제공한 정형 데이터 마이닝 교재의 부스팅·랜덤포레스트 설명(428–431쪽)과 객관식 29·30번을 포함하고, 정확성을 위해 필요한 설명을 보완했습니다. R 실습 출력 숫자는 실행 전 가상으로 작성하지 않았습니다.