Lewati ke konten utama

Pengantar Nilai SHAP dan Interpretabilitas Machine Learning

Model machine learning itu kuat tetapi sulit diinterpretasikan. Namun, nilai SHAP dapat membantu Anda memahami bagaimana fitur model memengaruhi prediksi.
Diperbarui 5 Jun 2026  · 9 mnt baca

Model machine learning semakin kompleks, kuat, dan mampu membuat prediksi akurat. Namun, seiring model menjadi "kotak hitam", semakin sulit memahami bagaimana model mencapai prediksi tersebut. Hal ini mendorong fokus yang semakin besar pada interpretabilitas dan keterjelasan (explainability) machine learning.

Sebagai contoh, Anda mengajukan pinjaman ke bank namun ditolak. Anda ingin tahu alasannya, tetapi petugas layanan pelanggan menjawab bahwa sebuah algoritma menolak aplikasi Anda dan mereka tidak bisa menentukan alasannya. Menjengkelkan, bukan? Anda berhak mendapatkan penjelasan atas keputusan yang memengaruhi diri Anda. Karena itulah perusahaan berupaya membuat model machine learning mereka lebih transparan dan mudah dipahami.

Salah satu alat paling menjanjikan untuk proses ini adalah nilai SHAP, yang mengukur seberapa besar setiap fitur (seperti pendapatan, usia, skor kredit, dll.) berkontribusi pada prediksi model. Nilai SHAP dapat membantu Anda melihat fitur mana yang paling penting bagi model dan bagaimana fitur tersebut memengaruhi keluaran.

Dalam tutorial ini, kita akan mempelajari nilai SHAP dan perannya dalam interpretasi model machine learning. Kita juga akan menggunakan paket Python Shap untuk membuat dan menganalisis berbagai plot guna menafsirkan model.

Apa itu Nilai SHAP?

Nilai SHAP (SHapley Additive exPlanations) adalah cara untuk menjelaskan keluaran model machine learning apa pun. Metode ini menggunakan pendekatan teori permainan yang mengukur kontribusi setiap pemain terhadap hasil akhir. Dalam machine learning, setiap fitur diberi nilai kepentingan yang merepresentasikan kontribusinya terhadap keluaran model.

Nilai SHAP menunjukkan bagaimana setiap fitur memengaruhi setiap prediksi akhir, signifikansi tiap fitur dibandingkan fitur lain, dan ketergantungan model pada interaksi antarfitur.

Nilai SHAP dalam Machine Learning 

Nilai SHAP adalah cara umum untuk mendapatkan penjelasan yang konsisten dan objektif tentang bagaimana setiap fitur memengaruhi prediksi model.

Nilai SHAP didasarkan pada teori permainan dan menetapkan nilai kepentingan pada setiap fitur dalam model. Fitur dengan nilai SHAP positif berdampak positif pada prediksi, sedangkan yang bernilai negatif berdampak negatif. Besarnya nilai menunjukkan seberapa kuat efeknya.

Nilai SHAP bersifat model-agnostic, artinya dapat digunakan untuk menafsirkan model machine learning apa pun, termasuk:

  • Regresi linear
  • Pohon keputusan
  • Random forest
  • Model gradient boosting
  • Jaringan saraf

Properti Nilai SHAP

Nilai SHAP memiliki beberapa properti berguna yang membuatnya efektif untuk menafsirkan model:

Additivitas

Nilai SHAP bersifat aditif, yang berarti kontribusi setiap fitur terhadap prediksi akhir dapat dihitung secara independen lalu dijumlahkan. Properti ini memungkinkan perhitungan nilai SHAP yang efisien, bahkan untuk dataset berdimensi tinggi.

Akurasi lokal

Nilai SHAP berjumlah sama dengan selisih antara keluaran model yang diharapkan dan keluaran aktual untuk suatu masukan tertentu. Ini berarti nilai SHAP memberikan interpretasi yang akurat dan lokal atas prediksi model untuk masukan tersebut.

Ketiadaan

Nilai SHAP bernilai nol untuk fitur yang hilang atau tidak relevan bagi suatu prediksi. Hal ini membuat nilai SHAP tangguh terhadap data yang hilang dan memastikan fitur tidak relevan tidak mendistorsi interpretasi.

