In den letzten etwa sechs Monaten habe ich an der Entwicklung eines Systems zur BekĂ€mpfung von Betrug (betrĂŒgerische AktivitĂ€ten, Betrug usw.) ohne jegliche Ausgangsinfrastruktur gearbeitet. Die heutigen Ideen, die wir gefunden und in unserem System implementiert haben, helfen uns, eine Vielzahl von betrĂŒgerischen AktivitĂ€ten zu erkennen und zu analysieren. In diesem Artikel möchte ich die Prinzipien vorstellen, denen wir gefolgt sind, und erlĂ€utern, was wir getan haben, um den aktuellen Stand unseres Systems zu erreichen, ohne tiefer in die technische Materie einzutauchen.
Die Prinzipien unseres Systems
Wenn Sie Begriffe wie "automatic" und "fraud" hören, denken Sie wahrscheinlich an maschinelles Lernen, Apache Spark, Hadoop, Python, Airflow und andere Technologien aus dem Apache Foundation-Ăkosystem sowie im Bereich Data Science. Ich glaube, es gibt einen Aspekt bei der Nutzung dieser Tools, der oft nicht erwĂ€hnt wird: Sie benötigen bestimmte Voraussetzungen in Ihrem Unternehmenssystem, bevor Sie mit deren Einsatz beginnen können. Kurz gesagt, Sie benötigen eine Unternehmensdatenplattform, die ein Data Lake und ein Data Warehouse umfasst. Aber was, wenn Sie eine solche Plattform nicht haben und dennoch diese Praxis entwickeln mĂŒssen? Die folgenden Prinzipien, die ich unten beschreibe, haben uns geholfen, einen Punkt zu erreichen, an dem wir uns auf die Verbesserung unserer Ideen konzentrieren können, anstatt nach einer funktionierenden Lösung zu suchen. Dennoch ist dies kein âPlateauâ des Projekts. Aus technologischer und produktmĂ€Ăiger Sicht gibt es noch viele Dinge zu erledigen.
Prinzip 1: GeschÀftswert zuerst
Im Mittelpunkt all unserer BemĂŒhungen steht der âWert fĂŒr das GeschĂ€ftâ. Im Allgemeinen gehört jedes automatisierte Analysesystem zu einer Gruppe komplexer Systeme mit hohem Automatisierungsgrad und technischer Raffinesse. Die Entwicklung einer vollstĂ€ndigen Lösung wird viel Zeit in Anspruch nehmen, wenn Sie sie von Grund auf neu erstellen. Wir haben uns entschieden, den GeschĂ€ftswert an erste Stelle zu setzen und die technologische VollstĂ€ndigkeit an zweite Stelle. Im realen Leben bedeutet das, dass wir fortschrittliche Technologien nicht als Dogma akzeptieren. Wir wĂ€hlen die Technologie, die derzeit am besten fĂŒr uns funktioniert. Im Laufe der Zeit kann es notwendig erscheinen, einige Module erneut zu implementieren. Dies ist der Kompromiss, den wir eingegangen sind.
Prinzip 2: Erweiterten menschlichen Intelligenz (augmented intelligence)
Ich wette, die meisten Menschen, die nicht tief in die Entwicklung von maschinellen Lernlösungen involviert sind, könnten denken, dass das Ersetzen von Menschen das Ziel ist. In Wirklichkeit sind maschinelle Lernlösungen weit entfernt von Perfektion, und ein Ersatz ist nur in bestimmten Bereichen möglich. Von dieser Idee haben wir von Anfang an aus mehreren GrĂŒnden Abstand genommen: unausgewogene Daten ĂŒber betrĂŒgerische AktivitĂ€ten und die Unmöglichkeit, eine umfassende Liste von Funktionen fĂŒr maschinelle Lernmodelle bereitzustellen. Im Gegensatz dazu haben wir uns fĂŒr eine erweiterte Intelligenz entschieden. Dies ist ein alternatives Konzept der KĂŒnstlichen Intelligenz, das sich auf die unterstĂŒtzende Rolle von KI konzentriert und betont, dass kognitive Technologien dazu gedacht sind, menschliche Intelligenz zu verbessern, nicht sie zu ersetzen. [1]
Angesichts dessen hĂ€tte die Entwicklung einer vollstĂ€ndigen Maschine-Learning-Lösung von Grund auf erhebliche Anstrengungen erfordert, was die Schaffung von Mehrwert fĂŒr unser GeschĂ€ft verzögert hĂ€tte. Wir beschlossen, ein System mit einem iterativ wachsenden Aspekt des maschinellen Lernens unter der Anleitung unserer Fachexperten zu entwickeln. Der komplizierte Teil der Entwicklung eines solchen Systems besteht darin, dass es unseren Analysten FĂ€lle prĂ€sentieren muss, die nicht nur in Bezug auf potenzielles Betrugsverhalten ĂŒberprĂŒft werden können. Im Allgemeinen wird jede Anomalie im Kundenverhalten als verdĂ€chtiger Fall angesehen, den die Spezialisten untersuchen und auf den sie reagieren mĂŒssen. Nur ein Teil dieser festgestellten FĂ€lle kann tatsĂ€chlich als Betrug kategorisiert werden.
Prinzip 3: Plattform fĂŒr umfassende Analytik
Der herausforderndste Teil unseres Systems ist die durchgehende ĂberprĂŒfung des Arbeitsablaufs. Analysten und Entwickler mĂŒssen problemlos DatensĂ€tze aus vergangenen ZeitrĂ€umen mit allen Metriken abrufen können, die fĂŒr die Analyse verwendet wurden. DarĂŒber hinaus sollte die Datenplattform eine einfache Möglichkeit bieten, den bestehenden Kennzahlenbestand um neue Metriken zu ergĂ€nzen. Die Prozesse, die wir erstellen â und das sind nicht nur Softwareprozesse â sollten eine unkomplizierte Berechnung vorheriger ZeitrĂ€ume, das HinzufĂŒgen neuer Metriken und das Ăndern von Datenprognosen ermöglichen. Wir könnten dies erreichen, indem wir alle Daten sammeln, die unser Produktionssystem generiert. In einem solchen Fall wĂŒrden die Daten allmĂ€hlich zur Belastung werden. Wir mĂŒssten eine wachsende Menge an Daten speichern, die wir nicht verwenden, und sie schĂŒtzen. In einem solchen Szenario werden die Daten im Laufe der Zeit immer irrelevanter, erfordern jedoch weiterhin unsere Arbeit zu deren Verwaltung. FĂŒr uns machte das Ansammeln von Daten (data hoarding) keinen Sinn, und wir entschieden uns fĂŒr einen anderen Ansatz. Wir beschlossen, Echtzeit-Datenspeicher um die ZielentitĂ€ten zu organisieren, die wir klassifizieren wollen, und nur die Daten zu speichern, die die ĂberprĂŒfung der letzten und aktuellsten ZeitrĂ€ume ermöglichen. Die KomplexitĂ€t dieser BemĂŒhungen besteht darin, dass unser System heterogen ist, mit mehreren Datenspeichern und Softwaremodulen, die eine sorgfĂ€ltige Planung fĂŒr ein konsistentes Funktionieren erfordern.
Konstruktive Konzepte unseres Systems
Unser System besteht aus vier Hauptkomponenten: ein Aufnahmesystem (ingestion system), ein Berechnungssystem (computational), eine Analyse (BI-Analyse) und ein Tracking-System (tracking system). Sie dienen spezifischen isolierten Zwecken, und wir halten sie isoliert, indem wir bestimmten EntwicklungsansÀtzen folgen.

