Clasificación de Planes Megaline
Métrica de Éxito Alcanzada
Descripción del Proyecto
Resumen del proyecto
Contexto
Proyecto del Sprint 9 en TripleTen. Desarrollo de un modelo de Machine Learning para clasificar clientes de Megaline y recomendar el plan óptimo (Smart o Ultra).
Problema de negocio
Recomendar el plan adecuado a clientes en función de su comportamiento (llamadas, minutos, mensajes, uso de MB), con un modelo que alcance accuracy ≥ 0.75.
Objetivos (qué se busca demostrar con datos)
- Analizar y preparar los datos de comportamiento de usuarios.
- Entrenar modelos de clasificación y comparar desempeño.
- Ajustar hiperparámetros para optimizar rendimiento.
- Evaluar el modelo final en conjunto de prueba.
- Realizar prueba de cordura (baseline) para verificar consistencia.
Dataset(s) / tablas y atributos clave
- users_behavior.csv
- Ruta / fuente:
/datasets/users_behavior.csv - Columnas clave:
calls(número de llamadas)minutes(minutos de llamadas)messages(SMS)mb_used(MB usados)is_ultra(target: Ultra=1, Smart=0)
- Ruta / fuente:
Alcance temporal y población
- Ventana temporal: N/A (no especificado).
- Población / muestra: clientes de Megaline representados en
users_behavior.csv.
Unidad de análisis
Cliente.
Métricas
- Métrica principal: Accuracy.
- Umbral de éxito: accuracy ≥ 0.75.
Entregables
- Notebook principal:
notebooks/sprint9_analysis.ipynb - Repositorio: https://github.com/cjhirashi/proyecto-sprint-9.git
Herramientas utilizadas
- Python 3: implementación del pipeline de modelado.
- Pandas: carga, limpieza y preparación de datos.
- NumPy: operaciones numéricas de soporte.
- scikit-learn: modelos (Dummy, DecisionTree, RandomForest, LogisticRegression), partición y métricas.
- Jupyter Notebook: reporte reproducible (código + narrativa).
- Conda: gestión de entorno y dependencias.
Proceso (clasificado por fases)
PASO 1: CARGA Y REVISION INICIAL DE DATOS
Subpaso 1.1 — Importar librerías
- Importación de librerías base para análisis/modelado:
pandasynumpy.
Subpaso 1.2 — Cargar dataset
- Carga de
users_behavior.csvusandopd.read_csv()desde la carpetadatasets/.
Subpaso 1.3 — Dimensiones y columnas
- Revisión de dimensiones (filas/columnas) y listado de columnas para validar insumos del modelado.
Subpaso 1.4 — Tipos de datos y valores faltantes
- Revisión de tipos de datos y verificación de valores faltantes para asegurar consistencia antes del split/modelado.
Subpaso 1.5 — Estadísticas descriptivas y distribución de la variable objetivo
- Revisión de estadísticas descriptivas y de la distribución/clases de
is_ultra.
PASO 2: DIVISIÓN DE LOS DATOS
Subpaso 2.1 — Separación de features y target
- Separación de variables predictoras (
features) y variable objetivo (target=is_ultra).
Subpaso 2.2 — División en train/valid/test
- Partición estratificada en tres conjuntos: train (60%), valid (20%), test (20%).
- Uso de
random_statepara reproducibilidad.
PASO 3: PREPARACIÓN MÍNIMA DE DATOS
Subpaso 3.1 — Verificación de tipos de datos
- Revisión de
dtypesen el conjunto de entrenamiento para confirmar compatibilidad con los modelos.
Subpaso 3.2 — Escalado de características
- Aplicación de
StandardScaler(cuando aplica) para evitar dominancia por escala (especialmente relevante para LogisticRegression).
Subpaso 3.3 — Revisión de outliers o valores extremos
- Revisión de valores extremos para entender rangos (sin eliminar por defecto; pueden ser comportamientos reales).
PASO 4: PRUEBA DE CORDURA (BASELINE)
Subpaso 4.1 — Entrenar modelo DummyClassifier
- Entrenamiento de
DummyClassifiercon estrategia de referencia y evaluación deaccuracyen validación.
PASO 5: ENTRENAMIENTO Y AJUSTE DE MODELOS
Subpaso 5.1 — DecisionTreeClassifier
- Entrenamiento y tuning (p. ej.
max_depth) con evaluación en validación.
Subpaso 5.2 — RandomForestClassifier
- Entrenamiento y tuning (p. ej.
n_estimators,max_depth) con evaluación en validación.
Subpaso 5.3 — LogisticRegression
- Entrenamiento y pruebas de hiperparámetros (
solver,C, etc.) con evaluación en validación.
PASO 6: SELECCIÓN DEL MEJOR MODELO (VALIDACIÓN)
En este paso se comparan, en el conjunto de validación, los modelos entrenados y sus hiperparámetros para seleccionar el mejor candidato. El objetivo es escoger el modelo con mejor accuracy (y estabilidad) antes de llevarlo a la evaluación final en test.
Subpaso 6.1 — Comparación de resultados en validación
- Comparación de los
accuracyen validación entre:- DecisionTreeClassifier (mejor caso reportado: 0.804)
- RandomForestClassifier (mejor caso reportado: 0.812)
- LogisticRegression (mejor caso reportado: 0.751)
- Selección del mejor modelo (candidato a evaluación final en test).
PASO 7: EVALUACIÓN FINAL EN EL CONJUNTO DE PRUEBA
En este paso se entrena nuevamente el modelo seleccionado (usando el setup definido) y se evalúa en el conjunto de prueba para estimar su desempeño en datos no vistos. Aquí se confirma si el modelo cumple el criterio del proyecto (accuracy ≥ 0.75).
Subpaso 7.1 — Entrenamiento del mejor modelo y evaluación en test
- Entrenamiento del modelo seleccionado y evaluación final en test (accuracy) para validar cumplimiento del umbral.
PASO 8: CONCLUSIONES Y RECOMENDACIONES
En este paso se consolida el aprendizaje del proyecto: se resume el desempeño del baseline vs. los modelos entrenados, se justifica la selección del modelo final y se documentan recomendaciones prácticas para mejoras futuras (feature engineering, balanceo, validación cruzada y tuning).
Conclusiones del proyecto
- Síntesis de resultados (baseline vs modelos) y confirmación del mejor modelo.
Resultados e impacto técnico
Preparación e integración de datos
- Dataset:
users_behavior.csvcon features de comportamiento y targetis_ultra. - Se identificó desbalance: ~69% Smart vs ~31% Ultra.
Transformación / metodología
- Split estratificado train/valid/test.
- Baseline con DummyClassifier.
- Comparación de modelos (árboles, ensambles, regresión logística) + tuning de hiperparámetros.
Resultados principales (con evidencia)
Resultado 1 — Baseline (DummyClassifier)
- Qué se observó: baseline refleja el desbalance del dataset.
- Evidencia / dato: accuracy = 0.694.
- Interpretación: modelo naive cercano a la clase mayoritaria; sirve como referencia mínima.
- Implicación: cualquier modelo útil debe superar claramente este baseline.
Resultado 2 — Árbol de decisión
- Qué se observó: modelo simple con buen desempeño en validación.
- Evidencia / dato:
max_depth=3→ accuracy validación = 0.804. - Interpretación: captura reglas no lineales básicas con bajo riesgo de complejidad.
- Implicación: buen candidato por simplicidad, aunque superado por RandomForest.
Resultado 3 — Modelo ganador (RandomForestClassifier)
- Qué se observó: mejor desempeño y generalización.
- Evidencia / dato: accuracy validación = 0.812; accuracy test = 0.795.
- Interpretación: ensamble robusto con buena capacidad de generalización.
- Implicación: cumple el criterio del proyecto (≥ 0.75) y es el modelo recomendado.
Resultado 4 — Regresión logística
- Qué se observó: desempeño estable pero inferior a modelos basados en árboles.
- Evidencia / dato: accuracy ~ 0.750.
- Interpretación: alternativa interpretable, pero no maximiza performance.
- Implicación: útil si se prioriza interpretabilidad; no es la opción ganadora.
Implicaciones técnicas y de negocio
- Modelo recomendado: RandomForestClassifier (
n_estimators=100,max_depth=5). - Impacto: mejora la recomendación de planes (Smart/Ultra), soporta estrategias de marketing y facilita migración a planes.
- Próximos pasos:
- ingeniería de características,
- balanceo de clases (
class_weight='balanced'/ oversampling), - validación cruzada (
cross_val_score), - tuning más exhaustivo (GridSearchCV).