Traffine I/O

Bahasa Indonesia

2022-07-02

Permutation Importance

Apa itu Permutation Importance

Permutation Importance adalah teknik yang digunakan dalam bidang machine learning untuk memahami relevansi fitur dalam model prediksi. Dengan memperkirakan dampak setiap fitur terhadap kinerja model, teknik ini membantu ilmuwan data mengidentifikasi fitur paling penting dan membuat keputusan informasi yang tepat saat membangun dan menyempurnakan model.

Metodologi untuk Menghitung Permutation Importance

Dalam matematika, permutation adalah susunan objek dalam urutan tertentu. Dalam konteks Permutation Importance, permutation mengacu pada proses acak mengocok nilai fitur dalam kumpulan data sambil menjaga fitur lainnya tidak berubah. Proses pengocokan ini membantu menilai dampak fitur pada kinerja model, karena kehilangan akurasi atau metrik lainnya dapat diatribusikan pada gangguan nilai fitur.

Permutation importance graphic

Menghitung Permutation Importance melibatkan beberapa langkah, seperti diuraikan di bawah ini:

  1. Latih model
    Sesuaikan model machine learning dengan kumpulan data asli menggunakan metrik evaluasi dan fungsi kerugian yang dipilih.

  2. Evaluasi kinerja dasar
    Evaluasi kinerja model pada kumpulan data asli dan catat nilai metrik dasar.

  3. Permutasi fitur
    Acak secara acak nilai satu fitur dalam kumpulan data, menjaga fitur lain tidak berubah.

  4. Evaluasi kinerja ulang
    Evaluasi kinerja model pada kumpulan data yang diganggu, dan hitung perbedaan dalam nilai metrik antara kumpulan data yang diganggu dan asli.

  5. Ulangi langkah 3-4
    Acak dan evaluasi setiap fitur dalam kumpulan data, mencatat perubahan kinerja untuk setiap permutasi.

  6. Hitung skor pentingnya
    Rata-ratakan perubahan kinerja di beberapa iterasi untuk setiap fitur.

  7. Urutkan fitur
    Urutkan fitur berdasarkan skor pentingnya secara menurun.

Menangani Variabel Kategorikal

Permutation Importance dapat diperluas ke variabel kategorikal dengan melakukan permutasi dalam setiap kategori. Ini mempertahankan struktur kategorikal sambil tetap memungkinkan penilaian tentang pentingnya variabel. Namun, harus berhati-hati saat menafsirkan hasilnya, karena skor penting dapat dipengaruhi oleh jumlah kategori dan distribusinya dalam kumpulan data.

Memvisualisasikan Permutation Importance dengan Python

Dalam bab ini, saya akan menunjukkan bagaimana memvisualisasikan Permutation Importance menggunakan kumpulan data California Housing.

Kumpulan data California Housing berisi informasi tentang pasar perumahan di California, termasuk fitur seperti pendapatan median, usia rumah median, dan rata-rata jumlah kamar per rumah. Variabel target adalah nilai rumah median.

Pertama, mari muat kumpulan data dan bagi menjadi kumpulan data pelatihan dan pengujian:

python
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split

data = fetch_california_housing()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Untuk contoh ini, kita akan melatih random forest regressor:

python
from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

Kita dapat menggunakan fungsi permutation_importance dari sklearn untuk menghitung Permutation Importance untuk setiap fitur:

python
from sklearn.inspection import permutation_importance

result = permutation_importance(model, X_test, y_test, n_repeats=10, random_state=42)

Parameter n_repeats pada fungsi permutation_importance menentukan jumlah kali proses permutasi diulang untuk setiap fitur dalam kumpulan data.

Kita dapat membuat plot batang untuk memvisualisasikan skor Permutation Importance untuk setiap fitur menggunakan matplotlib dan seaborn:

python
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Sort the features by importance
sorted_idx = result.importances_mean.argsort()

# Create a horizontal bar plot
plt.figure(figsize=(10, 6))
sns.barplot(x=result.importances_mean[sorted_idx], y=np.array(data.feature_names)[sorted_idx], palette='viridis')

# Add error bars to show the standard deviation of the importance scores
plt.errorbar(x=result.importances_mean[sorted_idx], y=np.arange(len(sorted_idx)),
             xerr=result.importances_std[sorted_idx], fmt='o', capsize=5, color='black')

# Set the plot title and labels
plt.title('Permutation Importance of Features')
plt.xlabel('Importance Score')
plt.ylabel('Feature')

Permutation importance of California dataset

Visualisasi ini dengan jelas menampilkan skor Permutation Importance untuk setiap fitur dalam kumpulan data California Housing, beserta deviasi standarnya. Dengan memeriksa plot, kita dapat melihat bahwa MedInc (pendapatan median) adalah fitur yang paling penting.

Referensi

https://www.modulos.ai/blog/permutation-feature-importance-deep-dive/
https://medium.com/mlearning-ai/machine-learning-explainability-permutation-importance-7a9a69bf5943
https://scikit-learn.org/stable/modules/permutation_importance.html
https://www.kaggle.com/code/dansbecker/permutation-importance

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!