Vertragsbasiertes Design
ZunĂ€chst einmal haben wir uns darauf geeinigt, dass die Komponenten ausschlieĂlich auf bestimmte Datenstrukturen (VertrĂ€ge) angewiesen sein sollten, die zwischen ihnen ausgetauscht werden. Dies ermöglicht eine einfache Integration und zwingt nicht zu einer bestimmten Komposition (und Reihenfolge) der Komponenten. In einigen FĂ€llen erlaubt uns dies beispielsweise, das Empfangssystem direkt mit dem Warnverfolgungssystem zu integrieren. In solchen FĂ€llen wird dies gemÀà dem vereinbarten Benachrichtigungsvertrag erfolgen. Das bedeutet, dass beide Komponenten mit einem Vertrag integriert werden, der von jeder anderen Komponente verwendet werden kann. Wir werden keinen zusĂ€tzlichen Vertrag hinzufĂŒgen, um Warnmeldungen aus dem Eingabesystem in das Verfolgungssystem einzufĂŒgen. Dieser Ansatz erfordert die Verwendung einer vorab definierten minimalen Anzahl von VertrĂ€gen und vereinfacht sowohl das System als auch die Kommunikation. Im Wesentlichen verwenden wir einen Ansatz, der als âContract First Designâ bezeichnet wird, und wenden ihn auf die Datenstreaming-VertrĂ€ge an. [2]
Streaming ĂŒberall
Die Speicherung und Verwaltung des Zustands in einem System fĂŒhrt unvermeidlich zu Komplikationen bei seiner Implementierung. Im Allgemeinen sollte der Zustand von allen Komponenten zugĂ€nglich sein, er sollte konsistent sein und den aktuellsten Wert fĂŒr alle Komponenten bereitstellen, und er sollte verlĂ€sslich mit den korrekten Werten sein. DarĂŒber hinaus fĂŒhrt die Notwendigkeit von Aufrufen an einen persistenten Speicher, um den letzten Zustand abzurufen, zu einer erhöhten Anzahl von Ein-/Ausgabeoperationen und zur KomplexitĂ€t der Algorithmen, die in unseren Echtzeit-Pipelines verwendet werden. Aus diesem Grund haben wir beschlossen, die Zustandsverwaltung, wo immer möglich, vollstĂ€ndig aus unserem System zu entfernen. Dieser Ansatz erfordert, dass alle notwendigen Daten im ĂŒbermittelten Datenblock (Nachricht) enthalten sind. Beispielsweise, wenn wir die Gesamtzahl bestimmter Beobachtungen (Anzahl der Operationen oder FĂ€lle mit bestimmten Eigenschaften) berechnen mĂŒssen, berechnen wir sie im Speicher und generieren einen Stream solcher Werte. AbhĂ€ngige Module werden Partitionierung und Batch-Verarbeitung verwenden, um den Stream nach EntitĂ€ten zu zerlegen und mit den letzten Werten zu arbeiten. Dieser Ansatz hat die Notwendigkeit beseitigt, einen permanenten Datenspeicher fĂŒr solche Daten zu haben. Unser System verwendet Kafka als Nachrichtenbrocker, und es kann als Datenbank mit KSQL verwendet werden. [3] Aber seine Verwendung wĂŒrde unsere Lösung stark an Kafka binden, und wir haben beschlossen, es nicht zu verwenden. Unser gewĂ€hlter Ansatz ermöglicht es uns, Kafka durch einen anderen Nachrichtenbroker zu ersetzen, ohne erhebliche interne Ănderungen am System vorzunehmen.
Dieses Konzept bedeutet nicht, dass wir keine DatentrĂ€ger und Datenbanken verwenden. Um die Systemleistung zu ĂŒberprĂŒfen und zu analysieren, mĂŒssen wir einen erheblichen Teil der Daten, die verschiedene Kennzahlen und ZustĂ€nde reprĂ€sentieren, auf der Festplatte speichern. Ein wichtiger Punkt ist, dass die Echtzeitalgorithmen nicht von solchen Daten abhĂ€ngen. In den meisten FĂ€llen nutzen wir gespeicherte Daten fĂŒr die Offline-Analyse, das Debugging und das Nachverfolgen spezifischer FĂ€lle und Ergebnisse, die das System liefert.
Probleme unseres Systems
Es gibt bestimmte Probleme, die wir bis zu einem bestimmten Punkt gelöst haben, aber sie erfordern durchdachtere Lösungen. Ich möchte sie nur hier erwÀhnen, da jeder Punkt eine eigene Artikel wert ist.
- Wir mĂŒssen weiterhin Prozesse und Richtlinien definieren, die zur Ansammlung bedeutungsvoller und relevanter Daten fĂŒr unsere automatische Analyse, Datenentdeckung und -untersuchung beitragen.
- Die Integration menschlicher Analyseergebnisse in den automatischen Systemanpassungsprozess zur Aktualisierung mit den neuesten Daten. Dies ist nicht nur eine Aktualisierung unseres Modells, sondern auch eine Verbesserung der Prozesse und des VerstÀndnisses unserer Daten.
- Das Finden eines Gleichgewichts zwischen einem deterministischen IF-ELSE-Ansatz und maschinellem Lernen (ML). Jemand sagte: "ML ist ein Werkzeug fĂŒr die Verzweifelten." Das bedeutet, dass Sie ML nutzen möchten, wenn Sie nicht mehr verstehen, wie Sie Ihre Algorithmen optimieren und verbessern können. Andererseits lĂ€sst der deterministische Ansatz keine Anomalien entdecken, die nicht vorhergesehen wurden.
- Wir brauchen eine einfache Möglichkeit, um unsere Hypothesen oder Korrelationen zwischen Metriken in den Daten zu ĂŒberprĂŒfen.
- Das System sollte mehrere Ebenen von echten positiven (True Positive) Ergebnissen haben. BetrugsfĂ€lle sind nur ein Teil aller FĂ€lle, die als positiv fĂŒr das System betrachtet werden können. Zum Beispiel möchten Analytiker alle verdĂ€chtigen FĂ€lle zur ĂberprĂŒfung erhalten, und nur ein kleiner Teil davon sind BetrugsfĂ€lle. Das System sollte Analytikern effizient alle FĂ€lle zur VerfĂŒgung stellen, unabhĂ€ngig davon, ob es sich um echten Betrug oder nur um verdĂ€chtiges Verhalten handelt.
- Die Datenplattform sollte die Möglichkeit bieten, DatensĂ€tze aus frĂŒheren ZeitrĂ€umen mit Berechnungen abzurufen, die in Echtzeit erstellt und berechnet wurden.
- Einfache und automatisierte Bereitstellung eines jeden Komponenten des Systems in mindestens drei verschiedenen Umgebungen: Produktions-, experimenteller (Beta) und Entwicklerumgebung.
- Und schlieĂlich, aber nicht weniger wichtig. Wir mĂŒssen eine umfangreiche Plattform zur LeistungsĂŒberprĂŒfung schaffen, auf der wir unsere Modelle analysieren können. [4]
Links
Quelle: habr.com