Konsistensi

Nilai SHAP tidak berubah ketika model berubah kecuali kontribusi suatu fitur berubah. Artinya, nilai SHAP memberikan interpretasi yang konsisten atas perilaku model, bahkan saat arsitektur atau parameter model berubah.

Secara keseluruhan, nilai SHAP menyediakan cara yang konsisten dan objektif untuk mendapatkan wawasan tentang bagaimana model machine learning membuat prediksi dan fitur mana yang paling berpengaruh.

Cara Mengimplementasikan Nilai SHAP di Python

Pada bagian ini, kita akan menghitung nilai SHAP dan memvisualisasikan feature importance, ketergantungan fitur, force, dan decision plot.

Jalankan dan edit kode dari tutorial ini secara online.

Jalankan kode

Menyiapkan Lingkungan

Instal SHAP menggunakan PyPI atau conda-forge:

pip install shap

atau

conda install -c conda-forge shap

Muat Telecom Customer Churn. Dataset terlihat bersih, dan kolom target adalah “Churn.”

import shap
import pandas as pd
import numpy as np
shap.initjs()

customer = pd.read_csv("data/customer_churn.csv")
customer.head()

Pelatihan dan Evaluasi Model

  1. Buat X dan y menggunakan kolom target dan bagi dataset menjadi train dan test.
  2. Latih Random Forest Classifier pada data latih.
  3. Lakukan prediksi menggunakan data uji.
  4. Tampilkan classification report.
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split

X = customer.drop("Churn", axis=1) # Independent variables
y = customer.Churn # Dependent variable

# Split into train and test 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

# Train a machine learning model
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_train, y_train)

# Make prediction on the testing data
y_pred = clf.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

Model menunjukkan kinerja yang lebih baik untuk label “0” dibanding “1” karena dataset tidak seimbang. Secara keseluruhan, hasilnya dapat diterima dengan akurasi 94%.

              precision    recall  f1-score   support

           0       0.97      0.96      0.97       815
           1       0.79      0.82      0.80       130

    accuracy                           0.94       945
   macro avg       0.88      0.89      0.88       945
weighted avg       0.94      0.94      0.94       945

Lihat panduan Klasifikasi dalam Machine Learning kami untuk mempelajari klasifikasi dalam machine learning dengan contoh Python.

Menyiapkan SHAP Explainer

Sekarang masuk ke bagian penjelas model.

Kita akan terlebih dahulu membuat objek explainer dengan memberikan model klasifikasi random forest, lalu menghitung nilai SHAP menggunakan data uji.

explainer = shap.Explainer(clf)
shap_values = explainer.shap_values(X_test)

Summary Plot

Tampilkan summary_plot menggunakan nilai SHAP dan data uji.

shap.summary_plot(shap_values, X_test)

Summary plot menampilkan feature importance dari setiap fitur dalam model. Hasilnya menunjukkan bahwa “Status,” “Complaints,” dan “Frequency of use” berperan besar dalam menentukan hasil.

Tampilkan summary_plot untuk label “0”.

shap.summary_plot(shap_values[0], X_test)
  • Sumbu-Y menunjukkan nama fitur dalam urutan kepentingan dari atas ke bawah.
  • Sumbu-X merepresentasikan nilai SHAP, yang menunjukkan derajat perubahan pada log odds.
  • Warna setiap titik pada grafik merepresentasikan nilai fitur terkait, dengan merah menandakan nilai tinggi dan biru menandakan nilai rendah.
  • Setiap titik merepresentasikan satu baris data dari dataset asli.

Jika Anda melihat fitur “Complaints", Anda akan melihat bahwa nilainya sebagian besar tinggi dengan nilai SHAP negatif. Artinya, jumlah keluhan yang lebih tinggi cenderung berdampak negatif pada keluaran.

Catatan: untuk label “1” visualisasinya akan terbalik.

Dependence Plot

Visualisasikan dependence_plot antara fitur “Subscription Length” dan “Age.”

shap.dependence_plot("Subscription Length", shap_values[0], X_test,interaction_index="Age")

