Modelos de obstáculos de dos etapas: predicción de resultados inflados a cero

Introducción

, nos encontramos regularmente con problemas de predicción en los que el resultado tiene una distribución inusual: una gran masa de ceros combinada con una distribución continua o de conteo para valores positivos. Si ha trabajado en algún dominio de cara al cliente, es casi seguro que se haya topado con esto. Piense en predecir el gasto de los clientes. En una semana determinada, la gran mayoría de los usuarios de su plataforma no compran nada en absoluto, pero los que sí lo hacen pueden gastar entre $5 y $5,000. Las reclamaciones de seguros siguen un patrón similar: la mayoría de los asegurados no presentan nada en un trimestre determinado, pero las reclamaciones que llegan varían enormemente en tamaño. Se ve la misma estructura en los pagos anticipados de préstamos, el momento de la rotación de empleados, los ingresos por clics en anuncios y muchos otros resultados comerciales.

El instinto de la mayoría de los equipos es buscar un modelo de regresión estándar e intentar hacerlo funcionar. He visto esto varias veces. Alguien ajusta un modelo OLS, obtiene predicciones negativas para la mitad de la base de clientes, agrega un piso a cero y da por terminado el día. O prueban una transformación logarítmica, se topan con el problema $log(0)$, añaden un desplazamiento $+1$ y esperan lo mejor. Estas soluciones pueden funcionar, pero pasan por alto un problema fundamental: los ceros y los valores positivos en sus datos a menudo son generados por procesos completamente diferentes. Un cliente que nunca comprará su producto es fundamentalmente diferente de un cliente que compra ocasionalmente pero no lo hizo esta semana. Tratarlos de la misma manera en un solo modelo obliga al algoritmo a comprometerse con ambos grupos y, por lo general, hace un mal trabajo en cada uno de ellos.

El modelo de obstáculos de dos etapas proporciona una solución más basada en principios al descomponer el problema en dos preguntas distintas. Primero, ¿el resultado será cero o positivo? Y segundo, dado que es positivo, ¿cuál será el valor? Al separar el "si" del "cuánto", podemos utilizar las herramientas adecuadas en cada subproblema de forma independiente con diferentes algoritmos, diferentes características y diferentes suposiciones, y luego combinar los resultados en una sola predicción.

En este artículo, analizaré la teoría detrás de los modelos de obstáculos, proporcionaré una implementación funcional de Python y discutiré las consideraciones prácticas que importan al implementar estos modelos en producción. Los lectores interesados ​​que ya estén familiarizados con la motivación pueden pasar directamente a la sección de implementación.

El problema de los enfoques estándar

¿Por qué no utilizar simplemente la regresión lineal? Para concretar esto, considere predecir el gasto de los clientes. Si el 80% de los clientes gasta cero y el 20% restante gasta entre 10 y 1000 dólares, un modelo de regresión lineal inmediatamente entra en problemas. El modelo puede (y lo hará) predecir el gasto negativo de algunos clientes, lo cual no tiene sentido ya que no se pueden gastar dólares negativos. También tendrá dificultades en el límite: el pico masivo en cero tira la línea de regresión hacia abajo, lo que hace que el modelo subprediga ceros y sobreprediga pequeños valores positivos simultáneamente. La estructura de la varianza también es incorrecta. Los clientes que no gastan nada tienen una variación cero por definición, mientras que los clientes que gastan tienen una variación alta. Si bien se pueden utilizar errores estándar robustos a la heterocedasticidad para obtener una inferencia válida a pesar de una varianza no constante, eso solo corrige los errores estándar y no corrige las predicciones en sí. Los valores ajustados todavía provienen de un modelo lineal que intenta promediar un pico en cero y una distribución positiva sesgada hacia la derecha, lo cual es un ajuste deficiente independientemente de cómo se calculen los intervalos de confianza.

