Wie kann ich die Bedeutung verschiedener Eingaben für die Prognose für ein nichtlineares Black-Box-Modell visualisieren?


9

Ich erstelle ein interaktives Prognosetool (in Python) als Hilfe für Prognosen, die in meiner Organisation durchgeführt werden. Bisher war der Prognoseprozess weitgehend vom Menschen gesteuert, wobei Prognostiker die Daten in ihren natürlichen neuronalen Netzen assimilierten und ihr erlerntes Bauchgefühl verwendeten, um Vorhersagen zu treffen. Aus einer Langzeitstudie zur Überprüfung der Prognose und zur Vorhersage der Modellierung habe ich herausgefunden, was Sie erwarten könnten. Unterschiedliche Prognostiker weisen unterschiedliche Vorurteile auf, die Auswirkungen einiger Prädiktoren scheinen überbewertet zu sein und andere wichtige scheinen ignoriert zu werden, und im Allgemeinen ist die Prognoseleistung im Vergleich zu relativ einfachen empirischen Modellen mittelmäßig.

Die Prognosen werden weiterhin manuell sein, aber ich versuche, ein nützliches Werkzeug zu entwickeln, um den Prognostikern eine bessere Quantifizierung der relativen Auswirkungen von Prädiktoren zu ermöglichen. Es gibt auch wichtige Effekte wie saisonale Einflüsse, die oft übersehen werden und die das Tool dem Benutzer hervorheben soll. Ich erwarte von einigen der "erfahreneren" Prognostiker (von denen viele nur geringe formale Kenntnisse der Statistik haben) ein gewisses Maß an Gegenreaktion und Skepsis gegenüber dem Modellierungsprozess. Daher ist die Kommunikation mindestens genauso wichtig und die Modellleistung selbst in Bezug auf Erzielung einer messbaren Verbesserung der Prognosegenauigkeit.

Die Modelle, die ich entwickle, haben eine starke auto-regressive Komponente, die manchmal erheblich durch Ereignisse verändert wird, die in einigen Prädiktoren als Messwerte angezeigt werden, die in Zeiten ohne Ereignis nahe Null liegen. Dies entspricht dem mentalen Modell, das Prognostiker verwenden. Der Schlüsselteil besteht darin, zu demonstrieren, welche der "Ereignis" -Messungen den größten Einfluss darauf haben, die Vorhersage vom automatisch regressiven Wert für eine bestimmte Vorhersage zu entfernen. Ich bilde den Prozess auf diese Weise ab. Der Prognostiker errät seinen besten Schätzwert, das Modell schlägt einen anderen vor und der Prognostiker fragt, warum. Das Modell antwortet so etwas wie "siehe hier, dieser Wert dieses Prädiktors erhöht den Prognosewert im Sommer. Wenn es Winter wäre, würde es sich in die andere Richtung bewegen. Ich weiß, dass es diese anderen Messungen gibt,

Stellen Sie sich nun vor, das Modell wäre eine einfache lineare Regression. Man könnte sich vorstellen, den relativen "Effekt" ereignisbasierter Prädiktoren anzuzeigen, indem der Wert mit dem Modellkoeffizienten multipliziert und als einfaches Balkendiagramm angezeigt wird. Alle Balken der verschiedenen Prädiktoren addieren sich zur Gesamtabweichung vom AR-Wert, und dies zeigt kurz und deutlich diejenigen, die in diesem Fall einen starken Einfluss haben.

Das Problem ist, dass der prognostizierte Prozess einen hohen Grad an Nichtlinearität in den Prädiktoren aufweist, oder zumindest habe ich mit nichtlinearen Black-Box-Algorithmen für maschinelles Lernen (Random Forest und GBM) viel mehr Erfolg gehabt als mit GLMs für dieser Datensatz. Idealerweise möchte ich in der Lage sein, das Modell, das "unter der Haube" arbeitet, nahtlos zu ändern, ohne dass sich die Benutzererfahrung ändert. Daher benötige ich eine allgemeine Methode, um die Bedeutung der verschiedenen Messungen auf einfache Weise zu demonstrieren, ohne einen algorithmischen Ansatz zu verwenden. Mein aktueller Ansatz wird darin bestehen, die Effekte quasi zu linearisieren, indem alle Werte bis auf einen Prädiktor auf Null gesetzt werden, die vorhergesagte Abweichung aufgezeichnet und dann für alle Prädiktoren wiederholt wird, wobei die Ergebnisse im oben genannten Balkendiagramm angezeigt werden. Bei starker Nichtlinearität funktioniert dies möglicherweise nicht so gut.


