Principalele produse la pachet
Fiind cel mai mare schimb de criptomonede din lume, este esențial să avem un sistem de detectare a riscurilor care este rapid, dar care nu face compromisuri în ceea ce privește acuratețea.
Provocarea pe care am întâlnit-o a fost să ne asigurăm că modelele noastre folosesc întotdeauna informații actualizate, în special atunci când detectăm activități suspecte în cont în timp real.
Pentru a obține o consecvență mai puternică a caracteristicilor și o viteză de producție mai mare, acum facem presupuneri rezonabile cu privire la datele noastre și combinăm conductele noastre de lot și streaming.
Descoperiți cum conducta noastră de inginerie a funcțiilor creează caracteristici puternice și consistente pentru a detecta retragerile frauduloase pe platforma Binance.
În cadrul conductei noastre de învățare automată (ML) – despre care puteți afla mai multe într-un articol anterior – am construit recent o conductă de inginerie automată a caracteristicilor care canalizează datele brute în funcții online reutilizabile care pot fi partajate în toate modelele legate de riscuri.
În procesul de construire și testare a acestei conducte, oamenii noștri de știință de date s-au confruntat cu o problemă interesantă de consistență a caracteristicilor: Cum creăm seturi precise de caracteristici online care se schimbă dinamic în timp?
Luați în considerare acest scenariu real: un schimb de criptomonede – în acest caz, Binance – încearcă să detecteze retragerile frauduloase înainte ca banii să părăsească platforma. O soluție posibilă este să adăugați o funcție la modelul dvs. care detectează timpul scurs de la ultima operațiune specifică a utilizatorului (de exemplu, autentificarea sau legarea mobilului). Ar arata cam asa:
user_id|last_bind_google_time_diff_in_days|...
1|3,52|...
Provocarea implementării
Numărul de chei necesare pentru a calcula și actualiza funcțiile într-un magazin de funcții online este impracticabil. Utilizarea unei conducte de streaming, cum ar fi Flink, ar fi imposibilă, deoarece poate calcula doar utilizatorii cu înregistrări care vin în Kafka în prezent.
Ca un compromis, am putea folosi o conductă batch și să acceptăm o oarecare întârziere. Să presupunem că un model poate prelua funcții dintr-un magazin de caracteristici online și poate efectua inferențe în timp real în aproximativ o oră. În același timp, dacă este nevoie de o oră pentru ca un magazin de caracteristici să termine calculul și ingerarea datelor, conducta batch ar rezolva - teoretic - problema.
Din păcate, există o problemă flagrantă: utilizarea unei astfel de conducte în loturi necesită foarte mult timp. Acest lucru face ca finalizarea într-o oră să fie imposibilă atunci când sunteți cel mai mare schimb de criptomonede din lume, care se ocupă cu aproximativ o sută de milioane de utilizatori și o limită TPS pentru scrieri.
Am descoperit că cea mai bună practică este să facem presupuneri despre utilizatorii noștri, reducând astfel cantitatea de date care intră în magazinul nostru de funcții.
Reducerea problemei cu ipoteze practice
Funcțiile online sunt ingerate în timp real și se schimbă constant, deoarece reprezintă cea mai actualizată versiune a unui mediu. Cu utilizatorii activi Binance, nu ne putem permite să folosim modele cu funcții învechite.
Este imperativ ca sistemul nostru să semnaleze orice retrageri suspecte cât mai curând posibil. Orice întârziere suplimentară, chiar și cu câteva minute, înseamnă mai mult timp pentru ca un actor rău intenționat să scape cu crimele sale.
Deci, de dragul eficienței, presupunem că conectările recente prezintă un risc relativ mai mare:
Am descoperit că (250 de zile + 0,125[3/24 întârziere] zi) produce erori relativ mai mici decât (1 zi + 0,125[3/24 întârziere] zi).
Majoritatea operațiunilor nu vor depăși un anumit prag; să spunem 365 de zile. Pentru a economisi timp și resurse de calcul, omitem utilizatorii care nu s-au conectat de peste un an.
Soluția noastră
Folosim arhitectura lambda, care implică un proces în care combinăm conducte în loturi și fluxuri, pentru a obține o consistență mai puternică a caracteristicilor.
Cum arată conceptual soluția?
Batch Pipeline: Efectuează inginerie de caracteristici pentru o bază masivă de utilizatori.
Streaming Pipeline: remediază timpul de întârziere a conductei de lot pentru conectările recente.
Ce se întâmplă dacă o înregistrare este ingerată în magazinul de caracteristici online între timpul de întârziere în ingerarea lotului?
Caracteristicile noastre mențin în continuare o consistență puternică chiar și atunci când înregistrările sunt ingerate în timpul perioadei de întârziere de o oră a ingerării lotului. Acest lucru se datorează faptului că magazinul de funcții online pe care îl folosim la Binance returnează cea mai recentă valoare pe baza event_time pe care o specificați atunci când preluați valoarea.
Alătură-te echipei noastre!
Vă interesează să utilizați învățarea automată pentru a proteja cel mai mare ecosistem cripto din lume și utilizatorii săi? Consultați Binance Engineering / AI pe pagina noastră de cariere pentru locuri de muncă disponibile.
Pentru mai multe informații, citiți următoarele articole utile:
(Blog) Utilizarea MLOps pentru a construi o conductă de învățare automată end-to-end în timp real
(Blog) O privire mai atentă la magazinul nostru de funcții de învățare automată
