Im Winter und Sommer in einer Farbe? Suchen Sie nach Saisonalität in Daten



Einmal haben wir uns entschlossen zu sehen, welche saisonalen Interessen 2GIS-Benutzer in verschiedenen Städten haben. Das Interesse an Blumen, Neujahrsgeschenken und Reifen ist durchaus zu erwarten. Wir haben uns entschlossen, uns nicht auf sie zu beschränken und alle Tätigkeitsbereiche in allen 113 Städten der Präsenz zu überprüfen.

In diesem Artikel werde ich Ihnen erzählen, wie wir nach Saisonalität gesucht haben und welche Merkmale des Benutzerverhaltens darin gefunden wurden.

Warum müssen Sie die Saisonalität messen?


Die Bedürfnisse der 2GIS-Benutzer ändern sich im Laufe des Jahres: Konsumgüter, Dienstleistungen, Bauwesen, öffentliche Dienstleistungen. Saisonales Wissen ist aus mehreren Gründen nützlich:

  • Wir beginnen im Moment und in naher Zukunft mehr über die Werte und Interessen unserer Benutzer zu verstehen.
  • Wir können die Anfrage eines Benutzers "vorhersagen".
  • Vertriebsleiter konzentrieren sich auf für Benutzer relevante Tätigkeitsbereiche.

Arten von Verkehr


Bevor wir darüber sprechen, wie wir Datenverkehr verarbeiten, sollten wir klarstellen, dass wir ihn in verschiedene Typen unterteilen.

Wiederherstellung ist eine Art von Datenverkehr, bei dem der Benutzer genau das Unternehmen kennt, mit dem er Kontakt aufnehmen möchte. Er muss die Adresse, den Arbeitsplan oder den Eingang klären. In diesem Fall erfolgt die Suche nach Firmenname, Telefonnummer und anderen Attributen der Firma.

Entdeckungsverkehr ist, wenn ein Benutzer eine Anfrage allgemeiner formuliert: "Polstermöbel", "Essen auf Lenin", "Bäder". Das heißt, der Benutzer erkundet Marktoptionen und -angebote, ruft häufig Organisationen an oder besucht ihre Websites.

Geoverkehr tritt auf, wenn ein Benutzer mit einer Karte arbeitet. Zum Beispiel wird nach Apotheken oder Tankstellen gesucht, die dem Haus am nächsten liegen.

Alle Benutzeranforderungen und alle nachfolgenden Aktionen werden im Datenverkehr markiert. Um nach Saisonalität zu suchen, wurden Discovery + Geo-Traffic analysiert. Da sie zum einen der Manifestation von Benutzerinteressen entsprechen und zum anderen kontrolliert werden können. Sie können den Wiederherstellungsverkehr nicht verwalten.

Über Trends


Grafik 1: Sehen Sie Saisonalität?
Grafik 1: Sehen Sie Saisonalität?

Bevor Sie nach Saisonalität suchen, müssen Sie Änderungen im Verkehrsaufkommen auf verschiedenen Gerätetypen berücksichtigen. Wir haben berücksichtigt, dass das Publikum von WinPhone- und PC-Versionen ständig sinkt. Während Online, Android, iOS ständig wachsen.

Hypothesentest


Kriterien für die Bestimmung der Saisonalität werden für stationäre Serien entwickelt. Es ist notwendig, die Hypothese zu testen, dass die Serie einen Trend enthält. Wir werden die Zeitreihen als zufälligen Prozess betrachten. Dann sind die Elemente der Reihe Realisierungen einer Zufallsvariablen.

Wir können die Hypothese testen, dass alle Stichprobenwerte zur gleichen Population mit dem Durchschnitt m gehören. Dann lautet die Haupthypothese:
H0:mi=m,i=1,2,...,N
gegen die konkurrierende Trendhypothese
$ inline $ H_1: ∣m_ {i + 1} −m_i∣> 0, i = 1,2, ..., N - 1 $ inline $
Dabei ist N die Anzahl der Elemente in einer Reihe.

Um die Hypothese zu testen, müssen Sie eines der Kriterien für die Signifikanz des Trends verwenden. Basierend auf den Studien wurde das Inversionskriterium gewählt.

Wenn die Hypothese nicht zurückgewiesen wird, muss der Trend aus den Daten entfernt werden. Wir gehen davon aus, dass es in unseren Daten nur einen linearen Trend geben kann. Oh, es wäre exponentiell! Wir gehen auch davon aus, dass wir nicht mehr als einen Wendepunkt haben können.

Grafik 2: Zeitreihen (aus Grafik 1) und deren Trend
Grafik 2: Zeitreihen (aus Grafik 1) und deren Trend

Über einen Rechen und Entdeckungen


Wir haben die Grenzen der Studie umrissen und Hypothesen getestet. Natürlich war es nicht ohne Rechen und Entdeckungen: Da sich die Aufgabe nicht auf beliebte Dienste in Städten mit über einer Million Menschen beschränkte, haben wir eine Liste von Sonderfällen zusammengestellt, die es wert sind, beachtet zu werden.

  1. Datenlücken. In engen Tätigkeitsbereichen enthalten einige Daten möglicherweise keine Daten. Der Fall ist besonders relevant für Kleinstädte. Diese Funktion muss für die korrekte Konstruktion der Regression berücksichtigt werden.
  2. Wenn ein Wendepunkt gefunden wird, berücksichtigen Sie dessen Nähe zum Anfang oder Ende der Reihe. Eine Fehlinterpretation des Verhaltens einer Reihe unter Randbedingungen ist möglich. Zum Beispiel scheinen in Diagramm 2 die ersten 120 Punkte ein stückweise lineares Wachstum anzuzeigen. Tatsächlich zeigte sich jedoch Saisonalität, die wir später sehen werden.
  3. Auswahl des richtigen Bezugspunkts. Um die richtigen Koeffizienten zu erhalten, müssen Sie eine Reihe verwenden, beginnend mit dem ersten signifikanten Punkt, und sich die X-Koordinate dieses Punkts merken (das Datum, an dem die Daten in der Reihe erschienen sind). Der Trend wird an dieser Stelle im Koordinatensystem mit 0 erstellt. Dieser Fall ist relevant für den Vergleich von Kugeln miteinander. Beispielsweise wurden in 2GIS Städte nicht gleichzeitig gestartet und dementsprechend begannen sie, Statistiken zu unterschiedlichen Zeiten zu senden. Gleiches gilt für die Entstehung neuer Unternehmen wie beispielsweise Friseurläden.
  4. Am schwierigsten ist es vielleicht, einen Kompromiss zwischen dem Detaillierungsgrad und der Angemessenheit der Datenmenge zu finden. Wir haben uns für drei Dimensionen entschieden: Stadt, Tätigkeitsbereich, Benutzergeräteplattform.

Grafik 3: Eine Serie ohne Trend
Grafik 3: Eine Serie ohne Trend

Saisonalitätssuche


Nachdem wir die entsprechenden Trends von den Zeitreihen abgezogen haben, können wir mit der Ermittlung der Saisonalität fortfahren. Es besteht aus zwei Unteraufgaben:

  1. Feststellung des Vorhandenseins von Saisonalität in einer Reihe.
  2. Definitionen von Hoch- und Nebensaison - das hat praktischen Wert.

Korrelationserkennung


Sowohl in R als auch in Python gibt es vorgefertigte Korrelationssuchfunktionen. Wir haben die Pearson-Korrelation verwendet. Beachten Sie beim Arbeiten mit Vektoren von Benutzerinteressen Folgendes:

  • Nach Subtraktion des Trends von der Originalserie können negative Werte erhalten werden. Dies ist zu diesem Zeitpunkt normal.
  • Für unsere Aufgabe reicht es aus, die Korrelation von Zeitreihen von 365 Tagen zu überprüfen. Ja, der Einfluss eines Schaltjahres ist unbedeutend und wir berücksichtigen ihn nicht.
  • Um nach Saisonalität zu suchen, müssen Sie Daten für mindestens zwei vollständige Zeiträume haben. Unsere Berechnungen verwendeten Daten für vier Zeiträume.

Wir suchen nach der Korrelation zweier Vektoren: X: [0; N-365], Y: [366; N]. Wobei N die Länge der Reihe ist.

Grafik 4: Korrelationserkennung
Grafik 4: Korrelationserkennung

Holen Sie sich den Vorteil


Die Tatsache des Vorhandenseins von Saisonalität hat keinen praktischen Wert. Sie müssen verstehen, welche Aufmerksamkeit dem Tätigkeitsbereich im nächsten Monat geschenkt wird: erhöht, gesenkt oder normal.

Als Endergebnis wurde eine multiplikative Skala gewählt. Wobei das Gerät das „normale“ Maß an Benutzerinteresse im Tätigkeitsbereich ist. Ein anderer Wert als einer kennzeichnet eine mehrfache Zunahme oder Abnahme des Interesses.

