In eine aktuelle Ausgabe von Technically Speaking haben wir gesehen, wie man aus Text Mining abgeleitete Variablen in ein Vorhersagemodell integrieren kann, um die Modellleistung zu verbessern. (Wenn Sie die Präsentation noch nicht gesehen haben, sollten Sie dies vielleicht tun, bevor Sie weiterlesen.) Die Fallstudie konzentrierte sich mehr auf das Text-Mining als auf die prädiktive Modellierung. Schauen wir uns nun zwei Hauptmodellierungsschritte an, die nicht besprochen wurden: nämlich Validierung des Modells und Bewertung neuer Beobachtungen.
Modell Bestätigung
Bei der Vorhersagemodellierung ist es wichtig, die Genauigkeit des Modells zu testen, bevor es zur Generierung von Vorhersagen verwendet wird. Wir möchten sicherstellen, dass unser Modell nicht „überfit“ ist, indem es die Daten, auf denen es trainiert wurde, genau erfasst, aber ungenaue Vorhersagen für Daten generiert, die es zuvor noch nicht gesehen hat. Ein tolles Meme, das das Konzept der Überanpassung einfängt, kursiert schon seit einiger Zeit im Internet.

Eine Möglichkeit, eine Überanpassung zu überprüfen, besteht darin, eine Teilmenge unserer Daten beiseite zu legen oder „zurückzuhalten“, das Modell anhand der verbleibenden Daten zu trainieren und das Modell dann anhand der zurückgehaltenen Menge zu testen. Wir messen die Vorhersageleistung des Modells sowohl anhand der Trainings- als auch der Holdout-Daten, und wenn wir einen starken Abfall der Genauigkeit von Trainings- zu Testsätzen feststellen, haben wir Hinweise darauf, dass unser Modell übergeeignet ist.
Wir haben dieses Holdout-Validierungsverfahren tatsächlich beim Aufbau des Bootstrap-Forest-Modells in der Fallstudie verwendet, obwohl wir es beschönigt haben. Nachfolgend finden Sie eine Tabelle mit Modellanpassungsmaßen aus dem Validierungsverfahren. JMP Bietet eine Reihe von Maßen, anhand derer Sie die Leistung von Training und Testsätzen vergleichen können (wenn Sie neugierig sind, lesen Sie mehr darüber). Hier ); In der Präsentation haben wir Entropy RSquare und Misclassification Rate für die Testgruppe gesehen. Keine der Messungen zeigt einen starken Leistungsabfall vom Training bis zum Test (obwohl es bei einigen Messungen leichte Rückgänge gibt, was nicht ungewöhnlich ist), daher kommen wir zu dem Schluss, dass unser Modell nicht übergeeignet ist.

Möglicherweise fällt Ihnen etwas auf: In dieser Tabelle gibt es auch eine Spalte „Validierung“. Um was geht es? Tatsächlich teilen wir unsere Daten hier in drei Teilmengen auf: Training, Validierung und Test. In unserem Bootstrap-Forest-Modell wird der Trainingssatz verwendet, um die besten Aufteilungen in jedem Entscheidungsbaum zu finden, während der Validierungssatz verwendet wird, um zu entscheiden, wann in jedem Baum keine neuen Aufteilungen mehr vorgenommen werden sollen und wann keine neuen Bäume mehr erstellt werden sollen. Das heißt, der Modellanpassungsalgorithmus läuft weiter, solange jede neue Aufteilung oder jeder neue Baum zu einer verbesserten Leistung des Validierungssatzes führt. Sobald die Leistung des Validierungssatzes abnimmt, stoppt der Algorithmus. (Erinnern Sie sich an die Entropie-RSquare-Statistik? Das ist die in diesem Prozess verwendete Validierungsstatistik.) Sobald der Algorithmus stoppt, wird die Genauigkeit des resultierenden Modells mithilfe des Testsatzes bewertet. In JMP Pro , all dies geschieht automatisch durch Angabe einer Validierungsspalte im Modellspezifikationsfenster, wie Sie in gesehen haben die Präsentation .
Nicht alle Modelle erfordern eine solche dreiteilige Validierung. Es ist nur bei Modellen erforderlich, die ein iteratives Anpassungsverfahren und einen separaten Datenteilsatz (den Validierungssatz) verwenden, um zu entscheiden, wann die Anpassung beendet werden soll. Für Modelle, die kein iteratives Anpassungsverfahren beinhalten – zum Beispiel die logistische Regression, die wir hier hätten verwenden können – werden nur Trainings- und Testsätze benötigt.
JMP Pro bietet eine einfache Möglichkeit, unsere Daten für die Modellvalidierung aufzuteilen. Wir haben das Dienstprogramm „Validierungsspalte erstellen“ verwendet, das eine zufällige oder pseudozufällige Stichprobe (ohne Ersatz) unserer Daten durchführt, um jede Teilmenge zu erstellen, wobei die Teilmengen in einer Validierungsspalte wieder in unserer Datentabelle aufgezeichnet werden.

