Wie Tinkoff.ru die Analyse mit Zeppelin automatisiert

Tinkoff.ru entwickelt viele Dienstleistungen auf dem Finanzdienstleistungsmarkt. Unsere Analysten, Entwickler, Technologen und Manager lösen ihre täglichen Aufgaben. Jeden Tag generieren wir Ideen, analysieren, entwickeln und tun alles, um das beste Produkt auf dem Markt zu schaffen.

Ich arbeite als Backend-Programmierer in der internen Entwicklungsabteilung. Wir helfen dabei, neue Geschäftsbereiche zu eröffnen, den Workflow zu automatisieren und zu versuchen, eine Bank zu sparen, wo dies möglich ist (z. B. den Kauf einer Lizenz für eine teure Software zu verweigern). Unser Workflow ist sehr standardisiert: Manager entwickeln Geschäftsfunktionen, Technologen formalisieren sie und legen Aufgaben fest, Analysten analysieren die Daten und Entwickler lösen die ihnen zugewiesenen Aufgaben bereits. Alles im Leben ist komplizierter, aber das wissen Sie bereits.

Einer unserer Geschäftskunden ist unsere Kundenbindungsabteilung - Tinkoff Target. Bevor ich über die Automatisierung von Analysen spreche, werde ich erklären, wie unser Treueprogramm funktioniert.

Tinkoff.ru Treueprogramm oder wie wir Cashback an Menschen verteilen


Fast alle modernen Banken geben Cashback aus: in Rubel, Meilen oder Papageien (Punkte, die Sie für etwas Bestimmtes ausgeben können).

Wir sind keine Ausnahme, wir geben einen Standard-Cashback von 1% für alles und 5% für 3 ausgewählte Kategorien aus (z. B. "Transport", "Kino", "Souvenirs" usw.). Sie müssen nicht viel solches Cashback ausgeben (aber ich möchte es wirklich), und deshalb haben wir spezielle Angebote von Bankpartnern, die auch Cashback ausgeben möchten. Als Teil des Geschäftsbereichs der Treueprogramme versuchen wir daher, verschiedene Unternehmen zu finden und zu überzeugen, unseren Kunden unter für beide Seiten vorteilhaften Bedingungen Cashback zu gewähren. Diese Unternehmen sind unsere Partner.

Wie machen wir das? Stellen Sie sich vor, es gibt eine bedingte Firma Yabloko auf dem Markt. Der beste Weg, Yabloko für unser Cashback-Programm zu gewinnen, besteht darin, ihm beim Verkauf seines Produkts oder seiner Dienstleistung zu helfen. Hier geht es darum, ein Publikum für den Partner zu gewinnen. Zum Beispiel Kunden, die von Wettbewerbern gekauft wurden, oder Kunden, denen die Existenz von Yabloko nicht bekannt ist. Außerdem kann Yabloko die am besten geeigneten Kunden für das Profil auswählen, die Yabloko wirklich wollen. Sie wissen nur noch nichts darüber - hier geht es um künstliche Intelligenz und maschinelles Lernen.

Die Aufgabe, eine solche Zielgruppe auszuwählen, liegt bei den Analysten. Wir haben zwei davon, und es gibt viele Partner - mehr als 1000. Darüber hinaus haben Analysten immer noch eine Menge interessanter Arbeit, und mit zunehmender Anzahl von Partnern wird die Auswahl des richtigen Publikums zur Routine. Eine solche Routine muss automatisiert und in einen einzigen Klick auf die Schaltfläche umgewandelt werden (oder besser ohne eine Schaltfläche). Darüber hinaus bringt der mehrstufige Prozess der Ausführung solcher Aufgaben Fehler mit sich, die durch den menschlichen Faktor verursacht werden. Als nächstes werde ich Ihnen erzählen, wie wir es geschafft haben, solche Routinearbeiten loszuwerden.

Wie wir Analytics erstellen


