SHAP Nedir ve Nasıl Çalışır?
SHAP (SHapley Additive exPlanations), 2017'de Lundberg ve Lee tarafından önerilen, oyun teorisi tabanlı bir model yorumlanabilirlik yöntemidir. Herhangi bir ML modelinin bireysel tahminlerini, her özelliğin katkısını göstererek açıklar. Shapley değerleri kooperatif oyun teorisinden gelir: bir tahmin sonucunun her özelliğe paylaştırılan katkısını, o özelliğin tüm olası alt kümelere dahil edilip çıkarıldığındaki etki ortalamasını alarak hesaplar. Bu yaklaşım teorik tutarlılık, yerel doğruluk ve simetri gibi axiomlara uyduğundan özellik önemi yöntemleri arasında en sağlam matematiksel temele sahip olanlardandır.
Üç SHAP Görselleştirme Türü
📊 Beeswarm / Summary Plot
Tüm örnekler üzerindeki SHAP değerlerini özellik başına nokta bulutu olarak gösterir. Her nokta bir örneğe karşılık gelir; renk özellik değerinin yüksek/düşük olduğunu, yatay konum ise SHAP katkısını gösterir. Küresel özellik önemi ve dağılımını aynı anda kavramak için en pratik görseldir.
💧 Waterfall Plot
Tek bir tahmin için temel değerden başlayarak her özelliğin katkısını adım adım gösterir. Artı katkılar sağa, eksi katkılar sola uzayan çubuklar olarak çizilir. Nihai tahmine nasıl ulaşıldığını adım adım izlemek için bireysel açıklama senaryolarında kullanılır.
🔗 Dependence Plot
Belirli bir özelliğin değeri ile SHAP katkısı arasındaki ilişkiyi gösterir; renk kodlamasıyla en çok etkileşime giren ikinci özelliği ortaya koyar. Modelin o özelliği nasıl yorumladığını — doğrusal mı, eşik değeri var mı — anlamak için kullanılır.
TreeSHAP: Hızlı Hesaplama
Tam Shapley hesaplaması 2^n kombinasyon gerektirdiğinden yüksek boyutlu veri için doğrudan uygulanamaz. TreeSHAP, karar ağacı tabanlı modellerde (XGBoost, LightGBM, RandomForest, CatBoost) Shapley değerlerini polinom zamanda — O(TL²) karmaşıklığıyla — hesaplar; T ağaç sayısı, L yaprak sayısıdır. Bu hız, onlarca değişkenli ve milyonlarca satır içeren gerçek dünya veri setlerinde SHAP'ı pratik kılar. LinearSHAP ise doğrusal modeller için analitik çözüm sunar; birden fazla SHAP değerini topladığınızda tam modelin tahminini elde edersiniz.
Yerel ve Küresel Açıklama
SHAP iki düzeyde içgörü sunar. Yerel açıklama (local explanation), tek bir tahmin için hangi özelliklerin ne kadar katkı yaptığını gösterir: kredi risk modelinde müşterinin gelir seviyesi tahmini -0.15 puan düşürürken geçmiş ödeme sicili +0.4 puan artırabilir. Bu bireysel açıklama, hem müşteriye şeffaf geri bildirim sağlar hem de regülatör gerekliliklerini karşılar. Küresel açıklama (global explanation), tüm veri kümesi üzerindeki ortalama mutlak SHAP değerleri aracılığıyla hangi özelliklerin model kararlarında genel olarak belirleyici olduğunu ortaya koyar — klasik özellik önemi değerlerinin aksine hem yön hem de büyüklük bilgisi içerir.
Kullanım Alanları ve Endüstri Uygulamaları
SHAP, yüksek riskli karar sistemlerinde model şeffaflığı için fiili standart hâline gelmiştir. Finansal hizmetlerde (kredi onayı, dolandırıcılık tespiti) GDPR ve yerel düzenlemeler otomatik kararların açıklanabilir olmasını zorunlu kılar; SHAP bu açıklamayı denetlenebilir ve tutarlı biçimde üretir. Sağlıkta teşhis destek sistemleri hangi biyobelirteçlerin tahmine katkıda bulunduğunu klinisyenlere göstermek için SHAP raporları kullanır. İnsan kaynakları modellerinde (işten ayrılma tahmini, işe alım) özellik katkılarının ayrımcılık denetimi için incelenmesi giderek yaygınlaşmaktadır. Python'da `shap` kütüphanesi scikit-learn, XGBoost, LightGBM ve PyTorch modellerini birkaç satır kodla açıklayabilir.
Sık Sorulan Sorular
- check_circle SHAP ile özellik önemi (feature importance) arasındaki fark nedir?: Geleneksel özellik önemi (örn. RandomForest'ın Gini önemi) yalnızca küresel bir skor verir ve negatif katkıları gizler. SHAP her tahmin için ayrı değer üretir, katkının yönünü (artı/eksi) gösterir ve küresel önemin yanı sıra bireysel açıklama da sunar. Ayrıca SHAP'ın Shapley axiomları tutarlılığı teorik olarak garanti eder.
- check_circle SHAP yalnızca ağaç modelleriyle mi çalışır?: Hayır. TreeSHAP ağaç modellerinde hızlı çalışır; LinearSHAP doğrusal modeller için analitik çözüm sunar. DeepSHAP ve KernelSHAP ise sinir ağları ve kara kutu modeller için genel yaklaşımlar olarak geliştirilmiştir. KernelSHAP model bağımsızdır ama hesaplama maliyeti yüksektir.
- check_circle SHAP değeri negatif olabilir mi?: Evet. Negatif SHAP değeri, o özelliğin modelin tahminini temel değerin (ortalama tahmin) altına çektiğini gösterir. Örneğin kredi risk modelinde düşük gelir özelliği SHAP değerini negatif yaparken yüksek öz sermaye oranı pozitif katkı verir.
- check_circle LIME ile SHAP arasındaki fark nedir?: LIME (Local Interpretable Model-agnostic Explanations) her açıklama için lokal basit bir model (doğrusal) eğitir; bu yaklaşım tutarsız sonuçlar üretebilir ve Shapley axiomlara uymaz. SHAP ise matematiksel olarak daha sağlam, tutarlı ve yeniden üretilebilirdir. SHAP genellikle tercih edilir; LIME'in avantajı metin ve görüntü gibi yapılandırılmamış veri için uyarlanabilmesidir.
- check_circle SHAP büyük veri setlerinde yavaş mıdır?: TreeSHAP, XGBoost veya LightGBM gibi gradient boosting modellerinde milyonlarca örnek için saniyeler içinde hesaplanabilir. Genel KernelSHAP çok sayıda permütasyon gerektirdiğinden büyük veri setinde yavaşlar; bu durumda örneklem alt kümesi (subsample) veya background veri azaltma uygulanır. GPU destekli SHAP kütüphaneleri de geliştirilmektedir.