Prediksi Gaji Data Science β€” Gradient Boosting Regressor

Deskripsi singkat

Model regresi Gradient Boosting (scikit-learn) yang memprediksi gaji tahunan (USD) seorang profesional data berdasarkan level pengalaman, jabatan, lokasi, ukuran perusahaan, dan pola kerja. Dibuat untuk Ujian Akhir Semester MN1135 Business Data Science (Jasmine Liu, NIM 2025121076), sebagai alat bantu HR untuk menyusun rentang penawaran gaji.

Dataset dan sumber

Data Science Salaries 2023 oleh Arnab Chaki, Kaggle: https://www.kaggle.com/datasets/arnabchaki/data-science-salaries-2023 (lisensi dataset di Kaggle: DbCL-1.0). Setelah 1.171 baris duplikat dibuang tersisa 2.584 baris; dibagi 80:20 (random_state=42) menjadi 2.067 data latih dan 517 data uji.

Jenis tugas

Regresi β€” target: salary_in_usd (gaji tahunan dalam USD, angka kontinu).

Fitur input

Fitur Tipe Keterangan
work_year int Tahun gaji dilaporkan (2020–2023)
experience_level str EN = Entry, MI = Mid, SE = Senior, EX = Executive
employment_type str FT = Full-time, PT = Part-time, CT = Kontrak, FL = Freelance
job_title str Jabatan (93 nilai, mis. Data Scientist, Data Engineer)
employee_residence str Negara tempat tinggal karyawan, kode ISO 3166 (78 nilai, mis. US)
remote_ratio int Persentase kerja jarak jauh: [0, 50, 100]
company_location str Negara lokasi perusahaan, kode ISO 3166 (72 nilai)
company_size str S = kecil, M = menengah, L = besar

Kolom salary dan salary_currency tidak dipakai (redundan dengan target). Fitur kategorikal di-one-hot encode (250 kolom akhir); urutan kolom tersimpan di model_columns.json.

Metrik performa akhir (data uji, 517 baris)

Metrik Nilai
RMSE (metrik utama) USD 52,027
MAE USD 39,213
MSE 2,706,840,864
RΒ² 0.3812

Pembanding: menebak rata-rata gaji menghasilkan RMSE USD 66,142 dan RΒ² β‰ˆ 0. Parameter terbaik hasil Randomized + Grid Search CV (5-fold, scoring RMSE):

  • learning_rate: 0.1062
  • loss: huber
  • max_depth: 4
  • max_features: 0.2
  • min_samples_leaf: 13
  • min_samples_split: 7
  • n_estimators: 287
  • subsample: 0.9018

Cara memuat dan memakai model

# pip install scikit-learn pandas joblib huggingface_hub
import importlib.util
from huggingface_hub import hf_hub_download

REPO_ID = "jasmine_liu/ds-salary-gradient-boosting"

# 1) unduh dan impor helper inferensi dari repository
spec = importlib.util.spec_from_file_location("inference", hf_hub_download(REPO_ID, "inference.py"))
inference = importlib.util.module_from_spec(spec); spec.loader.exec_module(inference)

# 2) muat model, scaler, daftar kolom, dan konfigurasi (memakai joblib.load di dalamnya)
bundel = inference.muat_model(REPO_ID)

# 3) prediksi satu atau beberapa baris
contoh = [{"work_year": 2023, "experience_level": "SE", "employment_type": "FT",
           "job_title": "Data Scientist", "employee_residence": "US", "remote_ratio": 100,
           "company_location": "US", "company_size": "M"}]
print(inference.prediksi_gaji(contoh, bundel))   # gaji tahunan dalam USD

Nilai kategori harus salah satu dari daftar pada preprocessing_config.json (kategori_valid); nilai asing akan memunculkan galat yang jelas.

Keterbatasan

  • Daya jelaskan sedang: RΒ² β‰ˆ 0.3812, artinya sebagian besar variasi gaji tidak terjelaskan. Bonus, ekuitas, keahlian spesifik, industri, dan lama pengalaman riil tidak ada di data.
  • Rata-rata kesalahan Β± USD 39,213: gunakan sebagai rentang (prediksi Β± MAE), bukan angka final. Akurasi lebih rendah untuk level Executive dan Entry (data sedikit).
  • Data 2020–2023, 2.584 baris: pola gaji berubah dari waktu ke waktu; model perlu dilatih ulang. Kategori yang jarang/tidak pernah muncul saat pelatihan tidak dapat diprediksi andal.
  • Bukan hubungan sebab-akibat dan dapat mereproduksi kesenjangan gaji antar-negara yang ada di data; jangan dijadikan satu-satunya dasar keputusan terhadap individu.
  • Model dilatih dengan scikit-learn versi 1.6.1; gunakan versi yang sama (lihat requirements.txt).

Berkas

model_gb_tuned.joblib, scaler.joblib, model_columns.json, preprocessing_config.json, inference.py, contoh_input.json, requirements.txt.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support