Hier haben wir geschichtete Zufallsstichproben verwendet, um unsere Teilmengen zu erstellen, was im Absatz oben im zweiten Screenshot erläutert wird. Bei einigen unserer kategorialen Variablen gab es ein starkes Ungleichgewicht, und wir wollten eine Situation vermeiden, in der beispielsweise nur wenige oder keine der schwerwiegenden Verstöße im Testsatz landeten. Dies wäre problematisch, da wir sehen müssen, wie sich das Modell bei schwerwiegenden Verstößen verhält, um ein gültiges Maß für die Genauigkeit des Modells zu erhalten.
Im interaktiven Verteilungsbericht unten können Sie sehen, dass wir über eine übereinstimmende Darstellung jeder Schichtungsspalte in unseren drei Datenteilsätzen verfügen. Bei fast 40.000 Datenzeilen besteht eine gute Chance, dass wir auch ohne Stratifizierung zurechtgekommen wären, aber es war keine schlechte Idee, auf Nummer sicher zu gehen. Die Schichtung ist eines von mehreren verschiedenen pseudozufälligen Stichprobenverfahren, die das Dienstprogramm „Make Validation Column“ implementieren kann (siehe Hier für mehr).

Das Dienstprogramm „Make Validation Column“ hat eine Spalte mit dem Namen „Validation“ wieder in unsere Datentabelle eingefügt (die auf der Präsentationsseite „Technical Speaking“ zum Download verfügbar ist), und wir haben diese dann in die Bootstrap Forest-Plattform eingespeist, um den Validierungsprozess auszulösen. Wir haben keine Hinweise auf eine Überanpassung gefunden. Unter der Annahme, dass wir mit der Gesamtgenauigkeit des Modells zufrieden sind, können wir es verwenden, um Vorhersagen für neue Beobachtungen zu generieren („zu bewerten“).
Neue Beobachtungen sammeln
Stellen Sie sich vor, wir haben gerade eine Gruppe von Verstößen gegen die Bauvorschriften verhängt und möchten jedem einzelnen Verstoß eine finanzielle Strafe zuweisen, die wir zur Gewichtung jedes verhängten Strafbetrags in unseren Finanzprognosen verwenden. Beispielsweise würde eine verhängte Strafe von 1.000 US-Dollar für einen Verstoß mit einer Strafwahrscheinlichkeit von 0,7 eine vorhergesagte Zahlung von 700 US-Dollar zur Folge haben. Natürlich wird der Beklagte am Ende entweder 1.000 $ oder 0 $ zahlen, aber im Durchschnitt über viele Verstöße sollte die Summe unserer Prognosen ungefähr unserem endgültigen Umsatz entsprechen (wie wir hoffen). Wir erhalten die Strafwahrscheinlichkeiten aus unserem Bootstrap-Forest-Modell, aber dieses Modell hat als Eingabe die Ergebnisse aus der Themenanalyse verwendet. Daher müssen wir unsere neuen Verstöße durch beide Modelle laufen lassen. Dies ist keine ungewöhnliche Praxis, bei der die Ausgabe eines Modells als Eingabe für ein anderes Modell verwendet wird.
JMP können Modelle als Spaltenformeln zurück in die ursprüngliche Datentabelle ausgeben (unter den roten Dreiecksoptionen in den Modellierungsplattformen) und sie werden auf allen neuen Daten ausgeführt, die wir der Tabelle hinzufügen. Um neue Beobachtungen zu bewerten, fügen wir einfach die neuen Verstöße zu unserer Tabelle hinzu und die Themenbewertungen und Strafwahrscheinlichkeiten werden automatisch anhand der Spaltenformeln berechnet. Anschließend erstellen wir eine neue Spaltenformel, die die Strafwahrscheinlichkeiten mit den erhobenen Strafbeträgen multipliziert, und erhalten unsere voraussichtlichen Zahlungen. Nachfolgend finden Sie Prognosen für 1.000 neue Verstöße. Wir gehen davon aus, dass uns diese Umsätze etwa 1,84 Mio. US-Dollar einbringen werden, obwohl etwa ein Drittel dieses Gesamtbetrags nur auf die 100 größten prognostizierten Zahlungen in dieser positiven Phase entfällt. Die Genauigkeit unserer Prognose wird zu einem großen Teil davon abhängen, was mit diesen Verstößen passiert.
(Nebenbemerkung: Wir haben die Point-and-Click-Methode zum Bewerten von Beobachtungen beschrieben, aber die Bewertung könnte durch Skripting in JSL (JMP Scripting Language) leicht automatisiert werden. Das Modell könnte auch außerhalb von JMP in einer Sprache wie Python oder JavaScript bereitgestellt werden, wobei JMP Pro die Möglichkeit hat, Bewertungscode in anderen Sprachen zu schreiben.)
Und das wirft ein Schlaglicht auf die vielleicht wichtigste Frage überhaupt: Wie gut sind unsere Prognosen wirklich? Wir haben Anpassungsstatistiken wie Entropy RSquare, um die Modellleistung zu erfassen, aber was wir Wirklich Wichtig ist die Genauigkeit der finanziellen Prognosen. In der Praxis hätten wir dies im Rahmen der Modellbildungsphase bewertet, indem wir eine Umsatzprognose für unser Testset erstellt und diese mit dem tatsächlich beobachteten Umsatz verglichen hätten. Darauf haben wir hier verzichtet, da die vorliegenden Daten leider nicht die ursprünglich verhängten Strafbeträge enthielten, sondern nur die endgültigen Beträge nach der Urteilsverkündung. (Im obigen Bewertungsbeispiel haben wir uns nur einige ursprünglich erhobene Strafbeträge für Erläuterungszwecke vorgestellt.)
Ein Abschiedsgedanke
Obwohl wir unser Ziel erreicht haben – ein Modell, das neuen Verstößen die Wahrscheinlichkeit einer finanziellen Strafe zuordnet – ist ein Projekt wie dieses nie wirklich abgeschlossen. Im Laufe der Zeit können neue Arten oder Trends bei Verstößen entstehen, neue Richtlinien können das Verhältnis zwischen Verstoßmerkmalen und Strafzahlungen verändern, oder die Wahrscheinlichkeit von Strafzahlungen könnte sich einfach im Laufe der Zeit aufgrund nicht gemessener Faktoren wie Durchsetzungskapazität oder Nachsicht ändern. Die zeitlichen Trends in der folgenden Grafik könnten auf Letzteres hinweisen. (Die Linienbreite stellt die Gesamtzahl der Verstöße pro Jahr dar, was deutlich macht, dass wir für 2020 noch nicht über genügend Daten verfügen, um dem plötzlichen Anstieg in diesem Jahr vertrauen zu können.)

Aus vielen möglichen Gründen kann es sein, dass unser Modell mit der Zeit ungenauer wird. Wir sollten unsere Themenanalyse- und Bootstrap-Forest-Modelle regelmäßig überarbeiten und dabei die neuesten Daten einbeziehen (und möglicherweise ältere Daten verwerfen), um sicherzustellen, dass unsere Vorhersagen korrekt bleiben.