SmartBank Model Weights
SmartBank Model Weights adalah model machine learning yang dilatih untuk memprediksi keberhasilan kampanye telemarketing perbankan (Deposito Berjangka). Model ini dirancang untuk membantu tim pemasaran memprioritaskan nasabah yang memiliki probabilitas konversi tertinggi.
Repository ini berisi file model terkompresi (.pkl) .
Deskripsi Model
Arsitektur
Model ini menggunakan pendekatan Ensemble Learning untuk mencapai performa yang lebih stabil dan akurat dibandingkan model tunggal.
- Base Learners: Top 3 Models .
- Teknik Training:
- SMOTE: Digunakan untuk menangani ketidakseimbangan kelas pada data latih.
- 10-Fold Cross-Validation: Untuk memastikan generalisasi model yang baik.
Tujuan
Mengklasifikasikan nasabah ke dalam dua kategori:
- YES (Deposit): Nasabah berpotensi membuka rekening deposito.
- NO (Non Deposit): Nasabah kemungkinan besar menolak.
Performa & Evaluasi
Evaluasi dilakukan pada Data Test (20%) yang tidak dilihat model selama proses pelatihan.
Metrik Utama
| Metrik | Skor | Deskripsi |
|---|---|---|
| Accuracy | 92,20% | Ketepatan prediksi keseluruhan. |
| ROC-AUC | 92,46% | Kemampuan memisahkan kelas positif dan negatif. |
| Precision | 91,90% | Seberapa akurat prediksi positif (Deposit). |
| Recall | 91,90% | Seberapa banyak nasabah potensial yang berhasil terdeteksi. |
| F1-Score | 91,18% | Rata-rata harmonis antara Precision dan Recall. |
Confusion Matrix
Fokus utama model adalah meminimalkan False Negative agar bank tidak kehilangan peluang bisnis (nasabah potensial).
Informasi Dataset
Model dilatih menggunakan Bank Marketing Dataset dari UCI Machine Learning Repository.
- Data Asli: 41.188 sampel.
- Data Training (Setelah SMOTE): 73.096 sampel.
- Data Testing: 14.620 sampel.
Fitur Input (Features)
- Finansial:
default,housing,loan - Riwayat Kampanye:
campaign,previous,poutcome_failure,poutcome_nonexistent,poutcome_success - Indikator Ekonomi Makro:
cons_conf_idx,cons_price_idx,euribor3m,emp_var_rate,nr_employed - Status Pernikahan:
marital_married,marital_single,marital_divorced - Metode Kontak:
contact_cellular,contact_telephone - Bulan (Month):
month_may,month_apr,month_aug,month_jul,month_jun,month_mar,month_nov,month_oct,month_sep - Pendidikan:
education_university.degree,education_basic.4y,education_basic.6y,education_basic.9y,education_high.school,education_illiterate,education_professional.course - Kategori Pekerjaan:
job_categories_cat1,job_categories_cat2,job_categories_cat3,job_categories_cat4,job_categories_other - Kategori Usia:
age_categories_struggling,age_categories_stable,age_categories_about to retire,age_categories_old age,age_categories_counting a last breathe - Hari dalam Minggu:
day_of_week_mon,day_of_week_tue,day_of_week_wed,day_of_week_thu,day_of_week_fri
Cara Menggunakan Model
Berikut adalah contoh cara memuat model .pkl menggunakan Python. Pastikan Anda memiliki library scikit-learn dan xgboost terinstal.
menggunakan perintah CLI berikut:
pip install scikit-learn xgboost pandas joblib huggingface_hub
Lalu load model tersebut menggunakan kode berikut:
from huggingface_hub import hf_hub_download
import joblib
import pandas as pd
def load_model_from_hf(model_filename: str):
model_path = hf_hub_download(
repo_id="A25-CS078/smartbank-a25-cs078",
filename=model_filename,
cache_dir="models"
)
model = joblib.load(model_path)
return model # bisa disertai metadata jika diperlukan
def predict(model, data: dict):
df = pd.DataFrame([data])
prediction = model.predict(df)[0]
proba = None
if hasattr(model, "predict_proba"):
proba = model.predict_proba(df)[0].tolist()
return prediction, proba
# Load model
model = load_model_from_hf("model.pkl")
# Contoh input data
input_data = {
"age": 35,
"campaign": 1,
"duration": 120,
"euribor3m": 4.6
}
# Prediksi
prediction, probabilities = predict(model, input_data)
Tim Developer
Nur Bintang Hidayat
- Email: nbintangh@gmail.com
- GitHub: github.com/nbintang
- LinkedIn: Nur Bintang Hidayat
Muhamad Rafli Kamal
- Email: mraflikamal@gmail.com
- GitHub: github.com/RafliKamal
- LinkedIn: Muhamad Rafli Kamal
Dibangun dengan 🫶 oleh Bintang & Rafli (Capstone Team)