¿Por qué no realizar una transformación logarítmica? Lo siguiente que la mayoría de la gente intenta es una transformación logarítmica: $log(y + 1)$ o $log(y + epsilon)$. Esto comprime la cola derecha y hace que los valores positivos parezcan más normales, pero introduce su propio conjunto de problemas. La elección del desplazamiento ($1$ o $epsilon$) es arbitraria y sus predicciones cambiarán dependiendo de lo que elija. Cuando realiza una retrotransformación mediante $exp(hat{y}) – 1$, introduce un sesgo sistemático debido a la desigualdad de Jensen, ya que el valor esperado de la predicción exponenciada no es el mismo que la exponenciación de la predicción esperada. Más fundamentalmente, el modelo aún no distingue entre un cliente que nunca gasta y uno que a veces gasta pero que resultó ser cero en este período. Ambos se asignan a $log(0 + 1) = 0$, y el modelo los trata de manera idéntica aunque representen comportamientos de clientes muy diferentes.

Qué significa esto para la previsión. El problema más profundo de imponer un modelo único sobre datos inflados a cero va más allá de las estimaciones puntuales deficientes. Cuando le pides a un modelo que describa dos comportamientos fundamentalmente diferentes (no participar en absoluto versus participar en diferentes intensidades), terminas con un modelo que combina los impulsores de cada uno. Las características que predicen si un cliente comprará a menudo son bastante diferentes de las características que predicen cuánto gastará en una determinada compra. La actualidad y la frecuencia de participación pueden dominar la pregunta "¿comprarán?", mientras que las preferencias de ingresos y categorías de productos son más importantes para la pregunta "cuánto". Una regresión única mezcla estas señales, lo que dificulta desentrañar qué es lo que realmente impulsa el pronóstico.

Esto también tiene implicaciones prácticas sobre cómo actuar en el modelo. Si su pronóstico es bajo para un cliente en particular, ¿es porque es poco probable que compre o porque es probable que compre pero por una cantidad pequeña? La respuesta empresarial óptima a cada escenario es diferente. Puede enviar una campaña de reactivación para el primer caso y una oferta de venta adicional para el segundo. Un solo modelo te da un número, pero no hay manera de saber qué palanca tirar.

El modelo de obstáculos de dos etapas

Marco Conceptual. La idea central detrás de los modelos de obstáculos es sorprendentemente intuitiva. Los ceros y los positivos a menudo surgen de diferentes procesos de generación de datos, por lo que debemos modelarlos por separado. Piense en ello como dos preguntas secuenciales que su modelo debe responder. En primer lugar, ¿este cliente cruza el “obstáculo” y se involucra? Y segundo, dado que se han comprometido, ¿cuánto gastan? Formalmente, podemos escribir la distribución del resultado $Y$ condicional a las características $X$ como:

$$ P(Y = y | X) = begin{casos} 1 – pi(X) & text{if } y = 0 \ pi(X) cdot f(y | X, y > 0) & text{if } y > 0 end{casos} $$

Aquí, $pi(X)$ es la probabilidad de cruzar el obstáculo (tener un resultado positivo), y $f(y | X, y > 0)$ es la distribución condicional de $y$ dado que es positiva. La belleza de esta formulación es que estos dos componentes se pueden modelar de forma independiente. Puede utilizar un clasificador de aumento de gradiente para la primera etapa y una regresión gamma para la segunda, o una regresión logística combinada con una red neuronal, o cualquier otra combinación que se adapte a sus datos. Cada etapa tiene su propio conjunto de características, sus propios hiperparámetros y sus propias métricas de evaluación. Esta modularidad es lo que hace que los modelos de obstáculos sean tan prácticos en entornos de producción.

Etapa 1: El modelo de clasificación. La primera etapa es un problema sencillo de clasificación binaria: predecir si $y > 0$. Estás entrenando con el conjunto de datos completo, con cada observación etiquetada como cero o positiva. Este es un problema para el que la comunidad de ML tiene décadas de herramientas. La regresión logística le proporciona una línea de base rápida e interpretable. Los métodos de aumento de gradiente como XGBoost o LightGBM manejan bien las no linealidades y las interacciones de funciones. Las redes neuronales funcionan cuando tienes características de alta dimensión o no estructuradas. El resultado de esta etapa es $hat{pi}(X) = P(Y > 0 | X)$, una probabilidad calibrada de que el resultado será positivo.

