Cómo construir un sistema de gestión de clientes basado en datos | de Hans Christian Ekne | noviembre de 2024
Imagen creada por el autor usando Canva.

Aunque un sistema CBM básico ofrecerá algunos beneficios e ideas sólidos, para obtener el máximo valor de un sistema CBM, se necesitan componentes más avanzados. A continuación, analizamos algunos de los componentes más importantes, como tener modelos de abandono con múltiples horizontes temporales, agregar optimización de precios, usar pronósticos basados ​​en simulación y agregar datos de precios de la competencia.

Múltiples modelos de rotación de horizontes

A veces tiene sentido observar la deserción desde diferentes perspectivas, y uno de esos ángulos es el horizonte temporal (o período de resultados) que le permite tener al modelo. Para algunos escenarios de negocios, tiene sentido tener un modelo con un período de resultados corto, mientras que para otros puede tener sentido tener un modelo con un período de resultados de 1 año.

Para explicar mejor este concepto, supongamos que crea un modelo de abandono con un período de resultados de 10 semanas. Luego, este modelo se puede utilizar para predecir si un cliente determinado abandonará su negocio en un período de 10 semanas. Sin embargo, supongamos ahora que ha aislado un evento específico que sabe que causa abandono y que tiene un breve período de quizás 3 semanas para implementar cualquier medida preventiva. En este caso, tiene sentido entrenar un modelo de abandono con un horizonte de 3 semanas, condicionado al evento específico que se sabe que causa el abandono. De esta manera, puede centrar cualquier actividad de retención en los clientes con mayor riesgo de abandono.

Este tipo de enfoque diferenciado permite una asignación más estratégica de recursos, centrándose en intervenciones de alto impacto donde más se necesitan. Al adaptar el horizonte temporal del modelo a situaciones específicas, las empresas pueden optimizar sus esfuerzos de retención y, en última instancia, mejorar el valor de vida del cliente y reducir la deserción innecesaria.

Optimización de precios y elasticidad del precio del cliente

En muchos casos, el precio es la parte final de la ejecución de la estrategia, y los ganadores son aquellos que pueden traducir efectivamente una estrategia en un régimen de precios efectivo. Esto es exactamente lo que permite a las empresas hacer un sistema CBM con optimización de premios. Si bien el tema de la optimización de precios fácilmente merece su propio artículo, intentamos resumir brevemente las ideas clave a continuación.

Lo primero que se necesita para empezar es obtener datos sobre precios históricos. Preferiblemente diferentes niveles de precio a lo largo del tiempo y otras variables explicativas. Esto le permite desarrollar una estimación de la elasticidad del precio. Una vez que esto esté implementado, puede desarrollar valores esperados de abandono en varios puntos de precio y usarlos para pronosticar los valores esperados de ingresos. La agregación desde el nivel de cliente proporciona el valor esperado y la rotación esperada por producto y puede encontrar precios óptimos por producto. En casos más complejos, también puede tener varias cohortes por producto, cada una de las cuales tiene su precio óptimo.

Por ejemplo, supongamos que una empresa tiene dos productos diferentes, el producto A y el producto B. Para el producto A, la empresa desea aumentar su base de usuarios y solo está dispuesta a aceptar una cantidad determinada de abandono, al mismo tiempo que es competitiva en el mercado. Sin embargo, para el producto B están dispuestos a aceptar una cierta cantidad de abandono a cambio de tener un precio óptimo con respecto a los ingresos esperados. Un sistema CBM permite la implementación de dicha estrategia y brinda al liderazgo un pronóstico de los ingresos futuros esperados de la estrategia.

Previsión basada en simulación

El pronóstico basado en simulación proporciona una forma más sólida de generar estimaciones de pronóstico en lugar de simplemente realizar estimaciones puntuales basadas en los valores esperados. Al utilizar métodos como la simulación de Monte Carlo, podemos generar densidades de probabilidad para los resultados y así proporcionar a los tomadores de decisiones rangos para nuestras predicciones. Esto es más poderoso que las simples estimaciones puntuales porque podemos cuantificar la incertidumbre.

Para comprender cómo se pueden utilizar los pronósticos basados ​​en simulación, podemos ilustrarlo con un ejemplo. Supongamos que tenemos 10 clientes con determinadas probabilidades de abandono y que cada uno de estos clientes tiene unos ingresos anuales esperados. (En realidad, normalmente tenemos una función de abandono multivariante que predice el abandono de cada uno de los clientes). Para simplificar, supongamos que si el cliente abandona terminamos con 0 ingresos y si no lo hace, nos quedamos con todos los ingresos. Podemos usar Python para concretar este ejemplo:

import random
# Set the seed for reproducibility
random.seed(42)

# Generate the lists again with the required changes
churn_rates = [round(random.uniform(0.4, 0.8), 2) for _ in range(10)]
yearly_revenue = [random.randint(1000, 4000) for _ in range(10)]

churn_rates, yearly_revenue

Esto nos da los siguientes valores para churn_rates y yearly_revenue:

churn_rates: [0.66, 0.41, 0.51, 0.49, 0.69, 0.67, 0.76, 0.43, 0.57, 0.41]
yearly_revenue: [1895, 1952, 3069, 3465, 1108, 3298, 1814, 3932, 3661, 3872]

Usando los números anteriores, y asumiendo que los eventos de abandono son independientes, podemos calcular fácilmente la tasa de abandono promedio y también los ingresos totales esperados.

