Poisson Regression: modellieren, wie oft Kunden etwas tun
Das meiste, was Kunden tun, wird gezählt, nicht gemessen. Bestellungen im Jahr, Support Tickets im Monat, gebuchte Nächte in einer Saison, Angebote in einer Woche. Zählungen beginnen bei null, können nicht darunter fallen und häufen sich unten mit einem langen Schwanz, und die gewöhnliche Regression kommt damit schlecht zurecht: sie sagt negative Bestellungen voraus, verrechnet sich bei den Standardfehlern und hält die lauten Vielbesteller für einen Trend. Die Poisson Regression ist für Zählungen gebaut. In diesem Kapitel erkläre ich die Verteilung, den Log Link, der Koeffizienten in Multiplikatoren verwandelt, den Exposure Offset, den niemand auslassen sollte, und den Dispersionstest, der dir sagt, wann du zur negativen Binomialverteilung oder zu einem Zero Inflated Modell wechseln musst. Das Beispiel ist The Gift Bow, mein Solidus Demoshop für Geschenkkörbe: Bestellungen pro Kunde und Jahr, erklärt durch Erstbestellwert, Geschenk oder Eigenkauf, Mail Engagement und Region, und eine Salzburger Kundin, die dreieinhalbmal so oft bestellt hat wie erwartet. Du siehst, wie man eine Tabelle mit Incidence Rate Ratios liest, wie man ein echtes Segment von gewöhnlicher Streuung unterscheidet und wie aus dem Modell drei Listen werden, mit denen dein Marketing arbeiten kann. Das ist Teil 6 von 21 der Marketing Analytics Serie.
Die Kundin mit sieben Bestellungen
Jeden Dezember passiert bei The Gift Bow, meinem Solidus Demoshop für Geschenkkörbe, dasselbe. Jemand im Team entdeckt eine Kundin, die immer wieder bestellt, ist begeistert und will ein VIP Programm um Leute wie sie herum bauen. Zuletzt war es eine Frau aus Salzburg mit sieben Bestellungen in zwei Jahren. Ihr erster Korb war ein Geschenk um 75 Pfund für eine Kollegin, sie öffnet die meisten unserer Mails und hat noch nie etwas für sich selbst gekauft. Ist sie bemerkenswert? Ist sie die Spitze eines Segments, dem wir nachlaufen sollten? 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, Support Tickets pro Account und Monat, Aufenthalte pro Gast und Saison, Angebote pro Werkbank Workspace und Woche: nichts davon ist ein Ja oder Nein, und nichts davon ist eine glatte, stetige Grösse wie Umsatz. Es sind ganze Zahlen, sie beginnen bei null, sie können nicht darunter fallen, und der Grossteil der Masse sitzt unten, mit einem langen, dünnen Schwanz nach rechts. Solche Zahlen wie Umsatz zu behandeln und durch eine gewöhnliche Regression zu schieben, ist einer der häufigsten stillen Fehler, die ich in der Marketing Analytik sehe. In diesem Kapitel geht es um das richtige Werkzeug: die Poisson Regression, ihre nachsichtigere Verwandte, die negative Binomialregression, und was du tust, wenn deine Nullen aus zwei verschiedenen Quellen kommen. Die Zahlen sind durchgehend illustrativ, aus einem Demoshop entnommen und gerundet, damit die Überlegung leicht zu folgen ist.
Wo das Kapitel in der Serie steht
Wir sind in Teil zwei der Serie, den Kapiteln zu Techniken mit abhängiger Variable, in denen ein einzelnes Ergebnis durch eine Reihe von Treibern 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 hier wechselt zu Ergebnissen, die Zählungen sind. Das nächste Kapitel, Logistische Regression, Lift Charts und Warenkorbanalyse, nimmt sich den anderen häufigen nicht stetigen Fall vor, ein Ergebnis, das schlicht ja oder nein ist. Wer die drei zusammen liest, hat den grössten Teil des Regressionswerkzeugkastens, den ein kleines Unternehmen je brauchen wird.
Warum die gewöhnliche Regression an Zählungen scheitert
Die Methode der kleinsten Quadrate nimmt an, dass das Ergebnis frei in beide Richtungen um die Gerade streuen darf, mit ungefähr derselben Streuung überall. Zählungen brechen beide Annahmen.
Erstens der Boden. Eine Gerade, die an Bestellungen pro Jahr angepasst wird, sagt einer Geschenkkäuferin mit niedrigem Erstbestellwert in einer Region mit schwachem Engagement fröhlich minus 0,3 Bestellungen voraus. So eine 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, und die Koeffizienten wurden unter der Annahme berechnet, dass minus 0,3 ein legitimer Ort ist.
Zweitens die Streuung. Bei Zählungen wächst die Varianz mit dem Mittelwert. Kunden, die im Schnitt einmal im Jahr bestellen, streuen zwischen null und drei. Firmenkunden, die fünfmal im Jahr bestellen, streuen zwischen eins und zwölf. OLS nimmt konstante Varianz an, gibt den lauten Vielbestellern also dasselbe Gewicht wie den stillen, und seine Standardfehler sind falsch, meist zu optimistisch. Am Ende bist du dir sicher bei Effekten, die es nicht gibt.
Drittens die Form. Zählungen mit niedrigem Mittelwert sind schief. Der durchschnittliche Kunde bei The Gift Bow bestellt 1,4 mal im Jahr, aber der häufigste Wert ist null, und eine Handvoll Accounts bestellt fünfzehnmal. Ein symmetrischer Fehlerterm beschreibt das nicht. Ich habe in Zählen und Summieren schlägt maschinelles Lernen argumentiert, dass die meisten Geschäftsfragen durch gutes Zählen beantwortet werden, lange bevor sie etwas Kluges brauchen. Die Poisson Regression ist das, was gutes Zählen wird, sobald du wissen willst, warum sich die Zählungen unterscheiden.
Die Poisson Verteilung und der Log Link
Die Poisson Verteilung beschreibt die Anzahl von Ereignissen in einem festen Zeitfenster, wenn die Ereignisse unabhängig voneinander mit einer konstanten mittleren Rate eintreffen. Wenn die zugrunde liegende Rate einer Kundin Bestellungen pro Jahr ist, dann ist die Wahrscheinlichkeit, genau Bestellungen zu sehen
Dabei ist (Lambda) die erwartete Anzahl Ereignisse im Fenster, die tatsächlich beobachtete Anzahl, die Eulersche Zahl und die Fakultät von k. Die Verteilung hat einen einzigen Parameter, und dieser Parameter ist zugleich ihr Mittelwert und ihre Varianz. Merk dir das, denn genau diese Eigenschaft wird uns später beissen.
Die Poisson Regression lässt die Rate von der Kundin abhängen. Wir modellieren die Rate nicht direkt, weil eine Linearkombination von Treibern negativ werden kann und eine Rate nicht. Stattdessen modellieren wir ihren Logarithmus:
ist die erwartete Anzahl für Kundin , die Werte sind ihre Eigenschaften (Erstbestellwert, ob der erste Kauf ein Geschenk war, ob sie Mails öffnet, Region), und die Werte sind die Koeffizienten, die wir schätzen. Das ist der Log Link. Was immer die rechte Seite ergibt, die Exponentialfunktion davon ist positiv, also ist die vorhergesagte Rate immer eine legitime Rate.
Der Log Link ändert auch, wie du Koeffizienten liest, und das ist der Teil, den Leute entweder lieben oder ablehnen. In der gewöhnlichen Regression ist ein Koeffizient ein Betrag, der addiert wird. Hier ist er ein Multiplikator. Exponenziere den Koeffizienten, und du bekommst die Incidence Rate Ratio:
Die IRR für Treiber ist der Faktor, um den sich die erwartete Rate ändert, wenn um eine Einheit steigt und alles andere gleich bleibt. Eine IRR von 1,70 heisst 70 Prozent mehr Bestellungen pro Jahr. Eine IRR von 0,70 heisst 30 Prozent weniger. Multiplikative Effekte sind das, wie sich Marketing tatsächlich verhält: ein gutes Mailprogramm addiert nicht bei jedem 0,4 Bestellungen, es hebt jede Rate um einen Anteil, sodass der Firmenkunde absolut mehr Bestellungen gewinnt als die gelegentliche Geschenkkäuferin. Das Modell sagt das von sich aus.
Exposure: nicht alle sind gleich lang Kunden
Bevor du irgendetwas schätzt, wartet in den Daten eine Falle. Eine Kundin, die vor 23 Monaten dazugekommen ist, hatte 23 Monate Zeit zu bestellen; eine, die vor 4 Monaten kam, hatte 4. Zählst du einfach Bestellungen pro Kundin, wirken die alten Kunden wie Vielbesteller, und das Modell lernt, dass Kundendauer Loyalität verursacht, was verkehrt herum ist.
Die Lösung ist ein Exposure Offset. Du modellierst die Rate pro Zeiteinheit und nimmst den Logarithmus der beobachteten Zeit jeder Kundin als Term auf, dessen Koeffizient auf eins fixiert ist:
ist die Exposure, hier die Anzahl Jahre, die Kundin beobachtbar war. Schiebst du auf die linke Seite, steht dort , der Logarithmus der Jahresrate, und genau die wollen wir erklären. Jedes Zählmodell, das ich für einen Kunden baue, hat einen Offset, und ich prüfe den Offset, bevor ich irgendetwas anderes prüfe. Bei den Seeblick Hotels ist die Exposure die Anzahl Saisonen, die ein Gast in der Datenbank ist; bei Werkbank die Anzahl Monate, die ein Workspace aktiv ist.
Das Gift Bow Modell: Incidence Rate Ratios lesen
So sieht ein geschätztes Modell auf 4.180 Kunden des Demoshops aus, beobachtet zwischen sechs Monaten und zwei Jahren. Das Ergebnis sind Bestellungen, der Offset ist der Logarithmus der beobachteten Jahre, und die Treiber sind die, über die das Team zu Weihnachten streitet. Österreichische Bestellungen werden vor dem Modellieren in Pfund umgerechnet, damit der Erstbestellwert auf einer Skala liegt.
| Treiber | Koeffizient | Standardfehler | IRR | 95 Prozent Intervall | Klartext |
|---|---|---|---|---|---|
| Konstante | minus 0,15 | 0,08 | 0,86 | 0,74 bis 1,01 | Die Basis: ein britischer Selbstkäufer, 40 Pfund Erstbestellung, keine Mailöffnung, kein Firmenkunde, bestellt 0,86 mal im Jahr |
| Erstbestellwert, je 10 Pfund über 40 | 0,045 | 0,009 | 1,046 | 1,03 bis 1,06 | Jede zusätzlichen 10 Pfund im ersten Warenkorb heben die Jahresrate um etwa 4,6 Prozent |
| Erster Kauf war ein Geschenk | minus 0,36 | 0,06 | 0,70 | 0,62 bis 0,79 | Geschenkkäufer bestellen mit 70 Prozent 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 Mail Engagement geht mit einer um 70 Prozent höheren Rate einher |
| Österreich statt UK | minus 0,15 | 0,07 | 0,86 | 0,75 bis 0,99 | Österreichische Kunden bestellen 14 Prozent seltener, und das Intervall berührt fast die 1 |
| Firmenkunde | 0,88 | 0,10 | 2,41 | 1,98 bis 2,93 | Firmenkunden bestellen mit etwa der zweieinhalbfachen Rate |
Lies es von oben. Die Konstante ist die Rate für einen Kunden, bei dem jeder Treiber auf seinem Referenzwert steht; exponenziert sind das 0,86 Bestellungen im Jahr, der Anker, den alles andere multipliziert. Der Koeffizient des Erstbestellwerts gilt je 10 Pfund, eine Erstbestellung um 75 Pfund liegt also 3,5 Schritte über der Referenz von 40 und trägt bei, eine um 17 Prozent höhere Rate. Der Geschenkkoeffizient ist negativ, seine IRR liegt also unter eins: Geschenkkäufer kommen seltener zurück, was jeder Geschenkkorbhändler vermutet und kaum einer je beziffert hat. Mail Engagement ist der grösste Effekt, den wir direkt beeinflussen können, mit 1,70. Der Österreich Effekt ist real, aber klein, und sein Intervall reicht bis 0,99, darauf würde ich keine Länderstrategie bauen. Der Firmenkundeneffekt ist gross und erwartet.
Jetzt zur Salzburger Kundin. Wir haben eine österreichische Geschenkkäuferin mit einer Erstbestellung um 75 Pfund, die Mails öffnet und kein Firmenkunde ist. Multipliziere durch:
Über die zwei Jahre, die wir sie beobachtet haben, erwartet das Modell etwa 2,06 Bestellungen. Aufgegeben hat sie sieben, ungefähr das Dreieinhalbfache der erwarteten Rate. Ob das bemerkenswert ist, hängt ganz vom nächsten Abschnitt ab.
Passt die Poisson? Der Überdispersionstest
Die Poisson Verteilung besteht darauf, dass Varianz gleich Mittelwert ist. Echte Kunden halten sich selten daran. Manche sind still loyal, manche haben einmal zufällig gekauft, manche sind kleine Firmen, die sich hinter einer privaten Mailadresse verstecken. Diese verborgene Heterogenität lässt die beobachteten Zählungen breiter streuen, als eine Poisson mit demselben Mittelwert erlauben würde. Der Zustand heisst Überdispersion, und er ist in Kundendaten die Regel, nicht die Ausnahme.
Die erste Prüfung ist ein Bild. Hier die beobachtete Verteilung der jährlichen Bestellraten gegen das, was eine Poisson mit demselben Gesamtmittelwert von 1,4 vorhersagen würde:
Balken sind die 4.180 beobachteten Kunden, die Linie ist die Poisson Erwartung mit demselben Mittelwert. Zu viele Nullen, zu wenige Einsen und ein Schwanz, den es laut Poisson nicht geben dürfte.
Das Muster ist die klassische Signatur: mehr Nullen als erwartet, weniger Kunden in der Mitte und ein dicker rechter Schwanz. Die Poisson sagt zwei Kunden mit sieben Bestellungen voraus und praktisch keinen mit acht oder mehr. Der Shop hat 80 davon.
Die zweite Prüfung ist eine Zahl. Nach dem Schätzen des Modells berechnest du die Pearson Dispersionsstatistik:
ist die beobachtete Anzahl für Kundin , die vom Modell vorhergesagte Anzahl, die Anzahl Kunden und die Anzahl geschätzter Koeffizienten. Jeder Term fragt, wie weit die Kundin von der Vorhersage entfernt sitzt, in Einheiten der Varianz, die die Poisson erlauben würde. Stimmt die Poisson, liegt nahe bei 1. Für die rohen Zählungen oben liegt sie bei etwa 2,1: die Varianz ist doppelt so gross wie der Mittelwert. Nach den Kovariaten, die einen Teil der Streuung aufsaugen (allein das Firmenkundenflag erklärt viel vom Schwanz), sind es immer noch 1,9. Alles über etwa 1,3 lässt mich den Poisson Standardfehlern nicht mehr trauen, und über 1,5 wechsle ich das Modell.
Was geht schief, wenn du es nicht tust? Die Koeffizienten sind meist noch ungefähr richtig; die Poisson Regression ist bei den Punktschätzern recht robust. Die Standardfehler sind es nicht. Die sind um einen Faktor von etwa zu klein, bei müsste also jedes Intervall in der Tabelle oben um etwa 38 Prozent breiter sein. Der Österreich Effekt, dessen Intervall schon 0,99 berührt hat, wäre nicht mehr signifikant. Genau um solche Effekte herum bauen Leute Kampagnen und wundern sich dann, warum die Kampagne nichts gebracht hat.
Negative Binomialverteilung und Zero Inflation: das Modell wählen
Das negative Binomialmodell ist das Standardheilmittel. Es behält den Log Link und die IRR Interpretation, nichts von oben ist also verloren, aber es lässt die Varianz schneller wachsen als den Mittelwert:
(Alpha) ist ein Dispersionsparameter, der aus den Daten geschätzt wird. Bei bist du wieder bei der Poisson. Für The Gift Bow liegt das geschätzte bei etwa 0,48, sobald die Treiber im Modell sind. Schätze mit der negativen Binomialverteilung neu, und die IRRs bewegen sich kaum, aber die Intervalle werden ehrlich breiter, und die Wahrscheinlichkeiten im Schwanz ändern sich dramatisch.
Zurück zur Salzburger Kundin. Unter der Poisson mit erwarteten 2,06 Bestellungen liegt die Wahrscheinlichkeit für sieben oder mehr bei etwa 0,5 Prozent, eine Kundin von 190. Das sieht nach einem Star aus. Unter der negativen Binomialverteilung mit liegt dieselbe Wahrscheinlichkeit bei etwa 3,7 Prozent, eine von 27. Unter 4.180 Kunden sollten wir rein aus der gewöhnlichen Streuung der Loyalität etwa 150 Leute wie sie erwarten. Eine gute Kundin ist sie, ein Dankeschön hat sie verdient, aber sie ist kein Segment, und ein VIP Programm um sie herum wäre ein Programm um Rauschen herum. Das ist der praktische Unterschied zwischen den beiden Modellen: die negative Binomialverteilung sagt dir, wie überrascht du sein darfst.
Zero Inflation ist das andere strukturelle Thema, und es ist ein anderes. Überdispersion geht um Streuung. Zero Inflation geht darum, dass die Nullen aus zwei Populationen kommen. In einem Geschenkkorbshop sind manche Nullen Kunden, die durchaus wieder bestellen könnten und es nur noch nicht getan haben; sie liegen auf der Poisson oder negativen Binomialkurve. Andere Nullen sind Leute, die ein Geschenk für eine Kollegin zum Abschied gekauft haben, nie wieder an uns denken werden und von keiner Mail zu bewegen wären. Das sind strukturelle Nullen. Ein Zero Inflated Modell schätzt zwei Teile: einen logistischen Teil für die Wahrscheinlichkeit, ein struktureller Nie wieder Kunde zu sein, und einen Zählteil für alle anderen. Es lohnt sich, wenn dein Nullanteil weit über dem liegt, was selbst die negative Binomialverteilung vorhersagt, und wenn du einen plausiblen Treiber für die Nie wieder Gruppe hast, etwa ein Firmengeschenk, das an eine fremde Adresse ging.
So entscheide ich:
Der Entscheidungsweg, dem ich bei jedem Zählergebnis folge. Die meiste Kundenarbeit endet bei der negativen Binomialverteilung.
Für den Demoshop sagt die negative Binomialverteilung etwa 1.610 Nullen voraus, beobachtet sind 1.560. Das ist nah genug. Die Nullen erklären sich durch Heterogenität, nicht durch eine verborgene Nie wieder Population, also höre ich dort auf. Bei den Seeblick Hotels war die Geschichte anders: Gäste, die einmal über eine Plattform gebucht und nie eine Mailadresse hinterlassen hatten, waren für Direktbuchungen fast alle strukturelle Nullen, und das Zero Inflated Modell war klar besser.
Vom Modell zur Zielliste
Ein geschätztes Zählmodell ist nur nützlich, wenn es ändert, mit wem du redest. Drei Listen fallen fast gratis heraus.
Die erste ist die Liste der erwarteten Raten. Jede Kundin bekommt ein vorhergesagtes pro Jahr. Multipliziere mit dem durchschnittlichen Deckungsbeitrag pro Bestellung, und du hast den erwarteten Jahresdeckungsbeitrag, die ehrliche Basis dafür, wie viel du ausgeben darfst, um jede Person zu halten. Das schliesst direkt an die Retention Mathematik an: ein kleiner Anstieg der Rate in der Mitte der Liste ist mehr wert als ein grosser bei einer Handvoll an der Spitze.
Die zweite ist die Überraschungsliste. Vergleiche, was jede Kundin getan hat, mit dem, was das Modell erwartet hat. Das Pearson Residuum standardisiert die Lücke. Kunden weit über der Erwartung verdienen einen menschlichen Blick, keine Kampagne: ein guter Teil davon entpuppt sich als kleine Firmen, die unter einer privaten Adresse bestellen, und das heisst Anruf und Firmenkonto statt Rabattcode.
Die dritte ist die Hebelliste. Weil Mail Engagement eine IRR von 1,70 trägt, ist ein Anstoss zum Engagement bei jenen Kunden am meisten wert, die eine hohe Basisrate und noch kein Engagement haben. Das Modell liefert den erwarteten Gewinn für jede Person direkt: zusätzliche Bestellungen pro Jahr, wenn du sie bewegen könntest, was dir nie ganz gelingt, also rechne ich es herunter.
| Kunde | Profil | Erwartet pro Jahr | Beobachtet pro Jahr | Standardisiertes Residuum | Massnahme |
|---|---|---|---|---|---|
| A | UK Firmenkunde, 120 Pfund Erstbestellung, engagiert | 5,1 | 5,5 | 0,1 | Halten; Kundenbetreuer ist schon dran |
| B | Salzburger Geschenkkäuferin, 75 Pfund, engagiert | 1,03 | 3,5 | 2,0 | Dankeskarte; prüfen, ob eine Firma dahintersteckt |
| C | UK Selbstkäufer, 95 Pfund, nicht engagiert | 1,10 | 1,0 | minus 0,1 | Anstoss zum Engagement: höchster erwarteter Gewinn |
| D | UK Geschenkkäufer, 35 Pfund, nicht engagiert | 0,58 | 0 | minus 0,7 | In Ruhe lassen; wahrscheinlich strukturelle Null |
| E | Wiener Selbstkäufer, 60 Pfund, engagiert | 1,38 | 0 | minus 0,9 | Rückgewinnungsmail; erwartet, aber still |
Fünf Zeilen reichen, um die Logik zu zeigen. Kundin B ist die Salzburgerin: ein Residuum von 2,0 ist auffällig, aber nicht aussergewöhnlich, genau das hat uns die Schwanzwahrscheinlichkeit gesagt. Kunde C ist der, den die meisten Marketer ignorieren würden und den das Modell priorisiert: eine ordentliche Basis mit dem grössten Hebel unberührt. Kunde D bekäme von einer naiven Kampagne einen Rabatt, und der wäre verschwendet.
Selber rechnen
Du brauchst eine Zeile pro Kunde mit der Anzahl, der Exposure in Jahren und den Treibern, so wie sie zu Beginn des Fensters bekannt waren. Der letzte Punkt ist wichtig: nimm den Erstbestellwert und das Mailverhalten der ersten 90 Tage, nicht Lebenszeitwerte, 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_gbp - 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.country = 'AT')::int as austria,
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 in jedem Statistikpaket Sekunden. In Python mit statsmodels:
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
formula = "orders ~ first_value_10 + gift + email_open + austria + 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}") # near 1.0 is fine, above 1.5 switch
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)) # incidence rate ratios
In R ist es glm(..., family = poisson, offset = log(years_observed)), gefolgt von MASS::glm.nb. Alpha sauber zu schätzen statt zu fixieren kostet in beiden Sprachen eine Zeile mehr.
Bevor du dem Modell traust, mach vier Prüfungen. Zeichne beobachtete gegen vorhergesagte Anzahlen je Dezil der vorhergesagten Rate; die Punkte sollten auf der Diagonale liegen. Vergleiche den vorhergesagten Nullanteil mit dem beobachteten. Halte die letzten sechs Monate zurück und schau, ob die Kundenreihung des Modells bei Bestellungen hält, die es nie gesehen hat. Und sieh dir die grössten Residuen von Hand an; sind die obersten zehn alle dieselbe Art Kunde, fehlt dir ein Treiber, und du schaust nicht auf Rauschen.
Zeitbudget: ein Tag für die Daten, ein halber Tag für das Modell und ein Tag, um daraus Listen zu machen, die Leute tatsächlich benutzen. Das Modellieren ist der kleinste Teil, und das gilt für fast alles in dieser Serie.
Fallen
Das falsche Fenster zählen. Überlappt das Ergebnisfenster mit dem Zeitraum, in dem die Treiber gemessen wurden, erklärt das Modell die Vergangenheit mit der Vergangenheit. Friere die Treiber am Anfang ein und zähle ab dort.
Den Offset vergessen. Ich habe ein Modell gesehen, das stolz die Kundendauer als stärksten Treiber der Bestellungen auswies. Natürlich war sie das: die Kunden waren länger gezählt worden. Der Offset räumt das mit einer Zeile weg, und die ganze Geschichte ändert sich.
IRRs additiv lesen. Eine IRR von 1,70 auf einer Basis von 0,3 Bestellungen sind 0,21 zusätzliche Bestellungen im Jahr. Dieselbe IRR auf einer Basis von 5 sind 3,5 zusätzliche Bestellungen. Rechne immer auf die eigene Basis der Kundin durch, bevor du irgendjemandem ein Ergebnis versprichst.
Poisson Intervallen trauen, wenn die Dispersion bei 2 liegt. Die Koeffizienten sehen gut aus, die Signifikanzsterne sehen gut aus, und die Hälfte der signifikanten Effekte ist nicht signifikant. Prüf die Dispersion jedes einzelne Mal; es ist eine Zahl.
Dem Schwanz nachjagen. Vielbesteller 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.
Zero Inflation dazunehmen, weil es besser passt. Ein Zero Inflated Modell passt fast immer ein bisschen besser, weil es mehr Parameter hat. Nimm es, wenn du die Nie wieder Population benennen und anders behandeln kannst; sonst ist es Komplexität ohne Entscheidung dahinter.
So mache ich das für Kunden
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 Exposure ist und welche vier oder fünf Treiber zu Beginn des Fensters jeder Kundin tatsächlich bekannt waren. Danach nehme ich mir zwei Wochen auf meine Rechnung, bevor du dich zu irgendetwas verpflichtest.
Die Daten, die ich brauche, sind unspektakulär: ein Export der Kunden mit den Details ihrer Erstbestellung und eine Tabelle der späteren Ereignisse, oder Lesezugriff auf die Shop oder CRM Datenbank. Bei einem Solidus Shop wie The Gift Bow ist das eine einzige Abfrage auf die Bestell und Nutzertabellen; bei einer Rails SaaS wie Werkbank sind es Workspaces und ihre Nutzungsereignisse. Ich baue die Exposure korrekt, schätze die Poisson, mache den Dispersionstest, wechsle zur negativen Binomialverteilung, wenn die Daten es verlangen, und gehe nur dann zu Zero Inflation, wenn wir die Gruppe benennen können.
Was du bekommst: jede Kundin bewertet mit einer erwarteten Jahresrate und einem Fehlerband, die drei Listen von oben (erwarteter Wert, Überraschungen, Hebel) als CSV oder direkt in deinem Mailtool, 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. Alles davon gehört dir, inklusive Code.
Zu den Kosten: das Zählmodell ist ein klar abgegrenztes Stück Data Science Arbeit, nach den zwei Wochen als Fixpreisprojekt, und die anschliessenden Massnahmen können als Performance Marketing auf Provisionsbasis laufen, wenn du lieber für Ergebnisse zahlst. Die Preisseite zeigt, wie beides zusammenpasst. Ich bin eine verantwortliche Person von den Daten bis zur Kampagne, und genau das ist der Punkt.
Fragen an dein eigenes Team
- Was genau ist die Anzahl, und über welches Fenster pro Kundin? Kann niemand die Exposure nennen, hat das Modell keinen Offset.
- Wurden die Treiber 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 Multiplikatoren berichtet, und wurden sie auf die Basis einer echten Kundin durchgerechnet?
- Wie viele Kunden mit so vielen Bestellungen erwartet das Modell ohnehin? Ist das "Segment" grösser als das?
- Stimmt der vorhergesagte Nullanteil mit dem beobachteten überein, und wenn nicht, könnt ihr benennen, wer die zusätzlichen Nullen sind?
- Wurde die Kundenreihung 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?
Diese Serie ist inspiriert von Mike Grigsbys Marketing Analytics (Kogan Page). Erklärungen, Beispiele und Zahlen hier sind meine eigenen.