Lo importante que hay que hacer aquí es la calibración. Dado que vamos a multiplicar esta probabilidad por la cantidad condicional en la siguiente etapa, necesitamos que $hat{pi}(X)$ sea una probabilidad verdadera, no solo una puntuación que tenga una buena clasificación. Si su clasificador genera probabilidades que son sistemáticamente demasiado altas o demasiado bajas, la predicción combinada heredará ese sesgo. El escalado de Platt puede ayudar si su clasificador base no está bien calibrado de fábrica.

Etapa 2: El modelo de regresión condicional. La segunda etapa predice el valor de $y$ condicional a $y > 0$. Aquí es donde el modelo de obstáculos brilla en comparación con los enfoques estándar porque estás entrenando un modelo de regresión exclusivamente en el subconjunto positivo de tus datos, por lo que el modelo nunca tiene que lidiar con el pico en cero. Esto significa que puede utilizar toda la gama de técnicas de regresión sin preocuparse por cómo manejan los ceros.

La elección del modelo para esta etapa depende en gran medida de la forma de sus resultados positivos. Si $log(y | y > 0)$ es aproximadamente normal, puede usar OLS en el objetivo transformado logarítmicamente (con la corrección de sesgo adecuada en la transformación inversa, que cubriremos a continuación). Para obtener resultados continuos positivos sesgados hacia la derecha, un GLM con una familia gamma es una elección natural. Si se trata de datos de recuento sobredispersados, la regresión binomial negativa funciona bien. Un método sencillo es utilizar Autogluon como modelo de conjunto y no tener que preocuparse por la distribución de los datos. La salida es $hat{mu}(X) = E[Y | X, Y > 0]$, el valor esperado condicionado a que el resultado sea positivo.

Predicción combinada. La predicción final combina ambas etapas de forma multiplicativa:

$$ sombrero{E}[Y | X] = sombrero{pi}(X) cdot sombrero{mu}(X) $$

Esto da el valor esperado incondicional de $Y$, que representa tanto la probabilidad de que el resultado sea positivo como la magnitud esperada dada la positividad. Si un cliente tiene un 30% de posibilidades de comprar y su gasto esperado tras una compra es de 100 dólares, entonces su gasto esperado incondicional es de 30 dólares. Esta descomposición también simplifica la interpretación empresarial. Puede obtener por separado la importancia de las características tanto en la probabilidad de participación como en lo que impulsa la intensidad de la participación para ver qué se debe abordar.

Implementación

Canal de formación. El proceso de formación es sencillo. Entrenamos la Etapa 1 en el conjunto de datos completo con un objetivo binario, luego entrenamos la Etapa 2 solo en las observaciones positivas con el objetivo continuo original. En el momento de la predicción, obtenemos una probabilidad de la Etapa 1 y una media condicional de la Etapa 2, luego las multiplicamos.

Podemos implementar esto en Python usando scikit-learn como punto de partida. La siguiente clase engloba ambas etapas en un único estimador que sigue la API scikit-learn, lo que facilita la incorporación a las canalizaciones existentes y su uso con herramientas como la validación cruzada y la búsqueda en cuadrícula.

importar numpy como np desde sklearn.linear_model importar LogisticRegression desde sklearn.ensemble importar GradientBoostingRegressor desde sklearn.base importar BaseEstimator, RegressorMixin clase HurdleModel(BaseEstimator, RegressorMixin): """ Modelo de obstáculos de dos etapas para resultados continuos inflados en cero Etapa 1: Clasificador binario para etapa P(Y > 0) 2: Regresor para E[Y | Y > 0] """ def __init__(self, classifier=None, regresor=None): self.classifier = clasificador o LogisticRegression() self.regressor = regresor o GradientBoostingRegressor() def fit(self, X, y): # Etapa 1: Entrenar el clasificador en todos los datos y_binary = (y > 0).astype(int) self.classifier.fit(X, y_binary) # Etapa 2: entrenar el regresor solo con resultados positivos positiv_mask = y > 0 if positiv_mask.sum() > 0: X_positive = X[positive_mask] y_positive = y[positive_mask] self.regressor.fit(X_positive, y_positive) return self def predict(self, X): # P(Y > 0) prob_positive = self.classifier.predict_proba(X)[:, 1] # E[Y | Y > 0] media_condicional = self.regressor.predict(X) # E[Y] = P(Y > 0) * E[Y | Y > 0] return prob_positive * conditional_mean def predict_proba_positive(self, X): """Probabilidad de retorno de un resultado positivo.""" return self.classifier.predict_proba(X)[:, 1] def predict_conditional(self, X): """Devuelve el valor esperado dado un resultado positivo.""" return self.regressor.predict(X)

Consideraciones prácticas

Ingeniería de características. Una de las buenas propiedades de este marco es que las dos etapas pueden utilizar conjuntos de características completamente diferentes. En mi experiencia, las características que predicen si alguien se involucra o no son a menudo bastante diferentes de las características que predicen cuánto se involucra. Para la Etapa 1, las señales de comportamiento tienden a dominar: actividad pasada, reciente, frecuencia, si el cliente ha comprado alguna vez antes. Los indicadores demográficos y los factores contextuales, como la época del año o el día de la semana, también ayudan a separar el grupo que “se involucrará” del grupo que “no se involucrará”. Para la Etapa 2, las señales de intensidad importan más: montos históricos de compra, velocidad de gasto, indicadores de capacidad como ingresos o límite de crédito, y preferencias de productos o categorías. Estas características ayudan a distinguir al que gasta 50 dólares del que gasta 500 dólares, condicionado a que ambos realicen una compra. Además, podemos utilizar la mejora de funciones incorporando la salida del modelo de la etapa 1 al modelo de la etapa 2 como una característica adicional. Esto permite que el modelo de la etapa 2 aprenda cómo interactúa la probabilidad de participación con las señales de intensidad, lo que mejora el rendimiento.

Manejo del desequilibrio de clases. Si los ceros dominan su conjunto de datos, digamos que el 95% de las observaciones son cero, entonces la Etapa 1 enfrenta un problema de desequilibrio de clases. Esto es común en aplicaciones como clics en anuncios o reclamos de seguros. El conjunto de herramientas estándar se aplica aquí: puede ajustar el umbral de clasificación para optimizarlo para su objetivo comercial específico en lugar de usar el límite predeterminado de 0,5, aumentar la ponderación de la clase minoritaria durante el entrenamiento mediante ponderaciones de muestra o aplicar un submuestreo para resolver esto. La clave es pensar detenidamente en qué está optimizando. En muchos entornos empresariales, le importa más la precisión en la parte superior de la lista clasificada que la precisión general, y ajustar su umbral en consecuencia puede marcar una gran diferencia.

Calibración del modelo. Dado que la predicción combinada $hat{pi}(X) cdot hat{mu}(X)$ es un producto de dos modelos, ambos deben estar bien calibrados para que el resultado final sea confiable. Si las probabilidades de la Etapa 1 se inflan sistemáticamente en un 10%, sus predicciones combinadas se inflarán en un 10% en todos los ámbitos, independientemente de qué tan buena sea la Etapa 2. Para la Etapa 1, verifique las curvas de calibración y aplique la escala de Platt si las probabilidades brutas están fuera de lugar. Para la Etapa 2, verifique que las predicciones sean imparciales en el subconjunto positivo, lo que significa que la media de sus predicciones debe coincidir aproximadamente con la media de los datos reales cuando se evalúan con datos reservados donde $y > 0$. Descubrí que los problemas de calibración en la Etapa 1 son la fuente más común de problemas en la práctica, especialmente cuando se extiende el clasificador a un modelo de riesgos de tiempo discreto.

