본문 바로가기
머신러닝

[초보자용 글] 머신러닝의 앙상블(Ensemble)이란?

by Hwan2 2025. 4. 13.
반응형

 

머신러닝에서 앙상블(Ensemble) 은 말 그대로 여러 개의 모델을 결합해서 더 나은 성능을 얻는 방법입니다.

한마디로 말하면 “모델의 집단지성” 이라고 생각하면 됩니다.

 

왜 앙상블을 쓸까?

  • 단일 모델은 한계가 있음
  • → 과적합하거나, 특정 데이터에서 성능이 들쑥날쑥할 수 있음.
  • 여러 모델의 약점을 보완해서 더 정확하고 안정적인 예측을 하려는 목적.

대표적인 앙상블 방식 3가지

Bagging 여러 모델을 병렬로 학습 → 예측 결과 평균 or 투표 📌 Random Forest
Boosting 순차적으로 모델을 학습, 이전 모델의 오차를 보완 📌 XGBoost, LightGBM, AdaBoost
Stacking 여러 모델의 예측 결과를 또 다른 메타 모델이 학습 📌 보통 앙상블 대회에서 많이 씀

 

랜덤 포레스트

랜덤 포레스트를 이해하기 위해선 의사결정 트리에 대한 이해가 있어야 합니다.

 

1. 의사결정 트리란?

데이터를 기준에 따라 “예/아니오” 질문으로 나누면서, 최종 결정을 내리는 나무 형태의 모델.

 

비유로 이해해보기:

Q: 오늘 서핑을 해야 할까요?

우리는 여러 가지 조건을 생각해볼 수 있습니다.

 

(1) 파도가 높나요? → 예  
    (2) 바람 방향이 바다에서 불어오나요? → 예  
        → ✅ 서핑하자
    (2) 바람이 육지에서 불어오나요? → 아니오  
        → ❌ 하지 말자
(1) 파도가 낮나요? → 아니오  
    → ❌ 하지 말자

 

  • 각 질문(조건): 노드(node)
  • 각각의 예/아니오 분기: 분기(branch)
  • 마지막 결정(서핑 여부): 리프 노드(leaf node)

 

이처럼 조건을 기준으로 데이터를 점점 좁혀가며 분할 → 최종 결론에 도달하는 게 의사결정 트리입니다.

 

2. 트리가 똑똑하게 학습하는 방법

트리는 어떻게 좋은 질문을 고를까요?

트리는 최대한 정보가 잘 나뉘는 질문을 선택하려고 합니다.

 

대표적인 기준들:

🎯 지니 불순도(Gini Impurity) 데이터가 섞여 있는 정도. 섞임이 적을수록 좋음.
🎯 정보 이득(Information Gain) 얼마나 “정보가 깔끔하게” 나뉘었는지 측정.
📉 평균 제곱 오차(MSE) 회귀 문제(숫자 예측)에서 오차를 줄이는 기준.
즉, 가장 "좋은 질문(가장 잘 나누는 조건)"을 찾으면서 트리를 자라나게 함.

 

 

3. 의사결정 트리의 한계

  1. 과적합(Overfitting)
    • 너무 훈련 데이터에 맞춰서 복잡한 규칙을 만들다 보면, 새 데이터에는 잘 작동하지 않음.
    • 예: 훈련 데이터에서는 “서울에 사는 키 178cm 이상 사람만 YES” 같은 과하게 세세한 규칙이 생김.
  2. 편향(Bias)
    • 데이터에 따라 하나의 트리가 잘못된 패턴을 학습할 수 있음.

 

어떻게 동작하나?

  1. 여러 개의 트리 생성
    • 각각 다른 데이터 샘플과 다른 피처(속성) 조합으로 트리를 훈련.
    • 이렇게 해서 트리 간의 다양성을 확보.
  2. 예측할 땐?
    • 분류 문제: 각 트리의 결과 중 다수결 투표로 결정.
    • 회귀 문제: 각 트리의 예측값을 평균해서 결과 도출.

 

4. 그래서 등장한 랜덤 포레스트(Random Forest)

“나무 한 그루보다는 숲이 낫다!”
→ 여러 개의 트리를 만들어서 투표/평균을 통해 최종 결정을 내리는 방식.

 

🎯 그럼 무엇을 투표하고 어떤 값을 평균을 내서 결정을 내릴까?

이걸 이해하기 위해선 분류와 회귀에 대한 이해가 필요합니다.

 

1. “분류”와 “회귀”는 뭐지?

🔷 분류 (Classification)

결과가 카테고리(범주) 중 하나로 나오는 문제.

 

예:

  • 이메일 → 스팸 vs 일반 메일
  • 동물 사진 → 고양이 vs 개
  • 날씨 → 맑음 / 흐림 / 비

➡️ “A냐 B냐?” 혹은 “A, B, C 중 하나냐?” 같은 문제.

 

 

🔷 회귀 (Regression)

결과가 숫자값으로 나오는 문제.

 

예:

  • 내일 기온은 몇 도일까? → 23.5도
  • 아파트 가격은 얼마일까? → 5.3억
  • 주식 가격은 얼마일까? → 12345.67원

➡️ “숫자를 예측”하는 문제.

 

 

2. 랜덤 포레스트가 어떻게 예측하나?

랜덤 포레스트는 여러 개의 결정 트리를 만들어서 예측합니다.

 

분류 문제의 예측 방식 – “투표!”

예: 개 vs 고양이 분류 문제

  1. 100개의 트리에게 한 이미지를 보여줌.
  2. 각각 트리가 스스로 판단함:
    트리 1 → 개
    트리 2 → 고양이
    트리 3 → 고양이
    ...
    트리 100 → 고양이
  3. 결과: 고양이가 78표, 개가 22표→ 이걸 다수결 투표라고 합니다.
  4. → ✅ 최종 예측: “고양이”

 

회귀 문제의 예측 방식 – “평균!”

예: 아파트 가격 예측 문제

  1. 100개의 트리에게 한 아파트 정보를 줌.
  2. 각 트리가 숫자 하나씩 예측함:
    트리 1 → 4.9억
    트리 2 → 5.2억
    트리 3 → 5.0억
    ...
    트리 100 → 5.1억
  3. 결과: 100개의 숫자를 평균 내기→ 이걸 평균 예측값이라고 합니다.
  4. → ✅ 최종 예측: “5.05억”

 

결정 트리를 만드는 방법은?

1. Bootstrap Sampling: 데이터 샘플을 랜덤하게 뽑음

모든 트리에 똑같은 데이터를 주는 게 아니라,
원본 데이터를 랜덤하게 복원 추출해서 일부만 줌.

 

 

2. Feature Subsampling: 트리가 사용할 피처도 랜덤하게 제한함

트리의 각 노드는 “모든 피처 중 최고”를 고르는 게 아니라,
일부 피처만 보고 그 중에서 나누는 기준을 고름.

 

※여기서 피처란?

정의:

피처(Feature) 는 머신러닝에서 입력 데이터의 속성(정보)을 말하며,
모델이 뭔가를 예측하기 위해 참고하는 요소들 입니다.

 

 

예시:

문제: 집값을 예측해라.

정보(피처) 설명
면적 (㎡) 크면 클수록 비쌈
방 개수 많을수록 비쌈
층수 고층이면 더 비쌈
지하철 거리 (m) 가까울수록 비쌈

 

반응형

댓글


스킨편집 -> html 편집에서