Vai al contenuto

Retail e beni di consumoBI, AI e ML per l'azienda

Comprati insieme: l'analisi del carrello

Gli scontrini dicono quali prodotti si comprano insieme, ma restano nel sistema di cassa. In Muvia una funzione Python calcola ogni notte supporto, confidenza e lift di ogni coppia, e il cruscotto dice cosa farne: promo abbinate, prodotti vicini a scaffale, proposte in cassa.

Scenario illustrativo: descrive un caso tipo, non il progetto di un cliente.

Gli scontrini sanno cosa va insieme. Nessuno li legge.

Ogni giorno le casse registrano migliaia di scontrini, e ognuno contiene un'informazione preziosa: quali prodotti la stessa persona mette nello stesso carrello. Di solito quell'informazione resta nel sistema di cassa, e le promo abbinate si decidono a intuito.

Contare le coppie su qualche mese di scontrini non è difficile. Difficile è rifarlo ogni notte, distinguere le coppie che si cercano davvero da quelle fatte solo di prodotti molto venduti, e portare il risultato a chi decide promozioni e scaffali.

Per chi
Category manager e marketing, responsabili di negozio e del layout, chi gestisce il programma fedeltà.
Gli scontrini con carta fedeltà da una cartella SFTP, l'assortimento dal gestionale su SQL Server e il piano promozionale in Excel entrano in Muvia, dove una funzione Python calcola ogni notte le regole di associazione; ne escono la tabella delle regole, un cruscotto con la mappa del lift, i consigli per articolo e le risposte di Athena.

In Muvia, passo per passo

Schermate vere del prodotto, registrate su un progetto con dati di esempio.

1 di 5

Il video · Gli scontrini dicono quali prodotti si comprano insieme, ma restano nel sistema di cassa. In Muvia una funzione Python calcola ogni notte supporto, confidenza e lift di ogni coppia, e il cruscotto dice cosa farne: promo abbinate, prodotti vicini a scaffale, proposte in cassa.

Cosa ottieni

Promo decise sui carrelli veri
Le promo abbinate partono dalle coppie che i clienti comprano davvero insieme, non dall'intuito.
Lift, non solo frequenza
Il lift separa le coppie che si cercano da quelle fatte solo di prodotti molto venduti.
Regole sempre fresche
Il flusso rifà le regole ogni notte sugli scontrini nuovi: seguono la stagione e l'assortimento da sole.
Un'azione per ogni regola
Promo abbinata, vicino a scaffale o proposta in cassa: chi gestisce il negozio sa cosa fare domani.

Per il team tecnico

Come si costruisce in Muvia

  1. 1

    Carica gli scontrini

    I file delle casse arrivano ogni notte da una cartella SFTP e si accodano alla stessa tabella: uno scontrino per riga, con la carta fedeltà e gli articoli. L'assortimento si copia dal gestionale su SQL Server.

  2. 2

    Scrivi le regole in Python

    Una funzione Python conta le coppie di articoli nello stesso scontrino e calcola supporto, confidenza e lift; le soglie minime sono parametri. Athena può scrivere una prima bozza, e un'esecuzione di prova non scrive nulla.

  3. 3

    Programma il ricalcolo

    Un flusso esegue la funzione ogni notte e scrive regole, mappa e consigli in tabelle gestite. Cruscotti e notebook le leggono come qualsiasi altro dato.

  4. 4

    Costruisci il cruscotto

    La mappa del lift mostra le famiglie del carrello; un grafico di flusso dice chi compra un articolo e quale compra nelle visite dopo; ogni regola forte porta la sua azione consigliata.

  5. 5

    Chiedi ad Athena

    Quali coppie mettere in promo abbinata? Athena legge le regole, salva la query nel Laboratorio e risponde in una frase.

Funzione Python

from collections import Counter
from itertools import combinations

import pandas as pd

def transform(inputs, params, ctx):
    supporto_min = params["supporto_min_pct"] / 100
    lift_min = params["lift_min"]
    cesti = inputs["rows"]["codici"].str.split("|").map(lambda c: sorted(set(c)))
    n = len(cesti)
    singoli, coppie = Counter(), Counter()
    for cesto in cesti:
        singoli.update(cesto)
        coppie.update(combinations(cesto, 2))
    regole = []
    for (a, b), k in coppie.items():
        lift = k * n / (singoli[a] * singoli[b])
        if k / n >= supporto_min and lift >= lift_min:
            regole.append({"articolo": a, "insieme_a": b,
                           "supporto_pct": round(100 * k / n, 2),
                           "confidenza_pct": round(100 * k / singoli[a], 1),
                           "lift": round(lift, 2)})
    out = pd.DataFrame(regole).sort_values("lift", ascending=False)
    ctx.logger.info("regole trovate: %d su %d scontrini", len(out), n)
    return {"rows": out}
Le regole di associazione: per ogni coppia nello stesso scontrino, supporto, confidenza e lift. Il flusso la esegue ogni notte.
I dati che servono
  • Scontrini con la carta fedeltà e gli articoli acquistati, dai file delle casse
  • Assortimento con articoli e reparti, dal gestionale su SQL Server
  • Piano promozionale della stagione, da un file Excel
Le parti di Muvia usate

Portaci una domanda a cui oggi non sai rispondere.

Partiamo da una domanda vera della tua azienda e ti mostriamo il percorso dalla fonte al cruscotto, con i tuoi sistemi e non con quelli di una demo.