Métricas de Evaluación. Evaluar un modelo de dos etapas requiere pensar en cada etapa por separado y luego observar el resultado combinado. Para la Etapa 1, se aplican métricas de clasificación estándar: AUC-ROC y AUC-PR para clasificar la calidad, la precisión y la recuperación en el umbral elegido para el rendimiento operativo, y la puntuación Brier para la calibración. Para la Etapa 2, debe evaluar solo el subconjunto positivo, ya que en eso se entrenó el modelo. RMSE y MAE le dan una sensación de error absoluto, MAPE le informa sobre errores porcentuales (lo cual importa cuando sus resultados abarcan varios órdenes de magnitud) y la cobertura cuantil le indica si sus intervalos de predicción son honestos.

Para el modelo combinado, observe el RMSE y MAE generales en el conjunto de prueba completo, pero también desgloselo según si el resultado real fue cero o positivo. Un modelo que luce excelente en conjunto podría resultar terrible en un extremo de la distribución. Los gráficos de elevación por decil previsto también son útiles para comunicar el rendimiento del modelo a las partes interesadas que no piensan en términos de RMSE.

Cuándo utilizar modelos con obstáculos versus modelos sin inflado. Esta es una distinción que vale la pena hacer bien, porque los modelos de obstáculos y los modelos inflados con ceros (como ZIP o ZINB) hacen suposiciones diferentes sobre de dónde provienen los ceros. Los modelos de obstáculos suponen que todos los ceros surgen de un único proceso, el proceso de “no participación”. Una vez que se cruza el obstáculo, se está en el régimen positivo, y los ceros se explican completamente en la Etapa 1. Los modelos inflados con cero, por otro lado, suponen que los ceros pueden provenir de dos fuentes: algunos son ceros “estructurales” (clientes que nunca podrían ser positivos, como alguien que no posee un automóvil a quien se le pregunta sobre reclamos de seguro de automóvil), y otros son ceros de “muestra” (clientes que podrían haber sido positivos pero que esta vez no lo fueron).

Para concretar esto con un ejemplo de venta minorista: un modelo de obstáculos dice que un cliente decide comprar o no, y si compra, gasta una cantidad positiva. Un modelo inflado en cero dice que algunos clientes nunca compran en esta tienda (ceros estructurales), mientras que otros sí compran aquí ocasionalmente pero no lo hicieron hoy (ceros de muestra). Si sus ceros realmente provienen de dos poblaciones distintas, un modelo inflado por ceros es más apropiado. Pero en muchos entornos prácticos, el marco de obstáculos es más simple y suficiente, y recomendaría comenzar ahí a menos que tenga una razón clara para creer en dos tipos de ceros.

Extensiones y variaciones

Obstáculos multiclase. A veces, la división binaria entre cero y positivo no es lo suficientemente granular. Si su resultado tiene varios estados significativos (por ejemplo, ninguno, pequeño y grande), puede ampliar el marco de obstáculos a una versión de varias clases. La primera etapa se convierte en un clasificador multinomial que asigna cada observación a uno de los $K$ depósitos, y luego modelos de regresión separados manejan la distribución condicional de cada depósito. Formalmente, esto se ve así:

$$ P(Y) = begin{cases} pi_0 & text{if } Y = 0 \ pi_1 cdot f_{text{small}}(Y) & text{if } 0 < Y leq tau \ pi_2 cdot f_{text{large}}(Y) & text{if } Y > tau end{cases} $$

Esto es particularmente útil cuando los resultados positivos en sí mismos tienen subpoblaciones distintas. Por ejemplo, al modelar reclamaciones de seguros, a menudo hay una clara separación entre pequeñas reclamaciones rutinarias y grandes catastróficas, y tratar de ajustar una única distribución a ambas conduce a estimaciones de cola deficientes. El umbral $tau$ puede establecerse en función del conocimiento del dominio o estimarse a partir de los datos utilizando técnicas de modelos mixtos.

