[PYTHON] Ich habe SHAPs Zeitung gelesen

Einführung

Ich habe nach SHAP gesucht.

Verweise

  1. Das Papier, in dem SHAP vorgeschlagen wurde https://arxiv.org/abs/1705.07874

Ich konzentriere mich auf den Artikel 1, der in den Referenzen gezeigt wird, und erkläre, was SHAP unter Bezugnahme auf 6, 7 und 8 ist. Da die Erklärung der Begriffe in der Arbeit 1 abstrahiert ist, ist es leichter zu verstehen, wenn man sich die konkreten Beispiele der Arbeit 7 ansieht.

Überblick

  1. Wie ist es? Vorgeschlagene SHAP-Werte (SHapley Additive ExPlanations), ein integrierter Rahmen für die Interpretation von Prognosen.

  2. Was ist erstaunlich im Vergleich zu früheren Forschungen? Es gibt viele Methoden zum Definieren der Wichtigkeit von Merkmalsgrößen, aber die Beziehungen zwischen den Methoden wurden nicht gut verstanden. Die in diesem Artikel vorgeschlagene Methode kann eine einzigartige Lösung finden, die auf einer bestimmten Theorie basiert, und die neue Klasse integriert sechs vorhandene Methoden.

  3. Wo ist das "Kimo" von Technologie und Methode? (1) Eine neue Klasse von Skalen für die Wichtigkeit additiver Merkmale wurde identifiziert. (2) Es wurde gezeigt, dass diese Klasse eine einzigartige Lösung und einige wünschenswerte Eigenschaften aufweist.

Hauptpapier

Angenommen, das Modell, das Sie beschreiben möchten, ist $ f (\ boldsymbol {x}) $.

y = f(\boldsymbol{x})

