Wurden Sie schon einmal damit beauftragt, vorherzusagen, wer in Ihrem Unternehmen seine Dienste kündigen wird? Oder welche Patienten werden ihre Medikamente absetzen? Oder welche Personen werden vielleicht die ersten Anwender Ihres neuen Produkts sein? Sie können diese Geschäftsfragen mit derselben Methode beantworten, indem Sie Daten sorgfältig vorbereiten und verschiedene Modelle erstellen, um sie zu vergleichen und anhand spezifischer statistischer Kriterien das Beste auszuwählen. Kinderleicht, oder? Vielleicht.
Was aber, wenn Sie den Hauptfaktor für eine Vorhersage ermitteln müssen? einzel Person? Einige Modellierungsalgorithmen können dies nicht einfach beantworten. Herkömmliche Regressionsmodelle eignen sich hervorragend zur Beantwortung dieser Art von Fragen, da es für jede Parameterschätzung eine Gleichung mit Koeffizienten gibt. Was ist mit baumbasierten Algorithmen oder noch komplizierteren Modellen wie neuronalen Netzen? Die Erklärung einer einzelnen Vorhersage ist komplexer und oft schwer zu erklären. Und obwohl einer dieser komplexeren Algorithmen in vielen Fällen zuverlässiger für die Vorhersage eines Ergebnisses ist, wird Ihre harte Arbeit von den Beteiligten oft zunichte gemacht.
Was wäre, wenn Sie das Beste aus beiden Welten bekommen könnten? Das leistungsstärkste Modell UND eine Möglichkeit, Ihren Stakeholdern die einzelnen vorhergesagten Wahrscheinlichkeiten einfach zu erklären, damit Ihre Arbeit eine bessere Chance hat, als Geschäftstool genutzt zu werden. Lernen Sie Shapley Values kennen – eine neue Funktion in JMP 17.
Shapley Values bietet die Lösung, nach der wir alle gesucht haben, um diese Art von Situation zu lösen. Diese Werte quantifizieren den Beitrag jedes Faktors in Ihrem Modell bis auf Zeilenebene. Unter Verwendung der durchschnittlichen Vorhersage als Basis kann jede Datenzeile nach Faktoren in eine Summe von Wahrscheinlichkeiten zerlegt werden. Man kann also sagen, dass die Wahrscheinlichkeit, dass Sean seine Medikamente absetzt, bei 79 % liegt, und im Vergleich zum durchschnittlichen Patienten ist der Hauptgrund dafür, dass er seine Medikamente absetzen wird, sein Alter.
Warum ist das so eine große Sache? Ohne Shapley-Werte könnten wir allgemeiner über die treibenden Faktoren für ein Ergebnis in der interessierenden Population sprechen, aber ein Vergleich zwischen Individuen mit ähnlichen Merkmalen und das Verständnis, warum sich die Vorhersage zwischen ihnen unterscheidet, ist nicht so einfach. Bei baumbasierten Algorithmen wird die Vorhersageformel auf Basis einzelner Blätter oder Bäume erstellt. Und seien wir ehrlich, sie können ziemlich chaotisch werden. Shapley Values löst dieses Problem, indem es die Vorhersage in einzelne Beiträge für jeden Faktor aufteilt, der sich über das gesamte Modell erstreckt und nicht Blatt für Blatt, Baum für Baum oder Knoten für Knoten.

Wie können Sie mit der Erkundung dieser neuen Funktion beginnen? Es ist einfach. Fügen Sie den Profiler zu Ihren Modellergebnissen hinzu und wählen Sie die Option „Shapley-Werte speichern“. Dadurch werden für jede Kombination aus Faktor und Antwortebene einzelne Spalten in Ihrer Datentabelle gespeichert.

Wenn Ihre Stakeholder das nächste Mal fragen, ob Sie anhand eines Faktors, der durch die Handlungen eines Apothekers oder eine Marketingtaktik beeinflusst werden kann, genau bestimmen können, bei welchen Patienten die Wahrscheinlichkeit am größten ist, dass sie ein Medikament absetzen, können Sie sicher sein, dass Sie in jedem Fall „Ja“ sagen können Art des Modells, das Sie erstellen.
Dies ist eine großartige Option, und ich finde es toll, dass sie für viele Modelle verfügbar ist (in früheren Versionen hatte nur das XGBoost-Add-In die Möglichkeit, SHAP-Werte zu erstellen).
Allerdings ist die Option derzeit sehr langsam. Ich habe es sogar in kleineren Datensätzen versucht und oft reagierte JMP nicht. Ich schlage vor, sich auf die Parallelisierung zu konzentrieren und den Code, der hinter den Kulissen läuft, zu optimieren, um ihn schneller zu machen. Gerade jetzt, bei so langsamen Geschwindigkeiten, ist es wahrscheinlicher, dass die Software einfach abstürzt.
@KristenBradford Wunderbar gemacht, vielen Dank für das Teilen dieses praktischen Beispiels!
Danke Kristen fürs Teilen.
BR.
Philipp
@jpol Sicherlich! Dieses Beispiel wurde mit Schein-/Beispieldaten erstellt, um die Funktion klar und prägnant zu veranschaulichen. Zeile 734 in der beigefügten Datentabelle entspricht Sean in meinen Screenshots. Bitte lassen Sie mich wissen, wenn Sie weitere Fragen zu dieser Funktion haben. Es ist wirklich eine der aufregendsten Neuerungen der Software (meiner Meinung nach!).
Mit freundlichen Grüße,
Kristen
Vielen Dank an Kristen für diesen Artikel über Shapley Values.
Könnten Sie bitte die hier verwendete Datentabelle veröffentlichen, um dasselbe Beispiel auf meinem eigenen Laptop auszuführen?
Danke,
Philipp
@dmmdiego Thank you for your feedback on the performance. Would you mind sharing this with JMP Technical Support (please send an email to support@jmp.com) and providing an example where the performance is slow or unresponsive? This will prompt us to engage with development so we can tangibly make it better in future releases. In your email, please copy this post and mention that we had some dialog about it here.
Cheers,
@PatrickGiuliano (JMP Technical Support)
Can this example directly give the final analysis result using the decision tree model?
Thanks!
Die daraus resultierenden Handlungsschritte habe ich im Bild gefunden.
Aber was wäre, wenn Sie dies direkt mit JSL tun könnten?
Danke, Experten! 