# Calculate the total expected revenue using (1 - churn_rate) * yearly_revenue for each customer
adjusted_revenue = [(1 - churn_rate) * revenue for churn_rate, revenue in zip(churn_rates, yearly_revenue)]
total_adjusted_revenue = sum(adjusted_revenue)

# Recalculate the expected average churn rate based on the original data
average_churn_rate = sum(churn_rates) / len(churn_rates)

average_churn_rate, total_adjusted_revenue

Con los siguientes números para average_churn_rate y total_adjusted_revenue:

average_churn_rate:0.56, 
total_adjusted_revenue: 13034.07

Por lo tanto, podemos esperar tener alrededor del 56% de abandono y un ingreso total de 13034, pero esto no nos dice nada sobre la variación que podemos esperar ver. Para obtener una comprensión más profunda de la variedad de resultados posibles que podemos esperar, recurrimos a la simulación de Monte Carlo. En lugar de tomar el valor esperado de la tasa de abandono y los ingresos totales, dejamos que la situación se repita 10.000 veces (aquí se elige 10.000 de forma arbitraria; el número debe elegirse de manera que se logre la granularidad deseada de la distribución resultante), y para cada instancia de la simulación los clientes abandonan con probabilidad churn_rate o se quedan con probabilidad 1- churn_rate.

import pandas as pd

simulations = pd.DataFrame({
'churn_rate': churn_rates * 10000,
'yearly_revenue': yearly_revenue * 10000
})

# Add a column with random numbers between 0 and 1
simulations['random_number'] = (
[random.uniform(0, 1) for _ in range(len(simulations))])

# Add a column 'not_churned' and set it to 1, then update it to 0 based on the random number
simulations['not_churned'] = (
simulations['random_number'] >= simulations['churn_rate']).astype(int)

# Add an 'iteration' column starting from 1 to 10000
simulations['iteration'] = (simulations.index // 10) + 1

Esto da una tabla como la siguiente:

jefe de simulaciones marco de datos / imagen del autor

Podemos resumir nuestros resultados usando el siguiente código:

# Group by 'iteration' and calculate the required values
summary = simulations.groupby('iteration').agg(
total_revenue=('yearly_revenue',
lambda x: sum(x * simulations.loc[x.index, 'not_churned'])),
total_churners=('not_churned', lambda x: 10 - sum(x))
).reset_index()

Y finalmente, trazar esto con plotly rendimientos:

Histograma de ingresos totales/imagen del autor
Histograma de abandonos totales / imagen del autor

Los gráficos anteriores cuentan una historia mucho más rica que las estimaciones de dos puntos de 0,56 y 13034 con las que empezamos. Ahora entendemos mucho más acerca de los posibles resultados que podemos esperar ver y podemos tener una discusión informada sobre qué niveles de abandono e ingresos consideramos aceptables.

Siguiendo con el ejemplo anterior, podríamos decir, por ejemplo, que solo estaríamos dispuestos a aceptar una probabilidad del 0,1 % de que se produjeran 8 o más eventos de abandono. Utilizando elasticidades de precios de clientes individuales y pronósticos basados ​​en simulación, podríamos ajustar el pronóstico esperado. churn_rates para los clientes para que pudiéramos lograr exactamente este resultado. Este tipo de control de la base de clientes sólo se puede lograr con un sistema CBM avanzado.

La importancia de los precios de la competencia

Uno de los factores más importantes en la fijación de precios es el precio de la competencia. La agresividad de los competidores determinará en gran medida cuán flexible puede ser una empresa en sus propios precios. Esto es especialmente cierto para las empresas mercantilizadas, como las de servicios públicos o las de telecomunicaciones, donde a los proveedores les resulta difícil diferenciarse. Sin embargo, a pesar de la importancia de los precios de la competencia, muchas empresas optan por no integrar estos datos en sus propios algoritmos de optimización de precios.

Las razones para no incluir los precios de la competencia en los algoritmos de precios son variadas. Algunas empresas afirman que es demasiado difícil y lleva mucho tiempo recopilar los datos, e incluso si comenzaran ahora, todavía no tendrían toda la historia que necesitan para entrenar todos los modelos de elasticidad de precios. Otros dicen que los precios de los productos de la competencia no son directamente comparables a los suyos propios y que sería difícil recopilarlos. Finalmente, la mayoría de las empresas también afirman que tienen administradores de precios que monitorean manualmente el mercado y, cuando los competidores hacen movimientos, pueden ajustar sus propios precios en respuesta, por lo que no necesitan tener estos datos en sus algoritmos.

El primer argumento puede mitigarse cada vez más con un buen web scraping y otros métodos de recopilación de inteligencia. Si eso no fuera suficiente, a veces también existen agencias que pueden proporcionar datos históricos del mercado sobre precios para diversas industrias y sectores. En cuanto al segundo argumento sobre la falta de productos comparables, también se pueden utilizar técnicas de aprendizaje automático para determinar el coste real de los componentes individuales del producto. Otro método también consiste en utilizar diferentes usuarios que se pueden utilizar para estimar los costos mensuales totales de un conjunto específico de productos o productos.

En última instancia, no incluir los precios de la competencia deja a los algoritmos de fijación de precios y a los motores de optimización en desventaja. En industrias donde las calculadoras de precios y los sitios web de comparación facilitan cada vez más a los clientes comprender el mercado, las empresas corren el riesgo de verse superadas en precios por competidores más avanzados.