카테고리 없음

[내일배움캠프-본캠프] QA/QC 26/06/19

dudgus4943 2026. 6. 19. 21:00

안녕하세요! 오늘은 머신러닝에서 예측 성능을 끌어올릴 때 절대 빠지지 않고 등장하는 핵심 개념, '앙상블 모델(Ensemble Model)'에 대해 쉽고 깔끔하게 정리해 보려고 합니다.

중요한 결정을 내릴 때 여러 전문가의 의견을 모으듯, 머신러닝에서도 여러 개의 모델을 합치면 훨씬 강력한 힘을 발휘하는데요. 앙상블의 기본 개념부터 대표적인 두 가지 줄기인 배깅(Bagging)과 부스팅(Boosting)까지 핵심만 쏙쏙 뽑아 전해드립니다!

💡 01. 앙상블 모델이란?

"여러 명의 전문가가 모여 의견을 내는 것이, 한 명의 전문가보다 더 나은 결과를 낸다."

앙상블 모델은 한 마디로 '집단지성'을 활용한 머신러닝 기법입니다. 마치 중요한 수술을 앞두고 여러 의사의 소견을 종합해 최종 결정을 내리는 것처럼, 여러 개의 기초 모델(Weak Learner)의 예측을 결합하여 더 정확하고 안정적인 최종 예측을 도출하는 방법입니다.

🧺 02. 복원 추출로 독립적인 학습을! '배깅 (Bagging)'

배깅(Bootstrap AGGregatING)은 원래 데이터셋에서 무작위로 여러 번 샘플링(복원 추출)하여 다양한 데이터셋을 만들고, 각각의 데이터셋에 대해 모델을 '독립적'으로 학습시키는 방식입니다. 여러 의사가 각자 다른 임상 경험을 바탕으로 독립적으로 진단을 내리는 것과 유사합니다.

🌲 대표 주자: 랜덤 포레스트 (Random Forest)

  • 독립적 학습: 여러 개의 결정 트리(Decision Tree)를 독립적으로 학습시킵니다.
  • 다양성 확보: 각 트리가 서로 다른 데이터와 특성(Feature) 조합을 사용하므로, 서로의 약점을 잘 보완해 줍니다.

🚀 03. 오답을 오답노트처럼 보완한다! '부스팅 (Boosting)'

부스팅(Boosting)은 배깅처럼 독립적으로 학습하지 않고, '순차적'으로 모델을 개선해 나가는 방식입니다. 이전 모델이 잘못 예측한 데이터에 더 많은 가중치(오답 노트)를 두어 다음 모델이 이를 집중적으로 학습하게 만듭니다. 마치 의사가 이전의 잘못된 진단 케이스를 공부하며 진단 능력을 업그레이드하는 과정과 비슷합니다.

⚡ 대표 주자: XGBoost, LightGBM (LGBM)

  • 오차 보완: 앞선 모델의 실수를 만회하는 방향으로 끊임없이 진화합니다.
  • 실무 압도적 활용: 높은 예측 성능을 자랑하기 때문에, 데이터 분석 대회(Kaggle 등)나 실무에서 가장 널리 사용됩니다.

📊 앙상블 모델의 장단점 한눈에 보기

분류 주요 특징
장점 👍 안정성과 강건함: 여러 모델의 의견을 모으므로 예측이 흔들리지 않습니다.

과적합 방지: 모델이 과도하게 한쪽으로 치우치는(Overfitting) 위험을 줄여줍니다.

압도적 성능: 단일 모델보다 훨씬 높은 예측 성능을 보여줍니다.
단점 👎 리소스 소모: 학습과 예측에 더 많은 시간과 컴퓨터 자원이 필요합니다.

해석의 어려움: 모델이 복잡해져 내부 구조를 한눈에 파악하기 어렵습니다 (Black Box).

튜닝의 까다로움: 적절한 방법 선정과 하이퍼파라미터 튜닝이 필수적입니다.

🌳 02. 결정 트리(Decision Tree)란?

"머신러닝으로 즐기는 스무고개 게임!"