Bei Tinkoff.ru verwenden die meisten Analysten Apache Zeppelin für ihre täglichen Aufgaben. Wir haben dieses Tool schon lange in Betrieb genommen und entwickeln es aktiv weiter (auch wenn wir uns zu Open Source verpflichten). Alle Mitarbeiter haben Zugriff auf ein globales Repository für Daten und Berichte, dh auf alle Analyseressourcen von Tinkoff.ru, mit der Möglichkeit, eine bequeme Analysesprache zu verwenden.

Zeppelin ist in Java geschrieben und enthält viele Interpreten moderner Sprachen und Technologien, darunter Python, Hive, Spark, Groovy, R und viele andere. Geschriebene Skripte werden in Laptops gespeichert, die aus Absätzen bestehen. Die externe Benutzeroberfläche der Arbeitsumgebung ist Jupyter sehr ähnlich. Der Hauptbildschirm der Anwendung lautet wie folgt:

Bild

Jeder Geschäftsbereich verfügt hier über ein eigenes Arbeitsverzeichnis mit unterschiedlichen Lese- und Bearbeitungsrechten.

Ein großes Plus für uns (Entwickler) ist die Verfügbarkeit einer sehr praktischen und interaktiven API . Mit der API wird das Leben einfacher. Über die API mit diesem Tool können Sie alles tun, was Sie wollen, und dabei die Web-Benutzeroberfläche umgehen. So kam die Idee, die Ergebnisse der Arbeit von Analysten in unser Projekt zu integrieren.

Kurz über unser Projekt


Unser Backend ist in Java geschrieben, Frontend in Angular 5 (da das Projekt nicht jung ist, ist ein Teil der Benutzeroberfläche in Vaadin geschrieben, das wir langsam loswerden). Der größte Teil des Projekts ist eine Webanwendung, mit der Manager zusammenarbeiten können, um Beziehungen zu Partnern zu pflegen, neue Sonderangebote zu erstellen, die Implementierung ihres KPI zu überwachen usw. Wir haben ein persönliches Partnerkonto, auf dem jeder Partner der Bank die Statistiken seiner gestarteten Sonderangebote (Rückstellungen, Aktivierung usw.) einsehen, Vereinbarungen, Konten und Dokumentbeziehungen im Allgemeinen herunterladen und unterzeichnen kann.

Bild

Wir senden die Daten über den SOAP-Webdienst an die mobile Bank und das Webportal an den Bereich „Boni“. In React ist eine Landung geschrieben, bei der jeder eine Anfrage zur Teilnahme am Treueprogramm hinterlassen kann. Wir haben verschiedene Mechanismen zur Berechnung von Cashback und Sonderraten sowie zur Integration in verschiedene Bankdienstleistungen implementiert.

Integration mit Apache Zeppelin


Um neue Partner zu gewinnen, schickten Manager Analysten traditionell einen Brief mit einer Reihe von Partnerwünschen, um eine Zielgruppe zu generieren. Analysten verwendeten zuvor geschriebene Skripte im Zoo der Sprachen und Magic Copy-Paste.

Mit der richtigen Formalisierung der Anforderungen können Sie natürlich ein universelles Skript schreiben, was wir auch getan haben. Und für die Eingabe formalisierter Daten haben sie eine praktische Benutzeroberfläche geschrieben. Es bleibt nur die Arbeit mit Apache Zeppelin in unserer Webanwendung zu implementieren. Das Arbeitsschema einer solchen Integration ist wie folgt:

Bild

Der Manager erstellt im Verlauf der Kommunikation mit dem Partner eine Aufgabe in der Anwendung und füllt die Parameter auf dem Formular aus, um die Zielgruppe zu bilden. Ein Beispiel für solche Parameter ist wie folgt:

  • Kategorien BCC- und / oder MCC-Codes, in denen der Kunde in einem bestimmten Zeitraum Transaktionen für bestimmte Beträge mit einem bestimmten Durchschnittsscheck abwickelt oder abwickelt.
  • Wettbewerbsfähige Unternehmen, in denen der Kunde in einem bestimmten Zeitraum transportiert oder transportiert.

usw.

