Poisson Regression: modellieren, wie oft Kunden etwas tun
Kurz gesagt
Niveau: Profi
Das meiste, was Kunden tun, wird gezählt: Bestellungen, Tickets, Besuche. Zählwerte beginnen bei null, und ihre Varianz wächst mit dem Mittelwert, deshalb rechnet die gewöhnliche Regression sie falsch.
- Poisson Regression modelliert den Logarithmus der Rate, also bleiben Vorhersagen positiv, und jeder Koeffizient wird zu einem Faktor, dem Inzidenzratenverhältnis.
- Nimm einen Offset für die Exposition auf, wenn Kunden unterschiedlich lange beobachtet wurden, sonst tarnt sich Kundendauer als Treue.
- Prüf die Dispersion. Liegt sie deutlich über 1, wechsle zur negativen Binomialverteilung, die dir sagt, wie überrascht du über eine Vielkäuferin sein solltest.
- Null Inflation lohnt sich nur, wenn du die Nie wieder Gruppe benennen kannst.
- Das Ergebnis sind drei Listen: erwarteter Wert, Überraschungen für einen menschlichen Blick und die Kunden, bei denen ein Hebel am meisten bringt.
Das meiste, was Kunden tun, wird gezählt und nicht gemessen, und gewöhnliche Regression geht schlecht mit Zählwerten um. Ich erkläre die Poisson Verteilung, den Log Link, der Koeffizienten zu Faktoren macht, den Offset für die Exposition, den niemand weglassen sollte, und die Prüfung der Dispersion, die dir sagt, wann du zur negativen Binomialverteilung wechselst, alles an einem erfundenen Hamburger Shop für Geschenkkörbe und einer Münchner Kundin, die siebenmal bestellt hat. Kapitel 6 von 21 der Serie Marketing Analytics.
Die Kundin, die siebenmal bestellt hat
Jeden Dezember passiert bei Korbwerk dasselbe. Korbwerk ist ein erfundener Onlineshop für Geschenkkörbe in Hamburg, den Lena betreibt. Irgendwer entdeckt eine Kundin, die immer wieder bestellt, ist begeistert und will um Menschen wie sie ein VIP Programm bauen. Dieses Jahr ist es eine Frau aus München, die in zwei Jahren sieben Bestellungen aufgegeben hat. Ihr erster Korb war ein Geschenk für 75 € an eine Kollegin, sie öffnet die meisten Mails, und für sich selbst hat sie nie etwas gekauft. Ist sie bemerkenswert? Ist sie die Spitze eines Segments, das sich lohnt? Oder ist sie einfach das, was passiert, wenn man ein paar Tausend Kunden hat und lange genug zählt?
Das ist eine Zählfrage, und Zählfragen haben ihre eigene Art von Modell. Bestellungen pro Kunde und Jahr, Supporttickets pro Konto und Monat, Aufenthalte pro Gast und Saison, erstellte Angebote pro Workspace und Woche: Nichts davon ist ein Ja oder Nein, und nichts ist eine stetige Größe wie der Umsatz. Es sind ganze Zahlen, sie fangen bei null an, sie können nicht darunter fallen, und die meiste Masse liegt unten, mit einem langen, dünnen Ausläufer. Sie durch die gewöhnliche Methode der kleinsten Quadrate zu schicken, als wären sie Umsatz, ist einer der häufigsten stillen Fehler, die ich in der Marketinganalyse sehe.
In diesem Kapitel geht es um das richtige Werkzeug: die Poisson Regression, ihre nachsichtigere Verwandte, die negative Binomialverteilung, und was zu tun ist, wenn deine Nullen aus zwei verschiedenen Quellen kommen. Alle Zahlen sind für das Beispiel erfunden und gerundet, damit sich die Überlegung leicht verfolgen lässt.
Wo dieses Kapitel in der Serie steht
Das ist Kapitel 6 von 21 meiner Serie Marketing Analytics, in dem Teil zu Verfahren, bei denen ein einzelnes Ergebnis durch eine Reihe von Einflussgrößen erklärt wird. Das vorige Kapitel, Polynomial Distributed Lags: wie lange wirkt Marketing nach?, behandelte ein stetiges Ergebnis, das sich über die Zeit verteilt. Dieses geht zu Zählwerten über. Das nächste, logistische Regression, Lift Charts und Warenkorbanalyse, nimmt sich den anderen häufigen Fall vor, ein Ergebnis, das einfach Ja oder Nein ist. Lies die drei zusammen, und du hast den größten Teil des Regressionswerkzeugs, das ein kleines Unternehmen je brauchen wird.
Warum gewöhnliche Regression bei Zählwerten stolpert
Die gewöhnliche Methode der kleinsten Quadrate nimmt an, dass das Ergebnis frei in beide Richtungen um die Linie schwanken kann, überall mit ungefähr derselben Streuung. Zählwerte brechen beide Annahmen und dazu noch eine dritte.
Der Boden. Eine Gerade, die an Bestellungen pro Jahr angepasst ist, sagt einer Geschenkkäuferin mit kleinem Warenkorb und wenig Engagement ohne Weiteres minus 0,3 Bestellungen voraus. Eine solche Kundin gibt es nicht. Du kannst die Vorhersage bei null abschneiden, aber dann ist dein Modell nicht mehr das Modell, das du geschätzt hast.
Die Streuung. Bei Zählwerten wächst die Varianz mit dem Mittelwert. Kunden, die etwa einmal im Jahr bestellen, streuen zwischen null und drei. Firmenkunden, die fünfmal im Jahr bestellen, streuen zwischen eins und zwölf. Die kleinsten Quadrate nehmen eine konstante Varianz an, gewichten also die lauten Vielkäufer genauso wie die stillen, und ihre Standardfehler kommen falsch heraus, meist zu optimistisch. Am Ende bist du dir bei Effekten sicher, die es nicht gibt.
Die Form. Zählwerte mit kleinem Mittelwert sind schief. Der durchschnittliche Kunde von Korbwerk bestellt etwa 1,4 Mal im Jahr, aber der häufigste Wert ist null, und eine Handvoll Konten bestellt fünfzehnmal. Ein symmetrischer Fehlerterm beschreibt das nicht.
In Zählen und Summieren schlägt Machine Learning habe ich argumentiert, dass sich die meisten Geschäftsfragen durch gutes Zählen beantworten lassen, lange bevor sie etwas Raffiniertes brauchen. Poisson Regression ist das, wonach gutes Zählen aussieht, sobald du wissen willst, warum sich die Zählwerte unterscheiden.
Die Poisson Verteilung und der Log Link
Die Poisson Verteilung beschreibt die Zahl der Ereignisse in einem festen Zeitfenster, wenn die Ereignisse unabhängig voneinander mit einer gleichbleibenden durchschnittlichen Rate eintreffen.1 Ist die zugrunde liegende Rate einer Kundin Bestellungen pro Jahr, ist die Wahrscheinlichkeit, genau Bestellungen zu sehen:
Dabei ist der Zählwert, (Lambda) die erwartete Zahl der Ereignisse im Zeitfenster, der Wert, den du tatsächlich beobachtest, die Eulersche Zahl, etwa , und ist k Fakultät, , mit . Die Verteilung hat einen einzigen Parameter, und dieser Parameter ist zugleich ihr Mittelwert und ihre Varianz.1 Merk dir das, denn genau diese Eigenschaft beißt später. Verteilungen, die Poisson Verteilung eingeschlossen, erklärt Grundlagen: Verteilungen von Grund auf.
Rechenbeispiel: die Chancen einer Kundin
Nimm eine Kundin mit einer Rate von Bestellungen im Jahr. Die Wahrscheinlichkeit, dass sie in einem Jahr gar nicht bestellt:
Dabei ist und , es bleibt also nur , und das ist . Die Wahrscheinlichkeit für genau zwei Bestellungen:
Dabei ist und . Eine völlig normale Kundin mit dieser Rate hat also eine Chance von eins zu vier, in einem bestimmten Jahr überhaupt nicht zu bestellen. Eine Null ist kein Beweis, dass jemand gegangen ist.
Die Rate von der Kundin abhängen lassen
Die Poisson Regression gibt jeder Kundin ihre eigene Rate. Das Modell nutzt die Rate nicht direkt, denn eine Summe von Einflussgrößen kann negativ werden, eine Rate nicht. Es nutzt ihren Logarithmus:2
Dabei ist der erwartete Zählwert für Kundin , der Achsenabschnitt, bis ihre Merkmale (Wert der ersten Bestellung, ob der erste Kauf ein Geschenk war, ob sie Mails öffnet, Region) und bis die Koeffizienten, die wir schätzen. Das ist der Log Link. Was auch immer die rechte Seite ergibt, ihre Exponentialfunktion ist positiv, die vorhergesagte Rate ist also immer eine zulässige Rate. Den Logarithmus und warum er Summen in Produkte verwandelt, findest du in Grundlagen: Logarithmen, die Regression selbst in Grundlagen: Regression.
Der Log Link ändert auch, wie du einen Koeffizienten liest. In der gewöhnlichen Regression ist er ein Betrag, der hinzukommt. Hier ist er ein Faktor. Nimm den Koeffizienten in den Exponenten, und du bekommst das Inzidenzratenverhältnis (Incidence Rate Ratio, IRR):2
Dabei ist das Inzidenzratenverhältnis für die Einflussgröße , ihr Koeffizient, und geteilt durch der Faktor, um den sich die erwartete Rate ändert, wenn um eine Einheit steigt und alles andere gleich bleibt. Ein IRR von 1,70 heißt 70 % mehr Bestellungen im Jahr. Ein IRR von 0,70 heißt 30 % weniger. Wie man Prozente multipliziert, steht in Grundlagen: Prozent.
Multiplikative Effekte sind die Art, wie sich das meiste Marketing verhält. Ein gutes Mailprogramm legt nicht jedem 0,4 Bestellungen obendrauf. Es hebt die Rate aller um einen Anteil, also gewinnt der Firmenkunde absolut mehr Bestellungen als die gelegentliche Geschenkkäuferin. Das Modell sagt das, ohne dass man es ihm sagen muss.
Exposition: Nicht alle sind gleich lange Kunden
In den Daten steckt eine Falle, bevor du überhaupt etwas schätzt. Eine Kundin, die vor 23 Monaten dazukam, hatte 23 Monate Zeit zu bestellen. Eine, die vor vier Monaten dazukam, hatte vier. Zähl die Bestellungen pro Kundin, und die alten sehen aus wie Vielkäufer, und das Modell lernt, dass Kundendauer Treue verursacht, was verkehrt herum ist.
Die Lösung ist ein Offset für die Exposition: Du modellierst die Rate pro Zeiteinheit, indem du den Logarithmus der beobachteten Zeit jeder Kundin als Term aufnimmst, dessen Koeffizient auf eins festgelegt ist.2
Dabei ist die Exposition, die Zahl der Jahre, die Kundin beobachtbar war, und die übrigen Symbole sind wie zuvor. Schiebst du nach links, ergibt sich , der Logarithmus der Jahresrate, und genau die wollen wir erklären. Der Schritt nutzt aus Grundlagen: Logarithmen.
Jedes Zählmodell, das ich für einen Kunden baue, hat einen Offset, und den prüfe ich vor allem anderen. Für eine Hotelgruppe wäre die Exposition die Zahl der Saisons, die ein Gast in der Datenbank ist. Für ein SaaS Produkt die Monate, die ein Workspace live ist.
Rechenbeispiel: zwei Kundinnen, eine Rate
Zwei Kundinnen von Korbwerk haben je drei Bestellungen. Die eine ist seit drei Jahren Kundin, die andere seit einem. Ohne Offset sehen sie gleich aus. Mit Offset:
Dabei sind die Zähler, in beiden Fällen , die Bestellungen, und die Nenner, und , die beobachteten Jahre. Die erste Kundin bestellt also einmal im Jahr, die zweite dreimal. Gleicher Zählwert, eine dreifach verschiedene Rate.
Das Modell von Korbwerk: Inzidenzratenverhältnisse lesen
Hier ist ein geschätztes Modell auf 4.180 Kundinnen und Kunden von Korbwerk, jede und jeder zwischen sechs Monaten und zwei Jahren beobachtet. Das Ergebnis sind Bestellungen, der Offset ist der Logarithmus der beobachteten Jahre, und die Einflussgrößen sind die, über die Lenas Team jedes Jahr vor Weihnachten streitet. Der Referenzkunde wohnt außerhalb Bayerns, kauft für sich selbst, hat eine erste Bestellung über 40 €, in den ersten 90 Tagen keine Mail geöffnet und kein Firmenkonto.
| Einflussgröße | Koeffizient | Standardfehler | IRR | 95 % Intervall | Klartext |
|---|---|---|---|---|---|
| Achsenabschnitt | minus 0,15 | 0,08 | 0,86 | 0,74 bis 1,01 | Der Referenzkunde bestellt 0,86 Mal im Jahr |
| Wert der ersten Bestellung, je 10 € über 40 € | 1,03 bis 1,06 | Alle weiteren 10 € im ersten Warenkorb heben die Jahresrate um etwa 4,6 % | |||
| Erster Kauf war ein Geschenk | minus 0,36 | 0,06 | 0,70 | 0,62 bis 0,79 | Geschenkkäufer bestellen mit 70 % der Rate von Selbstkäufern nach |
| Mail in den ersten 90 Tagen geöffnet | 0,53 | 0,06 | 1,70 | 1,51 bis 1,91 | Frühes Engagement per Mail geht mit einer um 70 % höheren Rate einher |
| Bayern statt übriges Deutschland | minus 0,15 | 0,07 | 0,86 | 0,75 bis 0,99 | Kundschaft aus Bayern bestellt 14 % seltener, und das Intervall berührt fast die 1 |
| Firmenkonto | 0,88 | 0,10 | 2,41 | 1,98 bis 2,93 | Firmenkonten bestellen ungefähr mit dem Zweieinhalbfachen der Rate |
Jedes Intervall ist der Koeffizient plus und minus 1,96 Standardfehler, in den Exponenten genommen. Für die Zeile mit dem Geschenk reicht von bis , und und . Konfidenzintervalle stehen in Grundlagen: Konfidenzintervalle.
Lies die Tabelle von oben. Der Achsenabschnitt, in den Exponenten genommen, ergibt 0,86 Bestellungen im Jahr: der Anker, mit dem alles andere multipliziert wird. Der Wert der ersten Bestellung zählt je 10 €, eine erste Bestellung über 75 € liegt also 3,5 Schritte über der Referenz von 40 € und trägt bei, eine um 17 % höhere Rate. Das IRR für Geschenke liegt unter eins: Geschenkkäufer kommen seltener wieder, was jeder Händler für Geschenkkörbe ahnt und kaum einer beziffert hat. Das Engagement per Mail ist mit 1,70 der größte Effekt, den der Shop beeinflussen kann. Der Effekt für Bayern ist real, aber klein, und sein Intervall reicht bis 0,99, darauf würde ich keine regionale Strategie bauen. Der Effekt für Firmenkonten ist groß und erwartet.
Rechenbeispiel: die Kundin aus München
Sie ist eine Geschenkkäuferin aus Bayern mit einer ersten Bestellung über 75 €, die Mails öffnet und kein Firmenkonto hat. Rechne es durch:
Dabei ist die Rate des Achsenabschnitts, der Effekt des ersten Bestellwerts für 3,5 Schritte zu 10 €, der Geschenkeffekt, der Maileffekt und die zweite der Effekt für Bayern. Über die zwei Jahre, in denen sie beobachtet wurde, erwartet das Modell etwa 2,06 Bestellungen. Sie hat sieben aufgegeben, ungefähr das 3,4fache der erwarteten Zahl. Ob das bemerkenswert ist, hängt ganz vom nächsten Abschnitt ab.
Passt die Poisson Verteilung? Die Prüfung auf Überdispersion
Die Poisson Verteilung besteht darauf, dass die Varianz gleich dem Mittelwert ist. Echte Kundschaft tut ihr den Gefallen selten. Manche sind still treu, manche haben aus Versehen einmal gekauft, manche sind kleine Firmen, die sich hinter einer privaten Mailadresse verstecken. Diese verborgene Vielfalt lässt die Zählwerte breiter streuen, als eine Poisson Verteilung mit demselben Mittelwert erlaubt. Das heißt Überdispersion, und in Kundendaten ist sie eher die Regel als die Ausnahme.2
Die erste Prüfung ist ein Bild: die beobachteten Bestellzahlen in einem Jahr gegen das, was eine Poisson Verteilung mit demselben Mittelwert von 1,4 vorhersagt.
Die waagrechte Achse zeigt die Zahl der Bestellungen, die eine Kundin in einem Jahr aufgegeben hat, die senkrechte die Zahl der Kunden mit diesem Wert. Die Poisson Linie ist mit . Das Muster ist die klassische Signatur: mehr Nullen als erwartet, weniger Kunden in der Mitte und ein dicker rechter Ausläufer. Die Poisson Verteilung sagt zwei Kunden mit sieben Bestellungen voraus und fast keinen mit acht oder mehr. Der Shop hat 80 Kunden mit sieben oder mehr.
Die zweite Prüfung ist eine Zahl. Berechne nach der Schätzung die Dispersionsstatistik nach Pearson:2
Dabei ist (Phi Dach) die geschätzte Dispersion, der beobachtete Zählwert für Kundin , der vom Modell vorhergesagte Zählwert, die Zahl der Kunden, die Zahl der geschätzten Koeffizienten, und summiert über alle Kunden. Jeder Term fragt, wie weit eine Kundin von der Vorhersage entfernt liegt, gemessen in der Varianz, die die Poisson Verteilung erlaubt. Stimmt die Poisson Verteilung, liegt nahe bei 1. Die Varianz und warum man durch statt durch teilt, stehen in Grundlagen: Streuung.
Rechenbeispiel: die Dispersion der rohen Zählwerte
Ohne Einflussgrößen im Modell ist jede Vorhersage der Gesamtmittelwert, und die Statistik ist einfach die Varianz geteilt durch den Mittelwert. Für die Zählwerte im Diagramm, wobei 8 oder mehr als acht zählt:
Dabei ist die Varianz der 4.180 Zählwerte und ihr Mittelwert. Die Varianz ist etwa doppelt so groß wie der Mittelwert, in Wirklichkeit noch etwas mehr, weil einige der 45 Kunden in der obersten Gruppe öfter als achtmal bestellt haben. Nachdem die Einflussgrößen im Modell sind, die einen Teil der Streuung aufnehmen (allein das Firmenkonto erklärt viel vom Ausläufer), hat das geschätzte Modell des Beispiels immer noch . Meine Arbeitsregel: Ab etwa 1,3 traue ich den Poisson Standardfehlern nicht mehr, ab 1,5 wechsle ich das Modell.
Was geht schief, wenn du es nicht tust? Die Koeffizienten stimmen meist noch ungefähr. Die Standardfehler nicht. Sie sind um etwa den Faktor zu klein, und genau um diesen Faktor skaliert eine Quasi Poisson Korrektur sie.2 Mit ist , jedes Intervall in der Tabelle müsste also etwa 38 % breiter sein. Die Obergrenze des Effekts für Bayern rückt von 0,99 auf etwa 1,04, und der Effekt ist nicht mehr signifikant. Genau um solche Effekte bauen Leute Kampagnen und wundern sich dann, warum die Kampagne nichts gebracht hat.
Die negative Binomialverteilung: wie überrascht du sein solltest
Das Modell mit negativer Binomialverteilung ist das übliche Gegenmittel. Es behält den Log Link und die Lesart als IRR, nichts von oben ist also verloren, aber es lässt die Varianz schneller wachsen als den Mittelwert:3
Dabei ist die Varianz des Zählwerts von Kundin , wie zuvor ihr Mittelwert und (Alpha) ein Dispersionsparameter, der aus den Daten geschätzt wird. Bei bist du wieder bei der Poisson Verteilung. Die Varianz selbst steht in Grundlagen: Streuung. Für Korbwerk liegt das geschätzte des Beispiels bei 0,48, sobald die Einflussgrößen im Modell sind. Schätzt du mit der negativen Binomialverteilung neu, bewegen sich die IRR kaum, aber die Intervalle werden ehrlich breiter, und die Wahrscheinlichkeiten im Ausläufer ändern sich dramatisch.
Rechenbeispiel: sieben Bestellungen unter beiden Modellen
Zurück nach München. Ihr erwarteter Zählwert über zwei Jahre ist 2,06. Unter der Poisson Verteilung ist die Wahrscheinlichkeit für sieben oder mehr Bestellungen , etwa eine Kundin unter 190. Sie sieht aus wie ein Star.
Unter der negativen Binomialverteilung mit ist ihre Varianz:
Dabei ist ihr erwarteter Zählwert und der Dispersionsparameter. Fast das Doppelte der 2,06 aus der Poisson Verteilung, und der Ausläufer wird entsprechend dicker: Die Wahrscheinlichkeit für sieben oder mehr steigt auf , etwa eins zu 27. Hätte der Shop 4.180 Kundinnen genau wie sie, kämen allein durch gewöhnliche Schwankungen in der Treue etwa 155 auf sieben Bestellungen. Sie ist eine gute Kundin und verdient ein Dankeschön, aber sie ist kein Segment, und ein VIP Programm, das um sie herum gebaut wäre, wäre um Rauschen herum gebaut. Das ist der praktische Unterschied zwischen den beiden Modellen: Die negative Binomialverteilung sagt dir, wie überrascht du sein solltest.
Null Inflation: wenn die Nullen aus zwei Quellen kommen
Null Inflation ist ein anderes Problem als Überdispersion. Bei Überdispersion geht es um Streuung. Bei Null Inflation geht es um Nullen, die aus zwei Populationen stammen.4
In einem Shop für Geschenkkörbe sind manche Nullen Kunden, die gut wieder bestellen könnten und es nur noch nicht getan haben. Sie liegen auf der Kurve der Poisson Verteilung oder der negativen Binomialverteilung. Andere Nullen sind Menschen, die ein einziges Geschenk für einen scheidenden Kollegen gekauft haben, nie wieder an den Shop denken werden und sich von keiner Mail bewegen ließen. Das sind strukturelle Nullen. Ein Modell mit Null Inflation schätzt zwei Teile: einen logistischen Teil für die Wahrscheinlichkeit, zu den strukturellen Nie wieder Kunden zu gehören, und einen Zählteil für alle anderen.4 Es lohnt sich, wenn der Anteil der Nullen weit über dem liegt, was selbst die negative Binomialverteilung vorhersagt, und du einen plausiblen Treiber für die Nie wieder Gruppe hast, etwa ein Firmengeschenk, das an die Adresse eines Dritten geliefert wurde.
So entscheide ich:
Lies es von oben: Jede Raute ist eine Prüfung, und der Kasten danach sagt, was mit der Antwort zu tun ist. Der größte Teil meiner Arbeit endet bei der negativen Binomialverteilung.
Ein Beispiel für jedes Ende. Im Beispiel von Korbwerk sagt die negative Binomialverteilung etwa 1.610 Nullen voraus, beobachtet sind 1.560. Das ist nah genug. Die Nullen erklären sich durch die Vielfalt der Kunden, nicht durch eine verborgene Nie wieder Population, also endet die Entscheidung dort. Stell dir jetzt eine Hotelgruppe vor, deren Gäste oft einmal über ein Buchungsportal buchen und nie eine Mailadresse hinterlassen. Für Direktbuchungen sind diese Gäste fast alle strukturelle Nullen, und ein Modell mit Null Inflation mit "über ein Portal gebucht" als Treiber wäre klar besser.
Vom Modell zur Zielliste
Ein geschätztes Zählmodell nützt nur, wenn es ändert, mit wem du sprichst. Drei Listen fallen fast umsonst dabei ab.
Die Liste der erwarteten Raten. Jede Kundin bekommt ein vorhergesagtes pro Jahr. Multipliziere mit dem durchschnittlichen Deckungsbeitrag pro Bestellung, und du hast den erwarteten Deckungsbeitrag pro Jahr, die ehrliche Grundlage dafür, wie viel du ausgibst, um jede Person zu halten. Das führt zur Retention Mathematik: Ein kleiner Anstieg der Rate in der Mitte der Liste ist mehr wert als ein großer bei einer Handvoll ganz oben.
Die Liste der Überraschungen. Vergleich, was jede Kundin getan hat, mit dem, was das Modell erwartet hat. Das Pearson Residuum standardisiert den Abstand. Dabei ist der beobachtete Zählwert, der erwartete Zählwert über die eigene Exposition der Kundin und der Dispersionsparameter. Kunden weit über der Erwartung verdienen einen menschlichen Blick, keine Kampagne: Ein guter Teil davon entpuppt sich als kleine Firma, die unter einer privaten Adresse bestellt, und das heißt ein Anruf und ein Firmenkonto statt eines Rabattcodes.
Die Liste der Hebel. Weil das Engagement per Mail ein IRR von 1,70 trägt, lohnt ein Anstoß zum Engagement am meisten bei Kunden mit hoher Grundrate und noch ohne Engagement. Der erwartete Gewinn für jeden ist zusätzliche Bestellungen im Jahr, wenn du sie bewegen könntest, was du nicht vollständig kannst, also ziehe ich etwas davon ab.
Rechenbeispiel: fünf Kunden auf der Liste
Fünf Kunden, jeder zwei Jahre lang beobachtet, bewertet mit dem Modell des Beispiels und :
| Kunde | Profil | Erwartet pro Jahr | Erwartet über zwei Jahre | Beobachtete Bestellungen | Residuum | Maßnahme |
|---|---|---|---|---|---|---|
| A | Firmenkonto aus Hamburg, erste Bestellung 120 €, engagiert | 5,05 | 10,1 | 11 | 0,1 | Behalten. Ansprechpartner ist schon da |
| B | Geschenkkäuferin aus München, 75 €, engagiert | 1,03 | 2,06 | 7 | 2,4 | Dankeskarte. Auf eine versteckte Firma prüfen |
| C | Selbstkäuferin aus Köln, 95 €, nicht engagiert | 1,10 | 2,20 | 2 | minus 0,1 | Anstoß zum Engagement: höchster erwarteter Gewinn |
| D | Geschenkkäufer aus Leipzig, 35 €, nicht engagiert | 0,59 | 1,17 | 0 | minus 0,9 | In Ruhe lassen. Vermutlich eine strukturelle Null |
| E | Selbstkäufer aus Nürnberg, 60 €, engagiert | 1,38 | 2,75 | 0 | minus 1,1 | Rückgewinnungsmail. Erwartet, aber still |
Für Kundin B ist das Residuum , mit der Varianz, die oben ausgerechnet wurde. Auffällig, nicht außergewöhnlich, und genau das hat die Wahrscheinlichkeit im Ausläufer schon gesagt. Kundin C ist die, die die meisten Marketer übersehen würden und die das Modell nach vorn holt: eine ordentliche Grundrate, der größte Hebel unberührt, bei voller Wirkung zusätzliche Bestellungen im Jahr wert. Kunde D bekäme von einer naiven Kampagne einen Rabatt, und der wäre verschwendet.
Selbst rechnen
Du brauchst eine Zeile pro Kunde mit dem Zählwert, der Exposition in Jahren und den Einflussgrößen, so wie sie zu Beginn des Zeitfensters bekannt waren. Der letzte Punkt zählt: Nimm den Wert der ersten Bestellung und das Mailverhalten der ersten 90 Tage, keine Werte über die ganze Kundenlaufbahn, sonst sickert das Ergebnis in die Eingaben. In SQL ist das eine einzige Aggregation:
select c.id,
count(o.id) as orders,
extract(epoch from now() - c.first_order_at) / 31557600.0 as years_observed,
(c.first_order_total - 40) / 10.0 as first_value_10,
c.first_order_is_gift::int as gift,
c.opened_email_first_90d::int as email_open,
(c.state = 'Bayern')::int as bayern,
c.is_corporate::int as corporate
from customers c
left join orders o on o.customer_id = c.id and o.completed_at > c.first_order_at
where c.first_order_at < now() - interval '6 months'
group by c.id;
Das Schätzen dauert Sekunden. In Python mit statsmodels geht der Offset direkt in das verallgemeinerte lineare Modell, und dessen Familie für die negative Binomialverteilung nutzt die Varianz von oben:35
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
formula = "orders ~ first_value_10 + gift + email_open + bayern + corporate"
pois = smf.glm(formula, data=df, family=sm.families.Poisson(),
offset=np.log(df["years_observed"])).fit()
phi = pois.pearson_chi2 / pois.df_resid
print(f"dispersion {phi:.2f}") # nahe 1,0 passt, über 1,5 wechseln
nb = smf.glm(formula, data=df, family=sm.families.NegativeBinomial(alpha=0.48),
offset=np.log(df["years_observed"])).fit()
print(np.exp(nb.params)) # Inzidenzratenverhältnisse
In R ist es dasselbe mit glm(..., family = poisson, offset = log(years_observed)), gefolgt von MASS::glm.nb.6 Alpha aus den Daten zu schätzen, statt es festzulegen, kostet in beiden Sprachen eine Zeile mehr.
Bevor du dem Ergebnis traust, mach vier Prüfungen. Trag beobachtete gegen vorhergesagte Zählwerte nach Dezilen der vorhergesagten Rate auf: Die Punkte sollten auf der Diagonale liegen. Vergleich den vorhergesagten Anteil der Nullen mit dem beobachteten. Halte die letzten sechs Monate zurück und schau, ob die Reihenfolge der Kunden nach dem Modell auf Bestellungen hält, die es nie gesehen hat. Und sieh dir die größten Residuen von Hand an: Sind die obersten zehn alle eine Art von Kunde, fehlt dir eine Einflussgröße, und du siehst kein Rauschen.
Zeitbedarf: ein Tag für die Daten, ein halber Tag für das Modell, ein Tag, um daraus Listen zu machen, mit denen Menschen tatsächlich arbeiten. Das Modell ist der kleinste Teil, und das gilt für fast alles in dieser Serie.
Fallstricke
Das falsche Zeitfenster zählen. Überlappt das Fenster des Ergebnisses mit dem Zeitraum, in dem die Einflussgrößen gemessen wurden, erklärt das Modell die Vergangenheit mit der Vergangenheit. Friere die Einflussgrößen zu Beginn ein und zähl ab dort.
Den Offset vergessen. Ich habe ein Modell gesehen, das stolz die Kundendauer als stärkste Einflussgröße für Bestellungen zeigte. Natürlich: Diese Kunden waren länger gezählt worden. Der Offset beseitigt das in einer Zeile, und die ganze Geschichte ändert sich.
IRR als additiv lesen. Ein IRR von 1,70 auf einer Grundrate von 0,3 Bestellungen sind zusätzliche Bestellungen im Jahr. Dasselbe IRR auf einer Grundrate von fünf sind . Rechne immer auf die eigene Grundrate des Kunden durch, bevor du irgendwem ein Ergebnis versprichst.
Poisson Intervallen trauen, wenn die Dispersion bei 2 liegt. Die Koeffizienten sehen gut aus, die Signifikanzsterne sehen gut aus, und einige der signifikanten Effekte sind es nicht. Prüf die Dispersion jedes Mal. Es ist eine einzige Zahl.
Dem Ausläufer hinterherjagen. Vielkäufer gibt es in jeder negativen Binomialverteilung, per Konstruktion. Bevor du ein Segment verkündest, frag, wie viele Kunden auf diesem Niveau das Modell ohnehin erwartet. Meist erwartet es ungefähr so viele, wie du gefunden hast.
Null Inflation einbauen, weil sie besser passt. Ein Modell mit Null Inflation passt fast immer ein wenig besser, weil es mehr Parameter hat. Nutz es, wenn du die Nie wieder Population benennen und anders behandeln kannst. Sonst ist es Komplexität ohne Entscheidung dahinter.
Wie ich das für Kunden mache
Das Ergebnis ist eine bewertete Kundenliste und ein einseitiges Entscheidungsmemo, keine Modelldatei. Es beginnt mit dem kostenlosen Workshop, in dem wir festlegen, was gezählt wird (Bestellungen, Aufenthalte, Tickets, Angebote), was die Exposition ist und welche vier oder fünf Einflussgrößen zu Beginn des Fensters jedes Kunden tatsächlich bekannt waren. Danach gehen die ersten zwei Wochen Arbeit auf meine Rechnung, bevor du dich auf irgendetwas festlegst.
Die Daten, die ich brauche, sind unspektakulär: ein Export der Kunden mit den Details ihrer ersten Bestellung und eine Tabelle späterer Ereignisse, oder Lesezugriff auf die Datenbank des Shops oder des CRM. Für einen Solidus Shop ist es eine Abfrage auf die Tabellen für Bestellungen und Nutzer. Für ein Rails SaaS sind es die Workspaces und ihre Nutzungsereignisse. Ich baue die Exposition sauber auf, schätze die Poisson Regression, mache die Prüfung auf Dispersion, wechsle zur negativen Binomialverteilung, wenn die Daten es verlangen, und gehe nur dann zur Null Inflation, wenn wir die Gruppe benennen können.
Was du bekommst: jede Kundin und jeden Kunden bewertet mit einer erwarteten Jahresrate und einem Fehlerband, die drei Listen von oben als CSV oder direkt in deinem Mailwerkzeug, die IRR Tabelle in Klartext und ein Memo, das sagt, was das Modell empfiehlt, was es wert wäre, wenn der Hebel halb so gut wirkt, wie der Koeffizient nahelegt, und wo es unsicher ist. Dir gehört alles, der Code eingeschlossen.
Nach den zwei Wochen läuft die Arbeit zu den monatlichen Konditionen auf der Preisseite als Data Science. Für einen eCommerce Shop gibt es außerdem das Provisionsmodell, eine monatliche Grundgebühr oder eine Provision auf gemessenes Wachstum, je nachdem, was höher ist, und das passt zum anschließenden Performance Marketing, wenn du lieber für Ergebnisse zahlst. Ich bin eine verantwortliche Person von den Daten bis zur Kampagne, und genau darum geht es.
Fragen an dein eigenes Team
- Was genau wird gezählt, und über welches Zeitfenster pro Kunde? Kann niemand die Exposition benennen, hat das Modell keinen Offset.
- Wurden die Einflussgrößen gemessen, bevor das Zählfenster begann, oder währenddessen?
- Wie hoch ist die Dispersionsstatistik des geschätzten Poisson Modells, und was habt ihr getan, als sie über 1,5 lag?
- Werden die Effekte als Faktoren berichtet, und wurden sie auf die Grundrate eines echten Kunden durchgerechnet?
- Wie viele Kunden mit so vielen Bestellungen erwartet das Modell ohnehin? Ist das "Segment" größer als das?
- Passt der vorhergesagte Anteil der Nullen zum beobachteten, und wenn nicht, könnt ihr benennen, wer die zusätzlichen Nullen sind?
- Wurde die Reihenfolge der Kunden an einem Zeitraum geprüft, den das Modell nie gesehen hat?
- Welche Liste hat sich durch diese Arbeit geändert, und wer arbeitet sie ab?
Die Serie ist inspiriert von Mike Grigsbys Buch Marketing Analytics.7 Die Erklärungen, Beispiele und Zahlen hier sind meine eigenen.
Footnotes
-
NIST/SEMATECH, e-Handbook of Statistical Methods, Abschnitt 1.3.6.6.19, Poisson Distribution, https://www.itl.nist.gov/div898/handbook/eda/section3/eda366j.htm
-
Penn State Eberly College of Science, STAT 504 Analysis of Discrete Data, Lesson 9: Poisson Regression (Log Link, Offsets, Überdispersion und Skalenparameter), https://online.stat.psu.edu/stat504/Lesson09
-
statsmodels developers, statsmodels.genmod.families.family.NegativeBinomial, Dokumentation von statsmodels, https://www.statsmodels.org/stable/generated/statsmodels.genmod.families.family.NegativeBinomial.html
-
UCLA Office of Advanced Research Computing, Zero-Inflated Poisson Regression, R Data Analysis Examples, https://stats.oarc.ucla.edu/r/dae/zip/
-
statsmodels developers, Generalized Linear Models, Dokumentation von statsmodels, https://www.statsmodels.org/stable/glm.html
-
UCLA Office of Advanced Research Computing, Negative Binomial Regression, R Data Analysis Examples, https://stats.oarc.ucla.edu/r/dae/negative-binomial-regression/
-
Mike Grigsby, Marketing Analytics: A Practical Guide to Improving Consumer Insights Using Data Techniques, Kogan Page, 2022, ISBN 9781398608191, https://www.netgalley.co.uk/catalog/book/267990