Im vergangenen Semester arbeiteten Studenten des Informatikzentrums Sergey Gorbatyuk und Peter Karol unter der Leitung von Vladimir Gorovoy, Projektmanager, an der Deduplizierung von Anzeigen auf Yandex.Real Estate. Die Jungs haben uns erzählt, wie das Projekt funktioniert und welche Ergebnisse sie erzielt haben.

Entwurfsaufgabe
Yandex.Real Estate ist ein Anzeigenservice für den Verkauf und die Vermietung von Wohnungen, Zimmern, Häusern, Grundstücken. Anzeigen werden von Einzelpersonen, Immobilienentwicklern oder Agenturen geschaltet, sodass dieselbe Immobilie häufig durch mehrere Angebote dargestellt wird. Meistens versuchen mehrere Agenturen, eine Wohnung gleichzeitig zu verkaufen, manchmal auch der Eigentümer.
Duplikate der angezeigten Anzeigen stören die Nutzer bestenfalls, im schlimmsten Fall sind sie irreführend. Dies verhindert auch, dass das Yandex-Team Analysen nach Wohnung sammelt und genau zählt, wie viel es zum Verkauf oder zur Miete ist. Daher möchte ich lernen, wie man Duplikate in einem Angebot sucht und klebt.
Ein Anzeigenstrom kann nicht manuell moderiert werden, da er sehr groß ist. Wir brauchen also einen Algorithmus, der in der Lage ist, so viele Duplikate wie möglich mit hoher Genauigkeit zu finden. Die Genauigkeit ist wichtig, da der Preis für den Fehler hoch ist: Durch das Verbinden verschiedener Anzeigen beschweren sich die Nutzer.
Aufgaben mit solch hohen Anforderungen und einer komplexen Datenstruktur werden traditionell mithilfe von Algorithmen für maschinelles Lernen gelöst. In Wirklichkeit wurde die Aufgabe daher als "Training eines der modernsten Klassifikatoren" formuliert.
Die Probleme
- Der Themenbereich ist für uns neu, er hat seine eigenen Schwierigkeiten und Merkmale.
- Es gibt überhaupt keine markierten Daten.
- Es gibt keine explizite maschinelle Lernaufgabe - was sind hier die Faktoren und Zielvariablen?
Mit dem letzten Absatz ist alles relativ einfach: Die Faktoren sind Informationen über ein Objektpaar aus verschiedenen Anzeigen, und die Zielvariable ist, ob eines ein Objekt in der Realität ist oder zwei verschiedene. Das Herausfinden der Merkmale des Immobilienmarktes und das Markieren der Daten nahm jedoch den größten Teil der Projektzeit in Anspruch.
Datenmarkup
Wir haben einen Teil der Datenbank mit Angeboten zum Verkauf von Wohnungen in Moskau erhalten. Die Hauptdaten, die sie beschreiben, sind:
- Allgemeine strukturierte Daten - Filmmaterial, Preis, Boden, Anzahl der Zimmer, Badezimmer, Deckenhöhe, Metainformationen über den Verkäufer und andere.
- Textbeschreibung des Objekts.
- Fotos des Objekts.
Vor Yandex hatten wir einen doppelten Klassifikator, der auf Faktoren ab 1 Punkt ohne Kontrolldaten trainiert wurde. Dies ist ein Angebotsclustering-Algorithmus, der doppelte Angebote nennt, die in einen Cluster fallen. Es hatte eine ziemlich hohe Genauigkeit, aber eine relativ geringe Vollständigkeit. Dies bedeutet, dass der Anteil der von ihm entdeckten Duplikate gering war, obwohl er sich selten irrte.
Wir haben die Idee verwendet, Angebote anhand von Unterschieden und Beziehungen zwischen Schlüsselindikatoren miteinander zu vergleichen: z. B. Preis oder Untergrenze, um eine empirische Metrik für die Unähnlichkeit von Anzeigen zu erhalten. Und sie haben eine Funktion entwickelt, die die beiden Zahlen mit einer einzigen Zahl korreliert - ein Maß dafür, wie sich die beiden Anzeigen in den Primärdaten unterscheiden. Dieser Indikator hat uns geholfen, eine ausgewogene Stichprobe zu erstellen, während die Daten markiert und die Verteilung der Beispiele zumindest grob reguliert wurden: Wir wollen irgendwo in der Mitte identische oder sehr unterschiedliche oder komplexe Beispiele.
Das Markup erwies sich als viel komplizierter als wir erwartet hatten. Und hier ist warum:
- Identische und nicht informative Beschreibungen ähnlicher Objekte. Besonders aus dem neuen Fonds: Bauunternehmen führen sie chargenweise und nur in seltenen Fällen anhand der Losnummer.
- Vorsätzliche Datenbeschädigung. Immobilienspezialisten erklärten uns, dass Menschen manchmal den realen Boden oder das Erscheinungsbild der Wohnung verbergen möchten.
- Keine informativen Außen- oder ähnlichen Fotos von Objekten.
- Verschiedene Fotos desselben Objekts. Im Folgenden finden Sie eines der einfachen Beispiele, aber einige Fotos müssen lange Zeit wie ein Detektiv aussehen und die gesamte Kraft der deduktiven Methode nutzen, um zu entscheiden, ob es sich um eine oder zwei verschiedene Wohnungen handelt.


