Daily Data Log

[Day 9] 고객 이탈 예측을 위한 머신러닝 모델 구축

parkdongchan 2025. 3. 14. 09:57
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
반응형