01. 부스팅(Boosting)이란?
부스팅은 '강화하다' 또는 '북돋우다'라는 의미를 가집니다. 머신러닝에서 부스팅은 약한 학습기(Weak Learner)들을 순차적으로 학습시켜 강한 학습기(Strong Learner)를 만드는 방법입니다.
약한 학습기와 강한 학습기?
반도체 공정에서 불량품을 찾아내는 상황을 예시로 들어보겠습니다.
약한 학습기 (단순한 모델)
- 하나의 간단한 기준으로 판단하는 모델
- 예) "전압이 기준치를 벗어나면 불량"이라는 단순한 규칙
- 틀릴 때도 있지만, 완전히 랜덤한 예측보다는 나은 수준
이는 마치:
- 생산라인에서 한 가지 검사 항목만 체크하는 것과 같습니다
- 온도만 체크하거나, 크기만 체크하는 식의 단순한 검사
- 불량품을 일부 찾아낼 수 있지만, 완벽하지 않습니다
강한 학습기 (강력한 모델)
- 여러 가지 조건을 복합적으로 고려하는 모델
- 예) 전압, 전류, 온도, 습도, 외관 등을 종합적으로 판단
- 높은 정확도로 불량품을 판별할 수 있는 모델
이는 마치:
- 여러 전문가가 다양한 검사를 수행하는 것과 같습니다
- 전기 검사, 외관 검사, 성능 검사 등을 모두 통과해야 합격
- 불량품을 매우 정확하게 찾아낼 수 있습니다
여러 전문가가 다양한 검사를 수행한다는 것이 도대체 어떤 방식일까요?
부스팅 핵심 원리
’순차적 학습’ (Sequential)
- 첫 번째 검사: 전압 테스트에서 불량품 발견
- 두 번째 검사: 첫 검사를 통과한 제품 중 온도 문제 발견
- 세 번째 검사: 이전 검사들을 통과한 제품 중 크기 불량 발견
- 이런 식으로 각 단계마다 이전 단계를 통과한 제품의 다른 문제점을 발견
이처럼 부스팅도:
- 첫 번째 모델이 잘못 분류한 데이터에 집중
- 두 번째 모델은 이전 모델의 실수를 보완
- 각 모델이 서로 다른 관점에서 문제를 해결
*AdaBoost를 선택해야 할 때:
- 데이터셋이 비교적 작고 노이즈가 적을 때
- 모델의 작동 원리를 명확하게 설명해야 할 때
- 이진 분류 문제에서 특히 효과적
*GBM을 선택해야 할 때:
- 예측 성능이 가장 중요한 고려사항일 때
- 데이터의 비선형성이 강할 때
- 충분한 학습 시간을 확보할 수 있을 때
*XGBoost를 선택해야 할 때:
- 대규모 데이터셋을 다룰 때
- 결측치가 많은 데이터를 다룰 때
- 과적합 방지가 중요할 때
- 높은 예측 성능과 적절한 학습 속도가 모두 필요할 때
*LightGBM을 선택해야 할 때:
- 매우 큰 데이터셋을 다룰 때
- 빠른 학습 속도가 필수적일 때
- 메모리 자원이 제한적일 때
- 단, 데이터셋이 너무 작을 경우 과적합 위험이 있으므로 주의
차원의 저주
변수 선택이 필요한 이유는 차원의 저주 때문입니다. 차원이 증가할수록 데이터가 희박해지고, 계산 복잡도가 증가하며, 과적합의 위험이 커지는 문제가 발생합니다. 따라서 적절한 변수 선택을 통해 모델의 성능을 향상시키고 계산 효율성을 높일 수 있습니다. 실제 적용 시에는 데이터의 특성과 문제 상황에 따라 적절한 방법을 선택하거나 여러 방법을 조합하여 사용하는 것이 효과적입니다.