Das erklärbare Modell sei $ g (\ boldsymbol {x '}) $. Bei der unten gezeigten Methode wird die Merkmalsmenge zur Erklärung des erwarteten $ f (\ boldsymbol {x}) $, das die Ausgabe ist, für jede Eingabe $ \ boldsymbol {x} $ und nicht die Bedeutung der Merkmalsmenge für die gesamten Daten angegeben. Finden Sie die Bedeutung von. Solche Methoden werden als lokale Methoden bezeichnet. Beispielsweise handelt es sich bei LIME um lokale Methoden.

Erklärbare Modelle verwenden häufig Kartenfunktionen, um die Eingabe $ \ boldsymbol {x} $ des ursprünglichen Modells in die Eingabe $ \ boldsymbol {x '} $ in das erklärbare Modell zu vereinfachen.

\boldsymbol{x} = h_{\boldsymbol{x}}(\boldsymbol{x}')

Hier ist die Map-Funktion eine Funktion, die vom Eingabewert abhängt, da sie den Index $ \ boldsymbol {x} $ hat. Diese Vereinfachung übersetzt es in ein Eingabeformat von $ \ boldsymbol {x '} $, mit dem Sie interpretieren können, welcher Teil der Eingabe $ \ boldsymbol {x} $ des Originalmodells zur Vorhersage beiträgt. Wenn die Eingabe beispielsweise Bag of Words (BOW) ist und Sie wissen möchten, welche Wörter zur Vorhersage beitragen, müssen Sie nur das Vorhandensein oder Fehlen des Wortes in die Eingabe $ \ boldsymbol {x} $ eingeben. Vereinfachung ist daher die Operation des Umwandelns eines Frequenzwerts ungleich Null in 1. Außerdem kann die vereinfachte Eingabe $ \ boldsymbol {x '} $ mit $ h_ {\ boldsymbol {x}} $ auf die ursprüngliche Eingabe zurückgesetzt werden. Dies liegt daran, dass $ h_ {\ boldsymbol {x}} $ Informationen zur lokalen Eingabe $ \ boldsymbol {x} $ enthält.

Vereinfachung: [1, 2, 1, 1, 2, 1, 1, 0, 0, 0] \rightarrow [1, 1, 1, 1, 1, 1, 1, 0, 0, 0] \\
h_{\boldsymbol{x}}: [1, 1, 1, 1, 1, 1, 1, 0, 0, 0] \rightarrow [1, 2, 1, 1, 2, 1, 1, 0, 0, 0] = \boldsymbol{x} \odot \boldsymbol{x'}

Wenn die Eingabe ein Bild ist und Sie wissen möchten, welcher Teil des Bildes zur Vorhersage beiträgt, patchen Sie die benachbarten fortlaufenden Teile und drücken Sie das Vorhandensein oder Fehlen des Patches als 1/0 aus. Wenn Sie mit $ h_ {\ boldsymbol {x}} $ zum ursprünglichen Eingabebereich zurückkehren, sollte der Patch-Teil (1 Teil) in das Originalbild konvertiert werden. Der andere Teil als der Patch (0 Teil) wird mit einer geeigneten Hintergrundfarbe zurückgegeben, die später erläutert wird. Für die Erklärung dieses Bereichs ist der Blog von Referenz 8 sehr hilfreich.

Lokale Methoden sind $ g (\ boldsymbol {z '}) \ simeq f (h_ {\ boldsymbol {x}} (\ boldsymbol { x} ')) Bestimmen Sie das Gewicht von $ g $ so, dass es $ ist.

In diesem Artikel werden wir ein erklärbares Modell mit einer Methode namens Additive Feature Attribution Methods erstellen. Die Vereinfachung beschränkt sich auf die Konvertierung in binäre Variablen. Daher ist das erklärbare Modell eine lineare Funktion von binären Variablen.

g(z') = \phi_0 + \sum_{i=1}^M\phi_i z_i'

Wobei $ z '\ in \ {0,1 \} ^ M $ ein vereinfachtes Merkmal ist und $ \ phi_i \ in \ mathbb {R} $ ein Koeffizient ist, der den Effekt des Merkmals darstellt. In diesem Modell wird der Effekt jedes Features durch $ \ phi_i $ dargestellt, und die Effekte aller Features werden addiert, um die Ausgabe des Originalmodells zu approximieren.

Der Koeffizient $ \ phi_i $ kann eindeutig bestimmt werden, um die folgenden Bedingungen zu erfüllen.

  \begin{aligned}
  f(\boldsymbol{x}) = g(\boldsymbol{x}') &= \phi_0 + \sum_{i=1}^M\phi_i x_i' \\
  \boldsymbol{x} &= h_\boldsymbol{x}(\boldsymbol{x}') \\
  \end{aligned}
  x' = 0 \Rightarrow\phi_i=0

$ f_x (\ boldsymbol {z} ') = f (h_ \ boldsymbol {x} (\ boldsymbol {z}')) $ und $ z_i '= 0 $ bedeutet $ \ boldsymbol {z}' Ich werde \ backslash i $ schreiben. Für zwei beliebige Modelle $ f, f '$

  f_\boldsymbol{x}'(\boldsymbol{z}') -   f_\boldsymbol{x}'(\boldsymbol{z}'\backslash i)
  \geq f_\boldsymbol{x}(\boldsymbol{z}') -   f_\boldsymbol{x}(\boldsymbol{z}'\backslash i) \ \ \mathrm{for \ all \ inputs } \ \boldsymbol{z}' \in \{0,1\}^M

Wenn gilt, gilt $ \ phi_i (f ', \ boldsymbol {x}) \ geq \ phi_i (f, \ boldsymbol {x}) $. Dies erfordert, dass $ \ phi_i $ ebenfalls zunimmt oder gleich bleibt, wenn das Modell so geändert wird, dass der Grenzbeitrag des Merkmals $ i $ zunimmt oder gleich bleibt (unabhängig von anderen Merkmalen). Ich bin.

Es ist bekannt, dass das einzige erklärbare Modell durch Auferlegen der obigen drei Bedingungen bestimmt werden kann.

\phi_i(f, \boldsymbol{x}) = \sum_{\boldsymbol{z}'\subseteq \boldsymbol{x}'}\frac{|\boldsymbol{z}'|!(M-|\boldsymbol{z}'|-1)!}{M!}[f_\boldsymbol{x}(\boldsymbol{z}')-f_\boldsymbol{x}(\boldsymbol{z}'\backslash i)]

Hier|\boldsymbol{z}'|Ist1Die Anzahl der Zutaten, die sind\boldsymbol{z}' \subseteq \boldsymbol{x}Ist\boldsymbol{x}'Alle Nicht-Null-Komponenten-Teilmengen von\boldsymbol{z'}ベクトルを表しています。これIst combined cooperative game theory の結果から得られるもので、&\phi_i&Ist下記のShapley Values と呼ばれるものに一致しています。

\phi_i = \sum_{\mathcal{S}\subseteq \mathcal{N}\backslash i}\frac{1}{\frac{N!}{S!(N-S-1)!}}\left( v\left(\mathcal{S}\cup\{i\}\right) - v\left(\mathcal{S}\right) \right)

HierS=|\mathcal {S}|N=|\mathcal {N}|vIst eine Utility-Funktion und die Standardisierungskonstante ist\mathcal{N} \backslash iDie Anzahl der zu sortierenden Muster.

Aus den obigen Ergebnissen wurde herausgefunden, dass die Zuordnungsmethoden für additive Merkmale für ein gegebenes $ h_ \ boldsymbol {x} $ eindeutig sind. Umgekehrt werden Indikatoren, die nicht auf Shapley-Werten basieren, als unerwünscht angesehen, da sie nicht die drei Bedingungen aufweisen, die für die Bedeutung von Merkmalen gelten sollten.

SHAP (SHapley Additive exPlanation) Values

Betrachten Sie den SHAP-Wert als einheitliches Maß für die Bedeutung von Features. Dies ist eine Annäherung des ursprünglichen Modells $ f $ in der Shapley-Wertegleichung an eine bedingte Erwartungsfunktion.

f_\boldsymbol{x}(\boldsymbol{z}') \equiv f(h_\boldsymbol{x}(\boldsymbol{z}')) \rightarrow E[f(\boldsymbol{z})|z_S] \\

E[f(\boldsymbol{z})|z_S]Zunächst der IndexSIst\boldsymbol{z}'Repräsentiert den Index des Nicht-Null-Elements von.z_SIst、確率変数\boldsymbol{z}Gegen den IndexSGeben Sie die entsprechende Komponente einxEs bedeutet, es mit dem Wert von zu fixieren. Zum Beispiel\boldsymbol{z}'=[1,1,0,0,...]Wenn,S=\\{1,2\\}Nächster,E[f(\boldsymbol{z})|z_S]=E[f(\boldsymbol{z})|z_{1,2}]=E[f(\boldsymbol{z})|z_1=x_1, z_2=x_2]Es wird sein.

Erklären Sie, warum Sie es durch eine erwartete Funktion ersetzen müssen. Die Zuordnungsfunktion $ h_ \ boldsymbol {x} (\ boldsymbol {z} ') = z_S $ ist eine Operation, die Features, die nicht im Index $ S $ enthalten sind, strikt entfernt. Dies liegt daran, dass es beim Zuordnen vom Eingabebereich des erklärbaren Modells zum ursprünglichen Feature-Bereich möglicherweise sinnvoll ist, den nicht im Index $ S $ enthaltenen Teil durch einen anderen Wert zu ersetzen. Weil es gibt. Sollten im Fall eines Bildes beispielsweise alle Teile, die nicht dem Patch entsprechen, durch 0 ersetzt werden? Oder sollte es durch 255 ersetzt werden? .. Andererseits kann im Fall einer Mehrfachregressionsanalyse der Fehler der Merkmalsmenge durch 0 ersetzt werden, da das Entfernen des Ausdrucks der Merkmalsmenge aus dem Modell dem Setzen der Merkmalsmenge auf 0 entspricht, aber die meisten Modelle sind so. Fehlende Werte können nicht auf natürliche Weise behandelt werden. Daher macht die Zuordnungsfunktion den Teil, der nicht im Index $ S $ enthalten ist, nicht zu einem fehlenden Wert, sondern ordnet den Wert zufällig entsprechend der Verteilung der Daten zu. Dadurch kann das Modell Daten eingeben. Dies macht den vorhergesagten Wert $ f $ des Modells zu einer erwarteten Funktion von $ z_S $ abhängig.

Die Berechnung des definierten SHapley-Werts ist schwierig, da er viel Geld kostet. ($ \ Sum_ {\ boldsymbol {z} '\ subseteq \ boldsymbol {x}'} $ ist die exponentielle Reihenfolge). Sie können die SHAP-Werte jedoch approximieren, indem Sie die Erkenntnisse der Attributionsmethoden für additive Features kombinieren. Verwenden Sie die Funktionsunabhängigkeit und Modelllinearität, wenn Sie Annäherungen vornehmen.

\begin{aligned}
E[f(\boldsymbol{z})|z_S] =& E[f(\boldsymbol{z})|z_S]\\
=& E_{\bar z_S}[f(z_S, \bar z_S)] \because \mathrm{Unabhängige Merkmalsmenge} \\
=& f(z_S, E[\bar z_S]) \because \mathrm{Das Modell ist linear}
\end{aligned}

In der Arbeit werden sechs Methoden als Approximationsergebnis von SHAP gezeigt, was bedeutet, dass diese Methoden integriert sind.

Shapley sampling values Das Papier ist hier. Wegen Anklage aufgegeben.

Kernel SHAP

Kernel SHAP wird in 5 Schritten berechnet.

Der SHAP-Kernel wird durch den folgenden Ausdruck definiert:

\pi_\boldsymbol{x}(\boldsymbol{z}') = \frac{M-1}{_MC_{|\boldsymbol{z}'|}|\boldsymbol{z}'|(M-|\boldsymbol{z}'|)}

Lösen Sie das Optimierungsproblem mit einer gewichteten Verlustfunktion.

L(f, g, \pi_\boldsymbol{x}) = \sum_{\boldsymbol{z}'\in Z}\left[ f(h_\boldsymbol{x}(\boldsymbol{z}')) - g(\boldsymbol{z}') \right]^2 \pi_\boldsymbol{x}(\boldsymbol{z}')

Linear SHAP

Wenn im linearen Modell $ f (\ boldsymbol {x}) = \ sum_ {j = 1} w_j x_j + b $ die Merkmale unabhängig sind, lautet der SHAP-Wert wie folgt. Die Ableitung ist im Anhang in diesem Dokument beschrieben.

\begin{aligned}
\phi_0(f, \boldsymbol{x}) &= b \\
\phi_i(f, \boldsymbol{x}) &= w_i(x_i - E[x_i])
\end{aligned}

Low-Order SHAP (Ich weiß nicht wovon du sprichst) Selbst im Fall einer linearen Regression muss bei Verwendung von Kernel SHAP nur $ \ mathcal O (2 ^ M + M ^ 3) $ berechnet werden, sodass es effizienter ist, eine Näherung zu erstellen, die die Merkmale unabhängig macht (diese Näherung ist Low-). SHAP bestellen?).

