Erläutern Sie die Ausgabe eines bestimmten Klassifikators für die Funktionen

7

Ist es bei einem binären Klassifikator immer möglich zu erklären, warum er eine Eingabe als positive Klasse klassifiziert hat? Und damit meine ich, wenn wir eine große Anzahl von Funktionen haben, gibt es ein Tool, das sagt: "Für diese Ausgabe waren dies die Funktionen, die am meisten dafür verantwortlich waren, sie als positiv zu kennzeichnen."

Vielen Dank !

mlx
quelle
Sie können eine Seite aus dem LIME-Papier ausleihen und lokal ein Modell anpassen , das interpretierbar ist. logistische Regression.
Emre
Ein Entscheidungsbaum ist sehr präsentabel / interpretierbar.
Hobbes

Antworten:

3

Probieren Sie einige der Beispiele in dieser Bibliothek aus, die versuchen, mithilfe von maschinellem Lernen Black-Box-Modelle für maschinelles Lernen in Python zu verstehen:

https://github.com/TeamHG-Memex/eli5

CalZ
quelle
Habe davon in einem Vortrag bei einer Konferenz gehört. gestern: D. Es wird jedoch versucht, Nicht-Baum-Algen herzustellen. sich selbst zu erklären ist unnötig komplex. Aber das ist eine persönliche Meinung!
Dawny33
Das ist es, wonach ich gesucht habe, außer dass ich momentan Faktorisierungsmaschinen verwende und das leider nicht in ELI5 enthalten ist. Ich werde trotzdem sehen, wie es für die enthaltenen Algorithmen funktioniert, danke!
mlx
@CalZ danke für den Link, es wird beeindruckend sein, es auszuprobieren.
Xformer
2

Es ist schwer, eine sehr gute Antwort auf eine so breite Frage zu geben.

Die Interpretierbarkeit des Modells ist ein großes Thema und hängt normalerweise vom Modell ab. Einfachere Modelle wie logistische Regressionen sind einfacher zu interpretieren als neuronale Netze. Es ist einfach, Dinge wie "Wenn ich Feature um 1 erhöhen kann, erhöht sich die Wahrscheinlichkeit, dass passiert, um ".Xiyβich

Ebenso sind einzelne Entscheidungsbäume leichter zu interpretieren als zufällige Wälder. Einige Leute versuchen jedoch, zufällige Gesamtstrukturen zu interpretieren, indem sie die "Merkmalsbedeutung" berechnen, die auf verschiedene Arten berechnet werden kann. Eine davon ist die Anzahl der Teilungen, die das Merkmal enthalten, im Verhältnis zur Anzahl der geteilten Stichproben.

Sie möchten Ihr Modell als Black Box behandeln und jedes Modell interpretieren können ?

Ich kann mir zwei Möglichkeiten vorstellen:

  1. Manipulieren Sie Ihre Eingaben und sehen Sie anhand Ihres Beispiels, was mit dem Ausgang passiert

Ein typischer Weg besteht darin, die Eingabe zu ändern und die Auswirkungen auf die Modellleistung zu sehen. In Bildern können Sie Teile des Bildes verdunkeln und sehen, welche Teile am meisten zur Genauigkeit beitragen. Dies wird häufig für Faltungs-Neuronale Netze verwendet, die sonst schwer zu interpretieren sind.

Bei numerischen Variablen können Sie jedes Feature auf Null setzen oder etwas Rauschen hinzufügen, um zu sehen, welche Auswirkungen dieses einzelne Feature auf das Ergebnis hat.

Ich habe solche Dinge weit verbreitet gesehen.

  1. Trainiere mit und ohne Funktion

Ähnlich wie beim vorherigen, außer dass Sie mit und ohne die Funktion trainieren und die Auswirkungen auf die Modellgenauigkeit sehen.

Dies hat den zusätzlichen Vorteil, dass Sie nicht über Hyperparameter nachdenken müssen, z. B. wie viel Rauschen Sie wie beim vorherigen Ansatz zu den einzelnen Funktionen hinzufügen. Darüber hinaus können Sie die Auswirkungen mehrerer Funktionen in der Ausgabe besser verstehen, indem Sie sie mit und ohne diese Funktionen ausprobieren.

Ich habe nicht gesehen, dass dieser Ansatz verwendet wird, aber anscheinend wird er auch verwendet, wie eine andere Person antwortete.


Jedenfalls würde ich solche Hacks vermeiden. Die meisten Modelle können irgendwie interpretierbar gemacht werden. Ich habe Leute gesehen, die sogar wiederkehrende neuronale Netze interpretierbar machten. Und wenn Interpretierbarkeit ein Problem darstellt, verwenden Sie einfach ein einfacheres Modell, das einfacher zu interpretieren und zu erklären ist.

Ricardo Cruz
quelle
0

Interessanterweise habe ich noch nichts davon gehört, aber die Korrelationsmatrix zwischen Features und der Zielvariablen gibt Ihnen eine gewisse Vorstellung. Wenn die Korrelation höher ist, haben diese Merkmale höchstwahrscheinlich ein höheres Mitspracherecht bei der Vorhersage des Ziels. Wenn Sie Python verwenden, würde ich Ihnen empfehlen, die Korrelationsmatrix mit Seaborn zu visualisieren. Hier ist Beispielcode 1 .

Xformer
quelle
Dies ist ein Weg, um zu beginnen. Andererseits finden Feature-Auswahlmethoden normalerweise Eingaben heraus, die für die Verallgemeinerung wichtig sind, da sie den gesamten Datensatz betrachten und eine nützliche Ensemble-Ansicht bieten. Was cool wäre, wäre eine Antwort auf diese Frage auf Instanzbasis!
mlx
Stimmen Sie zu, dies könnte sehr hilfreich sein, um mehr robuste Funktionen zu erstellen. Dies ist ein Thread, dem ich mit Sicherheit regelmäßig folgen werde. :)
Xformer