Resumen
En este primer stream de enCoders se presenta Kaggle, una plataforma de competencias y desafíos de ciencia de datos, y se usa el clásico dataset del Titanic como ejemplo introductorio. Los tres presentadores programan en vivo en R: leen los datos, hacen un split de entrenamiento y validación, entrenan un Random Forest con Ranger y calculan el accuracy. Después suben las predicciones a Kaggle y quedan alrededor del lugar 12.000 con un score de ~0.75. Prueban H2O AutoML para mejorar el resultado, pero el equipo se cuelga y el resultado es peor que el de Ranger. Conversan también sobre diccionarios de datos, depuración con print, técnicas para variables categóricas y cuánto esperar un proceso largo. La conclusión es que Kaggle es una muy buena herramienta para aprender, aunque se gana muy poco dinero.
Capítulos
- 00:00De que se trata estas transmisiones en vivo que estamos haciendoSe da la bienvenida al primer stream de enCoders, donde se programarán en vivo problemas de ciencia de datos, ciberseguridad y otros. Se describe Kaggle como plataforma de desafíos de análisis de datos, a veces usada para reclutamiento.
- 00:41Que exactamente vamos a hablar el día de hoy. Spoiler: dataset de titanic en KaggleSe recomienda resolver problemas propios, pero Kaggle ofrece una gran fuente de problemas y permite comparar resultados con otros. Se comenta que cerca del 80% del tiempo se va en pelear con los datos y que conviene lanzarse a un proyecto personal en vez de solo hacer cursos (Coursera, Udemy). También se menciona la dificultad de obtener datos por scraping (captchas, bloqueos en Instagram).
- 03:56Antes de seguir, nuestros nombres y caras.Se presentan los participantes y se explica que el símbolo junto al nombre indica quién está proyectando pantalla.
- 04:21Inquietud del Mati, ¿Qué tal real es el dataset?Se pregunta si el dataset del Titanic es real; buscan en línea y hay fuentes contradictorias, sin certeza.
- 05:38Entendiendo los componentes básicos de la web de KaggleSe recorren las pestañas: overview con el contexto, datos descargables, código de otros usuarios y el leaderboard con los mejores puntajes.
- 06:42Descargamos los datos de Titanic y ordenamos los códigosDescargan los tres archivos CSV y comentan que la respuesta probablemente se encuentra en Google. Explican su estructura de carpetas, con una carpeta `files` para lo que no se versiona en git y otras para preprocesos, modelos y sandbox.
- 08:21Rodo nos comenta que vamos a hacer, mientras Mati intenta hacker a rodo por la CMDTrabajan de forma colaborativa con Live Share en el mismo ambiente. Bromean con borrar archivos desde la consola y con lo incómodo que es el CMD de Windows frente al autocompletado de otras terminales.
- 11:16Lectura inicial de los datos inicialesLeen los datos con la librería data.table y confirman que los datasets principales son train y test. Revisan las columnas (PassengerId, Survived, etc.).
- 13:11Mati nos cuentas sobre el loop circular de la vida profesionalAnécdota de preguntar por el acceso a datos reales y que cada persona te derive a otra hasta volver a la primera.
- 14:00Rodo nos explica que son los raidsExplican que en Twitch un raid ocurre cuando un streamer termina y manda a su audiencia a otro canal; llegó gente del stream de Nico.
- 14:56Repaso de lo que vamos a hablarRecapitulan el ejemplo del Titanic para quienes llegaron y comparten el link de la competencia.
- 15:24Ojalá todo tuviéramos un catálogo de Datos del dataset como a lo KaggleEncuentran el diccionario de datos, con 11 variables, y comentan lo poco habitual que es tener uno en las empresas; alguien cuenta que en su empresa lo tienen porque hay un equipo de data governance.
- 16:56Rodo nos deja y queda el caos al tratar de hacer el split de train y testIntentan dividir el train en entrenamiento y validación, verifican el número de filas y se enredan con la terminal y RStudio.
- 20:06Modelamos con Ranger y no olvidar pasar variable de respuesta a factorDeciden entrenar un Random Forest clásico con Ranger y comentan que la variable de respuesta debe ser factor, pues si no el modelo hace una regresión. Usan 100 árboles como configuración básica.
- 24:17Caos en el preprocesamiento de los datos missingTratan los datos faltantes con imputación simple y discuten estilos de nombres de columnas.
- 26:23Chris y Mati nos comenta de como debugear con printComentan una charla de un programador famoso sobre el uso de depuradores: para código sencillo como este basta con print, y el depurador conviene en sistemas complejos.
- 28:30La experiencia de Mati con FORTRANMati cuenta que en su tesis de matemática usó Fortran para simulaciones numéricas con ciclos for sobre una malla (derivadas numéricas) y manejo de memoria, y que ahí también se apoyaba en print.
- 30:21Resultado del modelo y recordar ocupar buenos nombre de variablesObtienen el modelo y repiten el proceso para validación. Reconocen que deberían usar nombres de variables descriptivos.
- 31:45Complicándose con el predictSe explica que predict es una función genérica que despacha según el tipo de objeto y que cada paquete puede extenderla. Tienen dificultad para obtener las clases 0/1.
- 35:37el gran (no) truco de Chris, para ver el contenido de una listaExplican que el resultado de predict es una lista; se accede a sus componentes con `$` (o `@`) y el autocompletado con tabulador, o con el View de RStudio para objetos complejos.
- 37:23Como sacar el accuracyCalculan el accuracy comparando las predicciones con la columna Survived, con una tabla (matriz de confusión) y la definición de la fórmula.
- 39:08La utilidad de R según MatiMati defiende R para análisis de datos frente a Python, cuya sintaxis con corchetes y lambdas le disgusta; comentan que esto se puede hacer en R, Python, Julia y otros.
- 40:06Analizamos la métrica que obtuvimos del modeloAclaran que el accuracy es solo una de varias métricas y sugieren añadir ROC/AUC. Observan que unos 98 casos son clase 1, cerca del 30%, por lo que está relativamente balanceado, y lamentan no haber hecho exploración de datos.
- 41:51Revisamos como nos puede ir en KaggleEstiman perder unos cinco puntos de accuracy en el test y miran el leaderboard, donde muchos tienen en torno a 0.78–0.79.
- 43:51Crear el archivo con las predicción fuera de muestra para ver el leaderboard de Kaggle.Revisan que la imputación de la tarifa (Fare) por la media esté correcta y arman un data frame con PassengerId y la predicción, que escriben a CSV.
- 48:48El fracaso tremendo de nuestro primer modeloSuben el archivo y obtienen un score de alrededor de 0.75, lugar ~12.000.
- 49:24¿Cuantos intentos se pueden hacer Kaggle?Comentan que hay un límite de envíos por día (por ejemplo, 10 en esta competencia) y revisan la duración y los plazos de otras competencias activas.
- 51:21Renunciar para dedicarse a KaggleBromean con renunciar al trabajo para dedicarse a Kaggle; revisan los premios y notan que el leaderboard público se calcula sobre el 51% de los datos y el privado sobre el 49%.
- 53:24Espiando a un gran master de KaggleRevisan el perfil de un Grandmaster que obtuvo el tercer lugar en una competencia de detección de fraude; concluyen que ha ganado dinero en una sola competencia en cinco años y que ganar requiere mucha dedicación.
- 56:11Discusiones en Kaggle, ver si hay una papitaExploran las discusiones de la competencia para aprender de otros, y comentan la diferencia entre el score de validación cruzada y el del leaderboard.
- 57:49Truquitos de como trabajar con variables de categóricasDiscuten categorías nuevas en test que no estaban en train, y mencionan agruparlas en "otros", eliminar la columna, frequency encoding y target encoding para columnas con muchas categorías.
- 01:01:30Mejorar el modelo con todo, su AUTOMLDeciden probar H2O AutoML. Mati expresa su reserva con el AutoML porque pierde la gracia del modelado, pero le parece razonable para este caso.
- 01:03:45Necesitamos más followers y bits para comprar una cámara web a MatiAgradecen los follows y bromean con que las suscripciones podrían servir para comprarle una cámara web a Mati.
- 01:04:51Resumen hasta ahoraResumen del avance: un Random Forest simple dejó el lugar ~12.000 y ahora intentan mejorarlo con H2O.
- 01:05:33Chris enseñando como aplicar automl con h2oInician H2O, pasan los datos, hacen el split con la función propia de H2O y lanzan AutoML con 60 segundos de tiempo máximo, la respuesta Survived y el resto como atributos.
- 01:08:25Se Quedo pegado el computador de rodoEl proceso deja pegado el computador de Rodo y bromean con arrendar un servidor.
- 01:09:10Variables no necesariasH2O indica que las variables embarque, ticket, cabina, nombre y sexo aportan poco, y discuten la presencia de nombre en el diccionario y en los datos.
- 01:10:35Meme "not like this"Problemas con el stream y mención del meme.
- 01:11:06Un modelo que ocupe el signo zodiacalComentan escépticamente que alguien dijo que una variable como el signo zodiacal salió no significativa, y que no lo creen.
- 01:11:37AutoML peor que RangerEl modelo termina y el resultado obtenido parece peor que el del Ranger.
- 01:12:42¿Podría mejora el modelo con más tiempo de entrenamiento?Plantean dar más tiempo (cinco o diez minutos) a AutoML, aunque dudan de que supere a Ranger.
- 01:13:50Haber visto la película del Titanic nos ayudará hacer feature engineeringSugieren eliminar ticket y cabina como ruido, y que el sexo importa porque en la película se priorizaba a mujeres y niños.
- 01:14:52Nuevamente el pc de rodo en llamas gracias a h2oAl correr con más tiempo, el computador de Rodo se satura (100% de CPU y unos 29 GB de memoria).
- 01:17:57Mati nos aconseja cuando matar un proceso que se tarda muchoMati dice que si un proceso supera una hora lo mata y busca una alternativa más eficiente, pues cada error le cuesta ese tiempo.
- 01:20:13Estamos pegadísimo en la transmisiónLa transmisión se ralentiza por la carga del PC; Rodo suele correr esto en una instancia de Amazon y sugiere limitar el uso de recursos de H2O.
- 01:21:46Nuevamente esta complicado sacar el predictVuelven a tener dificultades con el predict del modelo de H2O.
- 01:22:07Nos fuimos a la BConvierten la salida de H2O a un vector, guardan el archivo y lo suben; el resultado es peor.
- 01:25:31Gracias al publicoAgradecen a los asistentes, anuncian que la próxima sesión será en dos semanas con temas de machine learning, IA, ciberseguridad y automatización, e invitan al Discord.
- 01:26:31Rodo nos entrega las conclusionesConcluyen que Kaggle es una muy buena herramienta para aprender, que partieron de cero y que su intento de mejora retrocedió. Anuncian que luego harán streams más seguido y piden follows.