{ "cells": [ { "cell_type": "markdown", "id": "cell-00", "metadata": {}, "source": [ "# Start here\n", "\n", "This isn't a lesson. It's a router.\n", "\n", "Four questions a business actually asks, each answered on real data, each ending\n", "with the one line you could say out loud in a meeting and the place to go if you\n", "want the long version.\n", "\n", "If you're looking for the tutorials, they're\n", "[`cdnow_clv.ipynb`](cdnow_clv.ipynb) for the money side and\n", "[`online_retail_ii_cohort.ipynb`](online_retail_ii_cohort.ipynb) for the\n", "retention side. Come back here when you want an answer rather than an education." ] }, { "cell_type": "markdown", "id": "cell-01", "metadata": {}, "source": [ "## The map\n", "\n", "| Your question | Section | What answers it | Long version |\n", "| --- | --- | --- | --- |\n", "| \"What is a customer worth?\" | 1 | `CLV().fit().predict()` | `cdnow_clv.ipynb` |\n", "| \"Is this customer gone, or just quiet?\" | 2 | `BGNBD.probability_alive()` | `cdnow_clv.ipynb` §7 |\n", "| \"Who should get the retention budget?\" | 3 | Ranking on `clv`, not on past spend | `cdnow_clv.ipynb` |\n", "| \"Why does my retention chart disagree with Marketing's?\" | 4 | `CohortMatrix` and its `NaN`s | `online_retail_ii_cohort.ipynb` |\n", "| \"Can I even run this on my data?\" | 0 | Three checks, below | — |\n", "\n", "Every name in that table gets imported and called further down, so if one of them\n", "is renamed or removed this notebook stops running and CI goes red. The map can't\n", "quietly stop matching the library." ] }, { "cell_type": "markdown", "id": "cell-02", "metadata": {}, "source": [ "## 0. Before any of this: can you run it at all?\n", "\n", "Three things have to be true of your transaction log. None of them is about\n", "statistics; they're about whether the data can identify anything.\n", "\n", "1. **Enough customers bought more than once.** These models learn the repeat\n", " pattern. A base where nobody came back has no pattern to learn.\n", "2. **Enough calendar time.** A customer acquired last week hasn't had the chance\n", " to lapse, so a log that's three weeks long can't tell loyal from new.\n", "3. **Amounts that are actually amounts.** Refunds, zero-value rows and\n", " test orders will quietly become someone's average spend.\n", "\n", "The cell below checks all three and refuses rather than guesses. Point it at your\n", "own log by swapping the DataFrame." ] }, { "cell_type": "code", "execution_count": 1, "id": "cell-03", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
your datarule of thumbok
check
repeat buyers1,152 of 2,357need 100+, and >5% of the baseTrue
calendar span545 daysneed ~3x your typical repurchase gapTrue
non-positive amounts8 rowsdecide net / drop / raise before fittingFalse
\n", "
" ], "text/plain": [ " your data \\\n", "check \n", "repeat buyers 1,152 of 2,357 \n", "calendar span 545 days \n", "non-positive amounts 8 rows \n", "\n", " rule of thumb ok \n", "check \n", "repeat buyers need 100+, and >5% of the base True \n", "calendar span need ~3x your typical repurchase gap True \n", "non-positive amounts decide net / drop / raise before fitting False " ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pathlib import Path\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "\n", "from clvkit import CLV, CohortMatrix, CustomerBase\n", "\n", "SURFACE, INK, MUTED = \"#fcfcfb\", \"#0b0b0b\", \"#52514e\"\n", "NAIVE, ACTUAL, MODEL = \"#eb6834\", \"#0b0b0b\", \"#2a78d6\"\n", "\n", "REPO = next(\n", " p for p in [Path.cwd(), *Path.cwd().parents] if (p / \"CDNOW_sample.txt\").exists()\n", ")\n", "\n", "\n", "def readiness(log, *, customer_id=\"customer_id\", date=\"date\", amount=\"amount\"):\n", " \"\"\"Three yes/no checks, and the numbers behind them.\"\"\"\n", " per_customer = log.groupby(customer_id)[date].agg([\"min\", \"max\", \"count\"])\n", " repeat = int((per_customer[\"count\"] > 1).sum())\n", " span_days = (log[date].max() - log[date].min()).days\n", " bad_amounts = int((log[amount] <= 0).sum())\n", "\n", " return pd.DataFrame(\n", " [\n", " (\n", " \"repeat buyers\",\n", " f\"{repeat:,} of {len(per_customer):,}\",\n", " \"need 100+, and >5% of the base\",\n", " repeat >= 100 and repeat / len(per_customer) > 0.05,\n", " ),\n", " (\n", " \"calendar span\",\n", " f\"{span_days:,} days\",\n", " \"need ~3x your typical repurchase gap\",\n", " span_days >= 180,\n", " ),\n", " (\n", " \"non-positive amounts\",\n", " f\"{bad_amounts:,} rows\",\n", " \"decide net / drop / raise before fitting\",\n", " bad_amounts == 0,\n", " ),\n", " ],\n", " columns=[\"check\", \"your data\", \"rule of thumb\", \"ok\"],\n", " ).set_index(\"check\")\n", "\n", "\n", "log = pd.read_csv(\n", " REPO / \"CDNOW_sample.txt\",\n", " sep=r\"\\s+\",\n", " header=None,\n", " names=[\"master_id\", \"customer_id\", \"date\", \"quantity\", \"amount\"],\n", ")\n", "log[\"date\"] = pd.to_datetime(log[\"date\"], format=\"%Y%m%d\")\n", "\n", "readiness(log)" ] }, { "cell_type": "markdown", "id": "cell-04", "metadata": {}, "source": [ "CDNOW passes the first two and fails the third: 8 rows have a zero dollar value.\n", "That's not fatal, it's a decision. `CustomerBase` takes `on_negative=\"net\"`\n", "(default, nets them within a period), `\"drop\"`, or `\"raise\"` if you'd rather be\n", "told than have it handled.\n", "\n", "A failing row here doesn't mean stop. It means decide, and write down what you\n", "decided." ] }, { "cell_type": "markdown", "id": "cell-05", "metadata": {}, "source": [ "## 1. What is a customer worth?\n", "\n", "You already have a formula for this, and it's probably some version of\n", "\n", "```\n", "value = average ticket x purchase frequency x margin\n", "```\n", "\n", "taking each customer's historical rate and extending it forward. It's a\n", "reasonable thing to do. Let's run it and find out how wrong it is.\n", "\n", "The test is honest: fit on CDNOW's first 39 weeks, predict the next 39, then\n", "compare both answers to what those customers actually spent in weeks 40 to 78.\n", "Neither method sees the holdout." ] }, { "cell_type": "code", "execution_count": 2, "id": "cell-06", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
revenue over weeks 40-78error
your formula$114,396+61.2%
what actually happened$70,976
clvkit$59,931-15.6%
\n", "
" ], "text/plain": [ " revenue over weeks 40-78 error\n", "your formula $114,396 +61.2%\n", "what actually happened $70,976 \n", "clvkit $59,931 -15.6%" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cb = CustomerBase.from_transactions(log, time_unit=\"W\", collapse=\"D\")\n", "calibration, holdout = cb.split(calibration_period_end=\"1997-09-30\")\n", "\n", "c = calibration.to_pandas()\n", "weeks_ahead = int(holdout[\"duration_holdout\"].iloc[0])\n", "\n", "# Your formula: each customer's own repeat rate, extended over the next 39 weeks.\n", "rate = (c[\"frequency\"] / c[\"T\"]).replace([np.inf, -np.inf], 0).fillna(0)\n", "naive = (rate * weeks_ahead * c[\"monetary_value\"]).sum()\n", "\n", "# What actually happened in those 39 weeks.\n", "actual = (holdout[\"frequency_holdout\"] * holdout[\"monetary_value_holdout\"]).sum()\n", "\n", "# What clvkit predicts, fitted on the same 39 weeks and nothing else.\n", "model = CLV().fit(calibration).predict(horizon=weeks_ahead, discount_rate=0.0)\n", "predicted = model.to_pandas()[\"clv\"].sum()\n", "\n", "pd.DataFrame(\n", " {\n", " \"revenue over weeks 40-78\": [f\"${v:,.0f}\" for v in (naive, actual, predicted)],\n", " \"error\": [f\"{naive / actual - 1:+.1%}\", \"\", f\"{predicted / actual - 1:+.1%}\"],\n", " },\n", " index=[\"your formula\", \"what actually happened\", \"clvkit\"],\n", ")" ] }, { "cell_type": "code", "execution_count": 3, "id": "cell-07", "metadata": {}, "outputs": [ { "data": { "image/png": "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qIxTqLAQCAQYOGgwevfpi1evIiEWiWFjawttbW1V50dEREREROWAwvNYAICWlhbs7R3gUKMGtLW1EfXqFX5ZtVJVuRERERERUTlR7CsWTx4/xv379yAUCtHUoxlq1qyJ9LQ07Nu3F5cuXUT16nYlkCYREREREZVlxSosbty4jt/WrIGeni4A4OTJE5gwYSL27NkFNTU1jJ/wA5o3b1EiiRIRERERUdlVrMLi2D//YMCAAeg/YCDEYjEOHtiPtWvXoHmLlhgzZiy0tLRKKk8iIiIiIirDijXGIjo6Cl27dQfwZgB39x49IRKJMGLESBYVRERERESfsWIVFtnZ2dDT05Msv/1/Y2Nj1WZFRERERETlSrEHb1+5fKnItjZt2ymeERERERERlTvFLiw2bFhfZBsLCyIiIiKiz0uxCosDBw+XVB5ERERERFSOKTVBHhEREREREcDCgoiIiIiIVICFBRERERERKY2FBRERERERKY2FBRERERERKY2FBRERERERKY2FBRERERERKY2FBRERERERKa3cFBY5OTk4c+Z0ie5j+7atuH/vXonug4iIiIioIirWzNulKS8vD6HPnhW4TigU4vp1Hzx5/Bhq6upwdnZG8+YtoKYmXTe9ehWJixcuIDklBdWqVUPnTp2ho6srWf/gwX1UqVIFgHtJHgoRERERUYVTLq5Y3LlzG7t2/YXg4CD8889RpKenS9aJRCJMmTwRQYGBcHBwQJUqVbB711/45ZeVEIvFkriwsDDMmjkD6enpcHFxgd9NXyxYMB9CobA0DomIiIiIqEIp81csDhzYj/PnzqJzl66oVKkyUlNTMXfObPy65jeoqalBIBBg8eKlqGxqKtmmVs1amDdvDsLCQlGjRk0AwL69u+Hq6oZx348HAHh4NMPYMaNx+fIldOzYqcB9x0RH4++/96FN27aoX59XMYiIiIiIClPmr1hcvnQJg4cMRefOXWBlZYUvvxyBpUuXQSAQAAAEAoFUUQFAspyRngHgza1Sjx49gkezZpIYQ0ND1K5TB/f8/Qvc74vnzzF//jxYVanCooKIiIiIqAhlvrDQ19dDRHi4VJuRsbGksCjImdP/Ql9fHzVr1QIAxMe/Rn5+PszMzKTizMzMERcXK7N9UFAgFi9eiD59+mDw4CGF7kcoFCIzM/PdKyurOIdGRERERFRhlPlbob79djR+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 3.6))\n", "fig.patch.set_facecolor(SURFACE)\n", "ax.set_facecolor(SURFACE)\n", "\n", "bars = {\n", " \"your formula\": (naive, NAIVE),\n", " \"what actually\\nhappened\": (actual, ACTUAL),\n", " \"clvkit\": (predicted, MODEL),\n", "}\n", "for i, (value, colour) in enumerate(bars.values()):\n", " ax.bar(i, value, width=0.55, color=colour)\n", " ax.text(i, value + 2500, f\"${value:,.0f}\", ha=\"center\", fontsize=11, color=INK)\n", "\n", "ax.axhline(actual, color=ACTUAL, lw=1, ls=(0, (4, 4)))\n", "ax.set_xticks(range(3), bars.keys(), fontsize=10)\n", "ax.yaxis.set_major_formatter(lambda v, _: f\"${v / 1000:,.0f}k\")\n", "ax.set_ylabel(\"Revenue, weeks 40-78\", color=MUTED)\n", "ax.set_title(\"Predicting 39 weeks nobody had seen yet\", loc=\"left\")\n", "ax.set_ylim(0, naive * 1.18)\n", "for side in (\"top\", \"right\"):\n", " ax.spines[side].set_visible(False)\n", "ax.spines[\"left\"].set_color(\"#d8d7d2\")\n", "ax.spines[\"bottom\"].set_color(\"#d8d7d2\")\n", "ax.tick_params(colors=MUTED)\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "cell-08", "metadata": {}, "source": [ "Your formula overshoots by **61%**. It projects \\$114k against the \\$71k that\n", "actually arrived.\n", "\n", "The reason is structural, not arithmetic. A historical rate assumes everybody\n", "keeps buying at the rate they've bought so far, and about half of any retail base\n", "has already quietly stopped. The formula has no way to represent \"gone\", so it\n", "bills you for customers who are never coming back.\n", "\n", "`clvkit` lands at \\$60k, which is **16% low**. It is wrong too. It's wrong by a\n", "quarter as much, and it's wrong in the safe direction, but anyone telling you\n", "this is the number is selling something.\n", "\n", "> **Say this in the meeting:** \"Our current LTV number assumes nobody ever\n", "> churns. On our own history it overstates the next nine months by about 60%.\n", "> Here's the version that models churn, and it's still 16% off, so let's treat it\n", "> as a range.\"\n", "\n", "Long version: [`cdnow_clv.ipynb`](cdnow_clv.ipynb)." ] }, { "cell_type": "markdown", "id": "cell-09", "metadata": {}, "source": [ "## 2. Is this customer gone, or just quiet?\n", "\n", "Nobody cancels anything at a retailer. There's no churn event to count, only\n", "silence, and silence means different things for different customers. Somebody who\n", "buys every eight weeks and hasn't bought in ten is quiet. Somebody who bought\n", "twice in a fortnight two years ago is gone.\n", "\n", "`probability_alive()` is the model's answer, and it's a probability, not a label." ] }, { "cell_type": "code", "execution_count": 4, "id": "cell-10", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequencyrecencyTweeks_silentp_alive
customer_id
1673265.2969.294.00.84
983147.4372.5725.10.73
171252.8677.8625.00.22
7511239.7173.7134.00.02
\n", "
" ], "text/plain": [ " frequency recency T weeks_silent p_alive\n", "customer_id \n", "1673 2 65.29 69.29 4.0 0.84\n", "983 1 47.43 72.57 25.1 0.73\n", "17 12 52.86 77.86 25.0 0.22\n", "751 12 39.71 73.71 34.0 0.02" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clv = CLV().fit(cb)\n", "scored = cb.to_pandas().assign(\n", " p_alive=clv.transaction_model.probability_alive().to_pandas(),\n", " weeks_silent=lambda d: (d[\"T\"] - d[\"recency\"]).round(1),\n", ")\n", "\n", "scored.loc[[1673, 983, 17, 751]][\n", " [\"frequency\", \"recency\", \"T\", \"weeks_silent\", \"p_alive\"]\n", "].round(2)" ] }, { "cell_type": "markdown", "id": "98f895f9", "metadata": {}, "source": [ "Those four rows are the whole base in miniature. Here it is in full — weeks of\n", "silence on the x-axis, each customer's repeat-purchase count in colour. Every\n", "result in `clvkit` plots itself, so this is one line:" ] }, { "cell_type": "code", "execution_count": null, "id": "4857c103", "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(8, 4.4))\n", "clv.transaction_model.probability_alive().plot(ax=ax)\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "cell-11", "metadata": {}, "source": [ "Look at customers 983 and 17. They have been silent for the **same 25 weeks**,\n", "and the model says 0.73 against 0.22.\n", "\n", "The difference is everything they did before that. Customer 983 bought twice, so\n", "a six-month gap is his normal. Customer 17 bought thirteen times, so a six-month\n", "gap is behaviour that has never happened to him before. Customer 751 is the same\n", "story further along: thirteen purchases, 34 weeks of silence, **0.02**.\n", "\n", "The heavier buyers are the ones the model has written off. That's the whole idea.\n", "Silence is read against that customer's own rhythm, not against a company-wide\n", "threshold, so the same 25 weeks means \"normal\" for one and \"something broke\" for\n", "the other.\n", "\n", "Which is why a CRM rule like \"no order in 6 months, send the win-back\" fires at\n", "exactly the wrong moment. It's far too late for 751, whose behaviour broke months\n", "ago, and premature for 983, who was never a frequent buyer to begin with.\n", "\n", "> **Say this in the meeting:** \"Silence isn't churn. A customer who ordered every\n", "> three weeks and has gone quiet for eight months is a different problem from one\n", "> who orders twice a year. Our current rule treats them identically.\"\n", "\n", "Long version: [`cdnow_clv.ipynb`](cdnow_clv.ipynb), section 7." ] }, { "cell_type": "markdown", "id": "cell-12", "metadata": {}, "source": [ "## 3. Who should get the retention budget?\n", "\n", "The default answer is \"our best customers\", and the default definition of best is\n", "lifetime spend to date. Here's what that list costs you.\n", "\n", "Take the top 10% by historical spend, take the top 10% by predicted future value,\n", "and look at the customers who make one list but not the other." ] }, { "cell_type": "code", "execution_count": 5, "id": "cell-13", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customersmean P(alive)mean predicted value
on both lists1750.81228.37
top spenders only590.2421.99
\n", "
" ], "text/plain": [ " customers mean P(alive) mean predicted value\n", "on both lists 175 0.81 228.37\n", "top spenders only 59 0.24 21.99" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "past_spend = log.groupby(\"customer_id\")[\"amount\"].sum().rename(\"past_spend\")\n", "future = CLV().fit(cb).predict(horizon=52, discount_rate=0.0).to_pandas()[\"clv\"]\n", "\n", "ranked = scored.join(past_spend).join(future)\n", "top_n = int(len(ranked) * 0.10)\n", "\n", "by_past = set(ranked.nlargest(top_n, \"past_spend\").index)\n", "by_future = set(ranked.nlargest(top_n, \"clv\").index)\n", "only_past = sorted(by_past - by_future)\n", "\n", "pd.DataFrame(\n", " {\n", " \"customers\": [len(by_past & by_future), len(only_past)],\n", " \"mean P(alive)\": [\n", " ranked.loc[sorted(by_past & by_future), \"p_alive\"].mean(),\n", " ranked.loc[only_past, \"p_alive\"].mean(),\n", " ],\n", " \"mean predicted value\": [\n", " ranked.loc[sorted(by_past & by_future), \"clv\"].mean(),\n", " ranked.loc[only_past, \"clv\"].mean(),\n", " ],\n", " },\n", " index=[\"on both lists\", \"top spenders only\"],\n", ").round(2)" ] }, { "cell_type": "markdown", "id": "cell-14", "metadata": {}, "source": [ "59 of your 234 top spenders, **a quarter of the VIP list**, do not appear in the\n", "top decile by predicted value. Their mean `P(alive)` is 0.24 and their mean\n", "predicted next-year value is \\$22, against \\$228 for the ones who make both\n", "lists. That's a tenfold difference in what the next campaign can expect back.\n", "\n", "They earned their place on the list. They spent that money. It's just already\n", "spent, and a loyalty tier built on lifetime-to-date is a monument to it.\n", "\n", "The honest caveat: the 175 on both lists are the same people either way, so this\n", "is not an argument that past spend is useless. It's an argument that the last\n", "quarter of the list is where the waste concentrates.\n", "\n", "> **Say this in the meeting:** \"About a quarter of our VIP segment has a 24%\n", "> chance of still being active. We're spending retention budget on people who\n", "> already left. Ranking on predicted value instead of lifetime spend moves that\n", "> budget to customers worth ten times more.\"" ] }, { "cell_type": "markdown", "id": "cell-15", "metadata": {}, "source": [ "## 4. Why does my retention chart disagree with Marketing's?\n", "\n", "Almost always one specific bug, and it's not a modelling disagreement. It's what\n", "happened to the empty cells.\n", "\n", "A cohort matrix is a triangle. The cohort acquired 24 months ago has 24 months of\n", "history; the cohort acquired last month has one. The cells past a young cohort's\n", "lifetime are **not zero**. They haven't happened. If you average a column that\n", "mixes real numbers with those empty cells, you're telling the spreadsheet that\n", "every young cohort churned on schedule.\n", "\n", "The log below is generated, not real, for one reason: this needs many cohorts and\n", "the real multi-cohort dataset is a 43 MB download that lives in the sibling\n", "notebook. **Every cohort in it retains identically by construction.** There is no\n", "trend. Watch a trend appear anyway." ] }, { "cell_type": "code", "execution_count": 6, "id": "cell-16", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
period_number0123456
cohort
2023-011.00.3250.3250.2420.2170.3170.242
2023-021.00.3500.2580.2330.3080.2250.217
2023-031.00.3080.2670.3420.2670.3000.283
2023-041.00.2580.3420.2920.3000.2420.192
\n", "
" ], "text/plain": [ "period_number 0 1 2 3 4 5 6\n", "cohort \n", "2023-01 1.0 0.325 0.325 0.242 0.217 0.317 0.242\n", "2023-02 1.0 0.350 0.258 0.233 0.308 0.225 0.217\n", "2023-03 1.0 0.308 0.267 0.342 0.267 0.300 0.283\n", "2023-04 1.0 0.258 0.342 0.292 0.300 0.242 0.192" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rng = np.random.default_rng(0)\n", "months = pd.period_range(\"2023-01\", \"2024-12\", freq=\"M\")\n", "\n", "rows = []\n", "for start, first_month in enumerate(months):\n", " for _ in range(120): # 120 new customers every month, same behaviour\n", " customer = len(rows) and rows[-1][0] + 1 or 1\n", " rows.append((customer, first_month.to_timestamp(), 40.0))\n", " for ahead in range(1, len(months) - start):\n", " if rng.random() < 0.34 * np.exp(-0.045 * ahead):\n", " rows.append((customer, months[start + ahead].to_timestamp(), 40.0))\n", "\n", "generated = pd.DataFrame(rows, columns=[\"customer_id\", \"date\", \"amount\"])\n", "matrix = CohortMatrix.from_transactions(generated, period=\"M\", metric=\"retention\")\n", "rates = matrix.to_pandas(relative=True)\n", "\n", "print(repr(matrix))\n", "rates.iloc[:4, :7].round(3)" ] }, { "cell_type": "code", "execution_count": 7, "id": "cell-17", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
month-12 retentioncohorts it used
correct: average the cohorts old enough to have a month 120.19212
wrong: fillna(0) first, so young cohorts count as churned0.09624
same as correct, but the sample size is not what you think0.19212
\n", "
" ], "text/plain": [ " month-12 retention \\\n", "correct: average the cohorts old enough to have... 0.192 \n", "wrong: fillna(0) first, so young cohorts count ... 0.096 \n", "same as correct, but the sample size is not wha... 0.192 \n", "\n", " cohorts it used \n", "correct: average the cohorts old enough to have... 12 \n", "wrong: fillna(0) first, so young cohorts count ... 24 \n", "same as correct, but the sample size is not wha... 12 " ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "month = 12\n", "observed = rates[month].dropna()\n", "\n", "pd.DataFrame(\n", " {\n", " \"month-12 retention\": [\n", " observed.mean(),\n", " rates[month].fillna(0).mean(),\n", " rates[month].mean(),\n", " ],\n", " \"cohorts it used\": [len(observed), len(rates), len(observed)],\n", " },\n", " index=[\n", " \"correct: average the cohorts old enough to have a month 12\",\n", " \"wrong: fillna(0) first, so young cohorts count as churned\",\n", " \"same as correct, but the sample size is not what you think\",\n", " ],\n", ").round(3)" ] }, { "cell_type": "code", "execution_count": 8, "id": "cell-18", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAGGCAYAAADGq0gwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAwENJREFUeJzs3XWYVNUbwPHv9Gwv7MIGGzRLNxJSUiIgpbSCjaBi/kxUsEVUVAywMFAsECSkpLu7YVnYgO2evL8/FgaGnU024f08zzww55577nvvzO7OO+fcc1RWq0VBCCGEEEIIIcQNQV3eAQghhBBCCCGEKDmS5AkhhBBCCCHEDUSSPCGEEEIIIYS4gUiSJ4QQQgghhBA3EEnyhBBCCCGEEOIGIkmeEEIIIYQQQtxAJMkTQgghhBBCiBuIJHlCCCGEEEIIcQORJE8IIYQQQgghbiCS5Inr0rhxE4YMGVreYeSposdXkOzsbLRaHVOmTC3vUErViRMn0Gp1zJkzp8C6FeGaFCXekmq/tI9ZUU2e/Cpara7AMlE6nnjiCXx8fMs7jALJe0IIIZxJkleAO+7oh1ary/Nx7ty58g7xptK6dWvuuKNfeYchbgIHDhxAq9Xx888/l3coZWbbtm2MGjWasLBw3NzcCQoKZuDAQSxfvqK8QxOl6Lnn/ofBYCzvMIQQQpQgSfIKwcPDA6vV4vIREhJS3uEJUenVrVsXq9XC2LFjyzuUQqls8RbGzJkzufXWzri7u/Hvv8tISUlm06aNNGrUiH79+vH88y+Ud4gOb7wxFavVUt5hiApE3hNCCOFMW94BCCGEKF9r167jqaee5qGHHmTmzJmO8lq1avHOO29TpUoVXnrpJZo2bcKYMWPKMVIhhBBCFIb05JWQgQMHUaNGCFarNde2MWPuoVq16phMJkfZokX/0L37bfj6VsHT04vOnbvkGhJ1+X6yAwcO0Lt3H7y9fZgwYQJDh95FcHANzGZzrmONHDkq17Fc+eefxfTs2Qs/P3/8/Pzp0+d2Nm7c6FTnyy+/pGXLlnh4eOLvX41Bgwazd+9el+0dPXqU3r374OXlTVhYOG+++RaKouSqV5g28zpvPz9/9u7dx/Llyx3DZevUqZvveRY1vut5XSDnfrHXX59Co0aNcXf3IDAwiHHjxhETE1NgjFFRUQwbNhxf3ypUq1ad8ePHk5mZ6bJuYY+TnZ3N1Klv0LRpMzw8PKlduw6PP/44Fy9eBCA9Pd1p+LG7uwcREQ159dXXHO+hhIQEPD29eOKJJ3LFkZKSgre3D+PHjwfAbrfz3nvv06RJU7y9fQgPr8mIESM5dOhQvuee1/1mJX1NduzYgVar488//+THH38kIqIhHh6etGvXjnXr1jvq/fPPYlq0aAnA2LHjHNdn8uRX8423JK53YRXldSnIW2+9hV6v580333S5/emnnyI4OJg33riy/fK9WhkZGTz88MP4+flTtaof99xzDykpKbnaOHToECNGjCQwMAg3N3caN27Cxx9/7PLnsCCu7r8qq3jOnDnDPffcQ1hYOF5e3jRr1pw33niTjIwMR52ZM2c6vc5VqlSlW7fuLF68xFHn888/R6vVsWPHjlzH+Prrr9FqdWzatKnQx8zLmjVr6dmzF76+VfDy8qZ9+w788ccfju3Dhg3no48+wmazOcV84sQJp3ZK8rpefq1SU1N58MEHqV49gIiIhixfvgKtVuf0s7h161a0Wh316tV3Os4jjzxCYGCQo11X74nCXreSfG8KIURFIUleCXnggfuJi4tjyZIlTuXJycksWLCA0aNHYTAYgJwPAEOGDKFLly4cOLCfM2dOc/vttzNgwACnDwGQ80Hu+edf4L333uX48WPcdtttPProo1y4cIE///zTqW5sbCwLFixg1KiRjmO5MmPGDAYPHkyLFi3Ytm0rp0+f4vnnn+eTTz511Hn++ReYNOlJxo4dy9mzkWzcuIHs7Gw6d+7Cnj17nNpLTEzk5ZdfYdq09zl//hxPPfUkr7/+Or/99ptTvaK06eq8ExLiad68Gb1793YMlz150vmDiCuFje96XxeLxULfvnfw7bff8u677xAbG8N//60mMvIsXbt2c/mB6LLU1FRuu60Hhw8fZvnyfzlx4jjdu3fnqaeeylW3sMcxm8307t2HL774gldeeZmzZyNZt24tTZo04fvvc5ITT09Pp+HH0dHneffdd/jyyy958cUXAfDz82PYsLv56aefSU9Pd4plzpw5ZGZmct999wHwwQfTeeutt3jnnbeJiYlm+/ZtDB8+jI8//rjA16ksrsllf/75F0eOHOW//1Zz5MhhfHx8GTp0KKmpqQD079+PPXt2XzrH7x3X54038p7spaSud2EV5XXJT1ZWFuvXr6d9+/ZUqVLFZR2t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hQf466/5eHt706ZNayDnvW63213ODl1YJXVdVSqVY2jmqlWrHEMyw8PDqVevHu+88w7Jycn5DtW8Vl7XraK9N4UQoiRJklfChg4dio+PDw8++CCJiYncd9/9TtsDAgJ4//33mDVrNi+++BInT54kOzubY8eOMWvWLEaOHFXoYzVv3pwOHTowY8YMFEXJdSxXqlevzttvv8Wvv87j2Wef49SpU6SlpfHff2sYPnwEAKGhoTz++ON88823fPrppyQmJnLs2DGGDx9BVlYWb775RtEuSgm22aRJYw4cOMCpU6dKdHrrknhdHnjgAbp06cLIkaP47bffuHjx4qX7Xrbz9NPPMGvWrDz3feSRhwkPD+fee8eyfft2UlNT+f333zl48ECxj3P//ffToUMH7r//fn777TcSEhI4f/48X331FdOmfQDAgAH9OXPmDNOmfUBaWhpHjhzhrrvupkOHDi7jHD/+EcxmM59//gWhoaH07t3Lafvw4SOYPXs2x48fx2QycfLkSebO/YWqVavSrFnTAq9haV+ToggJCcHHx4eVK1flmr3SldK43oWV1+vy999/o9XqmDFjRr7733Zbdz74YBqzZs3mwQcf5MiRI1gsFiIjI3nppZd5+eWXmTRpEvfee2+x4ps58zPOnj3L0KF3sXPnTjIzMzl37hyLFi2iT5/by3xIXHHj2b17N3fddTcrVqzkwoULZGVlsWLFSnbt2kW3bl2BnISpe/fuzJ49my1btpCens7ixUuYNu0Dlz8DOp2OBx54gL///puTJ09y7733Ot1DV5hj5uXdd9/l+PHjPPjgg0RGRhIXF8fkya+ybNkypk6d4vgio0mTxiiKwuLFi7HZbMW9rCX2Ovfs2YNz585x8OBBevW6ksz16tWT5cuXo9Fo6No1/3Mv7HUrbMyF/VkSQoiKQpK8QsjIyHBaP+jqx8qVq5zq5gzPHEFUVBR16tSha9cuudqbMGECixcvZt++fbRv3wE/P3+GDBnK/v37mTp1SpFimzAhZyhJ7dq1C/yDf9mkSZP4888/2LFjB61ataZWrdq89957PPHE444606a9z/TpH/DNN98QEhJKhw4d0Wg0rFu3llatWhUpxpJs85VXXqFly5a0atUanU5f6HXyCuN6Xxe9Xs+yZUuZOHEi7777LrVq1aZOnbpMmvQktWvXYvTo0Xnu6+Pjw+rV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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Month 0 is 1.0 by construction, so the curve starts at month 1.\n", "correct = rates.apply(lambda col: col.dropna().mean())[1:]\n", "zero_filled = rates.fillna(0).mean()[1:]\n", "\n", "fig, ax = plt.subplots(figsize=(9, 4))\n", "fig.patch.set_facecolor(SURFACE)\n", "ax.set_facecolor(SURFACE)\n", "\n", "ax.plot(\n", " correct.index,\n", " correct,\n", " color=MODEL,\n", " lw=2.5,\n", " marker=\"o\",\n", " ms=5,\n", " label=\"correct: only cohorts that reached this month\",\n", ")\n", "ax.plot(\n", " zero_filled.index,\n", " zero_filled,\n", " color=NAIVE,\n", " lw=2.5,\n", " marker=\"s\",\n", " ms=5,\n", " label=\"fillna(0): unobserved counted as churned\",\n", ")\n", "\n", "ax.annotate(\n", " f\"{correct[12]:.0%}\",\n", " (12, correct[12]),\n", " textcoords=\"offset points\",\n", " xytext=(0, 12),\n", " ha=\"center\",\n", " fontsize=10,\n", " color=MODEL,\n", ")\n", "ax.annotate(\n", " f\"{zero_filled[12]:.0%}\",\n", " (12, zero_filled[12]),\n", " textcoords=\"offset points\",\n", " xytext=(0, -20),\n", " ha=\"center\",\n", " fontsize=10,\n", " color=NAIVE,\n", ")\n", "\n", "ax.set_xlabel(\"Months since acquisition\", color=MUTED)\n", "ax.set_ylabel(\"Retention rate\", color=MUTED)\n", "ax.set_title(\n", " \"Every cohort here decays identically. One line says otherwise.\", loc=\"left\"\n", ")\n", "ax.set_ylim(0, 0.36)\n", "ax.legend(frameon=False, fontsize=9)\n", "for side in (\"top\", \"right\"):\n", " ax.spines[side].set_visible(False)\n", "ax.spines[\"left\"].set_color(\"#d8d7d2\")\n", "ax.spines[\"bottom\"].set_color(\"#d8d7d2\")\n", "ax.tick_params(colors=MUTED)\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "cell-19", "metadata": {}, "source": [ "Month-12 retention is 19.2% or 9.6% depending on which line you drew, and the\n", "orange one is a fabrication.\n", "\n", "Both lines slope down, and that part is real: customers do lapse as a cohort\n", "ages, and the blue line is that genuine decay. What the orange line adds on top\n", "is fake. The gap between them is entirely young cohorts being counted as churned\n", "for months they simply haven't lived through, and it widens the further right you\n", "look, because the further right you look the more cohorts are too young to be\n", "there. By month 18 the wrong number is a quarter of the right one.\n", "\n", "The blue line goes ragged past month 15 for the same reason. It isn't measuring\n", "anything unstable, it's averaging fewer and fewer cohorts, until month 23 is a\n", "single cohort. That's the quieter version of the bug, sitting in the third row of\n", "the table above: `.mean()` skips `NaN` and gives the correct answer, but \"month-23\n", "retention is 10.8%\" is one cohort's fate quoted as a company-wide rate.\n", "\n", "`CohortMatrix` returns `NaN` rather than `0` exactly so that `.mean()` is right by\n", "default and `.fillna(0)` has to be typed on purpose.\n", "\n", "> **Say this in the meeting:** \"Both charts come from the same data. One of them\n", "> counts months our newer cohorts haven't lived through yet as months they\n", "> churned. Month-12 retention is 19%, not 10%, and anything past month 15 on that\n", "> chart is two or three cohorts, not the company.\"\n", "\n", "Long version: [`online_retail_ii_cohort.ipynb`](online_retail_ii_cohort.ipynb)." ] }, { "cell_type": "markdown", "id": "cell-20", "metadata": {}, "source": [ "## What to read next\n", "\n", "You now have four numbers and four sentences. If you want to know why any of them\n", "is true:\n", "\n", "- **[`cdnow_clv.ipynb`](cdnow_clv.ipynb)** builds the vocabulary from scratch,\n", " reproduces published parameter estimates on a benchmark dataset, and shows what\n", " it costs to feed the model an RFM-style `recency` column by mistake.\n", "- **[`online_retail_ii_cohort.ipynb`](online_retail_ii_cohort.ipynb)** builds a\n", " cohort matrix by hand on six customers, then runs the same operation on 5,878\n", " real ones.\n", "- **`opinions.md`** in the repo root separates what the literature settles from\n", " what this library chose, for every default the four answers above accepted\n", " silently.\n", "\n", "The one thing worth carrying out of here: every number above is a prediction with\n", "an error bar, including the ones from this library. The argument for the model\n", "isn't that it's right. It's that its error was measured against data it hadn't\n", "seen, and the alternative's wasn't." ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }