Introducción
, existe un patrón que cualquier equipo en crecimiento aprende rápidamente: adquirir un nuevo usuario o recuperar a un usuario que ya abandonó es mucho más difícil y costoso que retener a alguien que todavía está usando el producto. En la banca digital, esto es especialmente visible porque los costos de adquisición de clientes son altos.
La retención de usuarios en fintech depende de muchos factores: calidad del servicio, funcionalidad del producto, mecánica de fidelización, comunicación y otras partes de la experiencia del usuario. En este artículo, me centraré en un ejemplo práctico: cómo la personalización basada en ML puede ayudar a trabajar con usuarios en riesgo y aplicar mecanismos de fidelización con mayor precisión.
La tarea tuvo tres pasos. Primero, necesitábamos aprender a identificar a los usuarios que tenían probabilidades de abandonar. Luego tuvimos que definir la mecánica de retención, es decir, qué exactamente podría devolver el interés del usuario al producto. Después de eso, necesitábamos optimizar la intervención en sí: comprender qué usuarios del segmento de riesgo se verían realmente afectados por la oferta de retención.
En este artículo, compartiré una guía práctica para construir un sistema analítico para este tipo de tarea. Se basa en dos modelos de aprendizaje automático: un modelo previo a la rotación, que identifica a los usuarios en riesgo, y un modelo de elevación, que ayuda a determinar cuáles de ellos son realmente sensibles a una oferta de retención. Explicaré el valor práctico de cada etapa: por qué era necesaria desde la perspectiva del producto, qué problema resolvió y qué conclusiones pudimos sacar de la investigación.
Preparación: objetivo y características.
Comencemos con la definición de abandono. Trabajé en el crecimiento de un producto de tarjeta de débito, donde el comportamiento del usuario se describe mejor a través de la actividad transaccional. Así que nos decidimos por una definición práctica: abandono significa no pagos con tarjeta durante 30 días. Esta definición se utiliza a menudo en productos financieros y la lógica detrás de ella es bastante clara.
Si una persona no ha realizado una sola transacción en un mes, la tarjeta efectivamente ha desaparecido de su billetera. Formalmente, es posible que la cuenta todavía esté abierta, pero desde la perspectiva del producto, el usuario ya no está activo. En consecuencia, el objetivo del modelo es una bandera binaria: si el usuario realizó al menos un pago dentro de los próximos 30 días.
A continuación, pasemos a la colección de funciones. Para esta tarea, recopilé varias docenas de características que describen el comportamiento del cliente en el servicio. No puedo revelar el conjunto exacto de funciones de producción, pero compartiré los principios fundamentales para crear una representación de funciones de un cliente en un producto fintech en función de la actividad transaccional y los datos del perfil del usuario.
Perfil de usuario. Características básicas del cliente: edad, región, tipo de dispositivo, productos conectados, plan tarifario, estado de las suscripciones o del programa de fidelización, estado de la cuenta como nuevo usuario, cliente activo, etc. La actividad se agrega a lo largo de ventanas de tiempo. Métricas de comportamiento calculadas durante 7, 30 y 90 días: número de transacciones, volumen de negocios, monto promedio de transacción, número de categorías de gasto únicas, número de días activos, etc. Diferentes ventanas ayudan a capturar cambios en el comportamiento del usuario. Intervalos de tiempo. Cuánto tiempo ha pasado desde el último o primer pago, cuál fue la brecha promedio entre transacciones y cómo cambia el ritmo de actividad con el tiempo. En la práctica, la señal de que un usuario “no ha aparecido en un tiempo” a menudo resulta ser uno de los predictores más sólidos de abandono. Funciones del calendario. Día de la semana y mes. Sin estas características, el modelo puede confundir las caídas naturales de la actividad con la deserción real. Los servicios financieros son muy sensibles a los patrones estacionales, por lo que es mejor tenerlos en cuenta por adelantado. Características derivadas. Ratios entre ventanas de tiempo, participaciones de transacciones de un determinado tipo, métricas normalizadas y relativas. Estas funciones ayudan a comparar clientes con diferentes niveles básicos de actividad y evitan penalizar a los usuarios que simplemente gastan menos.
Modelo previo al abandono
Comencemos con el modelo previo al abandono. Nuestro objetivo en esta etapa es identificar el segmento de usuarios para quienes los mecanismos de fidelización existentes ya no funcionan. En otras palabras, usuarios que están perdiendo interés en el servicio bajo el nivel actual de incentivos de fidelidad.
En esta etapa, la tarea es identificar a los usuarios con un riesgo elevado de irse. Para ello, necesitamos un modelo que prediga la probabilidad de un pago futuro. Si la probabilidad prevista es baja, el usuario cae en el segmento previo al abandono. En ese caso, el servicio debe prestar atención al usuario con antelación, mientras aún se puede evitar la deserción.
Entrenando el modelo de referencia
El modelo se basa en las características recopiladas y predice la probabilidad de un pago en un horizonte de 30 días. Esencialmente, se trata de una tarea de clasificación binaria con estimación de probabilidad. Las características del usuario se pasan como entrada y la salida es la probabilidad de que el usuario realice al menos un pago dentro de los próximos 30 días.
p_base(x)=P(Y=1|X=x)p_base(x) = P(Y = 1 | X = x)
donde Y ∈ {0, 1} indica si el usuario realizará un pago dentro de los próximos 30 días y X denota la matriz de características del usuario.
Se pueden utilizar muchas herramientas de ML para este tipo de tarea. En la práctica, los modelos de aumento de gradiente a menudo ofrecen un rendimiento sólido con una cantidad razonable de esfuerzo analítico requerido para el entrenamiento del modelo: XGBoost[1], LuzGBM[2]y CatBoost[3].
Luego, los usuarios pueden clasificarse por nivel de riesgo. Cuanto menor sea la probabilidad de pago prevista, mayor será el riesgo de abandono:
puntuación_riesgo(x)=1−p_base(x)riesgo_puntuación(x) = 1 – p_base(x)
Un usuario ingresa al segmento previo al abandono si su probabilidad de pago prevista está por debajo de un umbral seleccionado t:
S_prechurn={x:p_base(x)<t}S_prechurn = {x : p_base(x) < t}
El umbral t se selecciona en función del tamaño del segmento, el presupuesto de retención y el nivel de riesgo aceptable. En términos prácticos, esto significa elegir un umbral que mantenga los costos de fidelidad dentro del presupuesto de la campaña promocional.
Validación
En primer lugar, a la hora de validar este tipo de modelo, es importante comprobar si funcionará en el mismo modo en el que se utilizará en producción. Para ello, conviene esperar varios meses más para realizar una comprobación adicional del modelo. El modelo se entrena con datos históricos más profundos y luego evaluamos qué tan bien predice la deserción en una ventana de tiempo más reciente.
En segundo lugar, lo que importa aquí no es tanto la calidad de la clasificación final, sino la calidad de la probabilidad predicha misma. Necesitamos monitorear qué tan bien el modelo clasifica a los usuarios según su riesgo de abandono, por ejemplo usando ROC-AUC y otras métricas de clasificación. También es importante examinar por separado la calibración de la probabilidad: si aparece algún sesgo en las probabilidades predichas. Para ello podemos utilizar una curva de calibración y una curva de Hosmer-Lemeshow.[5].
En nuestro caso, la calidad de clasificación del modelo apenas se degradó incluso con datos nuevos. Sin embargo, la calibración se deterioró: con el tiempo, las probabilidades previstas cambiaron en relación con la tasa de eventos real bajo la influencia de factores no observados. Este es un patrón que veo habitualmente en modelos similares, por lo que quiero enfatizarlo por separado.
Calibración
Existe una forma bastante eficaz de abordar el problema del deterioro de la calibración del modelo. Implica construir un modelo de calibración separado sobre el modelo principal previo al abandono. La idea es simple: el modelo de calibración toma la predicción del modelo principal como su única característica y la transforma en una probabilidad más precisa a partir de datos nuevos. Para este paso se utiliza la regresión logística.
p_calibrado(x)=g(p_base(x))p_calibrado(x) = g(p_base(x))
donde p_base(x) es la predicción del modelo de referencia previo al abandono y g es el modelo de calibración.
La principal ventaja de este enfoque es su simplicidad. El modelo de calibración se puede actualizar periódicamente, se valida rápidamente y no requiere un rediseño completo de todo el sistema ML. Como resultado, obtenemos un proceso que ayuda a mantener el modelo estable en el tiempo sin un mantenimiento manual constante.
Oferta para el segmento Pre-Churn
Después de construir el modelo previo a la abandono, lanzamos un experimento aleatorio: parte del segmento previo a la abandono recibió una mayor oferta de reembolso, mientras que el resto permaneció en el flujo regular.
El experimento demostró que la dirección era correcta: la mayor oferta de reembolso ayudó a mejorar la retención de usuarios y vimos ganancias estadísticamente significativas en la retención. Sin embargo, no estábamos satisfechos con el costo de retener a un usuario. Resultó ser incluso mayor que el costo de adquirir nuevos usuarios. Esto fue impulsado por una gran proporción de usuarios orgánicos dentro del segmento. Además de los usuarios realmente en riesgo, el modelo previo a la abandono también seleccionó a usuarios que respondían menos a los mecanismos de retención. En otras palabras, algunos usuarios recibieron la oferta de devolución de dinero a pesar de que ya iban a realizar un pago, mientras que otros no respondieron en absoluto.
Esto llevó a la principal conclusión de esta etapa: saber que un cliente está en zona de riesgo no es suficiente. También necesitamos comprender qué comportamiento puede realmente cambiar mediante la comunicación y quién seguirá siendo el mismo. Para ello, necesitamos la siguiente etapa: un modelo de mejora, al que pasaremos ahora.
Modelo de elevación
El objetivo del modelo de mejora es estimar en qué medida una oferta específica puede cambiar el comportamiento del usuario. Identifica a los clientes cuya probabilidad de realizar un pago aumenta más específicamente debido a la oferta. De aquí surge el ahorro de costes: el presupuesto no se gasta en todo el segmento de riesgo, sino sólo en los usuarios a quienes la oferta realmente puede ayudar a retener.
Un modelo de este tipo no se puede entrenar únicamente en función de las características del usuario y del hecho del pago. Necesita datos experimentales, donde parte de la audiencia recibió la oferta al azar y otra parte permaneció en el grupo de control. Sólo entonces el modelo podrá observar la diferencia en la respuesta entre los dos escenarios y aprender a separar a los usuarios sensibles a la intervención de los que son indiferentes. El experimento A/B que realizamos anteriormente proporcionó exactamente estos datos, por lo que pudimos pasar directamente a la construcción del modelo.
Entrenamiento modelo
En esencia, el levantamiento es la diferencia entre dos probabilidades de la acción objetivo: con y sin intervención.
τ(x)=P(Y=1|X=x,T=1)−P(Y=1|X=x,T=0)τ(x) = P(Y = 1 | X = x, T = 1) – P(Y = 1 | X = x, T = 0)
donde τ(x) es el aumento esperado para el usuario x, Y ∈ {0, 1} indica si el usuario realizó un pago dentro de los 30 días, X denota las características del usuario y T ∈ {0, 1} indica si se aplicó la intervención. En nuestro caso, T = 1 significa que el usuario recibió la oferta de reembolso, mientras que T = 0 significa que el usuario no recibió la oferta.
Hay varias formas de estimar esta diferencia. Describiré dos enfoques[4]: el T-alumno y el S-alumno.
En un T-learner, se entrenan dos modelos de clasificación binaria independientes. El primero predice la probabilidad de pago de los usuarios que recibieron la oferta. El segundo predice la probabilidad de pago de los usuarios del grupo de control.
p0(x)=P(Y=1|X=x,T=0)p₀(x) = P(Y = 1 | X = x, T = 0)
p1(x)=P(Y=1|X=x,T=1)p₁(x) = P(Y = 1 | X = x, T = 1)
Después de eso, el aumento se calcula como la diferencia entre las dos predicciones para el mismo usuario:
τ(x)=p1(x)−p0(x)τ(x) = p₁(x) – p₀(x)
En otras palabras, el modelo estima cuánto aumenta la oferta la probabilidad de pago para un usuario específico.
En un S-learner, se utiliza un único modelo. Toma las características del usuario y una característica adicional que indica si el usuario recibió la intervención o no.
a(x,t)=P(Y=1|X=x,T=t)a(x, t) = P(Y = 1 | X = x, T = t)
Para estimar el uplift, hacemos predicciones para el mismo usuario en dos escenarios: primero, como si el usuario recibiera la oferta y luego, como si no la recibiera.
τ(x)=a(x,1)−a(x,0)τ(x) = a(x, 1) – a(x, 0)
En la práctica, ambos enfoques produjeron resultados similares, por lo que la elección entre ellos no fue crítica. El siguiente paso es intuitivo: tomamos a los usuarios con el mayor aumento previsto, es decir, aquellos para quienes la oferta aumenta más la probabilidad de pago.
Validación
Después de construir el modelo de elevación, evaluamos su efectividad mediante un experimento A/B. El diseño del experimento fue el siguiente.
Seleccionamos el segmento previo al abandono. El tamaño del segmento estuvo determinado por el presupuesto de campaña disponible. Dividimos el segmento en dos grupos: uno sin el modelo de elevación y otro con el modelo de elevación. En el grupo sin el modelo uplift, la oferta se distribuyó de forma estándar: algunos usuarios recibieron un reembolso, mientras que otros permanecieron en el grupo de control. En el grupo con el modelo de mejora, el modelo seleccionó primero a los usuarios con la mejora prevista más alta. Luego, dentro de este segmento seleccionado, algunos usuarios recibieron la oferta, mientras que otros permanecieron en el grupo de control. Finalmente, comparamos los resultados. Esto nos permitió evaluar dos estrategias: una distribución de oferta estándar en todo el segmento previo al abandono y una distribución dirigida después de filtrar a los usuarios a través del modelo de mejora.
Como resultado del experimento, vimos que agregar el modelo uplift al sistema de retención puede reducir significativamente el costo de retener a un usuario. El efecto principal proviene de la reducción de la proporción de usuarios orgánicos: las ofertas dejan de distribuirse a gran escala a usuarios que de todos modos habrían realizado un pago sin la oferta o que no habrían respondido a ella en ningún caso.
Sistema de retención de clientes
Permítanme describir cómo funcionó el sistema de retención final. En esencia, fue un proceso de selección secuencial para la intervención de retención.
En la primera etapa, el modelo previo a la abandono p_calibrated(x) estimó la probabilidad de un pago dentro de los próximos 30 días. Si esta probabilidad estaba por debajo de un umbral seleccionado, el usuario ingresaba al segmento previo al abandono:
S_prechurn={x:p_calibrated(x)<t}S_prechurn = {x : p_calibrated(x) < t}
En la segunda etapa, se aplicó el modelo de elevación τ(x) dentro del segmento previo al abandono. Estimó en qué medida la oferta de reembolso cambiaría la probabilidad de pago para un usuario específico y seleccionó a aquellos que tenían más probabilidades de responder a la oferta:
Objetivo={x∈S_prechurn:τ(x)>u}Objetivo = {x ∈ S_prechurn : τ(x) > u}
donde u es el incremento mínimo esperado en el que tiene sentido mostrar la oferta al usuario.
Para el funcionamiento continuo del sistema, tomamos en cuenta que ambos modelos, el modelo previo al abandono y el modelo ascendente, necesitarían recalibrarse periódicamente. Eso significa que el sistema necesitaba un flujo constante de datos experimentales nuevos. Por eso diseñamos la lógica de distribución de ofertas de manera que generara estos datos continuamente.
Algunos usuarios fueron excluidos por completo del sistema de retención, lo que significa que no se les aplicó ningún mecanismo de retención. Este grupo mostró el nivel real de abandono sin intervención y sirvió como punto de referencia para calibrar el modelo previo al abandono. Dentro del segmento previo al abandono, hubo otra división: algunos usuarios no recibieron la oferta, mientras que otros la recibieron de forma aleatoria, independientemente del modelo de uplift. Esta asignación aleatoria de ofertas proporcionó datos claros sobre la respuesta a la intervención, que luego se utilizó para recalibrar el modelo de mejora.
Conclusión
Al final, creamos un sistema completo de retención basado en aprendizaje automático. Se basa en dos modelos. El primero, el modelo pre-churn, identifica a los usuarios con baja probabilidad de pago, es decir, aquellos que ya se encuentran en la zona de riesgo. El segundo, el modelo uplift, mira dentro de este segmento y encuentra clientes que realmente probablemente responderán a una oferta personalizada, como un mayor reembolso.
Esta combinación resuelve dos problemas a la vez. Por un lado, podemos ver de antemano quién está perdiendo interés en el servicio y reaccionar antes de que el usuario lo abandone. Por otro lado, el presupuesto de marketing se gasta de forma más precisa: las ofertas no se envían a todos los usuarios del grupo de riesgo, sino sólo a aquellos cuyo comportamiento probablemente se verá influido por la intervención.
Como resultado, el sistema ayuda no sólo a retener a los clientes, sino también a hacerlo de una manera económicamente significativa. La empresa gasta menos en usuarios que se habrían quedado de todos modos y concentra el presupuesto donde la intervención de retención produce un efecto incremental real.
Fuentes
[1]Tianqi Chen y Carlos Guestrin. XGBoost: un sistema escalable de impulso de árboles. Proc. 22.° ACM SIGKDD, 2016. https://xgboost.readthedocs.io/
[2]Corporación Microsoft. Documentación de LightGBM, 2026. https://lightgbm.readthedocs.io/
[3]Yandex. Documentación de CatBoost, 2026. https://catboost.ai/docs/en/
[4]Sören R. Künzel, Jasjeet S. Sekhon, Peter J. Bickel y Bin Yu. Metalearners para estimar efectos de tratamientos heterogéneos mediante el aprendizaje automático. Actas de la Academia Nacional de Ciencias, 116(10), 2019. https://www.pnas.org/doi/10.1073/pnas.1804597116
[5]Van Calster et al. Tutorial sobre Medidas de Calibración y Modelos de Calibración para Modelos de Predicción Clínica. JAMIA, 27(4), 621–633, 2020. https://academic.oup.com/jamia/article/27/4/621/5762806