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 !
Antworten:
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
quelle
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 ".X.ich y β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:
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.
Ä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.
quelle
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 .
quelle