Skip to content

Sardiirfan27/full_stack_data_science_ai

Repository files navigation

📡 Full Stack Data Science & AI Project for the telecommunications industry


🔥 Overview

Project ini dibuat untuk mensimulasikan Full Stack Data Science dan AI pada domain Industri telekomunikasi, mulai dari:

  • Membangun database, Data Warehouse dan Proses ETL
  • Churn Prediction and Analysis:
    • Exploratory Data Analysis
    • Data Preprocessing & Feature Engineering
    • Machine Learning (XGBoost) + Hyperparameter tuning using Bayesian Search Optimization
    • Explainable AI (SHAP)
  • Otomatisasi ETL dan MLOps
  • Pembuatan API untuk Model Inference yang di lengkapi dengan:
    • Input Validation,
    • API Key dan Rate Limit untuk keamanan dan menjaga performa server
    • Caching untuk mempercepat proses prediksi.
  • Web App:
    • Dashboard dan AI Agent untuk Otomatisasi Pembuatan Chart dan Insight dengan LLM/Generative AI
    • Prediksi Churn berdasarkan input manual dan file CSV
    • AI Chatbot dengan RAG untuk memberikan informasi paket internet dan harganya.
  • Model Deployment (Optional): Model yang telah selesai di training di simpan ke Google Cloud Storage, kemudian Deploy API dan Web App ke Google Cloud Run menggunakan Docker.

Demo aplikasi dan Penjelasannya dapat di akses atau klik pada tautaan berikut: Demo Aplikasi Data Science/AI


🧩 Workflow Diagram

Architecture Diagram

Peracangan Database MLOps Web App


🚀 Features Summary

Bagian Deskripsi Tech Stack / Tools
Database Design (RDBMS) - Mendesain schema database Telco (customer, contract and internet service, transaction)
- Membuat view churn dengan aturan: pelanggan dianggap churn jika tidak melakukan pembayaran selama ≥ 2 bulan
Docker, PostgreSQL
ETL Pipeline - Extract data dari PostgreSQL
- Transform: join tabel, cleaning, data quality check, pengayaan fitur (tenure, payment delay, service type)
- Load ke BigQuery sebagai Data Warehouse
- Dirancang modular & reusable
Python, pandas, BigQuery, Postgres
Data Warehouse - Mengintegrasikan dataset Kaggle dengan data hasil ETL PostgreSQL
- Membuat data mart atau tabel untuk keperluan ML & dashboard analitik
BigQuery
Orkestrasi (Otomatisasi & Penjadwalan) - ETL dijalankan otomatis setiap 3 bulan
- Setelah ETL selesai, sistem otomatis melakukan:
→ Preprocessing
→ Training machine learning model + Hyperparameter tuning
→ Evaluasi dan promosikan model ke Production (jika recall >= 0.8 dan F1-Score>=0.6)
- Menjalankan pipeline ML end-to-end secara otomatis
Airflow, Bash, Python, Redis (CeleryExecutor)
EDA & Machine Learning (Jupyter Notebook) - Analisis churn: distribusi, service usage, contract terms, billing patterns, tenure, etc.
- Preprocessing pipeline: cleaning, encoding, scaling, feature engineering.
- Model training menggunakan XGBoost
- Hyperparameter Tuning: Bayesian Optimization + Grid Search
- Evaluasi model: precision, recall, F1, Custom Metric
- Explainable AI: SHAP, Permutation Feature Importance
Python, scikit-learn, XGBoost, SHAP, pandas, matplotlib, seaborn, plotly, scipy, numy, statsmodels
MLOps - Script otomatis untuk preprocessing, training, tuning, evaluasi
- ML model tracking: metrics, parameters, artifacts
- Model registry (staging → production)
- Automatic promotion jika model baru lebih baik
- Monitoring & reproducibility
MLflow, Airflow, Docker, Scikit-learn, SHAP, Python, XGBoost
Model Serving/API Development - FastAPI untuk model inference
- Mendukung prediksi: single input & batch CSV
- Caching untuk response lebih cepat
- API key untuk keamanan
- Rate limiting untuk membatasi penggunaan
- Logging request & error handling
FastAPI, Uvicorn, Redis
Web App - Dashboard analitik churn, layanan, kontrak, billing, tenure
- Halaman Churn Prediction (manual input & CSV via API)
- AI Chatbot untuk informasi paket internet, harga, rekomendasi layanan
Streamlit, Plotly, FastAPI
GenAI Integration (AI Agent) - Menampilkan chart otomatis, tabel, dan insight menggunakan Gemini LLM
- Menghasilkan analisis dataset secara otomatis tanpa query manual
- Membantu interpretasi data & anomaly explanation
Gemini API (Generative AI), Python
AI Chatbot with RAG - Knowledge base chatbot disimpan di ChromaDB
- Menggunakan embedding untuk pencarian dokumen
- Chatbot memberi jawaban yang relevan berdasarkan konteks layanan Telco
- Mendukung history & memory
ChromaDB, LLM with Gemini

