Proyecto de Machine Learning desarrollado como parte del Data Science Bootcamp.
Modelo de clasificación binaria para predecir qué clientes de una empresa de telecomunicaciones van a abandonar el servicio (churn), permitiendo al equipo de retención actuar de forma anticipada.
- Dataset: IBM Telco Customer Churn (7.043 clientes, 20 features)
- Problema: Clasificación binaria supervisada
- Target:
Churn(1 = abandona, 0 = se queda) - Desbalanceo de clases: 73.5% / 26.5%
📁 proyecto/
├── data/
│ └── Telco_Churn_data.csv
├── model/
│ └── production/
│ └── telco_churn_model.pkl
└── LLM_Churn_COMPLETO.ipynb
| Sección | Descripción |
|---|---|
| 1. Importaciones | Librerías: pandas, scikit-learn, XGBoost, matplotlib, seaborn |
| 2. Carga y limpieza | Fix de TotalCharges (valores vacíos), encoding del target |
| 3. EDA | Distribución de clases, variables numéricas y categóricas, correlaciones |
| 4. Feature Engineering | NumServicios, ChargesPerMonth, EsFibra y otras features derivadas |
| 5. Pipelines | ColumnTransformer + Pipeline con escalado e imputación |
| 6. Comparación de modelos | 6 clasificadores con validación cruzada estratificada |
| 7. GridSearchCV | Optimización de hiperparámetros del mejor modelo |
| 8. Evaluación final | Métricas sobre test set: ROC-AUC, F1, Recall, Precision |
| 9. Feature Importance | Interpretación de las variables más relevantes |
| 10. Impacto en negocio | Estimación del valor económico del modelo |
| 11. Exportar modelo | Serialización con joblib + verificación de carga |
| 12. K-Means Clustering | Segmentación no supervisada en 4 perfiles de cliente + PCA 2D |
Se compararon 6 algoritmos de clasificación:
- Logistic Regression
- Decision Tree
- Random Forest
- Gradient Boosting
- K-Nearest Neighbors
- XGBoost ✅ (mejor resultado)
Métricas priorizadas: ROC-AUC y Recall (por el desbalanceo de clases).
| Segmento | Clientes | Prob. Churn | Acción recomendada |
|---|---|---|---|
| 🟢 Premium Fidelizados | 1.664 (23.6%) | 17% | Upselling y fidelización |
| 🔵 Convencionales Estables | 2.818 (40%) | 28% | Migrar a contrato anual |
| 🟠 Potenciales Desertores | 1.834 (26%) | 67% | Oferta de retención urgente |
| 🔴 Nuevos Exploradores | 727 (10.3%) | 85% | Onboarding + primer contrato |
- Los clientes con contrato mes-a-mes tienen la mayor tasa de churn (~43%).
- La fibra óptica presenta más abandono que DSL, probablemente por precio y competencia.
- La antigüedad (
tenure) es el predictor más importante: los clientes nuevos son los más volátiles. - Clientes sin servicios de seguridad o soporte técnico tienen mayor riesgo de abandono.
Python · pandas · scikit-learn · XGBoost · matplotlib · seaborn · joblib
import joblib
modelo = joblib.load("model/production/telco_churn_model.pkl")
# El pipeline incluye preprocesamiento — no hace falta transformar manualmente
prob_churn = modelo.predict_proba(X_nuevos)[:, 1]
predicciones = modelo.predict(X_nuevos)