In unserem Fall reicht [vorerst] eine ausreichend temporäre Skala von einem Monat aus. Zur Bestimmung von Stufe 1 wurde der Median der monatlichen Benutzeraufmerksamkeit verwendet. Berechnete dann die mehrfache Abweichung von diesem Median.

Grafik 5: Jährliche Saisonalität
Grafik 5: Jährliche Saisonalität

Es ist Zeit, das Geheimnis zu enthüllen, welche Daten die Grafiken des Artikels zeigen. Auf diese und alle vorherigen Grafiken - Klicks in den Museen von St. Petersburg. Wie aus dem letzten Zeitplan hervorgeht, sind Museen in den Januarferien, an vielen freien Tagen und im Sommer beliebt.

Was ist, wenn ...


... den Algorithmus nicht den Interessen der Benutzer, sondern zum Beispiel dem Verkauf zu widmen und zu füttern?

Der Aktionsalgorithmus ist der gleiche:

  1. Wir suchen nach Trends. Das Publikum der Städte wächst und damit auch die Zahl der Werbetreibenden. Es ist notwendig, den mit der wachsenden Popularität von 2GIS als Werbeplattform verbundenen Trend abzuziehen, um Branchenschübe und -abschwünge zu erzielen.
  2. Wir finden Umsatzkorrelationen von Jahr zu Jahr und dann Hoch- und Nebensaison.

Es waren einige Anpassungen erforderlich


Werbung in 2GIS wird monatlich verkauft, daher dauerte die Skalierung einen Monat, die Saisonalität der Nutzer wurde jedoch bis zu einem Tag analysiert. Aus Gründen der Abwärtskompatibilität haben wir die Algorithmen für die Arbeit mit beliebigen Reihen angepasst, wobei die x-Achse die Seriennummer des Punkts ist und die y-Achse einen bestimmten Wert hat (auf dieser Ebene spielt die Wertesemantik keine Rolle).

Der Bezugspunkt einer Reihe von Verkäufen (Herkunft) stimmt in der Regel nicht mit dem Bezugspunkt der Saisonalität der Benutzer überein. Schließlich gewinnt die Stadt zunächst ein Publikum, und erst dann erscheint Werbung. Zu diesem Zeitpunkt sollten Sie die Ergebnisse zweier Saisonalitäten nicht kombinieren.

Da die Verkäufe monatlich sind, haben wir deutlich weniger Punkte in den Reihen. In diesem Fall sollte die Korrelation an 12 statt an 365 Punkten berücksichtigt werden.

Grafik 6: Saisonalität der Verkäufe
Grafik 6: Saisonalität der Verkäufe

Als letzten Schritt haben wir beschlossen, der Saisonalität der Benutzer eine Verkaufssaisonalität aufzuerlegen. Jetzt können Sie sehen, wo wir Anzeigen später als nötig verkaufen, und hinter der Nachfrage der Nutzer zurückbleiben.

Beispielsweise sind Benutzer daran interessiert, von April bis Oktober Beton in Nischni Nowgorod zu kaufen. Während Unternehmen nur von Mai bis September Werbung betreiben.

Grafik 7: Schnittpunkt von Benutzersaisonalität und Verkaufssaisonalität
Grafik 7: Der Schnittpunkt von Benutzersaisonalität und Saisonalität von Verkäufen (grün - Benutzer, blau - Verkäufe, rot - Zufall)

Was hat getan


Alles, was oben beschrieben wurde, ist in MS SQL Server 2016 implementiert. Um nach linearer Regression und Korrelation zu suchen, wird R verwendet, das seit Version 2016 im Server enthalten ist. Da wir bereits Data Warehouse- und Benutzerstatistikanalysen auf SQL Server haben, hat es sich als sehr praktisch erwiesen, R zu verwenden für mathematische Berechnungen.

Beispiel für die Verwendung von R aus TSQL:

INSERT INTO #tmp EXEC sp_execute_external_script @language = N'R', @script = @R, @input_data_1 = N'SELECT DataId, Number, Value FROM #data ORDER BY 1, 2' 

Wo:

  • die Variable R enthält direkt den R-Code;
  • language = N'R '- Gibt an, dass das in der R-Variablen übergebene Skript R-Sprachcode enthält. In SQL Server 2017 können Sie zusätzlich zu R language = N'Python' verwenden. Dementsprechend muss der Python-Code an den Skriptparameter übergeben werden.
  • input_data_1 - enthält eine SQL-Abfrage, auf deren Ergebnisse im R-Code als InputDataSet zugegriffen werden kann.
  • Das Ergebnis der Prozedur ist das RecordDataSet, das als OutputDataSet <- calcAllTrend (data = InputDataSet) gebildet wird.
  • Stellen Sie sicher, dass Sie das Format des resultierenden Datensatzes angeben: Anzahl und Art der Spalten. In diesem Fall wird das Format des OutputDataSet durch die Tabelle #tmp bestimmt, in der die Ergebnisse aufgezeichnet werden. Oder Sie können WITH RESULT SETS verwenden, um den resultierenden Datensatz zu beschreiben.