Dependence plot adalah jenis scatter plot yang menampilkan bagaimana prediksi model dipengaruhi oleh fitur tertentu (Subscription Length). Secara rata-rata, lama berlangganan memiliki efek yang sebagian besar positif pada model.

Force Plot

Kita akan meninjau sampel pertama di data uji untuk menentukan fitur mana yang berkontribusi pada hasil "0". Untuk itu, kita akan menggunakan force plot dan menyertakan expected value, nilai SHAP, dan sampel uji.

shap.plots.force(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0, :], matplotlib = True)

Kita dapat melihat dengan jelas bahwa nol keluhan dan nol kegagalan panggilan berkontribusi negatif terhadap kehilangan pelanggan.

Mari melihat sampel churn pelanggan dengan label “1”.

shap.plots.force(explainer.expected_value[1], shap_values[1][6, :], X_test.iloc[6, :],matplotlib = True)

Anda dapat melihat semua fitur beserta nilai dan magnitudonya yang berkontribusi pada kehilangan pelanggan. Tampaknya bahkan satu keluhan yang tidak terselesaikan dapat merugikan perusahaan telekomunikasi.

Decision Plot

Sekarang kita akan menampilkan decision_plot. Plot ini secara visual menggambarkan keputusan model dengan memetakan nilai SHAP kumulatif untuk setiap prediksi.

shap.decision_plot(explainer.expected_value[1], shap_values[1], X_test.columns)

Setiap garis pada decision plot menunjukkan seberapa kuat fitur-fitur individual berkontribusi pada satu prediksi model, sehingga menjelaskan nilai fitur mana yang mendorong prediksi.

Catatan: Decision plot untuk label target “1” condong ke arah “1”.

Tampilkan decision plot untuk label target “0”

shap.decision_plot(explainer.expected_value[0], shap_values[0], X_test.columns)

Untuk decision plot ini condong ke arah “0”.

Penerapan Nilai SHAP

Selain interpretabilitas dan keterjelasan machine learning, nilai SHAP dapat digunakan untuk:

  1. Debugging model. Dengan memeriksa nilai SHAP, kita dapat mengidentifikasi bias atau outlier dalam data yang mungkin menyebabkan model membuat kesalahan.
  2. Kepentingan fitur. Mengidentifikasi dan menghapus fitur berdampak rendah dapat menghasilkan model yang lebih optimal.
  3. Penjelasan terjangkar. Kita dapat menggunakan nilai SHAP untuk menjelaskan prediksi individual dengan menyoroti fitur-fitur penting yang menyebabkan prediksi tersebut. Ini dapat membantu pengguna memahami dan memercayai keputusan model.
  4. Ringkasan model. Dapat memberikan ringkasan global model dalam bentuk summary plot nilai SHAP. Ini memberikan gambaran fitur paling penting di seluruh dataset.
  5. Mendeteksi bias. Analisis nilai SHAP membantu mengidentifikasi apakah fitur tertentu secara tidak proporsional memengaruhi kelompok tertentu. Ini memungkinkan deteksi dan pengurangan diskriminasi dalam model.
  6. Audit keadilan. Dapat digunakan untuk menilai keadilan dan implikasi etis model.
  7. Persetujuan regulatori. Nilai SHAP dapat membantu memperoleh persetujuan regulator dengan menjelaskan keputusan model.

Kesimpulan

Kita telah menelaah nilai SHAP dan bagaimana kita dapat menggunakannya untuk memberikan interpretabilitas bagi model machine learning. Meskipun memiliki model yang akurat itu penting, perusahaan perlu melampaui akurasi dan berfokus pada interpretabilitas serta transparansi untuk mendapatkan kepercayaan pengguna dan regulator.

Kemampuan menjelaskan mengapa model membuat prediksi tertentu membantu melakukan debug potensi bias, mengidentifikasi masalah data, dan membenarkan keputusan model.

Jika Anda baru dalam machine learning dan ingin siap kerja, pertimbangkan untuk mengambil jalur karier Machine Learning Scientist with Python. Program ini akan membantu Anda menguasai keterampilan Python yang diperlukan untuk menjadi ilmuwan machine learning dan mendapatkan pekerjaan.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak