Hola
Muchos de los lectores ya saben que tratamos de realizar constantemente campeonatos de TI en una variedad de temas. Solo el año pasado, se llevaron a cabo más de 10 competiciones importantes diferentes (
Russian AI Cup ,
ML Boot Camp ,
Technocub y otros). Al menos 25,000 personas participaron en ellos, y desde 2011, más de 150,000.
Si acaba de enterarse de esto ahora, felicidades: desde ese momento se convirtió en parte de una gran comunidad de personas que participan en nuestras competiciones y comparten experiencias entre ellos. Ya puede unirse a los grupos de la comunidad de Telegram en
inteligencia artificial ,
programación deportiva ,
proyectos y administración de alta carga ,
aprendizaje automático y análisis de datos . ¡Esto te ayudará a involucrarte rápidamente en una fiesta seria!

Entonces, vamos al grano. Hoy, 7 de febrero, nos complace abrir la nueva temporada de los campeonatos de 2019. Y comenzaremos con la octava competencia de aprendizaje automático y análisis de datos realizada en la plataforma especializada
ML Boot Camp (nuestro análogo de Kaggle):
SNA Hackathon o ML Boot Camp 8 (como prefiera).
Los organizadores de este campeonato son Mail.ru Group y Odnoklassniki. Después de este artículo, le recomendamos que lea una
breve historia del feed inteligente , en el que
Dmitry Bugaychenko habla sobre los algoritmos para clasificar el feed en Odnoklassniki, hay mucha información útil.
Y ahora contaremos la mecánica del campeonato, su calendario, tareas y datos propuestos.
Mecánica del campeonato
Todo es simple Después de la apertura del campeonato en
ML Boot Camp , debes:
- lea las condiciones de las tareas (ya están en este artículo);
- elige una tarea o tareas que vas a resolver;
- descargar datos;
- comenzar a construir modelos y hacer predicciones;
- cargue sus respuestas (archivo normal) al sistema de prueba.
Todos los días puede cargar sus archivos de respuesta hasta cinco veces. El sistema solo verificará las respuestas para el 50% de la muestra (pública), por lo que los resultados serán preliminares. Los resultados finales sobre el resto de la muestra (privado) se mostrarán a los participantes una vez que la competencia ya haya finalizado.
Si nunca has participado en tales competiciones, entonces no hay nada de qué preocuparse. Lea el
artículo y tendrá éxito :)
Horario
El campeonato se realizará en dos etapas:
- en línea: del 7 de febrero al 15 de marzo;
- fuera de línea: del 30 de marzo al 1 de abril.
Después del 15 de marzo, se resumirán los resultados intermedios y 15 personas de los principales líderes para cada una de las tareas recibirán invitaciones a la segunda etapa, que se realizará en la oficina de Moscú del Grupo Mail.ru. Además, la invitación a la etapa final recibirá a tres personas que lideran el ranking a fines del 23 de febrero.
Descripción de la tarea
Para la competencia SNA Hackathon, se recopilaron registros para mostrar contenido de grupos abiertos en las noticias de los usuarios para febrero-marzo de 2018. El conjunto de pruebas se ha ocultado la última semana y media de marzo. Cada entrada de registro contiene información sobre qué y a quién se le mostró, así como también cómo reaccionó el usuario a este contenido: poner "Clase", comentado, ignorado u oculto del feed.
La esencia del problema es clasificar a los candidatos para cada usuario del conjunto de pruebas, aumentando la mayor cantidad posible de aquellos que recibirán la "clase".
Usualmente asignamos una tarea, pero esta vez decidimos dar tres a la vez. No necesita resolverlos todos, solo uno es suficiente. Dado que el feed del usuario combina diferentes tipos de contenido, cuando se clasifica, se requieren habilidades de diferentes áreas: visión por computadora, trabajo con textos y sistemas de recomendación.
Como parte de la fase en línea, ofrecemos tres conjuntos de datos, cada uno de los cuales presenta solo un tipo de información: imagen, texto o datos sobre una variedad de atributos de colaboración.
Solo en la segunda etapa, cuando se unen expertos en diferentes campos, se revelará el conjunto de datos general, lo que le permitirá encontrar puntos para la sinergia de diferentes métodos.
Después de que se abra el campeonato en la plataforma, verá una descripción de las tareas y tendrá la oportunidad de descargar los datos necesarios para participar.
Descripción de datos
La información se presenta en el formato
Apache Parquet , que es el principal para el marco de Spark. Para trabajar con este formato desde Python, recomendamos usar la biblioteca
Apache Arrow . Para facilitar la comprensión, se han publicado líneas de base en el repositorio de
GitHub . Úsalo!
En el conjunto de entrenamiento, los datos se presentan por día, y dentro del día se dividen en 6 partes por ID de usuario (el mismo usuario siempre cae en la misma parte). Este diseño permite a los participantes analizar no todos los datos a la vez, sino limitarse a ciertos días y / o subgrupos de usuarios.
Los conjuntos de entrenamiento se dividen en tres grupos disjuntos: con textos, con imágenes y con características de colaboración. En cada grupo, los datos contienen los siguientes campos:
instanceId_userId
: identificador de usuario (anónimo);instanceId_objectType
- tipo de objeto;instanceId_objectId
: identificador de objeto (anónimo);feedback
: una matriz con tipos de reacciones del usuario (la presencia de un token de Me gusta en la matriz indica que el objeto recibió una "clase" del usuario);audit_clientType
: el tipo de plataforma en la que el usuario ha iniciado sesión;audit_timestamp
: hora en que se construyó la cinta;metadata_ownerId
: autor del objeto visualizado (anónimo);metadata_createdAt
: fecha de creación del objeto visualizado.
Los objetos relacionados en el formato Apache Parquet se proporcionan adicionalmente para objetos del conjunto de texto de entrenamiento:
objectId
- identificador de objeto;lang
- idioma de texto (basado en el detector de idiomas Odnoklassniki);text
: text
sin formato asociado con el objeto;preprocessed
: una serie de tokens obtenidos después de filtrar la puntuación y la derivación.
Los datos para la clasificación por imágenes también contienen un
ImageId
matriz
ImageId
con hash MD5 asociados con objetos de imagen. Los cuerpos de las imágenes están organizados en archivos tar separados, dependiendo de la primera letra del hash.
En el bloque con características de colaboración, se presenta una variedad de información adicional:
audit_*
- información extendida sobre el contexto de construcción de la cinta;metadata_*
- información extendida sobre el objeto mismo;userOwnerCounters_*
: información sobre interacciones anteriores entre el usuario y el autor del contenido;ownerUserCounters_*
: información sobre interacciones anteriores entre el autor del contenido y el usuario;membership_*
: información sobre la membresía del usuario en el grupo donde se publica el contenido;user_*
: información detallada sobre el usuario;auditweights_*
: una gran cantidad de atributos de tiempo de ejecución recuperados por el sistema actual.
Las estructuras de los conjuntos de prueba son equivalentes a la estructura de los conjuntos de entrenamiento, pero no se presentan por día y no contienen campos de
feedback
.
Puntuación
Los participantes del campeonato deben clasificar la cinta para que los objetos con una alta probabilidad de "clase" estén en la parte superior. La clasificación se realiza individualmente para cada usuario, después de lo cual se forma el texto de envío del siguiente formulario (el formato corresponde a la exportación desde el marco de datos Pandas con columnas del tipo
int
e
int[]
):
User_id_1,"[object_id_1_1, object_id_1_2]" User_id_2,"[object_id_2_1, object_id_2_2, object_id_2_3]"
El envío debe contener una línea para cada usuario del conjunto de pruebas, y las líneas se ordenan por ID ascendente. Los objetos para cada usuario deben clasificarse en orden descendente de relevancia.
Al evaluar el envío de cada usuario, se calculará su ROC-AUC personal, después de lo cual se calculará el promedio de todos los usuarios y se multiplicará por 100.
Regalos
La segunda etapa se llevará a cabo en un formato de equipo, y los ganadores recibirán valiosos regalos, paquetes de pegatinas y otros premios:
- 300,000 rublos para el equipo que ganó el primer lugar;
- 200 000 rublos para el equipo del segundo lugar;
- 100.000 rublos para el equipo que ocupó el tercer lugar;
- Según el jurado, 100.000 rublos para el equipo que propuso la solución con las mejores perspectivas para la implementación en funcionamiento.
Además, los ganadores de la etapa en línea (los mejores 33 de los líderes para cada tarea) recibirán camisetas geniales.
Bonus! El mejor y más activo participante en la fase en línea obtendrá la PlayStation / XBox para elegir. Los criterios son simples: hay muchos gráficos en el caso del chat, estafas interesantes hacia arriba / abajo y algo más. El ganador será elegido por votación popular.
Registro y comunidad
No es necesario registrarse especialmente para participar en la competencia. Es suficiente estar registrado en la
plataforma una vez y todas las competiciones y cajas de arena de campeonatos pasados estarán disponibles de inmediato para usted.
No pierdas tu tiempo. La comunidad está esperando nuevos héroes.
Bienvenido !