ShiftedBetaGeoModel#
- class pymc_marketing.clv.models.shifted_beta_geo.ShiftedBetaGeoModel(data=None, *, model_config=None, sampler_config=None)[fuente]#
Modelo Geométrico Beta Desplazado (sBG) para clientes que renuevan contratos durante períodos de tiempo discretos.
El modelo sBG tiene las siguientes suposiciones:
Dropout probabilities for each cohort are Beta-distributed with hyperparameters
alphaandbeta.Las tasas de retención de cohortes cambian con el tiempo debido a la heterogeneidad de los clientes.
Los clientes en la misma cohorte comenzaron su contrato en el mismo período de tiempo.
Este modelo requiere que los datos sean resumidos por recencia, T y cohorte para cada cliente. Las suposiciones del modelo requieren 1 <= recencia <= T y T >= 2.
First introduced by Fader & Hardie in [1], with additional expressions and enhancements described in [2] and [3].
- Parameters:
- data
DataFrame DataFrame que contiene las siguientes columnas:
customer_id: Unique customer identifier.recency: Time period of last contract renewal. It should equalTfor active customers.T: Max observed time period in the cohort. All customers in a given cohort share the same value forT.cohort: Customer cohort label.Any columns listed in
dropout_covariate_colswhen using covariates.
- model_config
dict, optional Diccionario de parámetros previos del modelo:
alpha: Prior or None (cohort-level). Shape parameter of dropout process. Default isphi * kappawhenalphais not provided directly.beta: Prior or None (cohort-level). Shape parameter of dropout process. Default is(1 - phi) * kappawhenbetais not provided directly.phi: Prior for pooling ifalphaandbetaare not provided directly; defaultPrior("Uniform", lower=0, upper=1, dims="cohort").kappa: Prior for pooling ifalphaandbetaare not provided directly; defaultPrior("Pareto", alpha=1, m=1, dims="cohort").dropout_coefficient: Prior for covariate coefficients; defaultPrior("Normal", mu=0, sigma=1).dropout_covariate_cols: Sequence[str]. Column names for customer-level, time-invariant covariates; default[].
- sampler_config
dict, optional Diccionario de parámetros del muestreador. Por defecto es Ninguno.
- data
Notes
Example:#
Required
dataformat:customer_id
recency
T
cohort
discrete_covariate
continuous_covariate
1
8
8
2025-02
1
2.172
2
1
5
2025-04
0
1.234
3
4
5
2025-04
1
2.345
Example usage:
from pymc_extras.prior import Prior from pymc_marketing.clv import ShiftedBetaGeoModel model = ShiftedBetaGeoModel( model_config={ "alpha": Prior("HalfNormal", sigma=10), "beta": Prior("HalfStudentT", nu=4, sigma=10), }, sampler_config={ "draws": 1000, "tune": 1000, "chains": 4, "cores": 4, "nuts_kwargs": {"target_accept": 0.95}, }, ) # Fit model quickly to large datasets via Maximum a Posteriori model.fit(method="map") model.fit_summary() # Use 'mcmc' for more informative predictions and reliable performance on smaller datasets model.fit(data=data,method="mcmc") model.fit_summary() # Predict probability customers are still active expected_alive_probability = model.expected_probability_alive( active_customers, future_t=0, ) # Predict retention rate for a specific cohort cohort_name = "2025-02-01" expected_alive_probability = model.expected_retention_rate( future_t=0, ).sel(cohort=cohort_name) # Predict expected remaining lifetime for all customers with a 5% discount rate expected_alive_probability = model.expected_residual_lifetime( discount_rate=0.05, ) # Predict expected retention elasticity for all customers in a specific cohort expected_alive_probability = model.expected_retention_elasticity( discount_rate=0.05, ).sel(cohort=cohort_name) # Example with customer-level covariates model_with_covariates = ShiftedBetaGeoModel( ), model_config={ "dropout_coefficient": Prior("Normal", mu=0, sigma=2), "dropout_covariate_cols": ["covariate1", "covariate2"], }, ) model_with_covariates.fit(data=covariate_data, method="demz")
References
[1]Fader, P. S., & Hardie, B. G. (2007). «How to project customer retention.» Journal of Interactive Marketing, 21(1), 76-90. PDF
Methods
ShiftedBetaGeoModel.__init__([data, ...])Inicializar la configuración del modelo y la configuración del muestreador para el modelo.
Convierta la configuración del modelo y la configuración del muestreador de los atributos a argumentos de palabra clave.
Construya el modelo a partir del objeto InferenceData.
ShiftedBetaGeoModel.build_model([data])Construya el modelo.
Crear atributos para los datos de inferencia.
Compute expected probability of contract renewal for each customer.
Compute expected residual lifetime of each customer.
Compute expected retention elasticity for each customer.
Compute expected retention rate for each customer.
ShiftedBetaGeoModel.fit([data, method, ...])Infer model posterior.
ShiftedBetaGeoModel.fit_summary(**kwargs)Calcule el resumen del resultado del ajuste.
ShiftedBetaGeoModel.graphviz(**kwargs)Obtenga la representación graphviz del modelo.
Cree los kwargs de inicialización a partir de un objeto InferenceData.
ShiftedBetaGeoModel.load(fname[, check])Crear una instancia de ModelBuilder a partir de un archivo.
ShiftedBetaGeoModel.load_from_idata(idata[, ...])Cree una instancia de ModelBuilder a partir de un objeto InferenceData.
ShiftedBetaGeoModel.save(fname, **kwargs)Guarde los datos de inferencia del modelo en un archivo.
ShiftedBetaGeoModel.set_idata_attrs([idata])Establecer atributos en un objeto InferenceData.
ShiftedBetaGeoModel.table(**model_table_kwargs)Obtenga la tabla resumen del modelo.
ShiftedBetaGeoModel.thin_fit_result(keep_every)Devuelva una copia del modelo con un resultado de ajuste reducido.
Attributes
cohort_idxCohort indices for each customer.
cohortsUnique cohort values from data.
default_model_configDefault model configuration.
default_sampler_configDefault sampler configuration.
dropout_covariate_colsDropout covariate column names from model_config.
fit_resultObtenga el resultado de ajuste posterior.
idGenerar un valor hash único para el modelo.
posteriorposterior_predictivepredictionspriorprior_predictiveversionidatasampler_configmodel_config