Menjelaskan model tanpa supervisi

Explainable AI in Python

Fouad Trad

Machine Learning Engineer

Clustering

Mengelompokkan titik data serupa tanpa label pradefinisi

Gambar data dengan 2 fitur dibagi menjadi 3 klaster, masing-masing memiliki centroid.

Explainable AI in Python

Skor siluet

  • Mengukur kualitas klastering
  • Rentang dari -1 hingga 1
    • 1 → klaster terpisah jelas

Gambar klaster yang terpisah jelas.

Explainable AI in Python

Skor siluet

  • Mengukur kualitas klastering
  • Rentang dari -1 hingga 1
    • 1 → klaster terpisah jelas
    • -1 → titik salah ditempatkan

Gambar klaster tanpa pemisahan yang jelas.

Explainable AI in Python

Dampak fitur pada kualitas klaster

Gambar hasil klastering dari dataset dengan 2 fitur yang diumpankan ke algoritma klastering.

Explainable AI in Python

Dampak fitur pada kualitas klaster

Gambar hasil klastering setelah satu fitur dihapus dan model dilatih ulang.

Explainable AI in Python

Dampak fitur pada kualitas klaster

Gambar rumus untuk menghitung dampak fitur yang dihapus sebagai selisih antara skor siluet saat kedua fitur ada dan skor siluet saat fitur dihapus.

  • $\text{Impact(}f) > 0$ → kontribusi positif untuk $f$
  • $\text{Impact(}f) < 0$ → $f$ menambah noise
Explainable AI in Python

Dataset Student Performance

age health status absences G1 G2 G3
18 3 4 0 11 11
17 3 2 9 11 11
15 3 6 12 13 12
15 5 0 14 14 14
16 5 0 11 13 13

 

X: array berisi fitur

Explainable AI in Python

Menghitung dampak fitur pada kualitas klaster

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score


kmeans = KMeans(n_clusters=2).fit(X)
original_score = silhouette_score(X, kmeans.labels_)
for i in range(X.shape[1]):
X_reduced = np.delete(X, i, axis=1)
kmeans.fit(X_reduced)
new_score = silhouette_score(X_reduced, kmeans.labels_)
impact = original_score - new_score print(f'Feature {column_names[i]}: Impact = {impact}')
Explainable AI in Python

Menghitung dampak fitur pada kualitas klaster

Feature age: Impact = 0.05199181662741281
Feature health status: Impact = 0.06046737420227638
Feature absences: Impact = 0.031290940582026694
Feature G1: Impact = -0.025746421940652353
Feature G2: Impact = -0.02578292339364119
Feature G3: Impact = -0.03163419458330158
Explainable AI in Python

Adjusted Rand Index (ARI)

  • Mengukur kecocokan penetapan klaster

Gambar dua penetapan klaster yang mirip untuk suatu dataset.

  • ARI maksimum = 1 → klaster selaras sempurna
Explainable AI in Python

Adjusted Rand Index (ARI)

  • Mengukur kecocokan penetapan klaster

Gambar dua penetapan klaster yang berbeda untuk dataset yang sama.

  • ARI maksimum = 1 → klaster selaras sempurna
  • ARI lebih rendah → perbedaan klaster lebih besar
Explainable AI in Python

Kepentingan fitur untuk penetapan klaster

   

  • Hapus fitur satu per satu
  • $\text{Importance}(f) = 1 - \text{ARI (original clusters, modifed clusters)}$
  • ARI rendah → $1 - \text{ARI}$ tinggi → fitur penting
Explainable AI in Python

Kepentingan fitur untuk penetapan klaster

from sklearn.metrics import adjusted_rand_score

kmeans = KMeans(n_clusters=2).fit(X) original_clusters = kmeans.predict(X)
for i in range(X.shape[1]):
X_reduced = np.delete(X, i, axis=1)
reduced_clusters = kmeans.fit_predict(X_reduced)
importance = 1 - adjusted_rand_score(original_clusters, reduced_clusters) print(f'{df.columns[i]}: {importance}')
age: 0.0
health status: 0.9995376368119572
absences: 0.0
G1: 0.0
G2: 0.6204069909514572
G3: 0.6204069909514572
Explainable AI in Python

Ayo berlatih!

Explainable AI in Python

Preparing Video For Download...