Es gibt viele solcher Parameter und sie werden alle auf der Benutzeroberfläche formalisiert. Nach Eingabe der Anfangsparameter startet der Manager den Generierungsvorgang und der Algorithmus beginnt seine Arbeit:

  1. Da alle unsere Skripte in einem Notizbuch geschrieben sind und wir es nicht ändern möchten, klonen wir es in ein separates Verzeichnis. Zeppelin gibt uns als Antwort auf unsere Anfrage die ID des Klons zurück, über den wir den neuen Laptop kontaktieren werden. Das Klonen von Arbeitsskripten ist auch für die Verwaltung praktisch, da wir immer die Skripte betrachten können, die für eine bestimmte Aufgabe ausgeführt wurden, und das Problem finden können.
  2. Ab Version Zeppelin API 0.8 müssen Sie nach dem Erstellen eines neuen Laptops einen CRUD-Zugriff für die spätere Verwaltung festlegen.
  3. In einem der ersten Absätze eines funktionierenden Laptops werden in der Regel Variablen deklariert und ihre anfänglichen Standardwerte festgelegt, die ersetzt werden müssen. Zu diesem Zeitpunkt fügen wir unseren Absatz in den Laptop ein (mit der Initialisierung von Variablen und formalisierten Daten), den wir vor dem Senden bilden.
  4. Als nächstes starten wir mit einer leichten Anfrage nach der POST-Methode unseren Laptop zur Ausführung. Oder besser gesagt, wir führen unsere Absätze einzeln aus, um die Ausführung aller Skripte zu überwachen und den Status der Generierung der Zielgruppe in der Anwendung anzuzeigen.
  5. Am Ende des Vorgangs erhält der Manager eine Benachrichtigung (falls er den Fortschrittsstatus nicht überwacht hat). Das Ergebnis der Skripte ist die generierte CSV-Datei mit der Zielgruppe, die in einem freigegebenen Verzeichnis gespeichert ist. Beim Starten von Sonderangeboten können wir mehrere Zielgruppen generieren und diese beim Hinzufügen zum Angebot mit einem anderen Typ versehen. Und für Zielgruppen mit unterschiedlichen Typen können wir die Bedingungen und die Größe der Cashback-Rückstellung flexibel festlegen.

Ein bisschen unhöfliche Analyse


Nach groben Schätzungen führte die Automatisierung der Erfassung der Zielgruppe dazu, dass mehr als 30% der Arbeitszeit der Analysten freigegeben wurden (ohne Berücksichtigung der Zeit, die für die Kommunikation zwischen Analysten und Managern aufgewendet wurde).

Von Juni 2018 bis Januar 2019 betrug die Anzahl der abgeschlossenen Generierungsaufgaben mehr als 400. Laut den Kommunikationsmanagern verbrachten sie zwischen 0,5 und 4 Stunden, um die Zielgruppe zu bilden. Die durchschnittliche Zeit für die Zielgruppe betrug ~ 2 Stunden, und es wurden mehr als 800 Arbeitsstunden eingespart (mehr als 100 Arbeitstage).

Abschließend


Das Wichtigste, was durch die Integration mit Zeppelin erreicht werden konnte, war die Minimierung des menschlichen Faktors in allen Phasen des Zielgruppengenerierungsprozesses. Fehler bei der Bildung eines für den Partner geeigneten Publikums werden in der Regel nach Rückstellungen festgestellt. Nach dem Start des Sonderangebots ist es sehr schwierig, die anfallenden finanziellen Kosten zu minimieren, und für Fehler, die Sie gemacht haben, müssen Sie teuer bezahlen.

Ein weiteres großes Plus ist die Verlagerung der Verantwortung in Richtung der Hauptquelle des Prozesses Der „Engpass“ des menschlichen Faktors liegt jetzt in der Zone der anfänglichen Datenbildung durch den Manager. Dies bedeutet, dass derjenige, der die Generierungsaufgabe erstellt und die Anfangsparameter ausfüllt, dies mit erhöhter Aufmerksamkeit tut.

Derzeit entwickeln wir die Integration weiter und automatisieren analytische Aufgaben. Mithilfe des Remote-Starts von in Zeppelin geschriebenen Skripten generieren wir aus der Anwendung verschiedene Arten von Analyseberichten für Manager, die zuvor auf Anfrage einzeln erstellt wurden.

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


All Articles