Denetimsiz modelleri açıklama

Python ile Açıklanabilir AI

Fouad Trad

Machine Learning Engineer

Kümeleme

Önceden tanımlı etiketler olmadan benzer noktaları gruplandırma

2 özellikli verinin 3 kümeye, her birinin bir merkez noktası olacak şekilde bölündüğünü gösteren görsel.

Python ile Açıklanabilir AI

Siluet skoru

  • Kümeleme kalitesini ölçer
  • -1 ile 1 arası
    • 1 → iyi ayrılmış kümeler

İyi ayrılmış kümeleri gösteren görsel.

Python ile Açıklanabilir AI

Siluet skoru

  • Kümeleme kalitesini ölçer
  • -1 ile 1 arası
    • 1 → iyi ayrılmış kümeler
    • -1 → noktalar yanlış atanmış

Belirgin ayrımı olmayan kümeleri gösteren görsel.

Python ile Açıklanabilir AI

Özelliğin küme kalitesine etkisi

2 özellikli bir veri kümesi kümeleme algoritmasına verildikten sonraki kümeleme sonucunu gösteren görsel.

Python ile Açıklanabilir AI

Özelliğin küme kalitesine etkisi

Bir özelliği çıkarıp modeli yeniden eğittikten sonra kümeleme sonucunu gösteren görsel.

Python ile Açıklanabilir AI

Özelliğin küme kalitesine etkisi

Kaldırılan özelliğin etkisini, her iki özellik varkenki siluet skoru ile özellik kaldırıldığındaki siluet skoru arasındaki fark olarak veren formülü gösteren görsel.

  • $\text{Impact(}f) > 0$ → $f$ için olumlu katkı
  • $\text{Impact(}f) < 0$ → $f$ gürültü katıyor
Python ile Açıklanabilir AI

Öğrenci Performansı veri kümesi

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: özellikleri içeren dizi

Python ile Açıklanabilir AI

Özelliğin küme kalitesine etkisini hesaplama

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}')
Python ile Açıklanabilir AI

Özelliğin küme kalitesine etkisini hesaplama

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
Python ile Açıklanabilir AI

Düzeltilmiş Rand indeksi (ARI)

  • Küme atamalarının ne kadar uyuştuğunu ölçer

Belirli bir veri kümesi için iki benzer küme atamasını gösteren görsel.

  • Maksimum ARI = 1 → kusursuz küme uyumu
Python ile Açıklanabilir AI

Düzeltilmiş Rand indeksi (ARI)

  • Küme atamalarının ne kadar uyuştuğunu ölçer

Aynı veri kümesi için iki farklı küme atamasını gösteren görsel.

  • Maksimum ARI = 1 → kusursuz küme uyumu
  • Daha düşük ARI → kümeler daha farklı
Python ile Açıklanabilir AI

Küme atamaları için özellik önemi

   

  • Özellikleri teker teker kaldırın
  • $\text{Importance}(f) = 1 - \text{ARI (orijinal kümeler, değiştirilmiş kümeler)}$
  • Düşük $\text(ARI)$ → yüksek $\text(1 - ARI)$ → önemli özellik
Python ile Açıklanabilir AI

Küme ataması için özellik önemi

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
Python ile Açıklanabilir AI

Hadi pratik yapalım!

Python ile Açıklanabilir AI

Preparing Video For Download...