Adrián López Rendón · proyectos

ML de Predicción de Éxito en Medios

419 words 2 min read #MLOps#Python#BentoML#MLflow

Los estudios cinematográficos enfrentan un alto riesgo financiero al asignar presupuestos de marketing y recursos de producción antes del estreno de una película. Este proyecto entrega un pipeline MLOps de principio a fin que predice si una película será un “Hit” comercial y de crítica —definido como alcanzar una calificación de crítica ≥ 7.5 y un engagement de audiencia ≥ 1,000 votos— permitiendo decisiones basadas en datos sobre priorización de recursos y segmentación de campañas antes del estreno en cines.

Arquitectura y Stack

CapaHerramienta / TecnologíaRol
Fuente de DatosTMDB 5000 Movies Dataset (CSV)Metadata cruda de películas para entrenamiento
Ingeniería de CaracterísticasPython · Pandas · NumPyPreprocesamiento, parsing JSON, transformaciones log, imputación
Entrenamiento y Evaluación MLscikit-learn (Regresión Logística · DictVectorizer)Entrenamiento de modelo, codificación one-hot, evaluación AUC-ROC
Seguimiento de ExperimentosMLflow (backend SQLite)Registro de parámetros, seguimiento de métricas, versionado de modelos
Servicio de ModeloBentoML · UvicornAPI REST (/predict) que sirve probabilidad HIT/FLOP
ContenedorizaciónDocker (vía BentoML)Despliegue reproducible en python:3.12-slim
Gestión de DependenciasUVEntorno bloqueado y reproducible entre máquinas

Logros Técnicos Clave

Ingeniería de características sin fuga de datos — Ocho características de entrada seleccionadas cuidadosamente para excluir las columnas que definen el objetivo (vote_average, vote_count), previniendo fuga de datos y asegurando una evaluación válida fuera de muestra vía AUC-ROC en una partición 80/20.

Código base modular y de arquitectura limpia — Responsabilidades separadas en módulos de propósito único: data_utils.py (ingeniería de características), train.py (orquestación del pipeline) y service.py (definición de la API), con constantes compartidas definidas una vez e importadas donde se necesitan.

Entorno MLOps reproducible — Gestión de dependencias vía uv con un uv.lock versionado y una .python-version fija (Python 3.12). MLflow registra cada corrida de entrenamiento —hiperparámetros (C), métricas (test_auc) y etiquetas de modelo de BentoML— permitiendo trazabilidad completa del experimento.

Preprocesamiento consciente de la distribución — Las características budget y revenue se transforman logarítmicamente vía log1p(x) para estabilizar distribuciones fuertemente sesgadas a la derecha. Los valores numéricos faltantes se imputan con medianas; los vacíos categóricos usan "Unknown" por defecto, asegurando que ningún registro de entrenamiento se descarte silenciosamente.

Repositorio

github.com/sargent-mg/media-hit-prediction-ml