Generalizando las Etapas. Una cosa que vale la pena enfatizar es que ninguna de las etapas necesita ser un tipo específico de modelo. A lo largo de este artículo, he presentado la Etapa 1 como un clasificador binario, pero esa es sólo la versión más simple. Si el momento del evento es importante, se podría reemplazar la Etapa 1 con un modelo de supervivencia de elección discreta que prediga no sólo si un cliente comprará, sino también cuándo. Esto es especialmente útil para contextos de suscripción o retención donde el "obstáculo" tiene una dimensión temporal. De manera similar, la Etapa 2 no tiene por qué ser una regresión única y ajustada a mano. Puede utilizar un marco de AutoML como AutoGluon para agrupar un gran conjunto de modelos candidatos (aumento de gradiente, redes neuronales, modelos lineales) y dejar que encuentre la mejor combinación para predecir la cantidad condicional. El marco de obstáculos es independiente de lo que se encuentra dentro de cada etapa, por lo que debe sentirse libre de cambiar el enfoque de modelado que mejor se adapte a sus datos y caso de uso.

Errores comunes

Estos son errores que yo mismo he cometido o he visto cometer a otros al implementar modelos de obstáculos. Ninguno de ellos es obvio hasta que te muerden, por lo que vale la pena leerlos incluso si ya te sientes cómodo con el marco.

1. Filtrar información de la Etapa 2 en la Etapa 1. Si diseña características del objetivo, algo como "gasto histórico promedio" o "valor total de por vida", debe tener cuidado con cómo fluye esa información en cada etapa. Una característica que resume el gasto pasado contiene implícitamente información sobre si el cliente alguna vez gastó algo, lo que significa que la Etapa 1 podría estar recibiendo una señal gratuita que no estaría disponible en el momento de la predicción para nuevos clientes. La solución es pensar detenidamente en la estructura temporal de sus funciones y asegurarse de que ambas etapas solo vean la información que estaría disponible en el momento de la predicción.

2. Ignorar la naturaleza condicional de la etapa 2. Ésta es sutil pero importante. La etapa 2 se entrena solo en observaciones donde $y > 0$, por lo que también debe evaluarse solo en ese subconjunto. He visto a personas calcular RMSE en todo el conjunto de pruebas (incluidos los ceros) y concluir que la Etapa 2 es terrible. Por lo tanto, cuando informe métricas para la Etapa 2, filtre siempre primero al subconjunto positivo. De manera similar, al diagnosticar problemas con el modelo combinado, asegúrese de descomponer el error en sus componentes de Etapa 1 y Etapa 2. Un error general alto podría deberse enteramente a una mala clasificación en la Etapa 1, incluso si a la Etapa 2 le va bien en las observaciones positivas.

4. Divisiones de tren/prueba desalineadas. Ambas etapas deben utilizar las mismas divisiones de tren/prueba. Esto suena obvio, pero es fácil equivocarse en la práctica, especialmente si estás entrenando las dos etapas en cuadernos o canales separados. Si la Etapa 1 ve a un cliente en capacitación pero la Etapa 2 ve al mismo cliente en su conjunto de prueba (porque vuelve a dividir los datos solo positivos de forma independiente), ha introducido una fuga de datos. La solución más sencilla es realizar la división de entrenamiento/prueba una vez al principio en el conjunto de datos completo y luego derivar los datos de entrenamiento de la Etapa 2 filtrando el pliegue de entrenamiento a observaciones positivas. Si realiza una validación cruzada, las asignaciones de pliegues deben ser coherentes en ambas etapas.

5. Asumiendo independencia entre etapas. Si bien modelamos las dos etapas por separado, las características y resultados subyacentes a menudo están correlacionados de maneras importantes. Los clientes con un alto $hat{pi}(X)$ (probabilidad de interactuar) a menudo también tienen un alto $hat{mu}(X)$ (probabilidad de gastar mucho cuando lo hagan). Esto significa que la combinación multiplicativa $hat{pi}(X) cdot hat{mu}(X)$ puede amplificar los errores de maneras que no verías si las etapas fueran verdaderamente independientes. Tenga esto en cuenta al interpretar la importancia de las características. Una característica que parece importante en ambas etapas es la doble función, y su contribución total a la predicción combinada es mayor de lo que sugiere la puntuación de importancia de cualquiera de las etapas.

Comentarios finales

Usos alternativos: más allá de los ejemplos tratados en este artículo, los modelos de obstáculos aparecen en una sorprendente variedad de contextos comerciales. En marketing, son una opción natural para modelar el valor de vida del cliente, donde muchos clientes abandonan antes de realizar una segunda compra, creando una masa de ceros, mientras que los clientes retenidos generan cantidades muy variables de ingresos. En el análisis de atención médica, el modelado de costos para los pacientes sigue el mismo patrón: la mayoría de los pacientes no tienen reclamos en un período determinado, pero los reclamos que sí llegan van desde visitas de rutina al consultorio hasta cirugías mayores. Para el pronóstico de la demanda con patrones de demanda intermitentes (repuestos, artículos de lujo, transacciones B2B), la descomposición en dos etapas captura naturalmente la naturaleza esporádica de las compras y evita los artefactos de suavizado que plagan los métodos tradicionales de series de tiempo. En el riesgo crediticio, los cálculos de pérdida esperada son inherentemente un problema de obstáculos: ¿cuál es la probabilidad de incumplimiento (Etapa 1) y cuál es la pérdida en caso de incumplimiento (Etapa 2)? Si está trabajando con cualquier resultado en el que los ceros tengan un significado fundamentalmente diferente al de “sólo un valor pequeño”, vale la pena considerar los modelos de obstáculos como primer enfoque.

Los modelos de obstáculos de dos etapas proporcionan un enfoque basado en principios para predecir resultados inflados en cero al descomponer el problema en dos partes conceptualmente distintas: si ocurre un evento y qué magnitud adquiere dependiendo de su ocurrencia. Esta descomposición ofrece flexibilidad, ya que cada etapa puede utilizar diferentes algoritmos, características y estrategias de ajuste. Ofrece interpretabilidad, porque puede analizar y presentar por separado qué impulsa la participación versus qué impulsa la intensidad, que a menudo es exactamente el desglose que los gerentes de producto y los ejecutivos quieren ver. Y a menudo ofrece un mejor rendimiento predictivo que un solo modelo que intenta manejar simultáneamente tanto el pico en cero como la distribución positiva continua. La idea clave es reconocer que los ceros y los valores positivos a menudo surgen de mecanismos diferentes, y modelarlos por separado respeta esa estructura en lugar de luchar contra ella.

Si bien este artículo cubre el marco central, no hemos abordado otras extensiones importantes que merecen su propio tratamiento. Las formulaciones bayesianas de modelos de obstáculos pueden incorporar conocimientos previos y proporcionar una cuantificación natural de la incertidumbre, lo que encajaría muy bien con nuestra serie bayesiana jerárquica. Imagínese estimar modelos de obstáculos a nivel de producto en los que productos con datos escasos toman fuerza de su categoría. Los enfoques de aprendizaje profundo abren la posibilidad de utilizar funciones no estructuradas (texto, imágenes) en cualquiera de las etapas. Si tienes la oportunidad de aplicar modelos de obstáculos en tu propio trabajo, ¡me encantaría saberlo! No dude en enviarme preguntas, ideas o historias a través de mi correo electrónico o LinkedIn. Si tiene algún comentario sobre este artículo o desea solicitar otro tema sobre inferencia causal/aprendizaje automático, no dude en comunicarse con nosotros. ¡Gracias por leer!