Überwachte Grundlinie
Wir haben die Daten markiert und versucht, Random Forest nur anhand der Faktoren aus dem ersten Absatz zu trainieren - kategoriale und kontinuierliche Indikatoren für Preis, Filmmaterial usw. Unterschiede und Beziehungen dieser Faktoren sowie zusätzlich konstruierte Faktoren, die auf dem Zeitpunkt der Platzierung und Aktualisierung, Informationen über den Verkäufer usw. basieren, wurden als Prädiktoren verwendet. Bei den Testdaten war dieser Klassifikator um 5 bis 8% genauer als der konservative Clustering-Algorithmus, und seine Vollständigkeit übertraf das vorherige Ergebnis um 30 bis 35%.
Von diesem Ergebnis ermutigt, wandten wir uns zwei weiteren Faktoren zu - der Textbeschreibung und den Bildern. Mit letzterem haben wir fast nicht gearbeitet: Wir haben sie ziemlich spät entladen. Sie versuchten, Hashes zum Herausfiltern gängiger Außenaufnahmen zu verwenden, Wahrnehmungs-Hashes, um mit Wasserzeichen und Ausgaben hoher Schichten von Faltungsnetzwerken (ResNet-18) als zusätzliche Faktoren umzugehen. Zu unserer Überraschung konnten sie jedoch keine starke Erhöhung der Genauigkeit feststellen.
Unserer Meinung nach ist es notwendig, die Bildanalyse in diesem Themenbereich noch gründlicher zu betrachten, der Bildvorverarbeitung große Aufmerksamkeit zu widmen, andere Architekturen und spezielle Verlustfunktionen auszuprobieren. Für lemmatisierte und vektorisierte Textdaten wurde der Tf-Idf-Vektorisierungsalgorithmus angewendet und die vektorisierte Darstellung als Hauptmerkmale verwendet. Unterschiedliche Metriken über diese Vektoren führten zu einer eindrucksvolleren Steigerung der Qualität der Vorhersagen. Das beste Ergebnis als Faktor war die Wahrscheinlichkeit, die durch die auf diesen Vektoren separat trainierte logistische Regression vorhergesagt wurde.
Endmodell
Das endgültige Modell, das alle Vorzeichen und Ergebnisse anderer zusammenfasste, war CatBoost. Dies ist ein Yandex-Produkt, das mit einer speziellen Verlustfunktion trainiert wurde - einem modifizierten F-Maß. Die CatBoost-Technologie hat sich als eine der besten in der Klassifizierungsaufgabe etabliert und lässt sich problemlos in die Infrastruktur integrieren. Die Qualität des Algorithmus auf der Testprobe beträgt 98% Genauigkeit und 93% Vollständigkeit.
Wir halten dies für ein gutes Ergebnis und ob es aus geschäftlicher Sicht dasselbe ist - Experten aus der Marketingabteilung werden entscheiden :)