MACHINE LEARNING APLICADO A MLB
Del dato a una señal auditable.
Sport Cortex estima la probabilidad de que un bateador consiga al menos un hit. Separa forma, contexto, mercado y resultado para poder medir cada decisión.Top contextual de hoy
Ordenado de mayor a menor. La barra compara la probabilidad base del bateador con la estimación después de incorporar al pitcher.
Cómo funciona
MLB Stats API, rosters, lineups, boxscores y Statcast.
Forma reciente, histórico, mano, velocidad, zona, arsenal, whiff, hard-hit y orden al bate.
Regresión logística con división temporal. El modelo diario se congela para evitar fuga de información.
Una cola independiente recalcula cada bateador confirmado contra el pitcher probable.
La probabilidad estimada se compara con la frecuencia observada para detectar exceso de confianza.
La predicción se bloquea antes del juego y se liquida con el resultado oficial.
Entrenamiento diario controlado
El dataset se cierra una vez, se identifica con hash y el candidato solo reemplaza al champion si mejora Brier y log loss, además de superar las reglas base.
27c9dab4c3462fdfDecisión: rejected:log_loss_baseline_margin,brier_baseline_margin,roc_auc_at_least_052,top10_stable_across_windows,beats_champion_log_loss,beats_champion_brier
¿Cómo convierte datos en una probabilidad?
La regresión logística aprende un peso para cada variable. Primero combina las features en un score lineal z; después la función sigmoide transforma ese score en un valor entre 0 y 1.
z = β₀ + Σ βᵢxᵢP(hit) = σ(z) = 1 / (1 + e⁻ᶻ)El vector de hoy puede incluir histórico 0.71, forma reciente 0.60, mano, parque y matchup. Si el pipeline produce z = 0.62, entonces:
σ(0.62) = 0.650 → 65.0%Los coeficientes reales no se eligen manualmente: se aprenden únicamente con datos anteriores al juego.
X_today = feature_pipeline.transform(today)
p_hit = champion.predict_proba(X_today)[:, 1]
No se modifica después de cada turno al bate. Al cerrar la jornada se crea una fotografía reproducible con fecha de corte y hash; con ella se entrena un solo candidato usando una división temporal, donde el futuro nunca entra al entrenamiento.
El candidato se compara contra un baseline y contra el champion vigente mediante Brier score, log loss, calibración y estabilidad. Si no mejora los criterios definidos, se registra la ejecución pero el modelo productivo permanece intacto. Solo un candidato aprobado se promociona para la siguiente jornada.
Muestra suficiente para evaluación inicial; ROI aún requiere cuotas históricas.