Okullar için Robotik ve Mühendislik · anaokulundan liseye

Bölüm 6 · Modeli ölçmek ve açıklamak · Ders 27

SHAP: tahmini özelliklere paylaştırmak

Pil ömrü tahmininde her özelliğin adil payı

Veri. Bir teslimat robotunun modeli, görevden önce pil ömrünü dakika olarak tahmin ediyor. Dört girdi var: yük (0–10 kg), hız (0,2–2 m/s), ortam sıcaklığı (−5–40 °C) ve yol eğimi (%0–15). 200 eski görev arka planı oluşturuyor. 9 numaralı görevde (8,1 kg yük, 1,6 m/s, 4 °C, %5 eğim) model "pil 65,6 dakika dayanır" diyor; ortalama bir görevden yarım saat kısa. Operatör bunun nedenini görmek istiyor.

görev 9: model 65,6 dakika diyorneden? tahmini dört özelliğe paylaştıralım
1 / 34
shap.pypython
  1. import numpy as np
  2. from math import factorial as fact
  3. rng = np.random.default_rng(6)
  4. lo, hi = [0, 0.2, -5, 0], [10, 2.0, 40, 15] # yük, hız, sıcaklık, eğim
  5. bg = rng.uniform(lo, hi, (200, 4)) # 200 eski görev
  6. def f(z): # pil ömrü (dakika)
  7. load, speed, temp, slope = z
  8. return (160 - 3 * load - 20 * speed
  9. - .08 * (temp - 20) ** 2 - 1.5 * slope
  10. - .25 * load * slope) # etkileşim
  11. x, mu = np.array([8.1, 1.6, 4, 5]), bg.mean(0) # görev 9
  12. def v(S): # koalisyon değeri
  13. keep = [S >> j & 1 for j in range(4)]
  14. return f(np.where(keep, x, mu)) # eksik = ortalama
  15. phi = np.zeros(4)
  16. for S in range(16): # 16 koalisyon
  17. k = bin(S).count("1")
  18. for i in range(4):
  19. if not S >> i & 1:
  20. w = fact(k) * fact(3 - k) / fact(4)
  21. phi[i] += w * (v(S | 1 << i) - v(S)) # eklemenin getirisi
  22. print("taban", v(0), "katkılar", phi.round(1)) # base, contributions
  23. print(v(0) + phi.sum(), "=", f(x)) # toplam = tahmin

Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.

Bu dersin kodu verisini kendi içinde üretir; indirilecek dosya yok. Kodu yine de aşağıda tarayıcında çalıştırabilirsin.

Kodu tarayıcıda çalıştırPython · NumPy · matplotlib · Pyodide

Python ve NumPy bu sayfada, tarayıcında çalışır (Pyodide). Kodu değiştirip yeniden çalıştırabilirsin; dersin veri setleri çalışma klasöründe hazır. Kod matplotlib kullanırsa grafikler çıktının altında görünür, yazdığı dosyalar (ör. egitim_gecmisi.csv) indirilebilir.

shap.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. Taban değer: hiçbir özellik bilinmiyorken tahmin, yani dört özelliğin de arka plan ortalamasında olduğu durum.
  2. Bir koalisyon, bilinen özelliklerin kümesidir; eksikler ortalamayla doldurulur. 4 özellik için 2⁴ = 16 koalisyon var.
  3. Bir özelliğin SHAP değeri, onu her koalisyona eklemenin getirdiği değişimin ağırlıklı ortalamasıdır; ağırlık |S|!(n−|S|−1)!/n!.
  4. Katkılar tam toplanır: taban + katkılar = tahmin. Doğrusal modelde katkı tam olarak w·(x − ortalama).
  5. Şunu dene: örnek numarasını değiştir; şelale yeniden kurulur. Modeli 1 (doğrusal) yap: yük–eğim etkileşimi kalkar.

Neden önemli

SHAP, kara kutu modelleri açıklamanın en yaygın yoludur: kredi kararlarından tıbbi tahminlere, arıza tahmininden otonom araç kayıtlarına kadar. Robotikte bir modelin neden "pil yetmez" ya da "motor arızalanacak" dediğini mühendise gösterir. Gerçek kütüphaneler çok özellikte tüm koalisyonları denemez; yaklaşık hesaplar.

ESOF 323, 11. hafta: robotlarda derin öğrenme →
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç