Saltar al contenido

# machine-learning-clasico-con-python

Machine Learning con scikit-learn y XGBoost

Volver a la portada del curso
Historia en audio

Google Flu Trends: cuando el modelo responde otra pregunta

Sección 1 · Fundamentos: qué es ML y el flujo de scikit-learn

Transcripción

En febrero de 2013, Google Flu Trends salió en las noticias. No por un acierto, sino porque estaba estimando más del doble de visitas al médico por gripe de las que reportaban los Centros para el Control y la Prevención de Enfermedades de Estados Unidos, los CDC. Y lo curioso es que el sistema se había construido justamente para predecir esos reportes.

Vamos al principio. La idea era muy atractiva. Cuando alguien se enferma de gripe, busca en internet cosas como síntomas, fiebre o remedios. Si muchas personas de una región buscan eso a la vez, quizá hay un brote en camino. Los CDC publican sus datos con retraso, normalmente de un par de semanas, porque dependen de reportes de laboratorios y consultorios. Las búsquedas, en cambio, llegan al instante. En 2009, un equipo de Google y de los CDC publicó el método en la revista Nature: con datos de búsquedas se podía estimar la actividad de la gripe casi en tiempo real.

¿Cómo se armó el modelo? Según el análisis que publicaron David Lazer y sus colegas en la revista Science en 2014, el método consistió en buscar, entre cincuenta millones de términos de búsqueda, los que mejor se ajustaban a mil ciento cincuenta y dos datos de gripe. Detente en esa proporción. Cincuenta millones de candidatos para explicar poco más de mil puntos. Con tantas opciones, es casi seguro encontrar términos que se mueven igual que la gripe por pura coincidencia. Los propios ingenieros tuvieron que descartar a mano términos que no tenían nada que ver con la enfermedad, pero que coincidían con ella por la temporada, como búsquedas sobre básquetbol escolar. Lazer lo resume con una frase muy gráfica: la primera versión de Flu Trends era en parte un detector de gripe y en parte un detector de invierno.

Eso tuvo consecuencias. En 2009 llegó la pandemia de influenza A H1N1, que no siguió el calendario de invierno, y el sistema no la vio venir. Google actualizó el algoritmo ese año. Pero los errores siguieron. Según el mismo artículo, desde agosto de 2011 el sistema estimó por encima de la realidad en cien de ciento ocho semanas. Y en la temporada 2012 a 2013 llegó el titular: más del doble de lo que reportaban los CDC.

Ahora viene la parte que más nos importa en este módulo. Lazer y su equipo compararon Flu Trends con algo muy sencillo: una proyección hecha solo con los datos de los CDC, aunque llegaran con dos semanas de retraso. Ese modelo simple, sin búsquedas y sin miles de millones de datos, se equivocaba menos. Incluso con datos de los CDC de tres semanas de antigüedad se proyectaba mejor la gripe actual que con Flu Trends. Y la mejor opción era combinar las dos fuentes.

Los autores le pusieron nombre a dos problemas. El primero es la arrogancia del big data: suponer que muchos datos sustituyen a la medición cuidadosa, en lugar de complementarla. El segundo son las dinámicas del algoritmo: el buscador de Google cambiaba todo el tiempo. Sugería términos, mostraba diagnósticos posibles, modificaba lo que la gente terminaba buscando. El modelo suponía que la relación entre búsquedas y gripe era fija, y no lo era.

Traslada esto a tu trabajo con scikit-learn. Lo primero es la pregunta. Flu Trends no medía la gripe; medía búsquedas que se parecían a la gripe. Por eso, antes de entrenar cualquier modelo, conviene escribir con precisión qué variable quieres predecir y con qué dato real la vas a comparar. En PyRitmo, el objetivo top 50 está definido por una regla clara, no por algo que solo se le parece.

Lo segundo es la línea base. Flu Trends nunca debió presentarse sin compararse contra la proyección simple con datos rezagados. Es exactamente lo que hacemos con el DummyClassifier: si tu modelo no supera a la regla más tonta posible, no ha aprendido nada útil, por más sofisticado que sea.

Y lo tercero es la desconfianza sana. Cuando tienes muchas columnas y pocos datos, algunas van a correlacionar con el objetivo por casualidad, o por algo que viaja junto a él, como el invierno con la gripe. Un modelo que se apoya en esas columnas puede verse muy bien en los datos con los que lo ajustaste y fallar en cuanto el mundo cambia un poco.

La idea con la que conviene quedarse es esta: un modelo puede acertar muchas semanas respondiendo una pregunta distinta a la que le hiciste. Define el objetivo, mídelo contra una línea base y pregúntate siempre qué está aprendiendo realmente tu modelo.

Fuentes

Recursos