Déduplication des annonces sur Yandex.Immobilier

Le semestre dernier, les étudiants du Centre d'informatique Sergey Gorbatyuk et Peter Karol ont travaillé sur la déduplication des annonces sur Yandex.Real Estate sous la direction de Vladimir Gorovoy, chef de projet. Les gars nous ont expliqué le fonctionnement du projet et les résultats obtenus.

image


Tâche de conception


Yandex.Real Estate est un service d'annonces pour la vente et la location d'appartements, chambres, maisons, parcelles. Les annonces sont placées par des particuliers, des promoteurs immobiliers ou des agences, de sorte que la même propriété est souvent représentée par plusieurs offres. Le plus souvent, plusieurs agences tentent de vendre un appartement à la fois, et parfois aussi le propriétaire.

Les doublons de publicités vues ennuient au mieux les utilisateurs, au pire ils sont trompeurs. Cela empêche également l'équipe Yandex de collecter des analyses par appartement et de compter exactement combien elles sont à vendre ou à louer. Par conséquent, je veux apprendre à rechercher et à coller des doublons dans une seule offre.

Un flux publicitaire ne peut pas être modéré manuellement car il est énorme. Nous avons donc besoin d'un algorithme capable de trouver autant de doublons que possible avec une grande précision. La précision est importante car le prix de l'erreur est élevé: la liaison de différentes annonces incitera les utilisateurs à se plaindre.

Les tâches avec des exigences aussi élevées et une structure de données complexe sont traditionnellement résolues à l'aide d'algorithmes d'apprentissage automatique, donc en réalité, la tâche a été formulée comme «Former l'un des classificateurs de pointe».

Les problèmes


  • Le sujet est nouveau pour nous, il a ses propres difficultés et caractéristiques.
  • Il n'y a aucune donnée balisée.
  • Il n'y a pas de tâche d'apprentissage automatique explicite - quels seront les facteurs et les variables cibles ici?

Avec le dernier paragraphe, tout est relativement simple: les facteurs seront des informations sur une paire d'objets provenant de différentes publicités, et la variable cible est de savoir si l'un est un objet en réalité, ou deux différents. Mais la découverte des caractéristiques du marché immobilier et le balisage des données ont pris la plupart du temps du projet.

Balisage des données


Nous avons reçu une partie de la base de données avec des offres sur la vente d'appartements à Moscou. Les principales données qui les décrivent sont:

  • Données structurées générales - images, prix, étage, nombre de chambres, salles de bains, hauteur de plafond, méta-informations sur le vendeur et autres.
  • Description textuelle de l'objet.
  • Photos de l'objet.

Avant Yandex, nous avions un classificateur en double formé sur des facteurs à partir d'un point sans données de contrôle. Il s'agit d'un algorithme de clustering d'offres qui a appelé les offres en double qui tombent dans un cluster. Il avait une précision assez élevée, mais une exhaustivité relativement faible. Cela signifie que la proportion de doublons qu'il a découverts était faible, bien qu'il se soit rarement trompé.

Nous avons utilisé l'idée de comparer les offres entre elles sur la base des différences et des relations entre les indicateurs clés: par exemple, le prix ou le plancher, pour obtenir une métrique empirique de dissimilarité des annonces. Et ils ont trouvé une fonction qui corrélait les deux nombres avec un seul nombre - une mesure de la différence entre les deux annonces dans les données primaires. Cet indicateur nous a aidés à créer un échantillon équilibré tout en balisant les données et à réguler au moins grossièrement la distribution des exemples: nous voulons des exemples plus identiques, ou très différents, ou complexes quelque part au milieu.

Le balisage s'est avéré beaucoup plus compliqué que prévu. Et voici pourquoi:

  • Descriptions identiques et non informatives d'objets similaires. Surtout du nouveau fonds: les entreprises de construction les transportent par lots, et seulement dans de rares cas, ils peuvent être distingués par le numéro de lot.
  • Corruption intentionnelle des données. Les spécialistes de l'immobilier nous ont expliqué que parfois les gens veulent cacher le sol ou l'apparence réelle de l'appartement.
  • Photos extérieures ou similaires non informatives d'objets.
  • Différentes photos du même objet. Ci-dessous est l'un des exemples simples, cependant, certaines photos doivent regarder longtemps comme un détective, en utilisant toute la puissance de la méthode déductive dans le seul but de décider s'il s'agit d'un appartement ou de deux différents.


image

image

Ligne de base supervisée


Nous avons annoté les données et essayé de former Random Forest uniquement sur les facteurs du premier paragraphe - indicateurs catégoriques et continus de prix, de séquences, etc. Différences et relations de ces facteurs, ainsi que des facteurs supplémentaires construits en fonction du moment du placement et de la mise à jour, des informations sur le vendeur, etc. Sur les données de test, ce classificateur était plus précis que l'algorithme de clustering conservateur de 5-8%, et son exhaustivité dépassait le résultat précédent de 30-35%.

Encouragés par ce résultat, nous nous sommes tournés vers deux autres facteurs - la description textuelle et les images. Nous avons failli ne pas travailler avec ces derniers: nous les avons déchargés assez tard. Ils ont essayé d'utiliser des hachages pour filtrer les photographies extérieures courantes, des hachages perceptuels pour traiter les filigranes et les sorties de hautes couches de réseaux convolutionnels (ResNet-18) comme facteurs supplémentaires, mais à notre grande surprise, ils n'ont pas obtenu une forte augmentation de la précision.

À notre avis, il est nécessaire d'aborder l'analyse d'images dans ce domaine de manière encore plus approfondie, d'accorder une grande attention au prétraitement des images, d'essayer d'autres architectures et des fonctions de perte spéciales. Pour les données texte lemmatisées et vectorisées, l'algorithme de vectorisation Tf-Idf a été appliqué et la représentation vectorisée a été utilisée comme caractéristiques principales. Différentes métriques sur ces vecteurs ont donné une augmentation plus impressionnante de la qualité des prédictions. Le meilleur résultat en tant que facteur était la probabilité prédite par la régression logistique formée séparément sur ces vecteurs.

Modèle final


Le modèle final, qui regroupait tous les signes et sorties des autres, était CatBoost. Il s'agit d'un produit Yandex formé avec une fonction de perte spéciale - une mesure F modifiée. La technologie CatBoost s'est imposée comme l'une des meilleures dans la tâche de classification et s'intègre facilement dans l'infrastructure. La qualité de l'algorithme sur l'échantillon test est de 98% de précision et de 93% d'exhaustivité.

Nous considérons que c'est un bon résultat, et que ce soit le même d'un point de vue commercial - les experts du département marketing décideront :)

Source: https://habr.com/ru/post/fr457464/


All Articles