BetaGeoBetaBinomModel#
- class pymc_marketing.clv.models.beta_geo_beta_binom.BetaGeoBetaBinomModel(data=None, *, model_config=None, sampler_config=None)[fuente]#
Modelo Beta-Geométrico/Beta-Binomial (BG/BB).
Modelo CLV para oportunidades de compra discretas no contractuales, introducido por Fadel et al. [1].
El modelo BG/BB asume que la probabilidad de que un cliente se vuelva inactivo sigue una distribución Beta, y la probabilidad de realizar una compra también está distribuida según una Beta mientras los clientes aún están activos.
Este modelo requiere que los datos sean resumidos por recencia, frecuencia y T para cada cliente. T debe ser el mismo valor para todos los clientes.
- Parámetros:
- datos :
DataFrameDataFrame DataFrame que contiene las siguientes columnas:
customer_id: Identificador único del clientefrequency: Número de compras repetidasrecency: Oportunidades de compra entre la primera y la última compraT: Oportunidades de compra totales. Las suposiciones del modelo requieren T >= recencia y todos los clientes comparten el mismo valor para *T.
- model_config :
dict, opcionalpython:dict, opcional Diccionario que contiene los parámetros del modelo:
alpha: Parámetro de forma del proceso de compra; por defecto esphi_purchase*kappa_purchasebeta: Parámetro de forma del proceso de compra; por defecto es1-phi_purchase*kappa_purchasegamma: Parámetro de forma del proceso de abandono; por defecto esphi_purchase*kappa_purchasedelta: Parámetro de forma del proceso de abandono; por defecto es1-phi_dropout*kappa_dropoutphi_purchase: Prior anidado para los priors de alfa y beta; por defecto esPrior("Uniform", lower=0, upper=1)kappa_purchase: Prior anidado para los priors de alfa y beta; por defecto esPrior("Pareto", alpha=1, m=1)phi_dropout: Prior anidado para los priors gamma y delta; por defecto esPrior("Uniform", lower=0, upper=1)kappa_dropout: Prior anidado para los priors gamma y delta; por defecto esPrior("Pareto", alpha=1, m=1)
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 None.
- datos :
Referencias
[1]Peter Fader, Bruce Hardie y Jen Shang. «Análisis de la Base de Clientes en un Entorno No Contractual de Tiempo Discreto». Marketing Science, Vol. 29, No. 6 (Nov-Dic, 2010), pp. 1086-1108. https://www.brucehardie.com/papers/020/fader_et_al_mksc_10.pdf
Ejemplos
import pymc as pm from pymc_extras.prior import Prior from pymc_marketing.clv import BetaGeoBetaBinomModel rfm_df = rfm_summary(raw_data, "id_col_name", "date_col_name") # Initialize model with customer data; `model_config` parameter is optional model = BetaGeoBetaBinomModel( model_config={ "alpha": Prior("HalfFlat"), "beta": Prior("HalfFlat"), "gamma": Prior("HalfFlat"), "delta": Prior("HalfFlat"), }, ) # Fit model quickly to large datasets via Maximum a Posteriori model.fit(data=rfm_df, fit_method="map") print(model.fit_summary()) # Fit with the default 'mcmc' for more informative predictions and reliable performance on smaller datasets model.fit(fit_method="mcmc") print(model.fit_summary()) # Predict number of purchases for customers over the next 10 time periods expected_purchases = model.expected_purchases( data=rfm_df, future_t=10, ) # Predict probability of customer making 'n' purchases over 't' time periods # Data parameter is omitted here because predictions are ran on original dataset expected_num_purchases = model.expected_purchase_probability( n=[0, 1, 2, 3], future_t=[10, 20, 30, 40], ) new_data = pd.DataFrame( data={ "customer_id": [0, 1, 2, 3], "frequency": [5, 2, 1, 8], "recency": [7, 4, 2.5, 11], "T": [10, 8, 10, 22], } ) # Predict probability customers will still be active in 'future_t' time periods probability_alive = model.expected_probability_alive( data=new_data, future_t=[0, 3, 6, 9], ) # Predict number of purchases for a new customer over 't' time periods. expected_purchases_new_customer = model.expected_purchases_new_customer( t=[2, 5, 7, 10], )
Métodos
BetaGeoBetaBinomModel.__init__([data, ...])Inicializar la configuración del modelo y la configuración del muestreador para el modelo.
Convierte 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.
Construya el modelo.
Cree atributos para los datos de inferencia.
BetaGeoBetaBinomModel.distribution_new_customer_dropout([...])Muestra de la distribución Beta que representa las probabilidades de abandono para nuevos clientes.
BetaGeoBetaBinomModel.distribution_new_customer_purchase_rate([...])Muestra de la distribución Beta que representa las probabilidades de compra para nuevos clientes.
BetaGeoBetaBinomModel.distribution_new_customer_recency_frequency([...])Proceso BG/BB que representa las compras a través de la población de clientes.
Predecir la probabilidad esperada de estar vivo.
Predecir el número esperado de compras futuras.
BetaGeoBetaBinomModel.expected_purchases_new_customer([...])Prediga el número esperado de compras para un nuevo cliente a lo largo de t períodos de tiempo.
BetaGeoBetaBinomModel.fit([data, method, ...])Inferir la posterior del modelo.
BetaGeoBetaBinomModel.fit_summary(**kwargs)Calcule el resumen del resultado del ajuste.
BetaGeoBetaBinomModel.graphviz(**kwargs)Obtenga la representación graphviz del modelo.
Cree los kwargs de inicialización a partir de un objeto InferenceData.
BetaGeoBetaBinomModel.load(fname[, check])Cree una instancia de ModelBuilder a partir de un archivo.
Cree una instancia de ModelBuilder a partir de un objeto InferenceData.
BetaGeoBetaBinomModel.save(fname, **kwargs)Guarde los datos de inferencia del modelo en un archivo.
Establecer atributos en un objeto InferenceData.
BetaGeoBetaBinomModel.table(**model_table_kwargs)Obtenga la tabla resumen del modelo.
BetaGeoBetaBinomModel.thin_fit_result(keep_every)Devuelva una copia del modelo con un resultado de ajuste reducido.
Atributos
default_model_configConfiguración de modelo predeterminada.
default_sampler_configConfiguración de muestreador predeterminada.
fit_resultObtenga el resultado de ajuste posterior fit_result.
idGenerar un valor hash único para el modelo.
posteriorposterior_predictivepredictionspriorprior_predictiveversionidatasampler_configmodel_config