빅데이터분석기사 실기 작업형 제2유형에서 캐글 데이터를 활용한 분류 모델 평가지표 ROC-AUC를 올리는 전략은 단순 모델 선택의 문제가 아닙니다. 시험장에서 가장 많이 듣는 질문이 “모델은 돌렸는데 점수가 안 나와요”입니다. 실제로는 전처리, 결측 처리, 인코딩, 스케일링, 임계값 조정 등 기본 단계에서 점수가 갈립니다. 저 역시 여러 수험생 코드를 검토해보면 모델보다 데이터 처리에서 점수가 결정되는 경우가 훨씬 많았습니다.
특히 ROC-AUC는 정확도(Accuracy)와 다릅니다. 클래스 불균형 상황에서 Accuracy가 높아도 AUC는 낮을 수 있습니다. 시험에서는 단순 예측값이 아니라 확률값을 제출해야 점수가 제대로 반영됩니다. 오늘은 ROC-AUC를 안정적으로 끌어올리는 실전 전략을 단계별로 정리해보겠습니다.
ROC-AUC의 개념과 시험에서의 의미
ROC 곡선은 TPR(재현율)과 FPR(위양성률)의 관계를 나타내는 곡선입니다. AUC는 그 아래 면적입니다. 1에 가까울수록 분류 성능이 우수합니다.
ROC-AUC는 분류 임계값에 독립적인 지표입니다. 따라서 0과 1의 예측값이 아니라 predict_proba()의 확률값을 사용해야 합니다.
시험에서는 반드시 확률값을 제출해야 ROC-AUC 점수가 제대로 나옵니다.
데이터 전처리 단계에서 점수 차이 나는 부분
1) 결측치 처리: 평균 대체, 중앙값 대체, 또는 모델 기반 대체
2) 범주형 인코딩: One-Hot Encoding vs Label Encoding
3) 이상치 처리: IQR 방식 또는 로그 변환
4) 스케일링: StandardScaler 또는 MinMaxScaler
특히 트리 기반 모델(RandomForest, XGBoost)은 스케일링 영향이 적지만, 로지스틱 회귀는 영향을 받습니다.
결측치를 무작정 0으로 채우는 경우 ROC-AUC가 급락하는 사례를 자주 봅니다.
모델 선택과 튜닝 전략
시험에서는 빠르게 성능을 확보할 수 있는 모델이 유리합니다.
- Logistic Regression (기본 베이스라인)
- RandomForest
- XGBoost
- LightGBM
초기 전략은 다음과 같습니다.
- Logistic으로 베이스 점수 확인
- RandomForest로 비교
- XGBoost로 최적화
베이스 모델 점수를 확인한 후 점진적으로 개선해야 합니다.
하이퍼파라미터 조정 핵심 포인트
XGBoost 기준 주요 파라미터는 다음과 같습니다.
- n_estimators
- max_depth
- learning_rate
- subsample
learning_rate를 낮추고 n_estimators를 늘리면 안정적 성능 향상이 가능합니다. 단, 시험 시간 제한을 고려해야 합니다.
클래스 불균형 처리 전략
불균형 데이터에서는 다음 전략을 활용합니다.
- class_weight=’balanced’
- SMOTE 적용
- scale_pos_weight 조정
ROC-AUC는 불균형 상황에서 특히 효과적인 지표입니다. 단순 정확도 상승에 집착하지 마세요.
평가지표 계산 코드 예시
from sklearn.metrics import roc_auc_score y_pred = model.predict_proba(X_test)[:,1] score = roc_auc_score(y_test, y_pred) print(score)
[:,1]을 빼먹으면 오류가 발생합니다. 시험장에서 가장 흔한 실수입니다.
ROC-AUC 향상을 위한 체크리스트
| 단계 | 확인 사항 | 점수 영향 |
|---|---|---|
| 전처리 | 결측·이상치 처리 | 매우 높음 |
| 인코딩 | 범주형 처리 적절성 | 높음 |
| 모델 | XGBoost 적용 여부 | 높음 |
| 확률 제출 | predict_proba 사용 | 결정적 |
시험 시간 관리 전략
1단계: 데이터 탐색 10~15분
2단계: 베이스라인 모델 10분
3단계: 튜닝 및 개선 20~30분
4단계: 최종 코드 정리 10분
코드를 여러 번 수정하기보다, 구조를 먼저 설계하세요. 베이스 점수를 확보한 후 점진적으로 개선하는 방식이 안정적입니다.
빅데이터분석기사 실기 작업형 제2유형에서 ROC-AUC는 전략 싸움입니다. 복잡한 모델이 아니라, 정확한 전처리와 확률 예측이 점수를 만듭니다. predict 대신 predict_proba를 기억하세요. 기본기를 지키면 점수는 따라옵니다.