Oi
Muitos dos leitores já sabem que tentamos conduzir constantemente vários campeonatos de TI em diversos tópicos. Somente no ano passado, foram realizadas mais de 10 grandes competições diferentes (
Copa da AI da Rússia ,
ML Boot Camp ,
Technocub e outras). Pelo menos 25.000 pessoas participaram, e desde 2011 - mais de 150.000.
Se você acabou de descobrir isso agora, parabéns: a partir desse momento, você se tornou parte de uma grande comunidade de pessoas participando de nossas competições e compartilhando experiências entre si. Agora você já pode participar dos grupos comunitários do Telegram em
inteligência artificial ,
programação esportiva ,
projetos e administração de alta carga ,
aprendizado de máquina e análise de dados . Isso irá ajudá-lo a se envolver rapidamente em uma festa séria!

Então, vamos ao que interessa. Hoje, 7 de fevereiro, temos o prazer de abrir a nova temporada do campeonato de 2019. E começaremos com a oitava competição de aprendizado de máquina e análise de dados realizada na plataforma especializada
ML Boot Camp (nosso análogo Kaggle) -
SNA Hackathon , ou ML Boot Camp 8 (como você preferir).
Os organizadores deste campeonato são o Mail.ru Group e o Odnoklassniki. Após este artigo, é recomendável ler um
breve histórico da fita inteligente , na qual
Dmitry Bugaychenko fala sobre os algoritmos para classificar a faixa de opções em Odnoklassniki, há muitas informações úteis.
E agora contaremos a mecânica do campeonato, seu cronograma, tarefas e dados propostos.
Campeonato Mecânica
Tudo é simples. Após a abertura do campeonato no
ML Boot Camp , você precisa:
- leia as condições das tarefas (elas já estão neste artigo);
- escolha uma tarefa ou tarefas que você irá resolver;
- baixar dados;
- começar a construir modelos e fazer previsões;
- faça o upload de suas respostas (arquivo regular) para o sistema de teste.
Todos os dias você pode enviar seus arquivos de resposta até cinco vezes. O sistema verificará apenas respostas para 50% da amostra (pública), portanto os resultados serão preliminares. Os resultados finais no restante da amostra (privada) serão mostrados aos participantes após o término da competição.
Se você nunca participou de tais competições, não há com que se preocupar. Leia o
artigo e você terá sucesso :)
Horário
O campeonato será realizado em duas etapas:
- online - de 7 de fevereiro a 15 de março;
- offline - de 30 de março a 1º de abril.
Após 15 de março, os resultados intermediários serão resumidos e 15 pessoas dos principais líderes de cada uma das tarefas receberão convites para a segunda etapa, que será realizada no escritório do grupo Mail.ru em Moscou. Além disso, o convite para a etapa final receberá três pessoas que lideram o ranking no final de 23 de fevereiro.
Descrição da tarefa
Para a competição SNA Hackathon, foram coletados logs para mostrar o conteúdo de grupos abertos nos feeds de usuários de fevereiro a março de 2018. O conjunto de testes ocultou a última semana e meia de março. Cada entrada de log contém informações sobre o que e para quem foi exibida, bem como como o usuário reagiu a esse conteúdo: coloque “Classe”, comentou, ignorou ou ocultou o feed.
A essência do problema é classificar os candidatos para cada usuário do conjunto de testes, elevando o maior número possível aqueles que receberão a "classe".
Normalmente, demos uma tarefa, mas desta vez decidimos dar três de uma vez. Você não precisa resolver todos, apenas um é o suficiente. Como o feed do usuário combina diferentes tipos de conteúdo, quando é classificado, são necessárias habilidades de diferentes áreas - visão computacional, trabalho com textos e sistemas de recomendação.
Como parte da fase on-line, oferecemos três conjuntos de dados, cada um dos quais apresenta apenas um tipo de informação: imagem, texto ou dados sobre diversos atributos colaborativos.
Somente no segundo estágio, quando especialistas em diferentes áreas se reúnem, o conjunto de dados geral será revelado, permitindo encontrar pontos para a sinergia de diferentes métodos.
Após a abertura do campeonato na plataforma, você verá uma descrição das tarefas e terá a oportunidade de baixar os dados necessários para a participação.
Descrição dos dados
As informações são apresentadas no formato
Apache Parquet , que é o principal para a estrutura Spark. Para trabalhar com esse formato no Python, recomendamos o uso da biblioteca
Apache Arrow . Para facilitar o entendimento, as linhas de base foram postadas no repositório do
GitHub . Use-o!
No conjunto de treinamento, os dados são dispostos por dia e, durante o dia, são divididos em 6 partes pelo ID do usuário (o mesmo usuário sempre cai na mesma parte). Esse layout permite que os participantes analisem não todos os dados de uma só vez, mas se limitem a determinados dias e / ou subgrupos de usuários.
Os conjuntos de treinamento são divididos em três grupos separados: com textos, imagens e recursos colaborativos. Em cada grupo, os dados contêm os seguintes campos:
instanceId_userId
- identificador de usuário (anonimizado);instanceId_objectType
- tipo de objeto;instanceId_objectId
- identificador de objeto (anonimizado);feedback
- uma matriz com tipos de reações do usuário (a presença de um token Liked na matriz indica que o objeto recebeu uma "classe" do usuário);audit_clientType
- o tipo de plataforma na qual o usuário audit_clientType
login;audit_timestamp
- horário em que a fita estava sendo construída;metadata_ownerId
- autor do objeto exibido (anonimizado);metadata_createdAt
- data de criação do objeto exibido.
Objetos relacionados no formato Apache Parquet são fornecidos adicionalmente para objetos do conjunto de texto de treinamento:
objectId
- identificador de objeto;lang
idioma lang
(baseado no detector de idioma Odnoklassniki);text
- text
bruto associado ao objeto;preprocessed
- preprocessed
- uma matriz de tokens obtida após a filtragem de pontuação e derivação.
Os dados para classificação por imagens também contêm um
ImageId
matriz
ImageId
com hashes MD5 associados a objetos de imagem. Os corpos das imagens são organizados em arquivos tar separados, dependendo da primeira letra do hash.
No bloco com características colaborativas, uma variedade de informações adicionais é apresentada:
audit_*
- informações estendidas sobre o contexto de construção da fita;metadata_*
- informações estendidas sobre o próprio objeto;userOwnerCounters_*
- informações sobre interações anteriores entre o usuário e o autor do conteúdo;ownerUserCounters_*
- informações sobre interações anteriores entre o autor do conteúdo e o usuário;membership_*
- informações sobre a participação do usuário no grupo em que o conteúdo é publicado;user_*
- informações detalhadas sobre o usuário;auditweights_*
- um grande número de atributos de tempo de execução recuperados pelo sistema atual.
As estruturas dos conjuntos de testes são equivalentes à estrutura dos conjuntos de treinamento, mas não são definidas por dia e não contêm campos de
feedback
.
Pontuação
Os participantes do campeonato devem classificar a fita para que os objetos com alta probabilidade de "classe" estejam no topo. A classificação é realizada individualmente para cada usuário, após o qual o texto do envio do formulário a seguir é formado (o formato corresponde à exportação do quadro de dados do Pandas com colunas do 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]"
O envio deve conter uma linha para cada usuário do conjunto de testes e as linhas são classificadas por ID crescente. Os objetos para cada usuário devem ser classificados em ordem decrescente de relevância.
Ao avaliar o envio para cada usuário, seu ROC-AUC pessoal será calculado, após o qual a média de todos os usuários será calculada e multiplicada por 100.
Presentes
A segunda etapa será realizada em formato de equipe, e os vencedores receberão presentes valiosos, pacotes de adesivos e outros prêmios:
- 300.000 rublos para o time que conquistou o primeiro lugar;
- 200.000 rublos para a equipe do segundo lugar;
- 100.000 rublos para a equipe que ficou em terceiro lugar;
- 100.000 rublos para a equipe que propôs a solução com as melhores perspectivas de implementação em operação, segundo o júri.
Além disso, os vencedores da etapa on-line (33 melhores dos líderes de cada tarefa) receberão camisetas legais.
Bônus! O melhor e mais participante ativo da fase online fará com que o PlayStation / XBox escolha. Os critérios são simples - existem muitos gráficos no caso de bate-papo, golpes interessantes para cima / baixo e outras coisas. O vencedor será eleito por voto popular.
Registro e comunidade
Não é necessário se registrar especialmente para participar da competição. Basta se registrar na
plataforma uma vez e todas as competições e caixas de areia dos campeonatos anteriores estarão imediatamente disponíveis para você.
Não perca seu tempo. A comunidade está esperando por novos heróis.
Bem vindo !