결정 트리는 의사결정 규칙을 나무(Tree) 형태로 도표화하여 데이터를 분류하거나 예측하는 모델입니다. 우리가 일상생활에서 선택을 고민할 때 "예/아니오"라는 질문을 던지며 답을 찾아가는 과정과 매우 유사합니다.

  • 순차적 데이터 분할: 특정 기준에 따라 데이터를 연속적으로 쪼개며 최종 결론에 도달합니다.
  • 노드(Node)의 역할: 각 내부 노드는 데이터의 특성(Feature)에 대한 조건을 나타내며, 이 조건의 만족 여부에 따라 데이터가 왼쪽 혹은 오른쪽 가지(Branch)로 분리됩니다.
  • 언제까지 자랄까?: 트리는 미리 지정한 특정 종료 조건(최대 깊이, 노드 최소 샘플 수 등)에 도달할 때까지 반복해서 성장합니다.

🧼 02-1. 핵심 개념: 트리의 선택 기준, '불순도(Impurity)'

결정 트리가 똑똑한 질문을 던지려면 '어떤 특성'을 기준으로 데이터를 나눌지 결정해야 합니다. 이때 사용하는 기준이 바로 '불순도'입니다.

  • 불순도란? 각 노드에서 데이터가 얼마나 서로 섞여 있는가를 측정하는 지표입니다.
  • 불순도 = 0 (순수함): 해당 노드에 완전히 단일 클래스(예: 오직 '사과'만)의 데이터만 남은 상태입니다.
  • 불순도 = 최대 (혼란함): 모든 클래스가 반반씩 균등하게 섞여 있어 구분이 안 되는 상태입니다.

📊 대표적인 지표: 지니 계수 (Gini Index) & 엔트로피 (Entropy)

결정 트리는 이 불순도가 가장 크게 감소하는 방향(데이터가 가장 잘 깨끗하게 분류되는 방향)으로 특성과 분할 기준을 선택하며 성장합니다.

⚖️ 결정 트리의 장점과 단점

단독으로도 훌륭하지만 명확한 한계도 존재합니다. 장단점을 한눈에 비교해 볼까요?

장점 👍 단점 👎
뛰어난 해석력: 의사결정 과정을 시각적으로 표현할 수 있어 비전문가도 쉽게 이해할 수 있습니다.

높은 유연성: 분류(Classification)와 회귀(Regression) 문제 모두에 사용할 수 있습니다.

데이터 전처리 최소화: 수치형 데이터와 범주형 변수를 변환 없이 자연스럽게 처리합니다.
과적합(Overfitting) 위험: 트리가 너무 깊어지면 학습 데이터에만 과도하게 맞춰져 새로운 데이터 예측 능력이 떨어집니다.


💡 해결 방법: 가지치기(Pruning)

트리의 최대 깊이를 제한하거나 불필요한 가지를 잘라내어 과적합을 방지합니다.

🌲 03. 랜덤 포레스트(Random Forest)란?

"다양한 시각을 가진 전문가들의 100% 투표 시스템"

랜덤 포레스트는 여러 개의 결정 트리(Decision Tree)를 만들고, 이들의 예측을 종합하여 최종 결론을 내리는 대표적인 배깅(Bagging) 방식의 앙상블 모델입니다.

만약 10,000개의 데이터가 있을 때, 이를 가지고 각기 다른 데이터와 특성을 학습한 10개, 100개의 독립적인 나무를 만듭니다. 각 나무가 무작위성(Random)을 바탕으로 서로 다른 관점에서 문제를 바라보기 때문에, 집단지성의 효과를 극대화할 수 있습니다.

⚙️ 03-1. 랜덤 포레스트의 핵심 작동 원리

랜덤 포레스트가 '무작위성'을 확보하는 비밀은 크게 두 가지 샘플링 과정에 있습니다.

① 복원 추출, '부트스트랩 샘플링 (Bootstrap Sampling)'

원본 데이터에서 중복을 허용하여 무작위로 여러 개의 학습 데이터셋을 만듭니다.

  • 예시: 10,000명의 대출 데이터가 있다면, 각 트리는 무작위로 추출된 5,000개의 샘플로 학습합니다. 어떤 데이터는 여러 번 뽑히고, 어떤 데이터는 한 번도 안 뽑힐 수 있어 트리의 다양성이 확보됩니다.

② 특성의 무작위 선택 (Random Feature Selection)

데이터뿐만 아니라 '질문 거리(특성)'도 무작위로 제한합니다.

  • 예시: 대출 심사에 필요한 특성이 총 20개(소득, 나이, 신용점수 등)라면, 분기점마다 무작위로 5개만 골라 그중 최적의 질문을 찾습니다.

③개별 트리의  학습

