Primera competición de Machine Learning de Mediavida

gonya707

Bienvenidos a la primera competición de machine learning que organizamos en esta, nuestra comunidad. En esta primera entrega haremos uso del censo de ardillas de Central Park en NYC, pero una nube de neutrinos ha alterado nuestro disco duro y algunos colores del pelaje de las ardillas son una incógnita. Es posible predecir estos valores desconocidos a través de los datos completos con los que contamos?

Fecha limite de entrega es el viernes 6 de mayo

Link a la competición

NSFW

Link al hilo general de Machine Learning

https://www.mediavida.com/foro/dev/comunidad-machine-learning-deep-learning-685637

Reglas de la competición

  • La competición está hosteada en Kaggle puesto que tienen un sistema para organizar competiciones, yo he dado el csv con las respuestas correctas y cuando entregueis vuestras respuestas os dará vuestra nota. A partir de ahi podreis ver vuestra posición en el ranking con otros participantes y saber qué puntuación batir para intentar mejorar vuestra precisión en sucesivos intentos.

  • Podéis entregar las respuestas en formato csv obtenido de la manera que querais, tanto con python, como con R como si lo rellenais a mano, pero Kaggle tiene su propia plataforma para subir vuestro código y que podamos ver el procedimiento de cada uno. No es necesario enseñar el código de esta manera pero si recomendable, teniendo en cuenta que estamos aqui para aprender cosas. Para hacer vuestro código en Kaggle id a la pestaña de Code desde el link a la competición y empezar un New Notebook

  • Todo método de predicción es válido; Deep learning, decision trees, SVMs... Puedes probarlos todos tambien!

  • La información de los datasets es información pública que está disponible a falta de una búsqueda en google. He intentado camuflarlo un poco pero con un poco de ingeniería inversa es posible hacer trampas y sacar la solución 100% correcta. Las soluciones con precisión de 100% serán desechadas puesto que no importa lo bueno que sea tu modelo, nunca debería tener una precisión perfecta.

Evaluación de las respuestas

Las respuestas se evaluarán en fracción de la precisión categórica. I.e. predecir todas las respuestas correctas será puntuado con un 1.00000, todas las respuestas incorrectas con un 0.00000. La respuesta de ejemplo que asume que todas las ardillas tienen pelaje negro obtiene una precisión de 0.03703

Los valores válidos de pelaje son

Black

,

Gray 

y

Cinnamon

Se podran entregar hasta 5 respuestas por dia durante 2 semanas

Archivos

  • train.csv - el dataset de entrenamiento
  • test.csv - el dataset de test
  • sample_submission.csv - un ejemplo de una respuesta con el formato adecuado

Columnas

  • ID: Identificador único
  • X: Coordenada este-oeste
  • Y: Coordenada norte-sur
  • Hectare: Hectárea del parque
  • Shift: Turno del grupo de avistamiento
  • Date: Fecha
  • Hectare Squirrel Number: Número de ardilla avistada en la hectárea
  • Age: Adulta o cría
  • Location: Lugar
  • Above Ground Sighter Measurement: Pies de altura en caso de estar en un punto elevado
  • Specific Location: Localización específica
    Valores binarios de actividad:
  • Running:
  • Chasing:
  • Climbing:
  • Eating:
  • Foraging:
  • Other Activities:
  • Kuks
  • Quaas
  • Moans
  • Tail flags:
  • Tail twitches:
  • Approaches:
  • Indifferent:
  • Runs from:
  • Other Interactions:
  • Fur Color: Target de prediciión. Color principal del pelaje

Buena suerte!

13
Kike_Knoxvil

Joder, estoy tentado a intentarlo con MatLab en mis ratos libres

1 respuesta
B

Yo me voy a animar, podrías poner el deadline en grande al principio.

Me molaría hacerlo en otro lenguaje, pero los notebooks son de R o Python

1 respuesta
gonya707

#3 Se puede hacer como quieras, al final lo que hay que entregar es un csv generado. He añadido en grande cuando es la fecha limite

1 1 respuesta
hda

¿Cómo es esto de 5 respuestas por día para las próximas 2 semanas? ¿Puedo enviar más de una vez? ¿Es por ir mejorando los resultados?

Nunca me he metido en ninguna competición de Kaggle xDD

¿Vas a hacer una lista con los participantes en #1?

1 respuesta
B

.

1 respuesta
gonya707

#5 Si, cada 24 horas puedes enviar hasta 5 csvs distintos con un set distinto de respuestas. Se te dara la puntuación después de cada submit. Igual quieres darle otro enfoque o simplemente la has liado y has entregado el csv erroneo xD Cosas que pasan

#6 Si, una vez terminado tenia pensado poner un ranking con las competiciones que vayamos haciendo, y podria mantener un google sheets o algo donde compartir los codigos una vez se cierre el plazo. No se, son ideas al aire

2 1 respuesta
Apo_powa

#1 Vamos allá, entiendo en #7 que la puntuación más alta es la que se queda y que esto está por si, toqueteas otro día con un enfoque distinto y tienes mas accuracy, nop?

