728x90
반응형
📌 개요
이번 포스팅에서는 고객 이탈(Churn) 예측을 위한 머신러닝 모델을 구축하는 방법을 다룹니다. 고객 이탈 예측은 e-commerce, 금융, SaaS 서비스 등 다양한 산업에서 중요한 문제이며, 머신러닝을 활용하여 이탈 가능성이 높은 고객을 사전에 식별하고 대응할 수 있습니다.
customer_churn_dataset.csv
0.05MB
1️⃣ 고객 이탈 예측이란?
고객 이탈(Churn)은 특정 서비스나 제품을 더 이상 사용하지 않는 고객을 의미합니다. 기업에서는 고객 이탈을 최소화하기 위해 머신러닝을 활용하여 이탈 가능성이 높은 고객을 예측하고 맞춤형 대응 전략을 수립할 수 있습니다.
🔹 고객 이탈 예측의 중요성
- 마케팅 비용 절감: 기존 고객을 유지하는 것이 신규 고객을 확보하는 것보다 비용이 저렴합니다.
- 고객 맞춤 전략: 이탈 가능성이 높은 고객에게 할인 쿠폰, 맞춤형 추천 등을 제공할 수 있습니다.
- 비즈니스 성장 기회: 이탈 원인을 분석하여 서비스 개선 방향을 도출할 수 있습니다.
2️⃣ 데이터 로드 및 전처리
이번 실습에서는 가상의 고객 이탈 데이터셋을 사용하여 모델을 학습하겠습니다.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 데이터 로드
df = pd.read_csv("customer_churn_dataset.csv")
# 데이터 확인
print(df.head())
# 특성과 타겟 변수 설정
X = df.drop(columns=['Churn']) # 입력 변수
y = df['Churn'] # 예측할 목표 변수 (1: 이탈, 0: 유지)
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
✅ 코멘트:
- Churn 변수를 예측해야 하므로, 이를 y(레이블)로 설정했습니다.
- 특성(Feature)으로 고객의 사용 패턴, 지출 금액, 고객 유형 등을 포함했습니다.
3️⃣ 랜덤 포레스트 모델 학습 및 평가
랜덤 포레스트(Random Forest) 모델을 사용하여 고객 이탈을 예측하겠습니다.
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# 랜덤 포레스트 모델 생성 및 학습
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
# 예측 수행
y_pred_rf = rf_model.predict(X_test)
# 성능 평가
accuracy_rf = accuracy_score(y_test, y_pred_rf)
print("Random Forest Accuracy:", accuracy_rf)
print(classification_report(y_test, y_pred_rf))
📌 결과 예시:
Random Forest Accuracy: 0.87
precision recall f1-score support
0 0.89 0.91 0.90 500
1 0.83 0.80 0.81 200
✅ 코멘트:
- 랜덤 포레스트 모델이 87%의 정확도를 기록하였습니다.
- **정밀도(Precision)**와 **재현율(Recall)**을 비교하여 모델의 성능을 평가할 수 있습니다.
4️⃣ 모델 성능 개선 (하이퍼파라미터 튜닝)
랜덤 포레스트 모델의 성능을 향상시키기 위해 GridSearchCV를 활용하여 최적의 하이퍼파라미터를 찾겠습니다.
from sklearn.model_selection import GridSearchCV
# 하이퍼파라미터 그리드 설정
param_grid = {
'n_estimators': [100, 200, 300],
'max_depth': [None, 10, 20],
'min_samples_split': [2, 5, 10]
}
# 모델 및 그리드 탐색
grid_search = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
# 최적의 하이퍼파라미터 출력
print("Best Parameters:", grid_search.best_params_)
📌 결과 예시:
Best Parameters: {'max_depth': 20, 'min_samples_split': 5, 'n_estimators': 200}
✅ 코멘트:
- 최적의 max_depth, min_samples_split, n_estimators 값을 찾아 모델 성능을 개선할 수 있습니다.
5️⃣ 모델 성능 비교
| 모델 | 정확도(Accuracy) |
| 기본 랜덤 포레스트 | 87% |
| 최적화된 랜덤 포레스트 | 89% |
✅ 하이퍼파라미터 튜닝을 통해 모델의 정확도가 2% 향상되었습니다.
📌 마무리
이번 포스팅에서는 고객 이탈 예측을 위한 머신러닝 모델을 구축하는 방법을 다뤘습니다.
- 랜덤 포레스트 모델을 활용하여 고객 이탈을 예측
- 모델의 성능을 평가하고 정밀도, 재현율 등을 분석
- 하이퍼파라미터 튜닝을 통해 모델 성능을 최적화
다음 포스팅에서는 딥러닝을 활용한 고객 이탈 예측을 다뤄보겠습니다! 🚀
728x90
반응형
'Daily Data Log' 카테고리의 다른 글
| [Day 11] 딥러닝을 활용한 추천 시스템 구축 (1) | 2025.03.17 |
|---|---|
| [Day 10] 딥러닝을 활용한 고객 이탈 예측 모델 구축 (0) | 2025.03.15 |
| [Day 8] AutoML을 활용한 프리미어리그 경기 성과 예측 자동화 (0) | 2025.03.13 |
| [Day 7] XGBoost & LightGBM을 활용한 프리미어리그 경기 성과 예측 (0) | 2025.03.12 |
| [Day 6] 머신러닝 모델 최적화 - 프리미어리그 경기 성과 예측 개선하기 (0) | 2025.03.11 |