Max SHAP Es heißt, dass es angehängte Materialien gibt, aber nicht? Also ich weiß es nicht. Den Rezensenten wird geschrieben, dass es falsch ist.

Deep SHAP Es wird behauptet, dass SHAP für die dichte Schicht und die Maxpool-Schicht berechnet werden kann, und es bedeutet, dass SHAP durch Rückausbreitung berechnet werden kann (ist dies im nichtlinearen Teil möglich?).

abschließend

Der Entscheidungsbaum kann SHAP effizient berechnen. Mit LightGBM und Xgboost können Sie SHAP problemlos mit der Bibliothek in Referenz 4 ausgeben.

Recommended Posts

Ich habe SHAPs Zeitung gelesen
Ich sehe, ich werde den UNIX-Prozess lesen
Ich habe die Implementierung von range gelesen (Objects / rangeobject.c)
Ich habe die Varianten von UKR gelesen und implementiert
Lesen Sie die OpenCV-Dokumentation
Ich habe die Körner gezählt
Ich habe die Chainer-Referenz gelesen (von Zeit zu Zeit aktualisiert).
Ich habe den Gerätebaum untersucht
Lesen Sie das Keras Mnist-Beispiel
Ich habe vom Terminal getwittert!
Ich habe versucht, die Qiita-API zu berühren
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe die Python-Quelle heruntergeladen
Ich möchte die HTML-Version der OpenCV 3.1-Version "OpenCV-Python Tutorials" lesen
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
sphinx-Lesen Sie die Docs-Integration für Apidoc
Ich habe mich im Labyrinth verlaufen
Ich habe die Naro-Roman-API 2 ausprobiert
Ich habe die IoT-Plattform "Rimotte" installiert.
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Führen Sie Pylint aus und lesen Sie die Ergebnisse
Ich habe an der ISUCON10-Qualifikationsrunde teilgenommen!
Papier: Intrazerebrale Verarbeitung von Musik
Lesen des SNLI-Datensatzes
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Lassen Sie Python die Befehlsausgabe lesen
Ich habe versucht, das Wahrscheinlichkeitsintegral (I zu Integral) zu berechnen.
Ich habe PEP 613 (Explicit Type Aliases) gelesen.
Ich habe untersucht, wie das Zielfernrohr aussieht
Ich mochte den Tweet mit Python. ..
Ich habe PEP 612 (Parameter Specification Variables) gelesen.
Ich habe die neuartige API von Naruro ausprobiert
[Python] Lesen Sie den Flask-Quellcode
Ich habe versucht, den Ball zu bewegen
Ich habe den Stack in Python geschrieben
Ich habe versucht, den Abschnitt zu schätzen.
Ich kenne den Wertfehler nicht
Ich habe die Gerätebaumüberlagerung untersucht
Ich habe den Betrag der Schenkungssteuer überprüft
Ich habe das Sudachi-Synonymwörterbuch mit Pandas gelesen und versucht, nach Synonymen zu suchen