들어가며
지금까지 우리는 Kaggle 데이터셋을 활용해 EDA부터 머신러닝 파이프라인 구축, 시계열 분석, A/B 테스트까지 실무에 가까운 다양한 프로젝트를 경험했습니다. 하지만 이런 훌륭한 경험도 제대로 정리하고 어필하지 못하면 취업 시장에서 빛을 발하기 어렵습니다.
이번 시리즈의 마지막 편에서는 여러분이 완성한 Kaggle 프로젝트를 실무 경험으로 승화시키는 포트폴리오 작성법과 면접 준비 전략을 다룹니다.
포트폴리오는 ‘결과’가 아닌 ‘사고 과정’을 보여주는 것
채용 담당자가 보는 포인트
많은 취준생이 “정확도 95% 달성!”이나 “XGBoost 활용” 같은 결과만 강조합니다. 하지만 실무자는 다음을 더 중요하게 봅니다:
| 초보 포트폴리오 | 실무형 포트폴리오 |
|---|---|
| RandomForest 사용 | 왜 RandomForest를 선택했는지 설명 (해석 가능성, 과적합 방지) |
| 정확도 92% 달성 | 비즈니스 목표(이탈률 20% 감소)와 연결 |
| 데이터 전처리 완료 | 결측치 처리 전략 3가지 비교 + 근거 |
| 시각화 그래프 10개 | 각 그래프가 답하는 비즈니스 질문 명시 |
스토리텔링 구조
모든 프로젝트는 다음 흐름으로 작성하세요:
1. 비즈니스 문제 정의
"고객 이탈률이 높아 마케팅 비용 낭비 → 이탈 위험 고객 사전 예측 필요"
2. 데이터 이해 및 가설 수립
"최근 30일 로그인 횟수가 이탈과 강한 상관관계가 있을 것"
3. 분석 접근법 선택 근거
"클래스 불균형(이탈 5%) 때문에 SMOTE 적용 결정"
4. 시행착오와 개선 과정
"초기 Logistic Regression(F1 0.65) → Feature Engineering 후 XGBoost(F1 0.82)"
5. 비즈니스 인사이트 도출
"상위 20% 이탈 위험군 타겟팅 시 마케팅 ROI 150% 개선 예상"
GitHub 저장소 구성 전략
필수 파일 구조
project-name/
├── README.md # 프로젝트 개요 (가장 중요!)
├── notebooks/
│ ├── 01_EDA.ipynb # 단계별로 분리
│ ├── 02_Preprocessing.ipynb
│ └── 03_Modeling.ipynb
├── src/
│ ├── data_loader.py # 재사용 가능한 모듈화 코드
│ └── feature_engineering.py
├── results/
│ ├── model_comparison.csv
│ └── feature_importance.png
├── requirements.txt # 재현 가능성 보장
└── .gitignore
README.md 황금 템플릿
# 프로젝트명: 고객 이탈 예측 모델
## 📌 프로젝트 개요
**목표**: 텔레콤 고객 이탈을 사전 예측해 리텐션 비용 30% 절감
**기간**: 2024.01 ~ 2024.02 (4주)
**역할**: 데이터 전처리, 모델링, A/B 테스트 설계
## 🔍 비즈니스 문제
- 연간 이탈률 26.5% → 고객 획득 비용(CAC) $500 고려 시 연 손실 $2M
- 기존 규칙 기반 이탈 예측(계약 만료 3개월 전 접촉) 정확도 60%
## 📊 데이터셋
- **출처**: [Kaggle Telco Customer Churn](링크)
- **규모**: 7,043건, 21개 변수 (인구통계, 서비스 이용, 결제 정보)
- **타겟**: 이진 분류 (Churn: Yes/No, 불균형 비율 27:73)
## 🛠 기술 스택
`Python` `Pandas` `Scikit-learn` `XGBoost` `SHAP` `Plotly`
## 📈 주요 분석 결과
### 1. EDA 인사이트
- Month-to-Month 계약 고객 이탈률 43% (연 계약 대비 3배)
- Fiber Optic 사용자 이탈률 30% vs DSL 19%
### 2. 모델 성능
| 모델 | Precision | Recall | F1-Score |
|------|-----------|--------|----------|
| Logistic Regression | 0.68 | 0.55 | 0.61 |
| **XGBoost (최종)** | **0.79** | **0.76** | **0.77** |
### 3. 비즈니스 임팩트
- 상위 20% 이탈 위험군에 인센티브 제공 시 **ROI 240%** (시뮬레이션)
- Feature Importance 기반 리텐션 전략 수립 (계약 형태 변경 유도)
## 🔑 핵심 의사결정 과정
**Q. 왜 XGBoost를 선택했나요?**
A. 1) 불균형 데이터에 강함 2) Feature Importance 해석 용이 3) Kaggle 벤치마크 대비 F1 +0.12 향상
**Q. SMOTE 오버샘플링을 적용했나요?**
A. 초기 적용 → Validation AUC 0.03 하락 → Class Weight 조정으로 대체
## 📂 재현 방법
```bash
git clone https://github.com/...
pip install -r requirements.txt
jupyter notebook notebooks/01_EDA.ipynb
“`
면접 준비: 예상 질문과 모범 답변
기술 질문
Q. 과적합을 어떻게 방지했나요?
“5-Fold Cross Validation으로 검증했고, XGBoost의
max_depth=5,min_child_weight=3하이퍼파라미터로 모델 복잡도를 제한했습니다. 또한 Train AUC 0.89 vs Valid AUC 0.85로 과적합 징후가 없음을 확인했습니다.”
Q. Feature Engineering은 어떻게 했나요?
“도메인 지식 기반으로 ‘TotalCharges / tenure’로 월평균 지출액을 파생했고, 이 변수가 Feature Importance 3위를 기록했습니다. 또한 ‘Contract + InternetService’ 조합 변수로 상호작용 효과를 포착했습니다.”
비즈니스 질문
Q. 이 모델을 실제로 배포한다면?
“주간 배치 예측으로 이탈 위험 상위 20%를 CRM 팀에 전달하고, 3개월 후 실제 이탈률과 비교해 모델 재학습 주기를 결정하겠습니다. 또한 SHAP 값을 활용해 개인별 맞춤 리텐션 메시지를 생성할 수 있습니다.”
Q. 프로젝트에서 가장 어려웠던 점은?
“초기에 정확도만 높이려다 Precision이 낮아져 False Positive가 많았습니다. 비즈니스 관점에서 ‘놓치는 이탈(FN)’과 ‘불필요한 인센티브(FP)’ 비용을 계산해 Threshold를 0.5에서 0.6으로 조정했고, 이를 통해 마케팅 예산 20% 절감 효과를 냈습니다.”
포트폴리오 체크리스트
필수 항목
- [ ] README에 비즈니스 문제 명시
- [ ] 코드에 주석 + Markdown 셀 설명 (Jupyter)
- [ ] 모델 비교표 (최소 3개 알고리즘)
- [ ] 시각화에 제목 + 축 라벨 + 인사이트 설명
- [ ] requirements.txt 또는 환경 설정 파일
- [ ] .gitignore로 불필요 파일 제외
차별화 항목
- [ ] 대시보드 구현 (Streamlit/Dash)
- [ ] A/B 테스트 시뮬레이션 결과
- [ ] 모델 해석 (SHAP, LIME)
- [ ] 배포 전략 문서 (Docker, API 설계)
- [ ] 블로그 포스팅 또는 발표 자료
실무자가 주는 조언
하지 말아야 할 것
- 과도한 기술 나열: “Keras, PyTorch, TensorFlow 모두 사용” → 깊이 없어 보임
- 결과만 강조: “정확도 99%!” → 데이터셋이 쉬웠을 수도, 과적합일 수도
- 캐글 커널 복붙: 면접에서 “왜 이 코드를 썼나요?” 질문에 답 못함
해야 할 것
- 한계 인정: “Small Data(7k건)라 Deep Learning은 부적합 판단”
- 개선 방향 제시: “실시간 예측을 위해 FastAPI + Redis 캐싱 고려 중”
- 비즈니스 언어 사용: “F1 Score 0.77” → “이탈 고객 10명 중 8명 사전 포착”
마무리
포트폴리오는 여러분이 문제를 어떻게 사고하는 사람인지를 보여주는 창입니다. Kaggle 프로젝트를 단순히 “해봤다”가 아니라, 실무에서 마주할 모호한 문제를 정의하고, 데이터로 검증하며, 비즈니스 가치를 만들어낸 경험으로 승화시키세요.
이 시리즈를 통해 여러분은 EDA, 머신러닝 파이프라인, 시계열 분석, A/B 테스트, 그리고 포트폴리오 완성까지 취업에 필요한 전 과정을 경험했습니다. 이제 여러분만의 이야기를 담아 당당히 실무 데이터 분석가로 도약하시길 바랍니다.
다음 단계: 오늘 배운 내용을 바탕으로 여러분의 GitHub README를 다시 작성해보세요. 그리고 한 문장씩, 면접관에게 설명한다고 상상하며 소리 내어 읽어보세요. 그것이 진짜 준비입니다.
이 글이 도움이 되셨나요?
Buy me a coffee
답글 남기기