In unserem Fall stellte sich heraus, dass ein wesentlicher Teil der Laufzeit von sp_execute_external_script direkt durch den Zugriff auf R Services belegt ist. Der R-Code selbst hat schnell geklappt.

Ich möchte Sie daran erinnern, dass wir Trends und Saisonalität für alle Städte berechnen wollten, die 2GIS und alle Tätigkeitsbereiche abdecken. Aus diesem Grund haben wir beschlossen, nicht eine Zeile (Nummer, Wert) an InputDataSet zu senden, sondern mehrere gleichzeitig, gruppiert nach DataId. Und der DataId-Zyklus wurde in R organisiert. So haben wir beim Aufrufen von R Services erheblich gespart.

Fakten aus dem Leben


Sie lesen den Artikel bis zum Ende, es ist lobenswert. Um Sie vor den Ergebnissen zu unterhalten, teilen wir interessante Fakten mit, die bei der Analyse der Saisonalität ermittelt wurden.

Fakt Nr. 1


Autofahrer wissen aus eigener Erfahrung, dass die Zeit der Suche nach Reifen und Reifenmontage Frühling und Herbst ist. Um genau zu sein, kann die Jahreszeit in verschiedenen Städten sehr unterschiedlich sein. Daher ist es beim Erstellen von Sammlungen und Dashboards (Startbildschirme in Produkten) wichtig, die Saisonalität in jeder bestimmten Stadt zu berücksichtigen.

Grafik 8: Saisonalität der Reifen in Krasnodar, Nowosibirsk und Norilsk
Grafik 8: Saisonalität der Reifen in Krasnodar, Nowosibirsk und Norilsk

Fakt Nr. 2


Die Saisonalität kann sogar innerhalb desselben Tätigkeitsbereichs unterschiedlich sein - auf verschiedenen Gerätetypen. Zum Beispiel beginnen die Neujahrsgeschenke auf der großen Leinwand im Oktober zu suchen. Während in mobilen Versionen die Suche einen Monat später beginnt und der Höhepunkt näher an das neue Jahr fällt.

Grafik 9: Suchen Sie online und in der mobilen 2GIS-Version nach Weihnachtsgeschenken
Grafik 9: Suchen Sie online und in der mobilen 2GIS-Version nach Weihnachtsgeschenken

Fakt Nr. 3


Während der Arbeit an der Saisonalität haben wir einen Tätigkeitsbereich entdeckt, dessen Interesse alle drei Monate gezeigt wird. Und das gilt für verschiedene Städte Russlands.
Versuchen Sie zu erraten, was für ein Geschäft das ist.

Spoilerspitze
Stark unterschiedliche Städte Russlands. Also weder das Wetter noch die Region noch lokale Unternehmen, sondern etwas weltweit Gemeinsames.
3 Monate = Quartal. Achten Sie auf April ...

Grafik 10
Grafik 10

Die Antwort
Hierbei handelt es sich um Sozialversicherungsfonds. Alle drei Monate werden vierteljährliche Berichte an das FSS übermittelt. Der Höchststand im April wird durch eine Änderung der Berichtsformulare ab dem 1. Januar eines jeden Jahres erklärt.

Noch einmal über die Hauptsache


Suchen Sie nach Korrelationen in den Daten? Vergessen Sie nicht, diese Daten vorzubereiten: Prozesslücken, frei von Trends und Emissionen. Denken Sie daran, dass die Vorbereitung die meiste Zeit in Anspruch nimmt.

In der Phase der Arbeit mit Zeilen abstrahieren Sie so viel wie möglich von der Semantik: Arbeiten Sie mit dem Wert und der Seriennummer des Punkts, dann ist der Code einfacher wiederzuverwenden. Die Visualisierung in jeder Phase der Verarbeitung wird sehr hilfreich sein.

PS: Die Aufgabe, Trends und Saisonalität zu finden, wurde als Teil einer anderen Aufgabe erledigt - der Vorhersage von Änderungen der Benutzeraufmerksamkeit nach dem Erwerb von Werbung in 2GIS. Wenn Sie interessiert sind, kann ich Ihnen gerne mitteilen, wie wir die Prognose erstellt haben.

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


All Articles