각 트리는 서로 다른 데이터와 특성으로 학습되므로, 다음과 같이 다양한 기준으로 판단할 수 있습니다.

    • 트리 1: 소득과 DTI(총부채상환비율)를 중심적으로 평가
    • 트리 2: 연체 이력과 LTV(주택담보대출비율)를 중심적으로 평가
    • 트리 3: 신용점수와 직장 안정성을 주로 확인

 앙상블 예측 (Ensemble Prediction)

각 나무가 독립적으로 열심히 학습을 마치면, 드디어 최종 투표를 진행합니다.

  • 분류 (Classification) 👉 다수결 투표: 100개의 트리 중 65개가 '상환 가능'이라고 하면 최종 결과는 [상환 가능]
  • 회귀 (Regression) 👉 평균값: 각 트리가 예측한 값을 모두 더해 [평균 확률 65%]로 최종 결정

⚖️ 랜덤 포레스트의 장점과 단점

실무에서 치트키처럼 쓰이는 모델이지만, 금융권 등 특정 도메인에서는 치명적인 약점도 존재합니다.

👍 강력한 장점

  • 낮은 과적합 위험 & 안정성: 수많은 트리의 오답과 정답을 평균 내기 때문에 개별 트리의 오류가 상쇄되어 일반화 성능이 아주 뛰어납니다.
  • 특성 중요도 제공: 어떤 변수(예: 소득 vs 나이)가 예측에 가장 큰 영향을 미쳤는지 수치로 쉽게 확인할 수 있습니다.
  • 이상치(Outlier)에 강함: 숲 전체의 의견을 듣기 때문에 몇 개의 노이즈 데이터에 쉽게 흔들리지 않습니다.
  • 대규모 데이터 최적화: 대용량 데이터에서도 안정적이며, 여러 트리를 동시에 만드는 병렬 처리(Parallel Processing)가 가능해 학습 효율이 좋습니다.

👎 주의해야 할 단점

  • 막대한 계산 비용: 트리를 수백 개씩 굴려야 하므로 단일 트리에 비해 메모리와 처리 시간이 훨씬 많이 필요합니다. (트리가 100개면 자원도 100배!)
  • 해석의 어려움 (Black Box): "여러 요인을 종합적으로 고려했습니다" 외에 구체적인 이유를 설명하기 어렵습니다. 예를 들어 대출이 거절된 고객에게 정확한 사유를 논리적으로 설명해야 하는 금융 규제 환경에서는 치명적인 단점이 됩니다.
  • 하이퍼파라미터 튜닝의 복잡: 최적의 성능을 내기 위해 트리 개수, 최대 깊이 등을 조절해야 하는데, 트리 개수를 100개에서 1,000개로 늘려가며 최적점을 찾는 과정은 꽤 많은 실험 시간(일명 노가다...)을 필요로 합니다.

⚡ 01. 부스팅(Boosting)이란?

부스팅은 '강화하다', '밀어 올리다'라는 뜻을 가집니다. 머신러닝에서는 맞추기 힘든 어려운 데이터에 집중하여, 약한 학습기(Weak Learner)들을 순차적으로 학습시켜 하나의 강력한 학습기(Strong Learner)를 만드는 방법입니다.

🏭 반도체 공정으로 이해하는 약한 학습기 vs 강한 학습기

  • 약한 학습기 (단순한 모델): "전압이 기준치를 벗어나면 불량!"처럼 하나의 간단한 기준만 체크하는 단순 검사입니다. 완벽하지는 않지만, 완전히 찍는 것보다는 나은 수준입니다.
  • 강한 학습기 (강력한 모델): 전압, 전류, 온도, 습도, 외관 등을 종합적으로 판단하여 불량품을 매우 정확하게 찾아내는 전문가 집단 인터뷰 같은 모델입니다.

⚙️ 02. 부스팅의 핵심 원리: '순차적 학습 (Sequential)'

부스팅은 모든 모델이 동시에 학습하지 않고, 앞선 모델의 결과를 보고 뒤선 모델이 이어받는 '릴레이' 방식입니다.

  1. 첫 번째 검사: 전압 테스트를 통해 불량품을 1차로 걸러냅니다.
  2. 두 번째 검사: 1차 검사를 통과한 제품(이전 모델이 놓친 데이터) 중 '온도 문제'가 있는 제품에 집중합니다.
  3. 세 번째 검사: 앞선 검사들을 다 통과한 제품 중 '크기 불량'을 집중적으로 잡아냅니다.

