Cómo crear un sistema de gestión de clientes basado en datos | de Hans Christian Ekne | noviembre 2024

Cómo crear un sistema de gestión de clientes basado en datos | de Hans Christian Ekne | noviembre 2024

Imagen creada por el autor usando Canva.

Si bien un sistema CBM básico proporciona sólidos beneficios e información, para aprovechar al máximo un sistema CBM se requieren componentes más avanzados. A continuación, cubrimos algunos de los elementos más importantes, como los modelos de abandono con múltiples horizontes temporales, la optimización de precios, el uso de pronósticos basados ​​en simulación y la fijación de precios de datos de los competidores.

Múltiples modelos de cancelación de suscripción de Horizon

A veces tiene sentido observar la deserción desde diferentes ángulos, y uno de esos ángulos es el horizonte temporal (o período de resultados) que se permite en el modelo. Para algunos escenarios económicos, 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 un año.

Para explicar mejor este concepto, digamos que está creando 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, ahora digamos que ha aislado un evento específico que sabe que está provocando la deserción y tiene un breve período de alrededor de 3 semanas para implementar una medida preventiva. En este caso, tiene sentido entrenar un modelo de abandono con un horizonte temporal de 3 semanas, según el evento específico que se sabe que está provocando el abandono. De esta manera, puede centrar todas las actividades de retención en aquellos 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, mejorar el valor de vida del cliente y reducir las tasas de abandono innecesarias.

Optimización de precios y elasticidad del precio del cliente.

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

Lo primero que debe hacer es obtener datos históricos de precios. Preferiblemente diferentes niveles de precios 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 deserción en diferentes puntos de precio y usarlos para pronosticar los valores esperados de ingresos. La agregación a nivel de cliente proporciona el valor esperado y la tasa de abandono esperada por producto y puede encontrar precios óptimos por producto. En casos más complejos, también puedes tener varias cohortes por producto, cada una con su precio óptimo.

Por ejemplo, supongamos que una empresa ofrece dos productos diferentes, Producto A y Producto B. Para el Producto A, la empresa quiere aumentar su base de usuarios y solo está dispuesta a aceptar una cierta cantidad de abandonos, sin dejar de ser competitiva en el mercado. Sin embargo, para el producto B, están dispuestos a aceptar una determinada tasa de abandono a cambio de un precio óptimo en relación con los ingresos esperados. Un sistema CBM permite implementar dicha estrategia y brinda a los gerentes una previsión de los ingresos futuros esperados de la estrategia.

Previsión basada en simulación

Los pronósticos basados ​​en simulación proporcionan una forma más sólida de generar estimaciones de pronóstico en lugar de simplemente hacer una estimación puntual basada en los valores esperados. Utilizando 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 probabilidades de abandono determinadas y 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, quedarse 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]

Utilizando los números anteriores y suponiendo que los eventos de abandono son independientes, podemos calcular fácilmente la tasa de abandono promedio, así como 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 una tasa de abandono de alrededor del 56% y unos ingresos totales de 13.034, pero eso no nos dice nada sobre la variación que podemos esperar. Para comprender mejor 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 deserción y los ingresos totales, dejamos que la situación se repita 10.000 veces (aquí se elige 10.000 arbitrariamente; el número debe elegirse de modo que se obtenga la granularidad deseada de la distribución resultante), y para cada caso de clientes de simulación se dan de baja 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:

marco de datos del administrador de simulación / 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, traza esto con plotly dado :

Histograma de ingresos totales/imagen por 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 comprendemos mucho mejor los posibles resultados que podemos esperar y podemos tener una discusión informada sobre qué niveles de abandono e ingresos consideramos aceptables.

Siguiendo con el ejemplo anterior, por ejemplo podríamos decir que sólo estaríamos dispuestos a aceptar un 0,1% de probabilidad de tener 8 o más eventos de baja. Utilizando elasticidades de precios de clientes individuales y pronósticos basados ​​en simulaciones, podríamos ajustar los pronósticos. churn_rates para los clientes para que podamos lograr exactamente esto. Este tipo de control del cliente sólo se puede lograr con un sistema CBM avanzado.

La importancia de los precios competitivos

Uno de los factores más importantes a la hora de fijar precios es el precio del competidor. La agresividad de los competidores determinará en gran medida cuán flexible puede ser una empresa en sus propios precios. Esto es especialmente cierto en el caso de empresas mercantilizadas, como las de servicios públicos o 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 incorporar estos datos en sus propios algoritmos de optimización de precios.

Las razones por las que los precios de la competencia no se incluyen en los algoritmos de fijación de precios son variadas. Algunas empresas dicen 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 competidores no son directamente comparables a los suyos y serían difíciles de recopilar. Finalmente, la mayoría de las empresas también afirman que tienen administradores de precios que monitorean manualmente el mercado y que cuando los competidores actúan, ellos 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 existen agencias que pueden proporcionar datos históricos del mercado sobre precios para diversas industrias y sectores. En cuanto al segundo argumento de que no existen 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 es también utilizar diferentes perfiles de usuario que pueden usarse para estimar los costos mensuales totales de un conjunto específico de productos o un producto.

En última instancia, no incluir los precios de la competencia pone en desventaja a los algoritmos de fijación de precios y a los motores de optimización. En industrias donde las calculadoras de precios y los sitios de comparación permiten a los clientes comprender mejor el mercado, las empresas corren el riesgo de que competidores más avanzados compitan en precios.