Kaggle es el Site más prestigioso de competiciones de Data Science. Tener un buen perfil en Kaggle puede abrir muchas puertas y es uno de los mejores sitios donde puedes mostrar tus habilidades solucionando problemas.
Los Kagglers van consiguiendo medallas dependiendo de sus resultados en las competiciones y a base de medallas puedes ir avanzando de rango dentro de Kaggle. Pero no todo son competiciones en Kaggle. Hay mucho más, dentro de Kaggle encontramos cuatro categorías en las que se puede ir avanzando.
- Competiciones. Se escala a base de obtener medallas en las competiciones oficiales de Kaggle. No todas las competiciones dan puntos y medallas para este ranking. Kaggle ya avisa de qué competiciones son las oficiales.
- Datasets. Los Data Scientist puede publicar sus DataSets, creados por ellos, y los usuarios los votan. A más votos, más medallas, o de más calidad, y más se va escalando en el ranking.
- Notebooks. Posiblemente, la categoría más prestigiosa después de la de competiciones.N o todos los notebooks subidos tienen que corresponder a una competición en activo de Kaggle. Cualquier notebook puede obtener votos por parte de la comunidad. Como en el caso de los DataSets, a más votos obtenidos de más calidad las medallas y más se sube en el ranking.
- Discussion. Claramente de todas las categorías es la menos prestigiosa. Se obtienen votos por los comentarios realizados en la plataforma de Kaggle.
En cada una de estas categorías se puede optar a 5 rangos. Novice, Contributor, Expert, Master y Grand Master.
Los dos rangos iniciales son muy sencillos de obtener, digamos que rellenando el perfil, interactuando un mínimo con la comunidad, y presentando un trabajo ya llegas a la categoría de Contributor. Pero obtener el rango de Experto requiere de un esfuerzo, es el primer rango que necesita ser obtenido ganando medallas.
En cada una de las categorías es diferente. En este artículo trataré como obtener el rango de Experto en la categoría de Notebooks, posiblemente la más prestigiosa después de la de competiciones.
¿Qué se necesita para obtener el Rango de experto en Kaggle en la categoría de Notebooks?
¡Muy sencillo! Necesitamos obtener, como mínimo, cinco medallas de bronce. Para que nos den una medalla debemos obtener cinco votos de Kagglers con una categoría superior a Novice. La verdad es que parece sencillo, pero debemos tener en cuenta que tan solo 1 de cada 20 notebooks en Kaggle reciben más de 2 votos. Lo que nosotros vamos a intentar es recibir más de 5 votos de Kagglers en el 100 % de nuestros notebooks.
En la imagen podemos ver los requisitos necesarios para cada una de las categorías. Como se puede ver yo tan solo tengo el check en la categoría de Notebooks. Por lo que tan solo puedo ser considerado experto en esa categoría.
Data Scientist con más experiencia, o que se dediquen más a Kaggle, puede obtener el grado de experto en más categorías. Con lo que normalmente se suelen describir como Kaggle Expert * n. Siendo n el número de categorías en el que es considerado como experto.
No hay que decir que la categoría más prestigiosa es la de Competitions, después vendrían Notebooks y Datasets, yo creo que un poco más Notebooks, y finalmente Discussions.
Mis primeros cinco Notebooks.
Este fue mi primer notebook, actualmente tiene una medalla de plata. Se obtiene al conseguir más de 20 votos de Kagglers con un rango superior a Novice.
Con él participé en una de las competiciones básicas de Kaggle. Son competiciones que están siempre corriendo y que se usan continuamente, ya sea para aprender a cómo funciona la plataforma, probar nuevas técnicas o simplemente ir mejorando.
Mi intención era obtener la máxima puntuación posible con un Modelo creado por mí. En el Notebook hay algunas técnicas que no son demasiado conocidas. Por ejemplo, en lugar de utilizar capas Dropout empleé SpatialDropout. También me estrujé un poco con las funciones de Callback e intenté rascar la mejor puntuación posible. Lo más importante es que en el Notebook está explicado el porqué de cada una de las técnicas empleadas.
El segundo Notebook, que ahora también tiene una medalla de plata. Al igual que el anterior, también formaba parte de una de las competiciones básicas de Kaggle. El enfoque en este fue totalmente diferente. Me centré 100 % en la transformación de datos, y en ir explicando paso por paso el porqué de cada una de las modificaciones.
El modelo empleado fue uno de regressión de la librería SciKit. No perdí el tiempo con él. Yo diría que el 98 % del trabajo se lo llevo el tratamiento de datos y la generación de gráficos para entender los datos y sus transformaciones.
Intenté que algunas de las funciones fueran configurables con variables. Para que otros Kagglers pudieran jugar con el Notebook y probar como funcionaba al alterar estos valores.
Este notebook no formaba parte de ninguna competición. Pero usé uno de los Datasets más conocidos de Kaggle. El de detección de fraude en tarjetas.
Fue tan solo un experimento utilizando la librería SciKit Learn, en el que intentaba crear una función que fuera capaz de modificar ella solo los datos y aplicar el algoritmo para obtener un buen rendimiento, sin que hiciera falta la participación del Data Scientist.
La verdad es que lo he dejado a medias, pero siempre tengo la intención de recuperarlo y de ir mejorando la función que modifica los datos. El notebook tuvo mucho mejor acogida de lo que yo esperaba.
Este notebook también formaba parte de una de las competiciones básicas. Es un notebook que realmente me sorprendió que tuviera tantos votos, ahora mismo tiene una medalla de plata. En él no intente conseguir una buena puntuación, sino que genere un Modelo simple de regresión logística a mano. Fue concebido como un manual sencillo para aprender a crear modelos simples de forma manual.
Participando en la misma competición que el Notebook anterior, y obteniendo mucha mejor puntuación, el Notebook obtuvo muchos menos votos. La verdad es que me sorprendió, pero después, dando una vuelta por los otros notebooks de la competición, se podría decir que este aportaba muy poco. Era uno más de los notebooks que usaban Transfer Leaning para solucionar la competición.
Es verdad que el modelo empleado no era uno de los más utilizados, y que intenté que fuera una aproximación muy sencilla al Tranfer Learning. Pero… no acabo de cuajar. Aun así, por suerte, obtuvo su medalla de bronce, y con ello pasé al nivel de Experto en Kaggle en la categoría de Notebooks. Con mis primeros cinco notebooks.
Los tres consejos a seguir.
Ahora tengo algunos notebooks más, tan solo uno de ellos se ha quedado, sin medalla. Con el tiempo he sacado algunas conclusiones acerca de que deben tener los Notebooks para obtener una medalla, u obtener el máximo número de votos.
Consejo 1: Cuidar la presentación.
¿De verdad este es el primer consejo? ¡Pues si! Hay muchos notebooks en Kaggle, que alguien entre en el tuyo y decida darle más de 5 segundos de su tiempo puede depender de una cosa tan tonta como de la presentación. Yo mismo, si entro y me encuentro con la frase que por defecto pone Kaggle al inicio de cada notebook, suelo salir si mirar mucho más.
Mi presentación no es fantástica, yo soy informático, y como sabéis no tenemos capacidad de combinar colores ni formas. Pero he intentado utilizar un resaltado para los títulos y un tipo de letra diferente.
Para ello he usado una celda, que oculto en el Notebook, con código HTML que modifica la presentación.
from IPython.core.display import HTML HTML(""" <style> .output_png { display: table-cell; text-align: center; vertical-align: middle; horizontal-align: middle; } h1 { text-align: center; background-color: Blue; padding: 20px; margin: 2; font-family: monospace; color:DimGray; border-radius: 20px } h2 { text-align: center; background-color: Red; padding: 20px; margin: 0; font-family: monospace; color:DimGray; border-radius: 20px } h3 { text-align: center; background-color: Green; padding: 15px; margin: 0; font-family: monospace; color:DimGray; border-radius: 15px } body, p { font-family: monospace; font-size: 15px; color: charcoal; } div { font-size: 14px; margin: 0; } h4 { padding: 0px; margin: 0; font-family: monospace; color: purple; } </style> """)
Os dejo el código, pero os aviso que he cambiado algunas cosas, no vaya a ser que empiecen a aparecer Notebooks con un look exacto a los míos.
Consejo 2. Aporta algo diferente.
Los notebooks que me han funcionado mejor son aquellos en los que no tan solo he intentado hacer alguna cosa diferente, sino que he explicado el porqué. Supongo que si alguien aprende algo en tu notebook tiene una propensión mayor a votarlo, por simple agradecimiento.
En el notebook de Mnist, enseñé un montón de funciones callback y la capa de SpatialDropout. No es un conocimiento realmente avanzado, pero sí que mucha gente que está empezando con TensorFlow pueden desconocer.
En el de House Prices expliqué cada una de las técnicas de transformación de los datos, y la verdad es que eran multitud. Estoy convencido de que es uno de los notebooks con más explicaciones al respecto.
Quizás el mejor ejemplo sea el Notebook que analiza el sentimiento de los Tweets creando un modelo de regresión logística. No es un notebook brillante, ni mucho menos. No obtiene una gran rendimiento. Pero es casi único. Enseña una forma de afrontar el problema que no es la usual, y enseña como crear un modelo desde 0.
El notebook que peor me funciono fue el de Transfer Learning, y realmente, visto desde la distancia, era el notebook más normal. Se pueden encontrar muchos notebooks usando la misma técnica.
Consejo 3. Finaliza el Notebook con conclusiones.
En cada Notebook incorporo una parte de conclusiones al final. Intento cerrar el notebook con un resumen de lo obtenido y de lo visto.
No tan solo eso, en la mayoría de ellos animo a la gente a realizar un Fork y les doy ideas de como se puede mejorar el notebook para que puedan probarlo. Lo mismo para las menciones, o inspiraciones, siempre intento dejar claro que otros notebooks o artículos he consultado para la creación del Notebook.
¿Esto es todo?
Para mi son los tres principales consejos que puedo dar. Hay gente que se dedica a ir pidiendo votos por los comentarios, y estoy seguro de que tienen su éxito con esa estrategia. Pero creo que no vale la pena.
Es mucho mejor poner un poco de cuidado en nuestros Notebooks, que el contenido sea interesante y que esté bien explicado. Un notebook con tan solo código brillante, pero sin ninguna explicación, puede funcionar muy bien en una competición, pero lo tendrá más difícil en la categoría de Notebooks, donde se depende de los votos de los otros Kagglers.
Quizás un último consejo puede ser intentar ligar el notebook a alguna de las competiciones, suelen tener más visibilidad. Ya que aparecen en el listado de Notebooks de la competición y la gente suele consultarlos para ver cómo se soluciona el problema.
¡El último consejo es que disfrutéis de Kaggle! ¡No os obsesionéis con las medallas, usad Kaggle para aprender, y espero que nos veamos por allí! ¡No dudéis en contactar conmigo por Kaggle, que estaré encantado de visitar vuestros Notebooks!