- 날짜: 2026-04-30
- 주제: 직원 퇴사 예측(Attrition) 모델 고도화 및 불균형 데이터 대응
- 주요 목표: 극심한 클래스 불균형(퇴사자 16%) 환경에서 실질적인 비즈니스 가치(재현율 확보) 창출.
- 현상: 일반적인 모델 학습 시 정확도는 높으나, 실제 퇴사자(Target=1)를 거의 잡아내지 못함.
- 원인 분석: 다수 클래스(근속자)에 편향된 학습으로 인해 소수 클래스의 패턴을 무시함.
- 현상: LightGBM 및 XGBoost의 모든 파라미터를 GridSearch할 경우 연산 시간이 기하급수적으로 증가.
- 원인 분석: 불필요하게 넓은 탐색 범위 및 핵심 파라미터 집중 부족.
- 조치 내용:
XGBoost및LGBM에 가중치(scale_pos_weight,is_unbalance) 적용.- 언더샘플링과 앙상블이 결합된 BalancedRandomForestClassifier 도입.
- 결과: 퇴사자 검거율(Recall)이 기존 10
20%대에서 **6070%대**로 극적으로 향상됨.
- 조치 내용:
max_depth,learning_rate,n_estimators등 핵심 3요소 위주로 GridSearch 수행. - 결과: 튜닝 시간을 1/10로 단축하면서도 F1-score를 0.52까지 끌어올림.
| 모델 | 정확도(Acc) | 재현율(Recall) | F1-Score | 비즈니스 관점의 특징 |
|---|---|---|---|---|
| XGBoost | 0.81 | 0.58 | 0.49 | 효율적 자원 배분 (오보가 적음) |
| LGBM | 0.78 | 0.58 | 0.46 | 성능과 속도의 균형 |
| Balanced RF | 0.77 | 0.68 | 0.49 | 최고의 안정성 (퇴사자를 가장 잘 잡음) |
- 최종 모델: Voting Classifier (XGB + LGBM + Balanced RF)
- 최적 전략: 임계값(Threshold) 0.4 적용
- 최종 성과:
- 재현율(Recall): 0.75 (퇴사 고위험군 75% 포착)
- F1-Score: 0.49
- 비즈니스 가치: 기본값(0.5) 대비 퇴사자 검거율을 12%p 향상시키면서도, 과도한 오보를 효율적으로 관리함(0.3 대비 오보 47% 감소).
- 현상: 모든 모델이 정확도 99~100%를 기록함.
- 원인:
pd.get_dummies()적용 시 타겟 변수(satisfaction)가X(독립변수) 데이터에 그대로 포함되는 데이터 누수(Data Leakage) 발생. (모델이 정답지를 보고 품) - 해결:
X = pd.get_dummies(airline.drop('satisfaction', axis=1))로 정답지를 명시적으로 제거하여 정상적인 성능 평가 환경(60~94%)으로 복구함.
- 현상: 14개의 세부 서비스 점수를 3개(Digital, Comfort, Service)의 평균 점수로 묶어 차원을 축소했더니, 강력한 트리 모델(LGBM, XGB)의 성능이 오히려 94%에서 88%로 하락함. 반면 선형 모델(Logistic)은 82~83%로 변화가 없었음.
- 원인 분석: 앙상블 트리 모델은 세세한 개별 점수(예: "와이파이가 3점 미만인가?")를 기준으로 예리하게 분기점을 잡을 때 성능이 극대화됨. 이를 인위적으로 평균 내어 정보의 '디테일'을 뭉개버리자 트리 모델의 장점이 상쇄됨.
- 현상: 개별 서비스 점수는 묶지 않고 살려두면서, 추가로 생성한 **조합 변수(
class_dist_combined: 등급+비행거리)**와 **구간 변수(distance_type)**를 투입했을 때 모델 성능이 가장 안정적으로 높게 나타남(94%). - 원인 분석 (정보의 시너지): 트리 모델 스스로 두 변수의 조건을 모두 파악하려면 분기(질문)를 두 번 이상 거쳐야 함. 하지만 인간이 "장거리이면서 이코노미 클래스"라는 조합 변수를 직접 만들어주면, 모델은 단 한 번의 분기로 핵심 이탈 그룹을 찾아내는 **'지름길'**을 얻게 되어 성능이 향상됨.
- 상한선 주의 (차원의 저주): 변수를 조합하여 늘리는 것은 모델에게 다양한 시각을 제공하지만, 데이터 수(Row) 대비 변수(Column)가 과도하게 많아지면 모델이 패턴 대신 노이즈를 암기하는 **차원의 저주(Curse of Dimensionality)**에 빠짐. (일반적으로 데이터 수가 변수 수의 10배 이상일 것을 권장)
- 비즈니스 목적이 지표를 결정한다: 단순히 정확도(Accuracy)를 올리는 것보다, "우리가 어떤 실수를 더 경계해야 하는가(False Negative vs False Positive)"에 따라 모델 선정 기준이 바뀜을 학습함.
- 복잡함보다 단순함이 강하다:
max_depth=5와 같이 비교적 얕은 나무 모델이 과적합을 방지하고 일반화 성능을 높이는 데 효과적이었음. - 불균형 데이터의 핵심 도구:
imbalanced-learn라이브러리의BalancedRandomForest는 복잡한 샘플링 과정 없이 강력한 불균형 대응 능력을 보여줌. - 강력한 알고리즘과 피처 엔지니어링의 관계: 트리 기반 최신 알고리즘(XGB, LGBM)을 사용할 때는 인위적인 평균화(차원 축소)보다 원본 데이터의 세부 항목을 그대로 제공하는 것이 모델이 숨은 패턴을 찾는 데 더 유리할 수 있다. (정보 손실 경계)
오늘 완성한 'Voting + 임계값 0.4' 모델은 단순히 데이터 분석 결과가 아니라, 기업의 인적 자본 손실을 막기 위한 최적의 의사결정 보조 도구입니다.
- 지속적 모니터링: 분기별로 실제 퇴사자 데이터를 업데이트하여 임계값의 유효성을 재검토해야 합니다.
- 현장 피드백 루프: 모델이 찍은 대상자와 실제 면담 결과 사이의 괴리를 분석하여
Burnout과 같은 파생 변수를 지속적으로 보강해야 합니다.
데이터의 한계를 기술과 전략으로 극복한 성공적인 프로젝트였습니다.