VKCup 2020 Etapa I. Um longo caminho



Hoje consideraremos a competição VkCup 2020 e a tarefa da primeira fase de qualificação. Os caras da Singer prometeram que em todas as etapas será difícil, mas interessante. E o que, de fato, ainda é necessário?

Como você sabe, o desejo de excelência, afiando as próprias habilidades a uma nitidez semelhante ao aço de Damasco, é inerente a todos os especialistas em qualquer campo. Exemplos dessa massa. Das pinturas coloridas dos artistas, cada uma delas passou uma parte da vida (eu diria a melhor parte), que poderia ser desperdiçada sem rumo em eventos sociais. Antes dos programas keygen - ativadores de software, cada um contendo música de 8 bits, um algoritmo de ativação e animação, embalados com cuidado e cuidado em um arquivo, medindo apenas algumas dezenas de kilobytes. Arte, o que se pode dizer.

E não, este não é outro artigo sobre autodesenvolvimento, honestamente, honestamente. Eu, de fato, o que. Em cada um de nós existe um desejo de resolver problemas não triviais em nosso campo. Além disso, o desejo de fazer isso é melhor do que a maioria. É naturalmente. E, para mim, competições de Machine Learning, esta é uma grande oportunidade para isso. Às vezes é necessário dar liberdade ao espírito de competição.

Vamos considerar o VKCup 2020, o campeonato de análise de dados da VKontakte, ou seja, suas três etapas, com a final em São Petersburgo. Vamos começar com o primeiro qualificador. Bem, há tempo, e Petersburgo, embora seja uma capital cultural, não gosta de atraso e manchas. Portanto, nos dignamos a lidar com os assuntos o mais rápido possível, senhor, o cavalheiro que não se espera que o cocheiro seja localizado e, portanto, um longo caminho.



Eu acho que muitos já encontraram tarefas de PNL. Nesse caso, a tarefa da primeira etapa de qualificação, que se propôs a selecionar 256 pessoas que passaram pela segunda, foi uma análise dos problemas do jogo Clover, ou seja, prever quais das perguntas foram propostas por editores profissionais e quais eram por usuários comuns.

O tamanho dos dados é de cerca de 40.000 linhas, das quais 10.000 são um conjunto de dados de teste pelo qual a qualidade do modelo será estimada e os outros 30.000 são o conjunto de dados restante. A métrica de teste é AUC ROC - a área abaixo da curva de erro.

Os dados foram os seguintes,



onde ID é o identificador da pergunta, Answer é uma variável binária cujo valor deve ser previsto (1 - a pergunta foi proposta pelo editor, zero 0 - pelo usuário). Pergunta - a própria pergunta.

Parece que a tarefa é bastante simples, mas tudo está longe de ser o caso. Abordagens padrão, como Word2Vec, BERT e outros modelos de PNL com novos ventiladores, oferecem uma qualidade relativamente baixa, cerca de 0,7, o que nem chegaria aos cem primeiros. Portanto, lembrando que o diabo, como o pessoal da LEGO, vive nos detalhes, considera o conjunto de dados com mais detalhes e desenvolve uma solução que será relativamente mais eficiente.

Para começar, durante a EDA inicial, você pode perceber que os usuários costumam usar caracteres atípicos, escrever palavras em maiúsculas, às vezes não com uma letra maiúscula no início de uma frase, esquecer pontos de interrogação, usar aspas estranhas. Eles também copiam as perguntas dos editores, passando-as por conta própria. E outras características interessantes.

Vamos começar com a linha de base. Usando a medida TF-IDF (Term Frequency - Invertted Document Frequency), obtemos a esparsematrix, que então alimentamos no aumento do gradiente.
Apenas uma definição, TF-IDF é uma medida estatística usada para avaliar a importância de uma palavra no contexto de um documento que faz parte de uma coleção de documentos ou corpus. O peso de uma palavra é proporcional à frequência de uso da palavra no documento e inversamente proporcional à frequência de uso da palavra em todos os documentos da coleção.

Para reduzir a reciclagem do modelo, reduziremos o número máximo de tokens e comporemos a matriz de parâmetros inicial, que consistirá em uma combinação de dois menores: uma parte é a matriz TF-IDF, onde sequências de símbolos separadas por espaços atuam como tokens; na verdade, são palavras e a outra a peça é uma matriz onde sequências de símbolos de um determinado comprimento atuam como símbolos.



Parece muito bom, no entanto, pode e deve ser melhor. Esta é a primeira parte do pipeline. Nesse caso, "P" é uma abreviação de "Público", este é um indicador que mostra quanto o modelo obteve na parte aberta da amostra de teste. E "F" é uma abreviação de "Final", resultado da parte oculta dos dados publicados após o final da competição.

Em seguida, adicionaremos alguns dados ao conjunto de dados, o que geralmente não é proibido pelas regras. E o que não é proibido é, portanto, permitido. Na Internet, você pode encontrar vários conjuntos de dados com perguntas do questionário. Se fizermos o download deles e marcá-los como perguntas do usuário.



Essa ideia, é uma faca de dois gumes e questões de discórdia. Se você tirar dúvidas de qualquer livro especial, o modelo terá uma dissonância. Por um lado, o estilo de escrita é próximo ao editorial, por outro lado, os usuários astutos enviaram mensagens de spam há muito tempo com mensagens privadas do jogo público “Clover”. Portanto, não os usaremos; protegeremos o modelo do transtorno bipolar da modelidade.

Como eu disse antes, os usuários têm alguma negligência na formatação de suas perguntas e, portanto, as extraímos usando expressões regulares regulares. Escreveremos expressões regulares para verificar a presença de um ponto de interrogação, identificar diferentes tipos de aspas, procurar letras maiúsculas ,,,,,. E vamos treinar novamente o modelo nesses sinais. Além disso, as previsões anteriores serão um sinal adicional. Isso ajudará a corrigir as previsões do modelo anterior.

Assim, um modelo de dois níveis foi implementado, onde os resultados do reforço na matriz esparsa TF-IDF foram ajustados, aumentando os atributos tabulares obtidos usando expressões regulares.



Isso foi o suficiente para o quinto lugar em uma tabela de líderes privada de 318. Algo poderia ser corrigido e otimizado, mas o tempo estava se esgotando. De uma forma ou de outra, isso é suficiente para ir além. E o perfeccionismo excessivo leva ao nervosismo. De qualquer forma, vejo você mais tarde, adoro ML, mantenha a calma e fique atento. Além disso, será mais interessante ...

→ O código no repositório do Github

All Articles