Predicción de churn, agrupación de clientes mediante clustering y recomendaciones de marketing para gym
Para ver desarrollo en código hacer click aquí
La cadena de gimnasios Model Fitness está desarrollando una estrategia de interacción con clientes basada en datos analíticos.
Uno de los problemas más comunes que enfrentan los gimnasios y otros servicios es la pérdida de clientes. ¿Cómo se descubre si un/a cliente ya no está en el gimnasio? Se puede calcular la pérdida en función de las personas que se deshacen de sus cuentas o no renuevan sus contratos. Sin embargo, a veces no es obvio que un/a cliente se haya ido: puede que se vaya de puntillas.
Los indicadores de pérdida varían de un campo a otro. Si un usuario o una usuaria compra en una tienda en línea con poca frecuencia, pero con regularidad, no se puede decir que ha huido. Pero si durante dos semanas no ha abierto un canal que se actualiza a diario, es motivo de preocupación: es posible que el seguidor o seguidor/a se haya aburrido y haya hecho abandono.
En el caso de un gimnasio, tiene sentido decir que un/a cliente se ha ido si no viene durante un mes. Por supuesto, es posible que estén en Cancún y retomen sus visitas cuando regresen, pero ese no es un caso típico. Por lo general, si un/a cliente se une, viene varias veces y luego desaparece, es poco probable que regrese.
Con el fin de combatir la cancelación, Model Fitness ha digitalizado varios de sus perfiles de clientes. La tarea consistió en analizarlos y elaborar una estrategia de retención de clientes.
- Lenguaje de Programación: Python.
- Entorno de Desarrollo: Jupyter Notebook.
- Bibliotecas: Pandas, Matplotlib, Seaborn, Scikit-learn, Scipy.
Tomando en cuenta los requerimientos, el proyecto de dividirá en cinco pasos:
Importar librerías y datos.
- Importar correctamente todas las librerías necesarias para completar el proyecto.
- Importar correctamente el conjunto de datos proporcionado por la cadena de gimnasios.
Llevar a cabo el análisis exploratorio de datos (EDA).
- Revisar en dataset buscando valores ausentes y duplicados, y estudiar los valores promedio y la desviación estándar.
- Observar los valores medios de las características en dos grupos: para las personas que se fueron (cancelación) y para las que se quedaron.
- Trazar histogramas de barras y distribuciones de características para aquellas personas que se fueron (cancelación) y para las que se quedaron.
- Crear una matriz de correlación y visualizarla.
Construir un modelo para predecir la cancelación de usuarios.
Se creará un modelo de clasificación binaria para clientes donde la característica objetivo es la marcha del usuario o la usuaria el mes siguiente, para esto se seguirán los siguientes pasos:
- Dividir los datos en conjuntos de entrenamiento y validación.
- Entrenar el modelo en el set de entrenamiento con dos métodos:
- Regresión logística;
- Bosque aleatorio.
- Evaluar la exactitud, precisión y recall para ambos modelos utilizando los datos de validación. Las métricas se usarán para determinar qué modelo funciona mejor.
Crear clústeres de usuarios/as.
Se dejará de lado la columna con datos sobre la cancelación para identificar los clústeres de objetos (usuarios/as) para esto, se realizarán las siguientes acciones:
- Estandarizar los datos.
- Crear una matriz de distancias basada en la matriz de características estandarizada y trazar un dendrograma.
- Entrenar el modelo de clustering con el algortimo K-means y predecir los clústeres de clientes.
- Agrupar por cluster y analizar los valores medios de las características y qué grupos son más propensos a irse.
- Trazar distribuciones de características significativas para los clústeres.
Características promedio de quienes siguen siendo clientes y de quienes terminaron dándose de baja:
Cluster | gender | Near_Location | Partner | Promo_friends Phone | Contract_period Group_visits | Age | Avg_additional_charges_total | Month_to_end_contract | Lifetime | Avg_class_frequency_total | Avg_class_frequency_current_month |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.510037 | 0.873086 | 0.534195 | 0.353522 | 0.903709 | 5.747193 | 0.464103 | 29.976523 | 158.445715 | 5.283089 | 4.711807 |
1 | 0.510839 | 0.768143 | 0.355325 | 0.183789 | 0.902922 | 1.728558 | 0.268615 | 26.989632 | 115.082899 | 1.662582 | 0.990575 |
Si se observan los valores medios de esta tabla, se pueden obtener algunas nociones de los factores que podrían incidir en la cancelación, por ejemplo en columnas como Lifetime
la diferencia es muy grande e indica que quienes cancelan, llevan, en promedio, menos tiempo de vida en el gimnasio que quienes siguen siendo clientes. También hay columnas que parecen no tener influencia alguna, como gender
y Phone
que se mantienen iguales en ambas filas.
Se analiza la distribución de las columnas y se encuentran muchas características con distribuciones disparejas, por lo que al momento de entrenar los modelos, se deberá estandarizar los datos.
Una parte importante del análisis exploratorio es la matriz de correlaciones.
Hay dos correlaciones muy altas que son:
- "Cantidad de visitas semanales promedio históricamente" y "Cantidad de visitas promedio semanales en el mes presente", esta correlación es lógica y es muy esperable.
- "Meses faltantes para el término del contrato" y "Periodo de contrato", tambien puede ser lógica, ya que la gente que contrata periodos más largos, generalmente, tiene mucho más tiempo por delante que la gente que contrata periodos cortos.
Se observan también correlaciones negativas interesantes en la columna Churn
en varias columnas, como es el caso de Lifetime
y Age
y Avg_class_frecuency_current_month
, lo que indicaría que mientras más bajas estas columnas, habría más Churn
. Con estas observaciones concluye el análisis exploratorio y pasamos a la construcción de los modelos.
Para entrenar los modelos, se dividen los datos en X
e y
(Los valores de característica y la variable objetivo, respectivamente), estos datos se han vuelto a dividir en una proporción de 80/20 para entrenamiento y prueba, respectivamente. Finalmente se estandarizan los datos numéricos de entrenamiento (los booleanos como 0 y 1 o la columna Contract_period
no cuentan como numéricos).
Los modelos a entrenar y sus respectivos resultados, son los siguientes:
- Regresión Logística:
- Exactitud: 92%.
- Precisión: 82%.
- Recall: 84%
- RandomForestClassifier:
- Exactitud: 92%.
- Precisión: 84%.
- Recall: 81%
La regresión logística con datos estandarizados ha demostrado ser la más efectiva para predecir cancelaciones ya que tiene más alta la métrica Recall
y nuestro objetivo de negocio hace preferible un falso positivo (Dar beneficios a alguien que no va a renunciar) a un falso negativo (No tomar acción sobre una renuncia inminente).
Para generar las agrupaciones usando clustering, primero, debemos determinar el número de grupos que se van a generar, para ello se construyó un dendrograma.
Observando las ramas y los colores del gráfico, se determinó que se crearán 5 grupos. Una vez creados los grupos se agrupan para visualizar una tabla con el promedio de las características.
cluster | gender | Near_Location | Partner | Promo_friends | Phone | Contract_period | Group_visits | Age | Avg_additional_charges_total | Month_to_end_contract | Lifetime | Avg_class_frequency_total | Avg_class_frequency_current_month | Churn |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.502970 | 0.959406 | 0.783168 | 0.574257 | 1.000000 | 10.889109 | 0.542574 | 29.982178 | 160.761016 | 9.954455 | 4.736634 | 1.982055 | 1.974789 | 0.027723 |
1 | 0.522078 | 0.862338 | 0.470130 | 0.306494 | 0.000000 | 4.787013 | 0.425974 | 29.301299 | 143.957664 | 4.475325 | 3.924675 | 1.847220 | 1.716369 | 0.267532 |
2 | 0.495050 | 0.000000 | 0.463366 | 0.079208 | 1.000000 | 2.352475 | 0.215842 | 28.477228 | 135.457501 | 2.198020 | 2.809901 | 1.660461 | 1.477324 | 0.443564 |
3 | 0.485737 | 1.000000 | 0.350238 | 0.240095 | 1.000000 | 1.948494 | 0.341521 | 28.167987 | 131.622204 | 1.856577 | 2.440571 | 1.247634 | 1.012983 | 0.514263 |
4 | 0.559666 | 0.976134 | 0.356802 | 0.230310 | 0.998807 | 2.669451 | 0.473747 | 30.125298 | 161.657905 | 2.459427 | 4.898568 | 2.852002 | 2.850161 | 0.068019 |
Observando los clusteres en base a la cancelación, podemos separarlos en dos grupos:
- 0 y 4: tienen una tasa de cancelación bajísima, por lo que, para disminuir la tasa de cancelación, debemos hacer que el resto de los usuarios comparta sus características clave, que serían:
- Tener más de cuatro meses en el gym.
- Pagar, en promedio, 160 dólares en cargos adicionales del gym (evidentemente no se trata de generar cobros porque si, sino incentivar al cliente a comprar productos del gimnasio).
- Hacen actividades grupales.
- Contratar el plan de 12 meses.
- Trabajar en una compañía asociada.
- 1, 2 y 3: tienen una tasa de cancelación alta: tienen características que hay que trabajar, en la conclusión se detallarán.
Ahora se mostrarán algunas distribuciones de características importantes, esto nos permitirá observar relaciones interesantes y visualizar los grupos formados.
Aquí se pueden ver claramente los clusteres con más retención separados del resto, este gráfico indica que los clientes que tienen altas probalidades de cancelar van al gimnasio menos de tres veces por semana, esta información es muy util para desarrollar alguna estrategia de marketing para retener a los clientes.
En esta distribución se puede observar claramente que las personas que contratan 12 meses de gimnasio, son las del cluster que tiene la mejor tasa de retención.
Una vez terminado este proceso y recordando el objetivo del análisis, que es disminuir la tasa de cancelación de los usuarios, es que se harán cuatro sugerecias de marketing para mejorar la métrica objetivo:
-
Los clusters que más se dan de baja del gym son de usuarios que van menos de 3 veces por semana al gimnasio, y ,mientras más tiempo de vida en el recinto lleva un usuario, es menos probable que abandone. Por ende se podría premiar la asistencia sostenida en el tiempo por 3 o más veces por semana, dando regalos o sorteando premios entre quienes vayan haciendo "a racha de asistencia".
-
Las personas que contratan 12 meses de gimnasio, son las del cluster que tiene la mejor tasa de retención, por ende, hacer descuentos o "dos por" traería, en teoría, fieles usuarios del gimnasio.
-
Observando los clusters se puede observar que en promedio, los grupos que más gastan comprando artículos en el gym tienen a renunciar menos, por ende se pueden hacer descuentos estratégicos en los productos o regalar una bebida o snack proteico al momento de la contratación para familiarizar al usuario con los productos del local.
-
Los clusters que más hacen actividades grupales, tienden a renunciar menos, por lo que es conveniente incentivar a los usuarios a participar de actividades en grupo, regalando una clase al momento de contratar o en su cumpleaños (por ejemplo).
Ejecuta el proyecto aquí
Para ver el diccionario de datos, el desarrollo completo en código y todos los gráficos, haga click en el enlace de arriba.