AdaBoost
이전 분류기가 잘못 판단한 사례에 더 주목하며 여러 약한 분류기를 순차적으로 결합하는 앙상블 학습 방법입니다.
보험사가 하루에 수많은 청구를 심사한다면 어떤 건을 먼저 확인해야 할까요? 청구 금액이 크면 무조건 의심해야 할까요? 금액은 크지 않지만 짧은 기간에 비슷한 청구가 반복된다면 어떨까요? 여러 단서를 함께 살펴야 정상 청구와 부정청구 가능성이 있는 건을 구분할 수 있습니다.
이처럼 간단한 분류기를 여러 차례 학습시키되, 앞선 단계에서 잘못 분류된 사례에 더 큰 가중치를 부여해 최종 분류기를 만드는 방법이 AdaBoost(Adaptive Boosting)입니다. 개별 모델의 판단은 다소 부정확하더라도 이를 순서대로 결합해 분류 성능을 개선하려는 방식입니다.
랜덤 포레스트가 여러 나무를 독립적으로 학습하고 그 결과를 모은다면, AdaBoost는 이전 모델의 오류를 다음 모델의 학습에 반영합니다. 따라서 새로운 분류기가 어떤 사례에 주목할지는 앞선 분류기의 결과에 따라 달라집니다. 다만 잘못 표시된 정답이나 이상치까지 집중해서 학습할 수 있으므로 주의가 필요합니다.
AdaBoost는 보험 청구 심사, 금융 거래 분류, 품질 검사 등에서 활용할 수 있습니다. 이번 글에서는 보험 청구의 부정청구 가능성 예제를 통해 작동 원리와 표본 가중치, 주요 설정, 분류 결과 해석, 다른 앙상블 방법과의 차이, 실제 적용 시 점검할 사항을 살펴보겠습니다.
AdaBoost란 무엇인가요?
오분류 사례에 대한 가중치를 조정하며 약한 분류기를 순차적으로 학습합니다.
AdaBoost는 앙상블 학습에 속합니다. 하나의 복잡한 모델만 사용하는 대신 비교적 단순한 기본 분류기(base estimator)를 여러 번 학습해 최종 결정을 내립니다. 전형적인 이진 분류 AdaBoost에서는 얕은 결정나무, 특히 하나의 조건으로 나누는 결정그루터기(decision stump)를 사용합니다.
첫 분류기가 틀린 사례에는 더 큰 표본 가중치를 부여하고, 맞힌 사례에는 상대적으로 작은 가중치를 부여합니다. 다음 분류기는 달라진 가중치를 고려해 학습합니다. 마지막에는 각 분류기의 판단을 동일하게 취급하지 않고 분류기의 성능을 반영한 가중치로 결합합니다.
AdaBoost는 왜 필요한가요?
단순한 규칙 하나로 구분하기 어려운 사례를 여러 단계의 판단으로 보완할 수 있습니다.
보험 청구 건은 청구 금액만으로 부정 여부를 판단하기 어렵습니다. 정상적인 고액 치료비 청구도 있고, 소액이지만 반복적으로 이루어지는 의심 거래도 있습니다. 청구 빈도와 사고 유형, 이전 청구 이력 등 여러 특징을 함께 살펴야 합니다.
AdaBoost는 먼저 발견하기 쉬운 패턴을 분류한 뒤, 구분되지 않은 사례의 비중을 높여 새로운 패턴을 학습합니다. 이 과정에서 여러 단순한 규칙이 결합되어 하나의 규칙보다 다양한 형태의 분류 경계를 만들 수 있습니다. 그러나 모든 상황에서 단일 모델보다 성능이 좋다는 의미는 아닙니다.
AdaBoost는 어떤 원리로 작동하나요?
앞선 모델의 오류가 다음 모델의 학습 방향을 결정합니다.
① 모든 청구 건에 처음에는 같은 가중치를 줍니다
학습자료에 청구 1,600건이 있다면 전형적인 방식에서는 각 청구 건에 동일한 초기 가중치를 부여합니다. 여기서 가중치는 청구 금액이 아니라 학습 과정에서 해당 관측값을 얼마나 중요하게 다룰지 나타냅니다.
② 첫 번째 약한 분류기를 학습합니다
간단한 결정나무가 청구 금액이나 과거 청구 빈도에 따라 정상을 예측하거나 부정청구 가능성을 분류합니다. 결과를 실제 정답과 비교해 가중 오분류율을 계산합니다.
③ 잘못 분류된 사례의 중요도를 높입니다
틀린 관측값에는 다음 단계에서 상대적으로 큰 가중치를 부여하고 맞힌 관측값에는 더 낮은 가중치를 줍니다. 이후 가중치를 다시 정규화합니다. 따라서 다음 분류기는 앞선 분류기가 잘 구분하지 못한 사례에 더 큰 영향을 받습니다.
④ 여러 분류기의 판단을 결합합니다
이 과정을 반복하고 각 분류기의 성능을 반영해 최종 분류를 결정합니다. 여기서 높은 가중치를 받는 것은 부정청구 가능성이 높은 청구 건이 아니라 기존 분류기가 틀린 청구 건이라는 점을 구분해야 합니다.
전형적인 이진 AdaBoost에서는 분류기의 가중 오분류율이 낮을수록 최종 투표에서 큰 비중을 갖습니다. 개별 분류기 가중치와 표본 가중치의 수학적 계산은 사용하는 AdaBoost 변형과 구현에 따라 달라질 수 있습니다.
실제 사례: 보험 청구의 부정청구 가능성 예측
정상 청구가 대다수인 가상의 보험 청구 데이터로 살펴봅니다.
보험사에 접수된 가상 청구 2,000건을 분석한다고 가정하겠습니다. 정상으로 확인된 청구는 1,800건, 조사 후 부정청구로 확정된 건은 200건입니다. 1,600건을 학습에 사용하고, 나머지 400건은 최종 평가까지 따로 보관합니다. 각 집합은 정상 90%, 부정청구 10%로 구성했습니다.
| 항목 | 예제 값 | 분석에서의 역할 |
|---|---|---|
| 청구 금액 | 청구 1건의 금액 | 입력변수 |
| 최근 12개월 청구 횟수 | 최근 청구의 빈도 | 입력변수 |
| 사고 유형 | 교통사고·상해 등 | 범주형 입력변수 |
| 조사 확정 결과 | 정상 / 부정청구 | 목표변수 |
| 학습자료 | 1,600건 (정상 1,440 / 부정 160) | 모델 학습·검증 |
| 최종 평가자료 | 400건 (정상 360 / 부정 40) | 독립적인 성능 평가 |
여기서 부정청구는 단순히 보험사가 의심한 건이 아니라 조사 결과 기준에 따라 확정된 사례라고 가정합니다. 이후 표와 그래프의 수치는 학습을 돕기 위해 구성한 가상 결과이며 실제 모델을 학습한 결과가 아닙니다.
분석 전 무엇을 확인해야 하나요?
정답의 신뢰도와 데이터 분할 방식이 모델 성능에 큰 영향을 줍니다.
| 확인 항목 | 점검 내용 | 중요한 이유 |
|---|---|---|
| 정답의 정의 | 부정청구 판정 기준과 조사 완료 여부 | 학습 라벨의 신뢰도 |
| 동일 고객의 반복 청구 | 학습·평가 자료에 고객 정보가 중복되는지 | 정보 누수 방지 |
| 평가 시점 | 판정 당시에는 알 수 없던 조사 결과를 입력하지 않았는지 | 미래 정보 누수 방지 |
| 집단 불균형 | 부정청구 비율 및 비용 차이 | 평가 지표 선택 |
| 결측·범주 처리 | 누락된 금액·사고 유형 인코딩 | 입력 품질 |
| 민감한 정보 | 불필요한 개인 정보와 공정성 위험 | 안전하고 적정한 사용 |
사고 조사 후에만 알 수 있는 결과나 사후 지급 취소 정보가 예측 시점에 입력되면 모델이 실제보다 훨씬 정확해 보일 수 있습니다. 데이터 처리는 학습자료에서만 적합하고, 최종 평가자료는 마지막에 한 번만 사용합니다.
AdaBoost 분석은 어떤 순서로 진행하나요?
데이터 준비에서 기본 분류기 선택과 최종 평가까지 이어집니다.
① 청구 이력과 확정 정답을 준비합니다
사고 유형, 청구 금액, 청구 빈도 등 예측 시점에 확인 가능한 특성과 조사 결과로 확정된 정답을 정리합니다. 동일 고객의 반복 자료나 연속된 기간의 자료라면 상황에 맞게 그룹 또는 시간 기준으로 분할합니다.
② 학습용 자료 안에서 전처리와 검증을 수행합니다
결측값 대치, 범주형 변수 인코딩, 필요한 특징 선택은 학습자료 내부에서 이루어져야 합니다. 교차검증을 사용할 때는 매 폴드의 학습 부분에만 전처리를 적합합니다.
③ 약한 분류기와 AdaBoost 설정을 선택합니다
얕은 결정나무를 기본 분류기로 사용하고 분류기 수, 학습률, 나무의 깊이를 비교합니다. 부정청구 사례가 적다면 정확도뿐 아니라 정밀도와 재현율을 중심으로 검증합니다.
④ 가중치를 갱신하며 순차적으로 학습합니다
각 단계에서 잘못 분류한 청구 건의 가중치를 조정하고 새로운 약한 분류기를 학습합니다. 이 반복 과정에서 부정청구와 정상 청구에 대한 구분 규칙을 보완합니다.
⑤ 봉인된 평가자료로 최종 성능을 확인합니다
학습 단계가 끝난 뒤 별도로 보관한 평가자료의 혼동행렬, 정밀도, 재현율, F1 및 PR-AUC 등을 계산합니다. 최종 평가 수치를 보고 설정을 다시 바꾸면 독립 평가의 의미가 약해집니다.
AdaBoost의 주요 설정은 무엇인가요?
분류기의 수·학습률·복잡도가 모델의 동작에 영향을 줍니다.
| 설정 | 의미 | 확인할 점 |
|---|---|---|
| 기본 분류기 | 각 단계에서 학습할 모델 | 단순한 결정나무부터 시작 |
| 분류기 수(n_estimators) | 최대 반복 학습 횟수 | 늘릴수록 무조건 개선되지는 않음 |
| 학습률(learning_rate) | 각 단계의 기여 정도 조절 | 분류기 수와 함께 검증 |
| 나무 깊이(max_depth) | 기본 분류기의 표현력 | 깊으면 노이즈를 과도하게 학습할 수 있음 |
| 판정 임계값 | 점수로부터 부정청구 여부를 결정 | 심사 비용에 맞춰 검증 과정에서 선택 |
분류기 수를 늘리면 더 많은 오류 패턴에 대응할 수 있지만, 라벨이 부정확하거나 예외적인 청구 건에 과도하게 집중할 수도 있습니다. 학습률을 낮추면 각 분류기의 영향이 줄어들어 더 많은 반복이 필요할 수 있습니다. 두 값을 함께 검증하는 것이 적절합니다.
분류 결과는 어떻게 해석하나요?
부정청구를 찾아낸 수와 정상 청구를 잘못 의심한 수를 함께 확인합니다.
가상의 최종 평가자료 400건에서 다음과 같은 결과가 나왔다고 가정하겠습니다. 표의 행은 실제 정답, 열은 모델의 예측입니다.
| 실제 \ 예측 | 정상 | 부정청구 | 합계 |
|---|---|---|---|
| 정상 | 351 | 9 | 360 |
| 부정청구 | 19 | 21 | 40 |
| 합계 | 370 | 30 | 400 |
정확도는 93.0%(372/400), 부정청구 정밀도는 70.0%(21/30), 재현율은 52.5%(21/40)이며 F1 점수는 60.0%입니다. 실제 부정청구 40건 중 19건을 놓쳤기 때문에 정확도만 보고 좋은 탐지 성능이라고 결론 내릴 수 없습니다.
예측 점수와 중요도는 어떻게 읽나요?
부정청구 가능성 점수와 단서의 중요성을 구분합니다.
AdaBoost는 청구 건을 분류하는 점수와 일부 구현에서 추정된 확률을 제공할 수 있습니다. 그러나 점수가 높다는 사실만으로 실제 부정청구가 확정되는 것은 아닙니다. 확률 출력도 별도의 보정 검토 없이 실제 발생 확률처럼 해석해서는 안 됩니다.
| 결과 | 무엇을 의미하나요? | 주의할 점 |
|---|---|---|
| 분류 결과 | 정상 / 부정청구 예측 | 확정 조사 결과가 아님 |
| 예측 점수 | 어느 집단으로 분류할지 판단하는 모델 출력 | 보정 없이 실제 확률로 단정 금지 |
| 변수 중요도 | 모델의 판단에 사용된 특성의 상대적 기여 단서 | 인과효과가 아님 |
| 정밀도·재현율 | 잘못된 경보와 놓친 청구의 비율 | 임계값에 따라 달라짐 |
| PR-AUC | 불균형 자료에서 여러 임계값의 정밀도·재현율 요약 | 동일 조건에서 모델 비교 |
예컨대 청구 금액이 중요한 변수로 나타나도 금액을 높이면 부정청구가 발생한다는 인과관계를 뜻하지 않습니다. 또한 모델의 경고는 자동 거절보다는 추가 검토 우선순위를 정하는 용도로 사용하는 것이 적절할 수 있습니다.
AdaBoost 분석에서 주의할 점
오류에 집중하는 구조 때문에 정답 오류·이상치에 민감할 수 있습니다.
라벨이 잘못 붙어 있다면 어떻게 되나요?
실제로 정상인 청구가 부정청구로 잘못 표시되었다면 AdaBoost는 그 자료를 계속 어려운 사례로 취급할 수 있습니다. 반복 학습의 초점이 잘못된 정답에 쏠리지 않도록 조사 결과의 품질을 확인해야 합니다.
정상 청구가 훨씬 많으면 정확도가 높게 나오지 않나요?
이 예제에서는 정상 청구가 90%입니다. 모든 청구를 정상으로 예측해도 정확도는 90%이므로, 93%라는 숫자만으로는 부정청구 탐지가 충분하다고 보기 어렵습니다. 재현율·정밀도와 실제 조사 비용을 함께 검토해야 합니다.
같은 고객의 과거 청구는 어떻게 처리하나요?
같은 사람이나 사건의 유사 청구가 학습과 평가에 섞이면 미래 청구를 예측하는 능력을 과대평가할 수 있습니다. 실제 운영 방식에 맞는 시간 분할이나 고객 단위 분할을 고려합니다.
모델이 특정 집단을 과도하게 의심할 수 있나요?
학습자료의 조사 관행이나 기존 편향을 그대로 익힐 수 있습니다. 중요한 결정을 내릴 때는 집단별 오류 차이, 설명 가능성, 이의제기 절차와 담당자 검토를 함께 마련해야 합니다.
다른 분석과 어떻게 다른가요?
앙상블을 만드는 순서와 오류를 다루는 방식이 다릅니다.
| 방법 | 핵심 원리 | AdaBoost와의 차이 |
|---|---|---|
| AdaBoost | 오분류 표본의 가중치를 갱신하며 순차 학습 | 이전 분류기의 오류에 집중 |
| 랜덤 포레스트 | 재표본추출과 무작위 변수 선택으로 나무를 병렬 학습 | 분류기 간 독립성·다양성 강조 |
| 그래디언트 부스팅 | 손실함수의 기울기 방향으로 새 모형을 더함 | 오차를 최적화하는 방식이 다름 |
| 배깅 | 재표본추출한 자료로 모델을 따로 학습 | 순차 가중치 갱신이 핵심이 아님 |
| 단일 결정나무 | 하나의 나무로 규칙을 학습 | 해석은 단순하지만 표현력 제한 가능 |
AdaBoost도 부스팅 계열이지만 모든 부스팅 모델이 동일한 계산 방식을 쓰지는 않습니다. 특히 그래디언트 부스팅과는 최적화 관점과 오차 처리 방법에 차이가 있으므로 단순히 이름만 같다고 동일한 모델로 보아서는 안 됩니다.
AdaBoost 결과는 어떻게 보고하나요?
학습 설정과 독립 평가 결과를 함께 기록합니다.
보고서에는 정상·부정청구 자료의 수, 판정 기준, 분할 방식, 입력변수, 기본 분류기 구조, 분류기 수와 학습률, 교차검증 절차를 설명합니다. 성능은 가능하면 독립 평가자료를 기준으로 제시하고 오류 유형을 함께 보고해야 합니다.
보험 청구의 부정청구 가능성을 예측하기 위해 AdaBoost 분류기를 적용하였다. 학습용 가상 자료 2,000건 중 1,600건으로 모델을 학습하고 별도 보관한 400건으로 성능을 평가하였다. 평가자료에서 정확도는 93.0%(372/400), 부정청구 정밀도는 70.0%(21/30), 재현율은 52.5%(21/40), F1 점수는 60.0%였다. 정상 청구 9건을 부정청구로 잘못 분류했고 실제 부정청구 19건을 탐지하지 못했다. 제시한 수치는 분석 방법을 설명하기 위한 가상 예시이다.
실제 연구에서는 하이퍼파라미터의 최종 선택값과 정답 정의, 평가 시점, 분류 임계값, 신뢰구간 또는 반복 검증 결과를 추가하는 것이 좋습니다. 부정청구 의심 판정이 실제 조사로 이어졌는지까지 구분하여 보고해야 합니다.
AdaBoost는 어디에 활용할 수 있나요?
여러 변수의 약한 분류 규칙을 결합하는 문제에서 검토할 수 있습니다.
| 활용 분야 | 예측할 대상 | 입력 자료 예시 |
|---|---|---|
| 보험 심사 | 부정청구 의심 여부 | 청구 금액·빈도·사고 유형 |
| 금융 거래 | 이상 거래 여부 | 거래금액·시간대·과거 이력 |
| 제조 품질 | 제품 불량 여부 | 공정 센서값·검사 기록 |
| 고객 관리 | 이탈 여부 | 이용 빈도·계약 이력 |
| 서비스 운영 | 문제 신고 유형 | 신고 내용에서 추출한 구조화 특징 |
분류기의 성능은 입력 특성, 정답 품질, 불균형 수준과 평가 설계에 따라 달라집니다. 따라서 AdaBoost를 적용할 때는 기본 모델 및 다른 앙상블 방법을 동일한 데이터 분할 조건에서 비교하는 것이 합리적입니다.
AdaBoost는 앞서 틀린 사례에 집중하며 여러 약한 분류기를 하나로 결합하는 방법입니다.
분류 정확도보다 어떤 청구를 놓치고 잘못 의심하는지가 실제 활용에 더 중요할 수 있습니다.
AdaBoost는 개별 분류기의 오류를 다음 단계에 반영해 더 나은 분류 규칙을 학습합니다. 보험 청구 사례에서는 청구 금액과 빈도, 사고 유형의 단서를 순차적으로 결합하여 정상 청구와 부정청구 가능성이 있는 청구를 구분합니다. 하지만 앞선 모델이 틀린 사례에 반복적으로 주목하는 특성 때문에 조사 정답이 잘못 붙어 있거나 비정상적인 관측값이 섞여 있으면 불필요한 패턴까지 학습할 수 있습니다. 기본 분류기와 반복 횟수, 학습률은 학습자료 안에서 검증하여 선택해야 합니다.
예제의 정확도는 93.0%였지만 실제 부정청구의 47.5%는 놓쳤습니다. 따라서 정확도만으로 결과를 평가하기보다 부정청구 재현율과 정상 청구에 대한 잘못된 경보를 함께 확인해야 합니다. 분류 결과는 부정청구를 확정하는 판단이 아니라 추가 심사가 필요한 건을 우선 검토하는 데 활용하는 것이 적절합니다. 운영 단계에서는 시간이 지난 자료로 성능을 다시 평가하고, 공정성 및 데이터 누수 여부도 지속적으로 점검해야 합니다.
AdaBoost는 이전 분류기가 틀린 관측값의 가중치를 높여 다음 약한 분류기를 학습하는 순차 앙상블 방법입니다. 분류기 수·학습률·기본 모형의 복잡도와 정답 오류 여부가 성능에 영향을 미치므로 학습자료 내 검증이 필요합니다. 부정청구처럼 드문 사건을 예측할 때는 정확도뿐 아니라 정밀도·재현율·실제 오분류 비용을 함께 확인해야 합니다.