VKCup 2020 Stage I. Un long chemin



Aujourd'hui, nous allons considérer la compétition VkCup 2020 et la tâche de la première étape de qualification. Les gars de Singer ont promis que pendant toutes les étapes, ce serait difficile, mais intéressant. Et que faut-il encore en fait?

Comme vous le savez, le désir d'excellence, affinant ses propres compétences à une finesse similaire à l'acier de Damas, est inhérent à chaque spécialiste dans n'importe quel domaine. Exemples de cette masse. Des peintures colorées d'artistes, dont chacun a passé une partie de la vie (je dirais même la meilleure partie), qui pourraient être gaspillées sans but lors d'événements sociaux. Avant les programmes keygen - des activateurs logiciels, chacun contenant de la musique 8 bits, un algorithme d'activation et une animation, soigneusement et soigneusement compilés dans un fichier, ne mesurant que quelques dizaines de kilo-octets. L'art, quoi qu'on en dise.

Et non, ce n'est pas un autre article sur le développement personnel, honnêtement, honnêtement. Moi, en fait, quoi. En chacun de nous, il y a un désir de résoudre des problèmes non triviaux dans notre domaine. De plus, le désir de le faire est meilleur que la plupart des autres. C est naturellement. Et, il me semble, les compétitions de Machine Learning, c'est une belle opportunité pour ça. Il est parfois nécessaire de laisser libre cours à l'esprit de compétition.

Nous considérerons VKCup 2020, le championnat d'analyse de données de VKontakte, à savoir ses trois étapes, avec la finale à Saint-Pétersbourg. Commençons par le premier qualificatif. Eh bien, il y a du temps, et Pétersbourg, bien qu'elle soit une capitale culturelle, n'aime pas les retards et les imperfections. Nous daignons donc traiter les affaires le plus tôt possible, monsieur, le monsieur que le chauffeur de taxi ne devrait pas être localisé, et donc très loin.



Je pense que beaucoup ont déjà rencontré des tâches de PNL. Dans ce cas, la tâche de la première phase de qualification, qui s'est fixé pour tâche de sélectionner 256 personnes qui ont passé la seconde, était une analyse des problèmes du jeu Clover, à savoir prédire lesquelles des questions étaient proposées par des éditeurs professionnels et lesquelles étaient des utilisateurs ordinaires.

La taille des données est d'environ 40 000 lignes, dont 10 000 sont un ensemble de données de test par lequel la qualité du modèle sera estimée, et les 30 000 autres sont l'ensemble de données restant. La métrique de test est AUC ROC - la zone sous la courbe d'erreur.

Les données se présentent comme suit,



où ID est l'identifiant de la question, Answer est une variable binaire dont la valeur doit être prédite (1 - la question a été proposée par l'éditeur, zéro 0 - par l'utilisateur). Question - la question elle-même.

Il semblerait que la tâche soit assez simple, mais tout est loin d'être le cas. Les approches standard, telles que Word2Vec, BERT et d'autres modèles de PNL nouveaux, produisent une qualité relativement faible, environ 0,7, ce qui ne ferait même pas partie des cent premiers. Par conséquent, en se souvenant que le diable, comme le peuple LEGO, vit dans les détails, considère l'ensemble de données plus en détail et développe une solution qui sera relativement plus efficace.

Pour commencer, pendant l'EDA initial, vous pouvez remarquer que les utilisateurs utilisent souvent des caractères atypiques, écrivent des mots en majuscules, parfois pas avec une majuscule au début d'une phrase, oublient les points d'interrogation, utilisent des guillemets étranges. Ils copient également les questions des rédacteurs en les faisant passer pour les leurs. Et d'autres fonctionnalités intéressantes.

Commençons par la référence. En utilisant la mesure TF-IDF (Term Frequency - Inverted Document Frequency), nous obtenons le sparsematrix, que nous alimentons ensuite dans le gradient boost.
Une seule définition, TF-IDF est une mesure statistique utilisée pour évaluer l'importance d'un mot dans le contexte d'un document qui fait partie d'une collection de documents ou corpus. Le poids d'un mot est proportionnel à la fréquence d'utilisation du mot dans le document et inversement proportionnel à la fréquence d'utilisation du mot dans tous les documents de la collection.

Pour réduire le recyclage du modèle, nous allons réduire le nombre maximal de jetons et composer la matrice de paramètres initiale, qui consistera en une combinaison de deux plus petits: une partie est la matrice TF-IDF, où les séquences de symboles séparées par des espaces agissent comme des jetons, en fait ce sont des mots, et l'autre la pièce est une matrice où des séquences de symboles d'une certaine longueur agissent comme des jetons.



Il semble assez bon, cependant, il peut et devrait être meilleur. Il s'agit de la première partie du pipeline. Dans ce cas, «P» est l'abréviation de «Public», c'est un indicateur qui montre le score du modèle sur la partie ouverte de l'échantillon de test. Et «F» est l'abréviation de «Final», résultat de la partie cachée des données publiées après la fin du concours.

Ensuite, nous ajouterons des données à l'ensemble de données, ce qui n'est généralement pas interdit par les règles. Et ce qui n'est pas interdit est donc autorisé. Sur Internet, vous pouvez trouver un certain nombre de jeux de données avec des questions de quiz. Si nous les téléchargeons et les marquons comme des questions d'utilisateurs.



Cette idée, c'est une épée à double tranchant et des questions de discorde. Si vous prenez des questions d'un livre spécial, le modèle aura une dissonance. D'une part, le style d'écriture est proche de l'éditorial, d'autre part, les utilisateurs rusés les ont longtemps spammés avec des messages privés du jeu public «Clover». Par conséquent, nous ne les utiliserons pas; nous protégerons le modèle du trouble bipolaire de la modélisation.

Comme je l'ai déjà dit, les utilisateurs ont une certaine négligence dans le formatage de leurs questions, et nous allons donc les extraire en utilisant des expressions régulières régulières. Nous allons écrire des expressions régulières pour vérifier la présence d'un point d'interrogation, identifier différents types de guillemets, rechercher des lettres majuscules ,, ,. Et nous allons recycler le modèle sur ces panneaux. De plus, les prédictions précédentes seront un signe supplémentaire. Cela aidera à corriger les prédictions du modèle précédent.

Ainsi, un modèle à deux niveaux a été mis en œuvre où les résultats du boosting sur la matrice clairsemée TF-IDF ont été ajustés en boostant les attributs tabulaires obtenus à l'aide d'expressions régulières.



C'était suffisant pour la 5e place d'un classement privé sur 318. Quelque chose pouvait être corrigé et optimisé, mais le temps était compté. D'une manière ou d'une autre, cela suffit pour aller plus loin. Et le perfectionnisme excessif conduit à la nervosité. En tout cas, à plus tard, adorez ML, restez calme et restez à l'écoute. De plus ce sera plus intéressant ...

→ Le code dans le dépôt Github

All Articles