💡 즉, 첫 번째 모델이 틀린 오답(실수)에 가중치를 두어 다음 모델이 이를 집중 학습하게 만드는 방식입니다.

🏎️ 03. 부스팅 모델 종류 총정리

부스팅은 발전을 거듭하며 머신러닝 생태계를 지배하게 되었는데요. 대표적인 4가지 모델을 순서대로 알아보겠습니다.

① AdaBoost (Adaptive Boosting)

  • 개념: 부스팅의 조상님 격인 알고리즘입니다. 틀린 데이터에 직접적으로 가중치를 부여합니다.
  • 원리: * 실수한 데이터는 가중치를 높이고, 맞춘 데이터는 가중치를 낮춥니다. (어려운 오답노트 무한 반복)
    • 최종 결합 시에는 성적이 더 좋았던(예측 성능이 높은) 모델의 의견에 더 큰 비중을 줍니다.

② GBM (Gradient Boosting Machine)

  • 개념: AdaBoost를 발전시켜 가중치 대신 경사하강법(Gradient Descent)을 도입한 모델입니다.
  • 원리: 다음 모델이 가중치를 다루는 게 아니라, 이전 모델이 만든 '오차(잔차, Residual)' 자체를 직접 학습합니다.
    • 예시: 실제 데이터가 5인데 예측이 4라면, 오차인 1을 다음 모델이 학습하여 점차 오차를 0에 가깝게 줄여나갑니다.
  • 특징: 비선형 관계를 매우 잘 포착하지만, 순차 학습 특성상 속도가 느리다는 단점이 있습니다.

③ XGBoost (eXtreme Gradient Boosting)

  • 개념: "GBM의 느린 속도와 과적합 문제를 해결한 혁신작!" 실무와 데이터 대회(Kaggle)의 치트키입니다.
  • 장점: * 정규화(Regularization) 도입: 릿지, 라쏘처럼 패널티를 주어 과적합을 방지합니다.
    • 병렬 처리: CPU를 효율적으로 써서 학습 속도가 대폭 향상되었습니다.
    • 자동 결측치 처리 & 가지치기(Pruning) 적용.

④ LightGBM (LGBM)

  • 개념: XGBoost보다 더 가볍고(Light) 빠른 속도를 자랑하는 최신 트렌드 모델입니다.
  • 핵심 차이 (리프 중심 분할):
    • 기존 GBM/XGBoost: 균형 트리 분할(Level-wise) 방식을 써서 안정적이지만 불필요한 노드까지 자랍니다.
    • LightGBM: 리프 중심 트리 분할(Leaf-wise) 방식을 사용하여 손실(오차)이 가장 크게 감소하는 노드만 골라 깊게 파고듭니다.
  • 특징: 메모리를 적게 먹고 압도적으로 빠르지만, 데이터 수가 적을 경우 과적합(Overfitting)되기 쉽다는 주의점이 있습니다.

📊 부스팅 모델 한눈에 비교하기

모델명 핵심 특징 장점 단점 ✨ 이럴 때 선택하세요!
AdaBoost 오답 데이터에 직접 가중치 부여 직관적이고 단순함 노이즈나 이상치에 취약함 • 데이터셋이 비교적 작고 노이즈가 적을 때

• 모델의 작동 원리를 명확히 설명해야 할 때

• 이진 분류 문제를 풀 때
GBM 오차(잔차)를 경사하강법으로 학습 높은 정확도, 복잡한 비선형 관계 포착 순차 학습으로 인해 속도가 느림 • 예측 성능이 가장 최우선 고려사항일 때

• 데이터의 비선형성이 매우 강할 때

• 충분한 컴퓨터 학습 시간을 확보할 수 있을 때
XGBoost GBM + 정규화 + 대량 병렬 처리 과적합 방지(L1/L2), 결측치 자동 처리 하이퍼파라미터가 많아 튜닝이 복잡함 대규모 데이터셋을 다룰 때

결측치(Missing Value)가 많은 데이터일 때

• 높은 성능과 적절한 속도가 모두 필요할 때
LightGBM 리프 중심 분할 (손실 위주 성장) 압도적인 속도, 적은 메모리 소모 소규모 데이터에서 과적합 위험 매우 거대한 데이터셋을 다룰 때

• 빠른 학습 속도가 필수적일 때

• 메모리 자원이 제한적일 때 (적은 데이터엔 주의!)