Spiegare i modelli non supervisionati

Explainable AI in Python

Fouad Trad

Machine Learning Engineer

Clustering

Raggruppa punti simili senza etichette predefinite

Immagine che mostra dati con 2 feature divisi in 3 cluster, ciascuno con un centroide.

Explainable AI in Python

Silhouette score

  • Misura la qualità del clustering
  • Va da -1 a 1
    • 1 → cluster ben separati

Immagine che mostra cluster ben separati.

Explainable AI in Python

Silhouette score

  • Misura la qualità del clustering
  • Va da -1 a 1
    • 1 → cluster ben separati
    • -1 → punti assegnati in modo errato

Immagine che mostra cluster senza chiara separazione.

Explainable AI in Python

Impatto delle feature sulla qualità dei cluster

Immagine che mostra il risultato del clustering di un dataset con 2 feature dato all’algoritmo di clustering.

Explainable AI in Python

Impatto delle feature sulla qualità dei cluster

Immagine che mostra il risultato del clustering dopo aver rimosso una feature e riaddestrato il modello.

Explainable AI in Python

Impatto delle feature sulla qualità dei cluster

Immagine che mostra la formula per calcolare l’impatto della feature rimossa come differenza tra il silhouette score con entrambe le feature presenti e quello senza la feature.

  • $\text{Impact(}f) > 0$ → contributo positivo di $f$
  • $\text{Impact(}f) < 0$ → $f$ introduce rumore
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 con le feature

Explainable AI in Python

Calcolare l’impatto delle feature sulla qualità dei cluster

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

Calcolare l’impatto delle feature sulla qualità dei cluster

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)

  • Misura quanto combaciano le assegnazioni di cluster

Immagine che mostra due assegnazioni di cluster simili per un dataset.

  • ARI massimo = 1 → allineamento perfetto
Explainable AI in Python

Adjusted Rand Index (ARI)

  • Misura quanto combaciano le assegnazioni di cluster

Immagine che mostra due assegnazioni di cluster diverse per lo stesso dataset.

  • ARI massimo = 1 → allineamento perfetto
  • ARI più basso → maggiore differenza tra clustering
Explainable AI in Python

Importanza delle feature per le assegnazioni di cluster

   

  • Rimuovi le feature una alla volta
  • $\text{Importance}(f) = 1 - \text{ARI (cluster originali, cluster modificati)}$
  • ARI basso → $1 - \text{ARI}$ alto → feature importante
Explainable AI in Python

Importanza delle feature per l’assegnazione ai cluster

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...