1
Was hast du gemacht - könntest du ein oder zwei Bilder machen? "Alle Werte außer einem Prädiktor auf Null setzen" - möchten Sie nicht, dass der Gradient um die aktuell besten Werte und nicht um alle 0 herum liegt?
Denis

Antworten:


4

Eine Möglichkeit, den Einfluss von Prädiktoren auf Prognosen zu bewerten, besteht darin, den Gradienten der Ausgabe in Bezug auf die Prädiktoren zu schätzen. Dies kann erreicht werden, indem die partiellen Ableitungen der nichtlinearen Vorhersagefunktion in Bezug auf jeden der Prädiktoren durch endliche Differenzen geschätzt werden.

Idealerweise tun Sie dies an den tatsächlich beobachteten Testeingaben. Beispielsweise können Sie die absoluten Werte der geschätzten Gradienten an allen Testeingaben der letzten 2 Tage mitteln. Die Größe dieses durchschnittlichen Gradienten kann verwendet werden, um die Wichtigkeit der Prädiktoren zu sortieren. (Sie müssen bei der Gradientenschätzung vorsichtig sein, um geeignete Einheiten durch Z-Scoring oder eine solche Methode zu verwenden.) Sie können diese geschätzten Gradienten nach Saison für eine vergleichende Analyse speichern.

Siehe " Wie man individuelle Klassifizierungsentscheidungen erklärt ", von David Baehrens et. al. in JMLR für mehr zu dieser Idee. Das Papier befasst sich mit der Klassifizierung, lässt sich aber auch leicht auf die Regression verallgemeinern.


Das ist fantastisch! Eine sehr nützliche Referenz, die für dieses Problem und andere hilfreich sein wird.
Bogdanovist

2

Haben Sie das Scikit-Learn- Modul in Python ausprobiert ?

Sie können "computer_importance" für die Funktionen seines randomForestClassifier


1
Zuerst dachte ich auch, dass die Berechnung der Merkmalsbedeutung hilfreich sein könnte, aber am Ende ist es ein vergleichsweise schlechter Ansatz, wenn man den vorhergesagten Wert für eine bestimmte Instanz erklären soll. Die Bedeutung von Funktionen liefert menschlichen Experten nur vage Hinweise.
steffen

Abgesehen davon bat das OP um einen
modellunabhängigen

Das Problem bei Kennzahlen mit variabler Wichtigkeit besteht darin, dass sie im Durchschnitt für den gesamten Datensatz gelten, anstatt Ihnen zu sagen, was in einem bestimmten Fall tatsächlich wichtig war.
Bogdanovist

Eigentlich denke ich, dass dies ein modellunabhängiger Ansatz ist. Sie können ihn tatsächlich auf andere Klassifikatoren als zufällige Wälder anwenden. Auf Breimans Website gibt es eine subtile Bemerkung darüber, wie Sie die variable Wichtigkeit für einen einzelnen Fall berechnen können. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (letzter Satz) Ich denke, dass dies noch nicht ausführlich untersucht oder zumindest ausführlich getestet wurde. Die mittlere variable Wichtigkeit ist nicht immer das, was Sie wollen. Zum Beispiel nicht, wenn Sie einem Praktiker helfen möchten, eine Entscheidung in einem Fall zu treffen. Das ist ein wirklich interessantes Thema.
Simone

Es gibt ein interessantes Papier, in dem Breiman auch ein wenig über diese Methode zur logistischen Regression diskutiert: "Statistische Modellierung: Die zwei Kulturen". Eine schöne Lektüre. Der Satz, den ich am meisten mag, lautet: "Meine Definition der Variablenbedeutung basiert auf Vorhersage. Eine Variable kann als wichtig angesehen werden, wenn das Löschen die Vorhersagegenauigkeit ernsthaft beeinträchtigt." Diese Anweisung gilt für jeden Klassifikator, den Sie möglicherweise verwenden.
Simone
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.