📓 Explore Notebooks

Semua analisis data & model machine learning untuk proyek ini tersedia di folder notebooks/. Namun, untuk pengalaman interaktif dan visualisasi penuh, saya merekomendasikan untuk membuka notebook di Kaggle:

🔗 Customer Churn Prediction & Analysis Notebook


✨ Kenapa membuka di Kaggle?

  • Notebook sudah didesain dengan HTML & CSS agar lebih menarik dan interaktif.
  • Semua chart, tabel, dan insight bisa dilihat secara lengkap.
  • Mendukung scrolling interaktif untuk eksplorasi data dan model.
  • Mudah dijalankan kembali jika ingin bereksperimen atau mengubah parameter model.

💡 Tips:

  • Jika membuka di GitHub, notebook akan terlihat plain karena styling HTML/CSS tidak sepenuhnya tampil.
  • Untuk pengalaman terbaik, buka di Kaggle agar dashboard, visualisasi interaktif, dan layout rapi bisa dinikmati.

📦 Installation & Setup

Ikuti langkah berikut untuk menjalankan proyek Full Stack Data Science & AI Telco menggunakan Docker.


1️⃣ Clone Repository

git clone https://github.com/username/nama-repo.git
cd nama-repo

2️⃣ Install python dependencies

Untuk menjalakan scripts awal dalam pembuatan tabel atau dataset di BigQuery dan juga jupyter notebook, jalankanlah perintah berikut:

pip install -r requirements.txt

catatan: File requirements.txt berada pada root folder dan folder notebooks.

3️⃣ Install Docker & Docker Compose

Pastikan Anda sudah menginstall:

  • Docker Engine atau Docker Desktop

4️⃣ Konfigurasi File .env

Duplikat file .env contoh:

cp .env.example .env

Lalu isi variabel environment sesuai kebutuhan.

Isi .env dengan informasi berikut:

🔑 1. Google Cloud Access Key

Anda harus mendownload Service Account JSON Key untuk akses BigQuery & GCP.

  • Masuk ke Google Cloud Console
  • IAM & Admin → Service Accounts
  • Create Key → JSON
  • Simpan file, contoh: gcp-service-key.json ke folder root proyek Anda, folder db dan web_app
  • Masukkan path di .env yang ada root folder:
GCP_CREDENTIALS=/opt/project/gcp_service_key.json

📧 2. App Password untuk Email

Digunakan untuk notifikasi otomatis (opsional).

  • Gmail → Manage Account
  • Security → App Passwords
  • Generate 1 password
  • Masukkan:
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=youremail@gmail.com
EMAIL_PASS=your_app_password

🤖 3. Gemini API Key

Untuk fitur Generative AI (chart otomatis, insight, chatbot).

Dapatkan dari: https://aistudio.google.com/app/apikey

Isi variabel di .env yang ada di folder web_app:

GEMINI_API_KEY=your_gemini_key

Sesuaikan variabel lain sesuai kebutuhan Anda.


5️⃣ Jalankan Script untuk Pembuatan Database dan tabel di BigQuery

Sebelum menjalankan docker compose, jalankanlah script berikut untuk membuat db dan table di BigQuery.

Copy file gcp_service_key.json ke folder db dan jalankan script create_db_bigquery.py.

6️⃣ Jalankan Backend (ETL, MLOps, API, Database)

Berikut versi yang sudah dirapikan, lebih rapi, dan mudah dibaca untuk bagian menjalankan backend di README:


7️⃣ Jalankan Backend (ETL, MLOps, API, Database)

Proyek ini memiliki beberapa layanan backend utama: Airflow, MLflow, PostgreSQL, FastAPI, dll.

  1. Jalankan Docker Backend

    docker compose -f docker-compose.yml up -d --build
  2. Akses Airflow

    Buka browser:

    http://localhost:8080
    
    • Masukkan username & password sesuai dengan file .env.
    • Cobalah untuk trigger ETL, training ML model, dan promosi model ke Production.
  3. Akses MLflow

    Buka browser:

    http://localhost:5000
    
    • Masukkan username & password sesuai .env.

    • Anda dapat:

      • Melihat hasil evaluasi model
      • Memeriksa model yang sudah yang sudah di training dan apakah model dipromosikan ke Production

  1. Setup API Key untuk FastAPI

    • Masuk ke folder fastapi_app/auth dan Jalankan script:

      python create_key.py
    • Salin API key yang dihasilkan ke file .env di folder web_app:

      API_KEY_FASTAPI=your_generated_key
      

Setelah ini, API FastAPI siap digunakan untuk inference dan batch prediction.


8️⃣ Jalankan Frontend (Dashboard, Prediction App, Chatbot)

Frontend (Streamlit / WebApp) berada pada file terpisah, sehingga anda harus menjalankan docker compose dengan nama file docker-compose-frontend.yml.:

docker compose -f docker-compose-frontend.yml up -d --build

Bukalah link streamlit:

http://localhost:8501