SQL-Muster zum Erkennen von Transaktionsbetrug
(analytics.fixelsmith.com)- Bei der Betrugserkennung beginnt die Arbeit oft noch vor Machine Learning damit, Tabellen und Joins sauber aufzusetzen und ungewöhnliche Muster bei Geschwindigkeit, Ort, Betrag, Händler und Uhrzeit mit SQL zu finden
- Velocity findet Häufungen von Transaktionen desselben Karteninhabers in kurzer Zeit und erfordert die Anpassung von Zeitfenstern, Schwellenwerten und einer Whitelist für False Positives
- Impossible travel erkennt mit
LAG()und Distanzberechnung physisch unmögliche Bewegungen wie eine Zahlung in Chicago und 7 Minuten später in Los Angeles als starkes Signal für geklonte Karten - Betragsanomalien suchen nach Beträgen wie
$1.00,$99.99oder$499.99, die auf Kartentests oder das Umgehen von Regeln hindeuten können, für Benefit-Transaktionen aber weniger gut geeignet sind - Mit sprunghaft ansteigenden Händlerwerten, Transaktionen außerhalb der üblichen Zeiten und aus Window Functions abgeleiteten Spalten lassen sich Transaktionen über mehrere Signale hinweg bewerten und Iterationszyklen von mehreren Wochen auf wenige Stunden verkürzen
SQL-Muster zum Aufspüren von Betrugssignalen in Transaktionsdaten
- Betrugserkennung beginnt oft noch vor Machine Learning oder Graphdatenbanken mit den richtigen Tabellen und Joins sowie SQL zum Finden ungewöhnlicher Transaktionsmuster
- Lässt sich auf Daten anwenden, in denen Geld bewegt wird und Logs anfallen, etwa bei Kreditkarten, medizinischen Abrechnungen, E-Commerce, POS oder staatlichen Leistungsprogrammen
- Bei neuen Datensätzen baut man Muster meist in der Reihenfolge Velocity, Impossible Travel, Betragsanomalien, Händlerkonzentration, ungewöhnliche Uhrzeiten und auf Window Functions basierende Signale auf
1. Velocity: zu viele Transaktionen in kurzer Zeit
- Wenn gestohlene Karten oder Accounts schnell ausgeschöpft werden sollen, zeigt sich beim gleichen Karteninhaber oft ein Muster geballter Transaktionen in kurzer Zeit
- Die Basisabfrage gruppiert die Transaktionen der letzten 30 Tage stundenweise und sucht Zeiträume, in denen die Anzahl der Transaktionen pro
cardholder_ideinen Grenzwert überschreitet - Die wichtigsten Stellgrößen sind Größe des Zeitfensters und Schwellenwert für die Transaktionsanzahl
- Versionen mit 1 Minute, 5 Minuten und 1 Stunde lassen sich parallel ausführen und vergleichen
- Gruppen für Kartentests bündeln Transaktionen oft in wenigen Sekunden, während Gruppen für Benefit-Betrug über einen halben Tag verteilt agieren können
- Auch normale Nutzer können den Grenzwert überschreiten
- Betreiber von Verkaufsautomaten
- Personen, die Prepaid-Karten in großer Zahl aufladen
- Nach der ersten Analyse ist deshalb eine Whitelist für False Positives nötig
- Ein Sliding-Window-Ansatz berechnet mit
COUNT(*) OVER (...) RANGE BETWEEN INTERVAL '5 minutes' PRECEDING AND CURRENT ROWdie Anzahl der Transaktionen in den letzten 5 Minuten QUALIFYfunktioniert in Snowflake, BigQuery, Databricks und Teradata- In Postgres muss man die gesamte Abfrage in eine CTE kapseln und außen filtern
2. Impossible travel: physisch unmögliche Bewegung
- Wenn eine Karte in Chicago verwendet wird und 7 Minuten später in Los Angeles, ist wahrscheinlich mindestens eine der beiden Transaktionen gefälscht
- Dieses Muster ist ein starkes Signal für geklonte Karten, denn es gibt fast keinen legitimen Grund, warum dieselbe Karte in wenigen Minuten an zwei weit entfernten Orten auftaucht
- Die Abfrage nutzt
LAG(), um Zeit und Ort der vorherigen Transaktion zu holen, und berechnet dann Distanz und Zeit zwischen der vorherigen und der aktuellen Position haversineist eine Funktion zur Berechnung der Großkreisentfernung (great-circle distance)- Die meisten Data Warehouses stellen sie bereit
- Falls nicht, lässt sie sich auch selbst implementieren
- Ein beispielhafter Schwellenwert ist 600mph
- Ein Verkehrsflugzeug fliegt mit etwa 575mph Reisegeschwindigkeit, also wäre selbst ein Flug zu langsam
- Senkt man auf 100mph, kann man auch schnelle Bodenbewegungen erfassen, beginnt aber legitime Fälle wie reale Flugreisende oder Eltern mit ihren Kindern mitzuerfassen
- In derselben Familie gibt es weitere Signale
- Transaktionen in zwei weit entfernten Städten desselben Bundesstaats innerhalb von 5 Minuten können auf lokale Klon-Gruppen hinweisen
- Transaktionen in mehreren ZIP-Codes innerhalb einer Stunde können auf eine Skimmer-Gruppe in einer Region hindeuten
- Grenzüberschreitende Transaktionen innerhalb von 10 Minuten können ein Signal für internationale Gruppen sein
3. Amount anomalies: ungewöhnliche Betragsbereiche
- Bei Betrug gibt es Betragsmuster, die häufig auftreten, bei normaler Nutzung aber selten sind
- Die Beispielbedingungen suchen nach folgenden Betragsbereichen
$1.00,$5.00,$10.00$99.50oder mehr und unter$100.00$499.50oder mehr und unter$500.00
- Kleine glatte Dollar-Beträge sind meist ein Signal für Kartentests
- Es geht darum zu prüfen, ob aus einem Kartendump stammende Kartennummern noch funktionieren, bevor sie weiterverkauft werden
- Echte Karteninhaber kaufen nur selten etwas für genau
$1.00 - Ein Kaffee kostet eher
$4.73, Tanken eher$52.81, also keine exakt gerundeten Beträge
- Beträge knapp unter einem Grenzwert haben eine andere Bedeutung
$99.99kann darauf hindeuten, dass jemand eine Schwelle von$100umgehen will, ab der vielerorts ein Ausweis geprüft wird$499.99kann darauf hindeuten, dass jemand ein tägliches ATM-Limit von$500umgehen will- Das ist ein Signal dafür, dass der Akteur die Regeln kennt und bewusst darunter bleibt
- Bei Benefit-Transaktionen helfen gerundete Betragsmuster deutlich weniger
- Benefits werden nicht auf dieselbe Weise per Kartentest geprüft
- Wichtiger sind dort meist doppelte Empfänger
4. Suspicious merchants: auffällige Konzentration auf Händlerebene
- Wenn ein bestimmter Kartenleser, etwa an einer Zapfsäule, mit einem Skimmer infiziert wird, führt das nicht zu einem Einzelfall, sondern oft zu Dutzenden Betrugsfällen
- Alle Karten, die diesen Leser über mehrere Wochen genutzt haben, können in einer fremden Datenbank gelandet sein
- Aus Händlersicht zeigt sich das als kurzfristiger sprunghafter Anstieg der Zahl nicht miteinander verbundener Karten sowie höherer Transaktionsbeträge als üblich
- Ein einfaches Regelbeispiel gruppiert die letzten 7 Tage nach Händler und Stunde und berechnet
- Anzahl eindeutiger Karten
- Gesamtzahl der Transaktionen
- Gesamtsumme der Transaktionen
- Gesucht werden Stunden, in denen die Zahl eindeutiger Karten über 20 und die Gesamtsumme über
$5000liegt
- Statische Schwellenwerte haben ein Problem bei der Größenanpassung
- Costco kann diesen Wert in 90 Sekunden überschreiten
- Ein Antiquariat fast nie
- Besser ist es, jeden Händler mit seiner eigenen historischen Baseline zu vergleichen
- Die letzten 60 Tage werden stundenweise aggregiert
- Für jeden Händler wird die durchschnittliche Zahl eindeutiger Karten über die letzten 168 Stunden-Buckets berechnet
- Gesucht werden Zeiträume, in denen die aktuelle Zahl eindeutiger Karten mehr als das Dreifache des historischen Durchschnitts beträgt
- 168 Stunden-Buckets entsprechen den stündlichen Intervallen der letzten 7 Tage
- Tages- und Wochen-Saisonalität ist wichtig
- Selbst im selben Café unterscheiden sich Dienstag 14 Uhr und Samstag 9 Uhr in der Baseline
- Als Startpunkt kann das Dreifache des Üblichen dienen
- Locker genug, um nicht von Alerts überflutet zu werden
- Streng genug, um tatsächlich ungewöhnliche Stunden zu finden
5. Off-hours: Transaktionen außerhalb der üblichen Zeiten einer Person
- Die meisten Menschen haben gewisse Ausgabengewohnheiten
- Wenn jemand mit einem 9-bis-5-Job plötzlich um 3 Uhr morgens tankt, kann das bedeuten, dass die Karte von jemand anderem genutzt wird oder die Person auf Reisen ist
- Ob jemand auf Reisen ist, lässt sich mit weiteren Signalen prüfen
- Die Abfrage ermittelt zunächst für die letzten 90 Tage pro Karteninhaber und Stunde die Transaktionsanzahl und erkennt nur Stunden mit mindestens 2 Transaktionen als übliche Zeitfenster an
- Danach werden neue Transaktionen erkannt, deren Uhrzeit außerhalb des Bereichs
earliest_hourbislatest_hourdieses Karteninhabers liegt - Die Bedingung „mindestens 2 Transaktionen in dieser Stunde“ in der inneren Abfrage ist wichtig
- So wird verhindert, dass ein einmaliges nächtliches Tanken vor 3 Monaten in die übliche Zeit fällt
- Die Schwelle orientiert sich an echten Gewohnheiten statt an „einmal vorgekommen“
- Der Nachteil ist, dass historische Daten nötig sind
- Neue Accounts haben keine Baseline
- Für neue Accounts kann man Zeitmuster der Gesamtpopulation verwenden oder dieses Muster auslassen, bis genug Historie vorhanden ist
6. Signale mit Window Functions kombinieren
- Das Muster mit Window Functions ist kein eigener Betrugstyp, sondern Vorarbeit, um die fünf vorherigen Muster in kombinierbare Signale zu verwandeln
- Pro Transaktion lassen sich etwa folgende abgeleiteten Spalten erzeugen
- Verstrichene Zeit seit der vorherigen Transaktion:
timestamp - LAG(timestamp) - Ob sich der Händler geändert hat: Vergleich von vorherigem
merchant_idund aktuellemmerchant_id - Kumulierte Summe der letzten 24 Stunden:
SUM(amount) OVER (...) - Die wievielte Transaktion des Tages es ist:
ROW_NUMBER()
- Verstrichene Zeit seit der vorherigen Transaktion:
- Wenn solche Spalten materialisiert sind, schrumpfen Betrugsregeln auf einfache Filterausdrücke
- Gruppen für Kartentests lassen sich mit folgenden Bedingungen finden
- mindestens die fünfte Transaktion des Tages
- weniger als 60 Sekunden seit der vorherigen Transaktion
- anderer Händler als bei der vorherigen Transaktion
- Wenn sich neue Betrugshypothesen nicht als Engineering-Ticket, sondern als SQL-Filter formulieren lassen, verkürzt sich der Iterationszyklus von mehreren Wochen auf wenige Stunden
- Dadurch lässt sich mehr Betrug schneller erkennen
Wie die Muster zusammen verwendet werden
- Kein einzelnes Muster ist für sich genommen ausreichend
- Jedes Muster hat klare Grenzen
- Velocity erzeugt False Positives wie Betreiber von Verkaufsautomaten
- Geografisch unmögliche Bewegungen übersehen Betrug innerhalb einer einzigen Metropolregion
- Betragsanomalien funktionieren außerhalb des Kontexts von Kartentests oft schlecht
- Regeln für ungewöhnliche Uhrzeiten brauchen Historie
- In der Praxis funktioniert es, alle Muster laufen zu lassen und jede Transaktion über mehrere Signale hinweg zu bewerten
- Transaktionen, die bei drei oder vier Signalen auffallen, sind fast immer Betrug
- Transaktionen mit nur einem Signal können auch nur eine ungewöhnliche, aber legitime Nutzung eines reisenden Karteninhabers sein
- Wer neu mit Betrugserkennung beginnt, sollte mit Velocity anfangen
- Es deckt eine nützliche Menge an Betrug auf
- Es erfasst relativ wenig normale Aktivität
- Auch die Ausführungskosten sind gering
- Wenn die Muster 1 bis 5 bereits vorhanden sind, ist die nächste Investition in rohe Spalten auf Basis von Window Functions sinnvoll
- Einmal erstellt, können alle Analysten im Team sie nutzen
- Das Hinzufügen des nächsten Betrugsmusters wird dadurch kein eigenes Projekt mehr
Worauf man achten sollte
-
Umgang mit NULL
- Reale Transaktionstabellen verwenden
NULLoft nicht so, wie man es aus SQL-Einführungen kennt - Viele Legacy-Systeme nutzen stattdessen Sentinel-Werte wie
9999-12-31für „kein Enddatum“ oder0001-01-01für „kein Startdatum“ - Wer mit
IS NULLfiltert, kann solche Zeilen unbemerkt übersehen - Deshalb sollte man erst die Konventionen der jeweiligen Tabelle prüfen und dann die
WHERE-Bedingung schreiben
- Reale Transaktionstabellen verwenden
-
False Positives
- Jede Regel kann echte Karteninhaber erfassen, die sich ungewöhnlich, aber legal verhalten
- Markierte Fälle brauchen menschliche Prüfung
- Es braucht eine Feedback-Schleife, um Schwellenwerte anhand echter und nicht echter Betrugsfälle anzupassen
- Ein automatisches Blocken auf Basis einer einzelnen Regel kann Kunden kosten
-
Datenschutz
- Wenn die Daten PII enthalten, müssen die geltenden Richtlinien zur Datennutzung eingehalten werden
- Zuerst sollte man mit anonymisierten oder Sample-Daten arbeiten und Produktionsdaten erst nach Freigabe verwenden
-
Kosten
- Window Functions auf großen Partitionen sind nicht billig
- Deshalb sollte man zuerst nach Datumsbereich filtern und danach Window Functions anwenden
- Wer erst
LAG()über zwei Jahre Transaktionen des gesamten Datensatzes laufen lässt und dasWHEREspäter anhängt, kann das Credit-Budget des Warehouses schnell aufbrauchen
1 Kommentare
Hacker-News-Kommentare
Ob echte Karteninhaber tatsächlich fast nie etwas für genau 1,00 $ kaufen, hängt doch wohl davon ab, wie der Händler seine Preise festlegt
Wenn jemand auf einer Website etwas kauft, um eine gestohlene Kreditkarte zu testen, kann der Käufer den Preis nicht frei bestimmen
Außerdem wirkt das zu stark auf Situationen wie in den USA zugeschnitten, wo Steuern nicht im Preis enthalten sind; in anderen Regionen sind glatte Preise sehr üblich
Ich bezweifle auch, dass die anderen Kriterien gut funktionieren. Wenn man zum Beispiel Personen markiert, die in den letzten 90 Tagen außerhalb der Zeitfenster transagiert haben, in denen sie normalerweise mehr als zwei Transaktionen tätigen, würde man dann nicht etwa die Hälfte der Menschen markieren?
Es ist unklar, ob das ein Text ist, der komplexes Fachwissen in übermäßig einfache SQL-Abfragen herunterbricht, oder ob alles nur Vermutung und Erfindung ist. Die Sätze „Sechs SQL-Muster zur Erkennung von Transaktionsbetrug“ und „Hier steht nichts, woran ich tatsächlich gearbeitet habe oder das ich selbst gesehen habe“ widersprechen sich
Normalerweise kauft man nicht um 2 Uhr morgens Benzin, Kaffee und Snacks, aber wenn das sehr selten doch passiert, ist es wahrscheinlich ein persönlicher Notfall, und in so einem Moment möchte man nicht auch noch die Bank anrufen
Ich verstehe, dass opportunistische Diebe zu dieser Zeit ebenfalls aktiv sein können, aber die Kosten von False Positives gibt es eben auch
Außerdem gibt es Tankstellen, die vorab festgelegte Beträge wie 10, 20 oder 50 Euro verlangen
Daraufhin wurde meine Karte wegen Betrugsverdacht gesperrt, was ziemlich nervig war. Nichts, womit ich mich um 2 Uhr morgens betrunken beschäftigen wollte
Vielleicht hat man mich vor mir selbst geschützt, aber lästig war es trotzdem
Und ist nicht genau diese Art heuristischer Mustererkennung, bei der man keine nahezu 100%ige Genauigkeit erwartet, eigentlich etwas, worin AI gut sein sollte?
Das Kriterium „Grenzübertritt innerhalb von 10 Minuten bedeutet internationale Organisation“ könnte auch auf ganz normale Menschen zutreffen, die in Grenzregionen Europas leben
Selbst wenn man Card-not-present-Transaktionen ausnimmt, scheint hier fälschlich angenommen zu werden, dass alle Händlerstandorte exakt gesetzt sind, alle Verkäufe in stationären Läden stattfinden, es keinen mobilen Verkauf gibt und alle Transaktionen online verarbeitet werden
Wenn man bis zum Ende liest, zeigt sich, dass der Inhalt leer ist und die Ratschläge sich gegenseitig widersprechen. Das wirkt fast sicher wie LLM-generierter Text
Einerseits heißt es, „dein Team“ solle sich nie auf ein einzelnes Muster verlassen, andererseits könne schon Muster 1 allein „eine nützliche Menge an Betrug“ aufdecken
Dazu kommen seltsame Sätze wie „Jeder Analyst in deinem Team wird sie verwenden, also Window Functions, und das Hinzufügen des nächsten Betrugsmusters wird kein Projekt mehr sein“
Außerdem gibt es eine wenig relevante Diskussion darüber, dass
IS NULL-Filterung womöglich nicht angewendet wird, obwohl fast keines der Beispiele überhauptIS NULLnutzt, und das einzige Beispiel, das es nutzt, steht in einem anderen KontextInsgesamt ist es ein schwacher und zu langer Text
Hacker News, das sollte man ansprechen
„Fixel Smith“ ist eine von AI erzeugte Figur, und der Text hat mit Betrugsanalyse fast nichts zu tun. Dieser Name wird für nahezu jede vorstellbare Identität verwendet: Musiker (1), Romanautor (2), Betrugsanalyst (3), Influencer (4) usw.
Der Beitrag hat über 220 Punkte und mehr als 70 Kommentare, aber fast niemand hat bemerkt, dass er ziemlich offensichtlich gefälscht ist, und niemand scheint gesehen zu haben, dass es sich um eine AI-generierte Person handelt
https://www.amazon.it/Forged-Soundtrack-Explicit-Fixel-Smith...
https://fixelsmith.com
https://analytics.fixelsmith.com/
https://www.instagram.com/fixeltales/
Ich frage mich, ob diese AI-Flut eine unangenehme Wahrheit über das Urteilsvermögen der Community offenlegt oder ob es eher ein Versagen der bisherigen Schutzmechanismen ist, das man einfach beheben könnte
Wenn man annimmt, dass alle Kommentare in gutem Glauben geschrieben wurden, ist es ziemlich beunruhigend, dass selbst hier die AI-Kompetenz so niedrig ist
Die Romane haben fast nichts mit den Analyseartikeln zu tun, und die Analyseartikel selbst scheinen einen LLM-Stil zu haben, weshalb alles verdächtig wirkt. Angesichts dessen, dass sich der Originaltext mit Betrug befasst, ist das ironisch
Ehrlich gesagt beachte ich meist nicht einmal die Byline, geschweige denn andere Teile der Website
Ob der Inhalt erfunden ist oder nicht, ist unklar, aber man kann den Textinhalt kritisieren, ohne darüber zu spekulieren, ob ihn ein LLM geschrieben hat oder ob es Fiktion ist. Es gibt viel konkretere Mängel
Wir entwickeln das Open-Source-Sicherheits-Framework tirreno
Ich habe Zweifel an dem hier beschriebenen Ansatz. Unmögliche Reisen sind zum Beispiel eine legitime und weit verbreitete Technik, aber sie betrifft das Online-Nutzerverhalten auf Basis von IP-Adressen
In tirreno gibt es separate Regeln für Fälle, in denen klar ist, dass eine IP von Apple Relay oder VPN/Tor kommt, und das sind getrennte Flags
Ich denke, einige oder alle Beispiele sind LLM-generiert. Der Kontext ist durcheinander, und Orte, die bei Kartenzahlungen in großem Stil GPS-Positionen sammeln, gibt es in der Realität nicht
Das ist eher regelbasierte Logik, die als SQL-Abfragen kodiert wurde, ohne zugrunde liegende Daten
Es gibt jede Menge Schwellwerte, aber keine Daten, die zeigen, dass diese Schwellwerte sinnvoll sind
Die Behauptung in der Art von „Betrugserkennung in Transaktionsdaten ist größtenteils SQL, nicht Machine Learning, keine Graph-Datenbank und auch nichts, was Gartner dieses Jahr hochjubelt“ ist nur dann gerechtfertigt, wenn man den gesamten Bereich der Program Integrity behandelt
Wenn damit das Problemfeld gelöst wird, ist ein einfacherer und gröberer Ansatz womöglich besser
Fintech-Kunden wollen in der Regel wissen, ob eine gerade stattfindende Transaktion betrügerisch ist, und sie wollen innerhalb weniger Millisekunden eine Antwort über hochdimensionale Daten hinweg. Das ist ein Arbeitsmaßstab, bei dem relationale Datenbanken solche Echtzeitbeschränkungen schwer erfüllen können; stattdessen werden sie für andere Zwecke wie das Laden historischer Daten genutzt
Deshalb kommen In-Memory-Datenbanken, Stream-Processing-Engines und auch Machine Learning ins Spiel
Trotzdem sind einige Punkte des Autors valide, besonders das Problem, mit verrauschten Warnmeldungen umzugehen; das ist ein allgemeines Problem, das über Performance Engineering hinausgeht, daher bin ich auf den nächsten Artikel gespannt
In der Prävention ist man immer durch Latenzanforderungen, verfügbare Daten und ein unvollständiges Bild des Nutzerverhaltens eingeschränkt. Mit Machine Learning und Regeln trifft man schnelle Entscheidungen und deckt die meisten Fälle ab, aber wegen dieser Einschränkungen kann man nicht jeden Betrug präzise verhindern
Erkennung beschäftigt sich mit den Folgen danach. Üblicherweise analysiert ein Analystenteam genehmigte Transaktionen, um nach Anzeichen von Betrug zu suchen. Das ist besonders wichtig bei Betrugsarten ohne externe Signale wie Chargebacks oder Kundenbeschwerden. Plattformintegrität ist ein solches Beispiel, und auch Geldwäschebekämpfungssysteme im Fintech müssen aktiv nach Betrug suchen
Dass beide komplementär sind, liegt auch daran, dass erkannte Transaktionen die Labels liefern, mit denen das nächste Präventionsmodell trainiert und bewertet wird
Es wurde gesagt, wenn eine Karte in Chicago durchgezogen und 7 Minuten später in Los Angeles erneut genutzt wird, müsse eine der beiden Transaktionen gefälscht sein; ich frage mich, wie das bei Online-Shopping funktioniert
Wenn ich auf dem Sofa sitze und etwas bei Amazon kaufe, welcher Ort wird dann eingetragen?
Und es scheint auch Grenzfälle zu geben, in denen Ehepartner ein Online-Konto gemeinsam nutzen und eine Person auf Reisen mit den gespeicherten Kartendaten einkauft
Händler und Banken können diesen Unterschied erkennen
Dass „dieser Ansatz nicht funktioniert, bis genug Historie vorhanden ist, und neue Konten keine Baseline haben“, ist ein unterschätzter Kundenerfahrungsfaktor
Wenn meine Karte abgelehnt wird, weil ich Neukunde bin oder ein neues Muster zeige, fühlt es sich an, als würde die Software gut arbeiten
Wenn aber eine Transaktion abgelehnt wird, obwohl es eine von mir bestätigte Historie gibt, dann nervt mich ein naiver und paranoider Algorithmus
Betrügerische Transaktionen führen am Ende zu Rückbuchungen oder Erstattungen, und die Verluste trägt die Bank. Eine abgelehnte Transaktion erzeugt nur einen verärgerten Kunden, der sich beschwert und es bald wieder vergisst. Die Last der externalisierten Kosten landet also beim Kunden
Deshalb haben Banken einen Anreiz, auf der vorsichtigeren Seite zu irren und Transaktionen auch bei False Positives abzulehnen
Ist der Kern von Machine Learning nicht gerade, solche Regeln aus Daten zu lernen?
Der richtige Ansatz wäre aus meiner Sicht, mit einem Machine-Learning-Modell Muster zu finden, die mit Betrug korrelieren, und dann zu bewerten, welche davon plausibel sind. So könnte man sogar neue Hypothesen entdecken
Ein menschlicher Analyst sollte dem Compliance-Team in einer 5-Minuten-E-Mail erklären können, warum eine bestimmte Transaktion abgelehnt wurde und was man anders hätte tun müssen, um die nachteilige Entscheidung zu vermeiden
Wenn man mit Machine Learning ein Problem behebt, entstehen oft zwei neue, noch nicht klar sichtbare Probleme. In Bezug auf Regressionen oder unerwartete Nebenwirkungen, wenn sich Dinge im Lauf der Zeit ändern, überrascht SQL im Allgemeinen deutlich weniger