Giải thích mô hình không giám sát

Explainable AI trong Python

Fouad Trad

Machine Learning Engineer

Phân cụm

Nhóm các điểm dữ liệu tương tự khi không có nhãn sẵn

Hình minh họa dữ liệu với 2 đặc trưng được chia thành 3 cụm, mỗi cụm có một tâm.

Explainable AI trong Python

Điểm silhouette

  • Đo chất lượng phân cụm
  • Trong khoảng -1 đến 1
    • 1 → cụm tách biệt tốt

Hình minh họa các cụm tách biệt tốt.

Explainable AI trong Python

Điểm silhouette

  • Đo chất lượng phân cụm
  • Trong khoảng -1 đến 1
    • 1 → cụm tách biệt tốt
    • -1 → điểm bị gán sai

Hình minh họa các cụm không tách biệt rõ.

Explainable AI trong Python

Ảnh hưởng của đặc trưng đến chất lượng cụm

Hình minh họa kết quả phân cụm của bộ dữ liệu với 2 đặc trưng đưa vào thuật toán phân cụm.

Explainable AI trong Python

Ảnh hưởng của đặc trưng đến chất lượng cụm

Hình minh họa kết quả phân cụm sau khi bỏ một đặc trưng và huấn luyện lại mô hình.

Explainable AI trong Python

Ảnh hưởng của đặc trưng đến chất lượng cụm

Hình minh họa công thức tính ảnh hưởng của đặc trưng bị loại bằng chênh lệch giữa điểm silhouette khi có đủ đặc trưng và khi bỏ đặc trưng đó.

  • $\text{Impact(}f) > 0$ → $f$ đóng góp tích cực
  • $\text{Impact(}f) < 0$ → $f$ gây nhiễu
Explainable AI trong Python

Bộ dữ liệu Hiệu suất Học sinh

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: mảng chứa các đặc trưng

Explainable AI trong Python

Tính ảnh hưởng đặc trưng lên chất lượng cụm

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 trong Python

Tính ảnh hưởng đặc trưng lên chất lượng cụm

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 trong Python

Adjusted Rand Index (ARI)

  • Đo mức độ khớp giữa các gán cụm

Hình minh họa hai cách gán cụm tương tự cho cùng bộ dữ liệu.

  • ARI tối đa = 1 → căn chỉnh cụm hoàn hảo
Explainable AI trong Python

Adjusted Rand Index (ARI)

  • Đo mức độ khớp giữa các gán cụm

Hình minh họa hai cách gán cụm khác nhau cho cùng bộ dữ liệu.

  • ARI tối đa = 1 → căn chỉnh cụm hoàn hảo
  • ARI thấp → khác biệt cụm lớn hơn
Explainable AI trong Python

Tầm quan trọng đặc trưng cho gán cụm

   

  • Loại bỏ từng đặc trưng
  • $\text{Importance}(f) = 1 - \text{ARI (cụm gốc, cụm đã chỉnh)}$
  • $\text(ARI)$ thấp → $\text(1 - ARI)$ cao → đặc trưng quan trọng
Explainable AI trong Python

Tầm quan trọng đặc trưng cho gán cụm

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 trong Python

Ayo berlatih!

Explainable AI trong Python

Preparing Video For Download...