1 respuesta
Kaledros

Vengo a decir que no participo porque ni idea de ML, pero estas cosas me encantan y me alegro mucho de ver iniciativas como esta. ¡Ánimo a todos!

15
gonya707

#8 Eso es. Y si envias uno que saque una puntuación menor se conserva la más alta

Phil_Rich

Si le dais un CT al ganador me apunto.

Y si no tambien.

gonya707

Por cierto, para los que vayais a hacer código desde Kaggle, para hacer la entrega de csv desde el propio código seguid este mini tutorial https://www.kaggle.com/general/166755

gonya707

Bueno, yo ya hice una submission pero parece ser que como mi team fue creado antes de que se hiciese publica la competicion (lo cual es ineludible puesto que la he creado yo) no puedo participar en el leaderboard publico

Como referencia mi score es 0.78451 con un MLP de 3 capas. Aqui esta mi codigo, buena suerte al resto!

https://www.kaggle.com/code/gonzalorecioc/multilayer-perceptron

1
desu

que % de test data es publico y cual privado?

1 respuesta
gonya707

#14 ahora mismo es todo publico, sé que se puede alterar en medio de la competición pero no sé para qué serviría, mas allá de para evitar trampas, pero como aqui_todos_somos_amigos.avi confío en que no haga falta

telemaco103

#2 Yo me lo he planteado ya que tengo algunos clasificadores programados a mano para una asignatura del Máster.

#1 Muy buena iniciativa, me está tentando apuntarme, a ver si encuentro algún hueco del curro.

JonaN

Muy buena iniciativa, me apunto aunque no sé si le dedicaré mucho tiempo. Depende de cuánto me pique xd.

Frave

Mola la iniciativa, mi especialidad es mas en imagen pero si saco tiempo le doy un try.

1
gonya707

Mejoré score a 81.6% accuracy :cowboy:

1 respuesta
Phil_Rich

#19 83.3 accuracy por aqui.

El modelo empleado es un stacking de varios classifiers y un algoritmo state of the art bastante complejo, aqui lo explico en detalle:

spoiler
3 2 respuestas
gonya707

#20 Si, yo tambien he llegado a esa solución :rofl: ahora sabiendo que ese es el número a batir tengo un par de ideas de como saber cuales no son grises, pero me he quedado sin submissions hoy, mañana será otro dia

1 1 respuesta
Frave

No jodais que el conjunto de test está tan desbalanceado xD

1 respuesta
desu

#20 #21 habeis mirado las correlaciones y aplicado feature reduction?

si varias features representan la misma informacion es mejor simplificar.

#22 genera datos sinteticos, oversampling en este caso

2 respuestas
Frave

#23 eso serviría para solucionar el desbalanceo en el train set, pero el problema esta en el test del cual no tenemos ground truth, pero por lo que han comentado se sabe de esto porque subes un resultado con todo como clase gris y te da un +80% de acc, o eso he entendido yo al menos. Tener un test desconocido con ese desbalanceo jode completamente la gracia del challenge en mi opinión.

2 respuestas
gonya707

#24 Nah, es algo relativamente habitual al menos en competiciones de Kaggle. Simplemente la baseline a batir es sacr mejor nota que 83% acc. En la competicion de supervivientes del Titanic por ejemplo si asumes que todos los de test murieron tambien sacas un 79%, o que todos los hombres murieron y mujeres sobrevivieron tambien alta puntuacion

Para la siguiente que piense tenia pensado usar imagenes como dataset, pero me apunto tambien que haya mas o menos equidad de categorias (si es que es de clasificacion)

1 respuesta
Frave

#25 ya si pero una cosa no quita la otra, es una cosa que no me gusta simplemente.

desu

#24 no es un problema lo que dices... haz un modelo para las otras dos clases. y mira que accuracy tienes ahi.

en el mundo real lo normal es tener sets muy desbalanceados, incluso mas.

si estas tan desbalanceado xq no usas un algoritmo de deteccion de anomalias?

imagina que eres data scientist y tienes que hacer un modelo para una cadena de montage y detectar fallada de maquinas. no puedes decir que nunca va a fallar porque te da un 99% de accuracy. te interesa encontrar la anomalia aunque sea sumando falsos positivos.

segun el enunciado las ardillas negras son un 4%. detectar esas es un buen reto de ML.

2 respuestas
NocAB

Si los datos están muy desbalanceados (no he tenido tiempo de mirarlo) tened cuidado con las métricas que usáis, no os quedéis sólo con accuracy.

#27 hombre, entiendo que siempre hay que tratar de que los datos de entrenamiento sean representativos de los de test (o de la realidad).

1 respuesta
Frave

#27 pero una cosa el conjunto de train esta desbalanceado en la misma proporción que el de test o no? porque mi queja es esa, si tanto train como test tienen el mismo desbalanceo, pues ok.

1 1 respuesta
gonya707

#29 Claro, el test fue spliteado de rows al azar del dataset completo, asi que la proporcion en rasgos generales es la misma

1 respuesta