GammaGammaModel#

class pymc_marketing.clv.models.gamma_gamma.GammaGammaModel(data=None, *, model_config=None, sampler_config=None)[fuente]#

Modelo Gamma-Gamma para el valor monetario futuro esperado.

El modelo Gamma-Gamma asume que el gasto futuro esperado sigue una distribución Gamma, y la escala de esta distribución también está distribuida según una Gamma.

Este modelo está condicionado al valor medio de las transacciones repetidas para cada cliente y se basa en [1], [2]. Los datos deben ser resumidos por frecuencia y valor_monetario para cada cliente, utilizando clv.rfm_summary() o equivalente.

Vea GammaGammaModelIndividual para un modelo equivalente condicionado a los valores de transacción individuales.

Parámetros:
datos : DataFrameDataFrame

DataFrame que contiene las siguientes columnas:

  • customer_id: Identificador único del cliente

  • monetary_value: Valor medio de transacción de compras repetidas para cada cliente

  • frequency: Número de transacciones repetidas observadas para cada cliente

model_config : dict, opcionalpython:dict, opcional

Diccionario de parámetros previos del modelo. Si no se proporciona, el modelo utilizará los priors predeterminados especificados en el atributo de clase default_model_config.

sampler_config : dict, opcionalpython:dict, opcional

Diccionario de parámetros del muestreador. Por defecto es Ninguno.

Referencias

[1]

Fader, P. S., & Hardie, B. G. (2013). «El modelo Gamma-Gamma del valor monetario». https://www.brucehardie.com/notes/025/gamma_gamma.pdf

[2]

Peter S. Fader, Bruce G. S. Hardie y Ka Lok Lee (2005), “RFM y CLV: Uso de curvas iso-valor para el análisis de la base de clientes”, Journal of Marketing Research, 42 (noviembre), 415-430. https://journals.sagepub.com/doi/pdf/10.1509/jmkr.2005.42.4.415

Ejemplos

import pandas as pd
import pymc as pm

data = pd.DataFrame(
        {
            "customer_id": [0, 1, 2, 3, ...],
            "monetary_value": [23.5, 19.3, 11.2, 100.5, ...],
            "frequency": [6, 8, 2, 1, ...],
        }

model = GammaGammaModel(
    ),
    model_config={
        "p": {"dist": "HalfNormal", kwargs: {}},
        "q": {"dist": "HalfStudentT", kwargs: {"nu": 4, "sigma": 10}},
        "v": {"dist": "HalfCauchy", kwargs: {"beta": 1}},
    },
    sampler_config={
        "draws": 1000,
        "tune": 1000,
        "chains": 2,
        "cores": 2,
        "nuts_kwargs": {"target_accept": 0.95},
    },
)

model.fit(data=data)
print(model.fit_summary())

# Predict spend of customers for which we know transaction history, conditioned on data.
expected_customer_spend = (
    model.expected_customer_spend(
        data=pandas.DataFrame(
            {
                "customer_id": [0, 1, 2, 3, ...],
                "monetary_value": [23.5, 19.3, 11.2, 100.5, ...],
                "frequency": [6, 8, 2, 1, ...],
            }
        ),
    ),
)
print(expected_customer_spend.mean("customer_id"))

# Predict spend of 10 new customers, conditioned on data
new_customer_spend = model.expected_new_customer_spend(n=10)
print(new_customer_spend.mean("new_customer_id"))

Métodos

GammaGammaModel.__init__([data, ...])

Inicializar la configuración del modelo y la configuración del muestreador para el modelo.

GammaGammaModel.attrs_to_init_kwargs(attrs)

Convierte la configuración del modelo y la configuración del muestreador de los atributos a argumentos de palabra clave.

GammaGammaModel.build_from_idata(idata)

Construya el modelo a partir del objeto InferenceData.

GammaGammaModel.build_model([data])

Construya el modelo.

GammaGammaModel.create_idata_attrs()

Cree atributos para los datos de inferencia.

GammaGammaModel.distribution_customer_spend(datos)

Distribución posterior de los valores medios de gasto para cada cliente.

GammaGammaModel.distribution_new_customer_spend([...])

Distribución posterior de los valores de gasto medio para nuevos clientes.

GammaGammaModel.expected_customer_lifetime_value(...)

Calcule el valor promedio de vida útil para un grupo de uno o más clientes.

GammaGammaModel.expected_customer_spend(datos)

Calcule el valor medio de gasto futuro esperado por cliente.

GammaGammaModel.expected_new_customer_spend()

Calcule el valor medio de gasto esperado para un nuevo cliente.

GammaGammaModel.fit([data, method, fit_method])

Inferir la posterior del modelo.

GammaGammaModel.fit_summary(**kwargs)

Calcule el resumen del resultado del ajuste.

GammaGammaModel.graphviz(**kwargs)

Obtenga la representación graphviz del modelo.

GammaGammaModel.idata_to_init_kwargs(idata)

Cree los kwargs de inicialización a partir de un objeto InferenceData.

GammaGammaModel.load(fname[, check])

Cree una instancia de ModelBuilder a partir de un archivo.

GammaGammaModel.load_from_idata(idata[, verificar])

Cree una instancia de ModelBuilder a partir de un objeto InferenceData.

GammaGammaModel.save(fname, **kwargs)

Guarde los datos de inferencia del modelo en un archivo.

GammaGammaModel.set_idata_attrs([idata])

Establecer atributos en un objeto InferenceData.

GammaGammaModel.table(**model_table_kwargs)

Obtenga la tabla resumen del modelo.

GammaGammaModel.thin_fit_result(keep_every)

Devuelva una copia del modelo con un resultado de ajuste reducido.

Atributos

default_model_config

Configuración de modelo predeterminada.

default_sampler_config

Configuración de muestreador predeterminada.

fit_result

Obtenga el resultado de ajuste posterior fit_result.

id

Generar un valor hash único para el modelo.

posterior

posterior_predictive

predictions

prior

prior_predictive

version

idata

sampler_config

model_config