ModeloIndividualBetaGeoDesplazado#

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

Shifted Beta Geometric model for individual customers.

Modelo para el comportamiento del cliente en un entorno contractual discreto. Asume que:
  • Al final de cada período, un cliente tiene una probabilidad theta de renovar el contrato y 1-theta de cancelarlo.

  • La probabilidad theta no cambia con el tiempo para un cliente dado.

  • La probabilidad theta varía entre los clientes de acuerdo con una distribución a priori Beta con hiperparámetros alpha y beta.

basado en [1].

Parámetros:
datos: pd.DataFrame
DataFrame que contiene las siguientes columnas:
  • customer_id: Etiquetas de cliente. Debe haber una etiqueta única para cada cliente.

  • t_churn: Tiempo en el que el cliente canceló el contrato (comenzando desde 0).

Debería ser igual a T para los usuarios que no han cancelado al final del período de observación.

  • T: Período de tiempo máximo observado (comenzando en 0)

model_config: 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, opcional

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

Referencias

[1]

Fader, P. S., y Hardie, B. G. (2007). Cómo proyectar la retención de clientes. Journal of Interactive Marketing, 21(1), 76-90. https://journals.sagepub.com/doi/pdf/10.1002/dir.20074

Ejemplos

import pandas as pd
import pymc as pm

from pymc_extras.prior import Prior
from pymc_marketing.clv import ShiftedBetaGeoModelIndividual

data = pd.DataFrame({
        customer_id=[0, 1, 2, 3, ...],
        t_churn=[1, 2, 8, 4, 8 ...],
        T=[8 for x in range(len(customer_id))],
    })

model = ShiftedBetaGeoModelIndividual(
    model_config={
        "alpha": Prior("HalfNormal", sigma=10),
        "beta": Prior("HalfStudentT", nu=4, sigma=10),
    },
    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 how many periods in the future are existing customers
likely to cancel (ignoring that some may already have cancelled)
expected_churn_time = model.distribution_customer_churn_time(
    customer_id=[0, 1, 2, 3, ...],
)
print(expected_churn_time.mean("customer_id"))

# Predict churn time for 10 new customers, conditioned on data
new_customers_churn_time = model.distribution_new_customer_churn_time(n=10)
print(new_customers_churn_time.mean("new_customer_id"))

Métodos

ShiftedBetaGeoModelIndividual.__init__([...])

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

ShiftedBetaGeoModelIndividual.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.

ShiftedBetaGeoModelIndividual.build_from_idata(idata)

Construya el modelo a partir del objeto InferenceData.

ShiftedBetaGeoModelIndividual.build_model([data])

Construya el modelo.

ShiftedBetaGeoModelIndividual.create_idata_attrs()

Cree atributos para los datos de inferencia.

ShiftedBetaGeoModelIndividual.distribution_customer_churn_time(...)

Distribución de muestra del tiempo de cancelación para clientes existentes.

ShiftedBetaGeoModelIndividual.distribution_new_customer_churn_time([...])

Distribución de muestra del tiempo de cancelación para nuevos clientes.

ShiftedBetaGeoModelIndividual.distribution_new_customer_theta([...])

Distribución de muestra del parámetro theta para nuevos clientes.

ShiftedBetaGeoModelIndividual.fit([data, ...])

Inferir la posterior del modelo.

ShiftedBetaGeoModelIndividual.fit_summary(...)

Calcule el resumen del resultado del ajuste.

ShiftedBetaGeoModelIndividual.graphviz(**kwargs)

Obtenga la representación graphviz del modelo.

ShiftedBetaGeoModelIndividual.idata_to_init_kwargs(idata)

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

ShiftedBetaGeoModelIndividual.load(fname[, ...])

Cree una instancia de ModelBuilder a partir de un archivo.

ShiftedBetaGeoModelIndividual.load_from_idata(idata)

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

ShiftedBetaGeoModelIndividual.save(fname, ...)

Guarde los datos de inferencia del modelo en un archivo.

ShiftedBetaGeoModelIndividual.set_idata_attrs([idata])

Establecer atributos en un objeto InferenceData.

ShiftedBetaGeoModelIndividual.table(...)

Obtenga la tabla resumen del modelo.

ShiftedBetaGeoModelIndividual.thin_fit_result(...)

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