Architektur des Risikoschutzsystems für maschinelles Lernen



    Unser Geschäft basiert größtenteils auf dem gegenseitigen Vertrauen zwischen Airbnb, Hausbesitzern und Reisenden. Aus diesem Grund versuchen wir, eine der vertrauenswürdigsten Communitys zu schaffen . Eines der Tools zum Aufbau einer solchen Community ist ein Überprüfungssystem, mit dem Benutzer Mitglieder finden können, die ein hohes Ansehen erworben haben.

    Wir alle wissen, dass Benutzer, die von Zeit zu Zeit versuchen, andere Leute hereinzulegen, über das Netzwerk kommen. In Airbnb befasst sich daher ein separates Entwicklungsteam mit dem Sicherheitsproblem. Die Tools, die sie erstellen, zielen darauf ab, unsere Benutzergemeinschaft vor Betrügern zu schützen, und es wird viel Wert auf die "Schnellreaktions" -Mechanismen gelegt, damit diese Personen keine Zeit haben, der Community Schaden zuzufügen.

    Jedes Netzwerkgeschäft ist einer Vielzahl von Risiken ausgesetzt. Natürlich müssen sie geschützt werden, sonst riskieren Sie die Existenz Ihres Unternehmens. Beispielsweise unternehmen Internetdienstanbieter erhebliche Anstrengungen, um Benutzer vor Spam und Zahlungsdiensten - vor Betrügern - zu schützen.

    Wir haben auch eine Reihe von Möglichkeiten, unsere Benutzer vor böswilligen Absichten zu schützen.
    1. Produktänderungen . Einige Probleme können vermieden werden, indem eine zusätzliche Benutzerüberprüfung eingeführt wird. Beispielsweise die Bestätigung eines E-Mail-Kontos oder die Implementierung einer Zwei-Faktor-Authentifizierung, um den Diebstahl von Konten zu verhindern.
    2. Abweichungserkennung . Einige Angriffe können häufig durch Ändern einiger Parameter über einen kurzen Zeitraum erkannt werden. Ein unerwarteter Anstieg der Buchungen um 1000% kann beispielsweise auf eine hervorragende Marketingkampagne oder auf Betrug zurückzuführen sein.
    3. Ein Modell, das auf Heuristik und maschinellem Lernen basiert . Betrüger verhalten sich oft nach bekannten Schemata. In Kenntnis eines Schemas kann die heuristische Analyse verwendet werden, um solche Situationen zu erkennen und zu verhindern. In komplexen und mehrstufigen Schemata werden Heuristiken zu umständlich und ineffizient, sodass hier maschinelles Lernen eingesetzt werden muss.

    Wenn Sie sich eingehender mit Online-Risikomanagement befassen möchten, lesen Sie das Buch von Ohad Samet.

    Architektur des maschinellen Lernens


    Unterschiedliche Risikovektoren erfordern möglicherweise unterschiedliche Architekturen. Angenommen, für eine Reihe von Situationen ist die Zeit nicht kritisch, aber für die Erkennung müssen große Rechenressourcen verwendet werden. In solchen Fällen ist die Offline-Architektur am besten geeignet. Im Rahmen dieses Beitrags werden jedoch nur Systeme betrachtet, die in Echtzeit und in der Nähe funktionieren. Im Allgemeinen hängt die Pipeline für maschinelles Lernen für diese Arten von Risiken von zwei Bedingungen ab:
    1. Das Framework sollte schnell und zuverlässig sein . Es ist notwendig, die mögliche Ausfallzeit und Inoperabilität auf Null zu reduzieren, und das Framework selbst muss ständig Feedback geben. Ansonsten können Betrüger die mangelnde Leistung oder das Buggy-Framework ausnutzen, indem sie mehrere Angriffe gleichzeitig starten oder in Erwartung einer bevorstehenden Überlastung oder eines Systemstillstands auf relativ einfache Weise fortlaufend angreifen. Daher sollte das Framework im Idealfall in Echtzeit funktionieren und die Wahl des Modells sollte nicht von der Geschwindigkeit der Bewertung oder anderen Faktoren abhängen.
    2. Der Rahmen muss flexibel sein . Da sich die Betrugsvektoren ständig ändern, ist es erforderlich, neue Erkennungs- und Gegenmaßnahmenmodelle schnell zu testen und umzusetzen. Der Prozess der Modellbildung sollte es den Ingenieuren ermöglichen, Probleme frei zu lösen.

    Bei der Optimierung des Echtzeit-Computing bei Transaktionen geht es in erster Linie um Geschwindigkeit und Zuverlässigkeit. Bei der Optimierung von Modellbildung und Iteration sollte mehr auf Flexibilität geachtet werden. Unsere Engineering- und Datenverarbeitungsteams haben gemeinsam ein Framework entwickelt, das die oben genannten Anforderungen erfüllt: Es ist schnell, zuverlässig bei der Erkennung von Angriffen und verfügt über eine flexible Pipeline für die Erstellung von Modellen.

    Feature-Hervorhebung




    Um unsere serviceorientierte Architektur beizubehalten, haben wir einen separaten Betrugsprognosedienst erstellt, der alle für ein bestimmtes Modell erforderlichen Funktionen hervorhebt. Wenn das System ein kritisches Ereignis registriert, z. B. das Reservieren von Wohnungen, wird eine Verarbeitungsanforderung an den Betrugsprognosedienst gesendet. Danach wählt er die Schilder in der Veranstaltung nach dem Muster der „Wohnungsreservierung“ aus und schickt sie an unseren Openscoring- Service. Er erlässt eine Beurteilung und Entscheidung auf der Grundlage der festgelegten Kriterien. Alle diese Informationen können den Prognosedienst verwenden.

    Diese Prozesse müssen zügig ablaufen, um im Gefahrenfall rechtzeitig reagieren zu können. Der Prognoseservice ist wie viele unserer anderen Backend-Services, für die die Leistung entscheidend ist, in Java geschrieben. Datenbankabfragen werden parallelisiert. Gleichzeitig brauchen wir Freiheit in Fällen, in denen umfangreiche Berechnungen zur Unterscheidung von Merkmalen durchgeführt werden. Daher wird der Prognosedienst asynchron ausgeführt, um den Buchungsvorgang usw. nicht zu blockieren. Das asynchrone Modell funktioniert gut, wenn eine Verzögerung von mehreren Sekunden keine besondere Rolle spielt. Es gibt jedoch Situationen, in denen Sie sofort reagieren und die Transaktion blockieren müssen. In diesen Fällen werden synchrone Abfragen und die Auswertung vorberechneter Merkmale angewendet. Daher besteht der Prognosedienst aus verschiedenen Modulen und eine interne API, die das Hinzufügen neuer Ereignisse und Modelle erleichtert.

    Eröffnungswertung


    Dies ist ein Java-Dienst, der die JSON-REST-Schnittstelle für JPMML-Evaluator bereitstellt . JPMML und Openscoring sind Open Source und werden unter der AGPL 3.0-Lizenz vertrieben. Das JPMML-Backend verwendet PMML , eine XML-Sprache, die mehrere gängige maschinelle Lernmodelle codiert, darunter baumartige, logarithmische Transformations-, SVM- und neuronale Netzwerke. Wir haben Openscoring in unserer Produktionsumgebung implementiert und zusätzliche Funktionen hinzugefügt: Kafka-Protokollierung, Statistiküberwachung usw.

    Was sind aus unserer Sicht die Vorteile von Openscoring:
    • Ein offenes Projekt . Dadurch können wir es an unsere Anforderungen anpassen.
    • Es unterstützt verschiedene Sätze von Bäumen . Wir haben verschiedene Trainingsmethoden getestet und festgestellt, dass zufällige Populationen ein angemessenes Maß an Genauigkeit bieten.
    • Die hohe Geschwindigkeit und Zuverlässigkeit . Während des Stresstests gingen die meisten Antworten in weniger als 10 ms ein.
    • Mehrere Modelle . Nach unserer Verfeinerung können Sie mit Openscoring viele verschiedene Modelle gleichzeitig ausführen.
    • PMML-Format . Mit PMML können unsere Analysten und Entwickler jedes kompatible maschinelle Lernpaket (R, Python, Java usw.) verwenden. Dieselben PMML-Dateien können mit Cascading Pattern verwendet werden , um Gruppen von verteilten Großmodellen zu bewerten.

    Aber Openscoring hat seine Nachteile:
    • PMML unterstützt einige Arten von Modellen nicht . Es werden nur relativ standardmäßige ML-Modelle unterstützt, sodass wir keine neuen Modelle einführen oder standardmäßige Modelle wesentlich modifizieren können.
    • Es gibt keine native Unterstützung für das Online-Lernen . Models können sich nicht on the fly trainieren. Ein zusätzlicher Mechanismus wird benötigt, um automatisch auf neue Situationen zuzugreifen.
    • Embryonale Fehlerbehandlung . PMML ist schwer zu diskutieren, das manuelle Bearbeiten einer XML-Datei ist eine riskante Aufgabe. JPMML ist dafür bekannt, dass bei Problemen mit PMML kryptische Fehlermeldungen ausgegeben werden.


    Modellbau-Pipeline




    Oben sehen Sie ein Diagramm unserer Modellierungspipeline mit PMML. Zunächst werden Zeichen aus den auf der Site gespeicherten Daten hervorgehoben. Da sich die Merkmalskombinationen, die das optimale Signal ergeben, ständig ändern, speichern wir sie im JSON-Format. Auf diese Weise können Sie den Vorgang des Ladens und Transformierens von Features anhand ihrer Namen und Typen zusammenfassen. Anschließend werden die Vorzeichen gruppiert und zur Verbesserung des Signals werden anstelle der fehlenden Variablen geeignete Variablen eingefügt. Statistisch unwichtige Zeichen werden verworfen. All diese Vorgänge nehmen viel Zeit in Anspruch, sodass Sie viele Details opfern müssen, um die Produktivität zu steigern. Anschließend werden die transformierten Features verwendet, um das Modell mit unserer bevorzugten PMML-kompatiblen Bibliothek für maschinelles Lernen zu trainieren und zu validieren. Danach wird das resultierende Modell in Openscoring geladen.

    Die Modelltrainingsphase kann in jeder Sprache mit einer PMML-Bibliothek stattfinden. Beispielsweise wird häufig das Paket R PMML verwendet . Es unterstützt viele Arten von Transformationen und Datenmanipulationsmethoden, kann jedoch nicht als universelle Lösung bezeichnet werden. Wir setzen das Modell nach dem Training als separate Stufe ein, sodass wir es manuell überprüfen müssen, was viel Zeit in Anspruch nehmen kann. Ein weiterer Nachteil von R ist die niedrige Implementierungsrate des PMML-Exporters mit einer großen Anzahl von Attributen und Bäumen. Wir haben jedoch festgestellt, dass das einfache Umschreiben eines Funktionsexports in C ++ die Ausführungszeit um das 10.000-fache von einigen Tagen auf einige Sekunden verkürzt.

    Wir sind durchaus in der Lage, die Fehler von R zu umgehen, und nutzen gleichzeitig seine Vorteile beim Aufbau einer Pipeline, die auf Python und Scikit-Learn basiert . Scikit-learn ist ein Paket, das viele Standardmodelle für maschinelles Lernen unterstützt. Es enthält auch nützliche Dienstprogramme zum Überprüfen von Mustern und Durchführen von Zeichentransformationen.

    Für uns ist Python eine besser geeignete Sprache für das situative Datenmanagement und die Feature-Extraktion als R geworden. Der automatisierte Extraktionsprozess basiert auf einer Reihe von Regeln, die in den Namen und Variablentypen von JSON codiert sind, sodass neue Features in die Pipeline eingebettet werden können, ohne den vorhandenen Code zu ändern. Bereitstellung und Tests können in Python auch automatisch mithilfe von Standard-Netzwerkbibliotheken für die Interaktion mit Openscoring durchgeführt werden. Leistungstests des Standardmodells (Precision-Recall, ROC-Kurven usw.) werden mit sklearn durchgeführt. Der PMML-Export wird nicht standardmäßig unterstützt, sodass ich den internen Exportmechanismus für bestimmte Klassifizierer neu schreiben musste. Wenn die PMML-Datei zu Openscoring hochgeladen wird, wird sie automatisch auf Übereinstimmung mit dem von ihr dargestellten Scikit-Learn-Modell getestet.

    Die Hauptstufen: Situation -> Vorzeichen -> Wahl des Algorithmus


    Das von uns erstellte Verfahren zeigte bei einigen Modellen hervorragende Ergebnisse, bei den anderen wurde jedoch ein schlechtes Maß an Genauigkeit beim Abrufen festgestellt. Zuerst haben wir festgestellt, dass der Grund Fehler sind, und versucht, mehr Daten und mehr Funktionen zu verwenden. Es gab jedoch keine Verbesserung. Wir haben die Daten eingehender analysiert und festgestellt, dass das Problem darin bestand, dass die Situationen selbst nicht korrekt waren.

    Nehmen Sie zum Beispiel Fälle mit Rückerstattungsanforderungen. Rücksendungsursachen können Situationen sein, in denen das Produkt „nicht wie beschrieben (NAD)“ oder betrügerisch ist. Es war jedoch ein Fehler, beide Gründe in einem Modell zusammenzufassen, da gewissenhafte Benutzer die Gültigkeit der NAD-Retouren dokumentieren können. Dieses Problem ist leicht zu lösen, wie viele andere auch. In vielen Fällen ist es jedoch schwierig, das Verhalten von Betrügern von den Aktivitäten normaler Benutzer zu trennen. Es müssen zusätzliche Data Warehouses und Protokollierungs-Pipelines erstellt werden.

    Für die meisten Spezialisten auf dem Gebiet des maschinellen Lernens ist dies offensichtlich, aber wir möchten noch einmal betonen: Wenn Ihre analysierten Situationen nicht vollständig korrekt sind, haben Sie bereits die Obergrenze für die Genauigkeit und Vollständigkeit der Klassifizierung festgelegt. Wenn die Situationen im Wesentlichen fehlerhaft sind, stellt sich heraus, dass diese Grenze ziemlich niedrig ist.
    Manchmal kann es vorkommen, dass Sie nicht wissen, welche Daten Sie benötigen, um diese zu ermitteln, bis Sie auf eine neue Art von Angriff stoßen. Dies gilt insbesondere, wenn Sie zuvor unter Risikobedingungen noch nicht gearbeitet haben. Oder sie haben gearbeitet, aber auf einem anderen Gebiet. In diesem Fall können Sie empfehlen, alles Mögliche zu protokollieren. In Zukunft könnten diese Informationen nicht nur nützlich sein, sondern sich sogar als unschätzbar für den Schutz vor einem neuen Angriffsvektor erweisen.

    Zukunftsaussichten


    Wir arbeiten ständig daran, unser Betrugsprognosesystem weiter zu verbessern und zu entwickeln. Die aktuelle Architektur des Unternehmens und die Menge der verfügbaren Ressourcen spiegeln sich in der aktuellen Architektur wider. Kleinere Unternehmen können es sich oft leisten, nur wenige ML-Modelle und ein kleines Analystenteam in der Produktion einzusetzen. In Sonderfällen müssen sie Daten manuell verarbeiten und Modelle trainieren. Größere Unternehmen können es sich leisten, zahlreiche Modelle zu erstellen, Prozesse weitgehend zu automatisieren und signifikante Erträge aus Online-Schulungsmodellen zu erzielen. Die Arbeit in einem extrem schnell wachsenden Unternehmen macht es möglich, in einer Landschaft zu arbeiten, die sich von Jahr zu Jahr radikal verändert. Daher müssen die Trainingsförderer ständig aktualisiert werden.

    Mit der Entwicklung unserer Werkzeuge und Techniken wird es immer wichtiger, in die weitere Verbesserung von Lernalgorithmen zu investieren. Unsere Bemühungen werden sich wahrscheinlich darauf verlagern, neue Algorithmen zu testen, das Online-Modelltraining umfassender einzuführen und das Framework zu aktualisieren, damit es mit umfangreicheren Datensätzen arbeiten kann. Einige der wichtigsten Möglichkeiten zur Verbesserung von Modellen basieren auf der Eindeutigkeit der von uns gesammelten Informationen, Attributmengen und anderen Aspekten, die wir aus offensichtlichen Gründen nicht klären können. Wir sind jedoch daran interessiert, Erfahrungen mit anderen Entwicklungsteams auszutauschen. Schreiben Sie uns!

    Jetzt auch beliebt: