8000 GitHub - hcmue-hmduck/TelcoCustomerChun · GitHub
[go: up one dir, main page]

Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Typing SVG

Version License Status Dataset

Python Jupyter Pandas NumPy Scikit_Learn XGBoost Seaborn

Phân tích hành vi & Xây dựng các mô hình Machine Learning dự đoán tỷ lệ rời bỏ dịch vụ của khách hàng viễn thông (Customer Churn), từ đó đề xuất các giải pháp giữ chân khách hàng hiệu quả!


📌 Giới thiệu đề tài (Overview)

Trong ngành công nghiệp viễn thông (Telecommunications), chi phí để tìm kiếm một khách hàng mới (Customer Acquisition Cost - CAC) thường cao gấp nhiều lần so với việc duy trì một khách hàng hiện tại. Do đó, Customer Churn (Tỷ lệ khách hàng rời mạng) là một trong những chỉ số sống còn của doanh nghiệp.

Dự án này thực hiện:

  • Khai phá dữ liệu (EDA): Tìm hiểu chân dung những khách hàng có xu hướng rời bỏ mạng.
  • Kỹ thuật đặc trưng (Feature Engineering): Xử lý và trích xuất các đặc trưng quan trọng liên quan đến hợp đồng, chi phí và dịch vụ đi kèm.
  • Xây dựng mô hình Machine Learning: Áp dụng các thuật toán phân loại (Classification) hiện đại để dự đoán sớm nguy cơ rời đi của từng khách hàng.
  • Đề xuất chiến lược: Giúp bộ phận kinh doanh và CSKH đưa ra các chương trình ưu đãi, chăm sóc cá nhân hóa kịp thời.

📊 Tập dữ liệu (Dataset Details)

Dự án sử dụng bộ dữ liệu chuẩn IBM Telco Customer Churn (WA_Fn-UseC_-Telco-Customer-Churn.csv) với 7,043 dòng và 21 cột thuộc tính, được chia thành 4 nhóm chính:

Nhóm thuộc tính Các trường dữ liệu tiêu biểu Ý nghĩa
👤 Nhân khẩu học gender, SeniorCitizen, Partner, Dependents Giới tính, độ tuổi, tình trạng gia đình của khách hàng.
📶 Dịch vụ sử dụng PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies Các gói dịch vụ viễn thông & giá trị gia tăng mà khách hàng đang đăng ký.
💳 Thông tin tài khoản tenure, Contract, PaperlessBilling, PaymentMethod, MonthlyCharges, TotalCharges Thời gian gắn bó (tháng), loại hợp đồng (tháng/1 năm/2 năm), hình thức thanh toán & chi phí.
🎯 Biến mục tiêu Churn (Yes / No) Khách hàng đã rời mạng hay vẫn còn sử dụng dịch vụ.

🔄 Quy trình thực hiện (Workflow Pipeline)

flowchart LR
    A[📂 Dữ liệu thô Telco] --> B[🧹 Tiền xử lý & Làm sạch]
    B --> C[📈 Khám phá dữ liệu EDA]
    C --> D[⚙️ Feature Engineering & Encoding]
    D --> E[🤖 Huấn luyện Mô hình ML]
    E --> F[🎯 Đánh giá & Tối ưu Recall/F1]
    F --> G[💡 Đề xuất Insights & Chiến lược]
Loading

1. Thu thập & Làm sạch dữ liệu (Data Cleaning)

  • Kiểm tra và xử lý các giá trị rỗng/khoảng trắng trong cột TotalCharges.
  • Ép kiểu dữ liệu phù hợp cho các thuộc tính số và định danh.

2. Phân tích khám phá (EDA - Exploratory Data Analysis)

  • Trực quan hóa tương quan giữa loại hợp đồng (Contract) và tỷ lệ Churn.
  • Đánh giá tác động của thời gian sử dụng (tenure) và cước phí (MonthlyCharges).
  • Tìm hiểu mức độ gắn kết của các dịch vụ hỗ trợ kỹ thuật (TechSupport, OnlineSecurity).

3. Tiền xử lý & Trích xuất đặc trưng (Feature Engineering)

  • Chuyển đổi nhị phân và One-Hot Encoding cho các biến phân loại.
  • Chuẩn hóa thang đo (Feature Scaling) với StandardScaler/MinMaxScaler.
  • Xử lý mất cân bằng dữ liệu (Imbalanced Data) nếu cần bằng SMOTE hoặc class weights.

4. Huấn luyện mô hình (Model Building)

Thử nghiệm và so sánh hiệu năng của nhiều thuật toán:

  • Baseline Model: Logistic Regression
  • Tree-based Models: Decision Tree, Random Forest
  • Ensemble & Boosting: XGBoost, LightGBM, CatBoost

5. Đánh giá mô hình (Model Evaluation)

  • Ưu tiên các chỉ số: Recall (phát hiện tối đa khách hàng có nguy cơ Churn), Precision, ROC-AUC và F1-Score.
  • Sử dụng Confusion Matrix và đường cong PR-Curve để lựa chọn ngưỡng phân loại (Threshold tuning) tối ưu nhất cho bài toán kinh doanh.

📁 Cấu trúc thư mục dự án

TelcoCustomerChurn/
├── data/
│   └── WA_Fn-UseC_-Telco-Customer-Churn.csv   # Tập dữ liệu gốc IBM Telco Churn
├── notebooks/                                 # Jupyter Notebooks nghiên cứu & thử nghiệm
│   ├── 01_data_cleaning_eda.ipynb             # Phân tích khám phá dữ liệu & trực quan hóa
│   └── 02_model_training_evaluation.ipynb     # Huấn luyện và đánh giá mô hình ML
├── src/                                       # (Tùy chọn) Mã nguồn module tái sử dụng
│   ├── __init__.py
│   ├── data_loader.py                         # Hàm nạp và kiểm tra dữ liệu
│   ├── preprocessor.py                        # Pipeline tiền xử lý và encoding
│   └── evaluate.py                            # Hàm vẽ biểu đồ và đánh giá metrics
├── models/                                    # Nơi lưu trữ các mô hình đã huấn luyện (.pkl / .joblib)
├── .gitignore                                 # Cấu hình bỏ qua file rác và môi trường ảo
├── README.md                                  # Tài liệu hướng dẫn dự án
└── requirements.txt                           # Danh sách các thư viện cần cài đặt

🛠️ Công nghệ & Thư viện sử dụng

  • Ngôn ngữ:
    • Python
  • Xử lý & Phân tích dữ liệu:
    • Pandas
    • NumPy
  • Trực quan hóa dữ liệu:
    • Matplotlib
    • Seaborn
  • Machine Learning & Tối ưu:
    • Scikit_Learn
    • XGBoost
    • LightGBM

🚀 Hướng dẫn cài đặt & Chạy dự án

Yêu cầu hệ thống

  • Đã cài đặt Python 3.9+
  • Đã cài đặt công cụ quản lý gói pip hoặc conda

Bước 1: Clone kho lưu trữ về máy

git clone https://github.com/hcmue-hmduck/TelcoCustomerChun.git
cd TelcoCustomerChurn

Bước 2: Tạo và kích hoạt môi trường ảo (Virtual Environment)

# Tạo môi trường ảo
python3 -m venv venv

# Kích hoạt môi trường trên macOS/Linux:
source venv/bin/activate

# Kích hoạt môi trường trên Windows:
# venv\Scripts\activate

Bước 3: Cài đặt các thư viện cần thiết

pip install --upgrade pip
pip install -r requirements.txt

Bước 4: Khởi động Jupyter Lab / Notebook để chạy thử nghiệm

jupyter lab
# hoặc
jupyter notebook

Mở các notebook trong thư mục notebooks/ để theo dõi các bước phân tích và kết quả mô hình hóa.


💡 Lưu ý quan trọng cho bài toán Churn

Important

Tối ưu chỉ số Recall: Trong bài toán dự đoán rời mạng, chi phí bỏ sót một khách hàng sắp rời đi (False Negative) thường đắt hơn nhiều so với việc gửi nhầm một tin nhắn khuyến mãi cho khách hàng trung thành (False Positive). Do đó mô hình cần được cân chỉnh để đạt Recall cao trên tập khách hàng Churn.

Tip

Xử lý TotalCharges: Cột TotalCharges trong dữ liệu gốc có thể chứa các giá trị khoảng trắng (" ") đối với khách hàng mới (tenure = 0). Hãy chuyển đổi sang kiểu số (pd.to_numeric(..., errors='coerce')) và điền giá trị 0 trước khi huấn luyện.


Được xây dựng phục vụ nghiên cứu & học tập môn Khai phá Dữ liệu / Machine Learning.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

0