SHAP kernel açıklayıcı

Python ile Açıklanabilir AI

Fouad Trad

Machine Learning Engineer

SHAP kernel açıklayıcı

 

  • Her model için SHAP değerleri çıkarır

    • K-en yakın komşu
    • Sinir ağları
    • Ağaç tabanlı modeller
  • Türe özgü açıklayıcılardan daha yavaştır

SHAP açıklayıcıların, herhangi bir modele uygulanabilen genel açıklayıcılar ve belirli model türleri için optimize edilmiş türe özgü açıklayıcılar olarak ikiye ayrıldığını gösteren görsel.

Python ile Açıklanabilir AI

Kalp hastalığı

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

mlp_clf: kalp hastalığı riskini tahmin eden çok katmanlı algılayıcı

Python ile Açıklanabilir AI

Sigorta ücretleri

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

 

mlp_reg: sigorta ücretlerini tahmin eden çok katmanlı algılayıcı

Python ile Açıklanabilir AI

Kernel açıklayıcı oluşturma

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Modelin tahmin işlevi, # Veri setinin temsili özeti )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Modelin tahmin işlevi, # Veri setinin temsili özeti )
Python ile Açıklanabilir AI

Kernel açıklayıcı oluşturma

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Veri setinin temsili özeti
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Veri setinin temsili özeti
)


Python ile Açıklanabilir AI

Kernel açıklayıcı oluşturma

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  shap.kmeans(X, 10)
)


shap_values_reg = explainer.shap_values(X)
MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  shap.kmeans(X, 10)
)


shap_values_cls = explainer.shap_values(X)
Python ile Açıklanabilir AI

Özellik önemi

MLPRegressor
mean_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X.columns, mean_reg)

Regresyon görevinde özellik önemini gösteren çubuk grafik; sigara ve yaş, ücretleri tahminde en etkili faktörlerdir.

MLPClassifier
mean_cls = np.abs(shap_values_cls[:,:,1]).mean(axis=0)

plt.bar(X.columns, mean_cls)

Sınıflandırma görevinde özellik önemini gösteren çubuk grafik; göğüs ağrısı tipi ve talasemi en etkili faktörlerdir.

Python ile Açıklanabilir AI

Model-özgü yaklaşımlarla karşılaştırma

Doğrusal regresyon
plt.bar(X.columns, np.abs(lin_reg.coef_))

Doğrusal regresyon modeliyle özellik önemini gösteren çubuk grafik; sigara ve yaş, ücretleri tahminde en etkili faktörlerdir.

Lojistik regresyon
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Sınıflandırma görevinde özellik önemini gösteren çubuk grafik; göğüs ağrısı tipi en etkili faktördür.

Python ile Açıklanabilir AI

Hadi pratik yapalım!

Python ile Açıklanabilir AI

Preparing Video For Download...