Izdelava avtomatskega sistema za boj proti vsiljivcem na spletnem mestu (goljufije)

Zadnjih šest mesecev sem gradil sistem za boj proti goljufijam (goljufive dejavnosti itd.) brez kakršne koli začetne infrastrukture. Trenutne ideje, ki smo jih odkrili in implementirali v naš sistem, nam pomagajo odkriti in analizirati širok spekter goljufivih dejavnosti. V tem članku bi rad razpravljal o načelih, ki smo jih upoštevali, in o tem, kaj smo storili, da smo dosegli trenutno stanje sistema, ne da bi se spuščal v tehnične podrobnosti.

Načela našega sistema

Ko slišite izraza, kot sta »samodejno« in »goljufija«, verjetno pomislite na strojno učenje, Apache Spark, Hadoop, Python, Airflow in druge tehnologije iz ekosistema Apache Foundation in s področja podatkovne znanosti. Mislim, da obstaja en vidik uporabe teh orodij, ki ga pogosto spregledamo: preden jih lahko začnete uporabljati, zahtevajo določene predpogoje v vašem poslovnem sistemu. Skratka, potrebujete poslovno podatkovno platformo, ki vključuje podatkovno jezero in skladišče. Kaj pa, če takšne platforme nimate in morate še vedno razviti to prakso? Naslednja načela, o katerih bom razpravljal v nadaljevanju, so nam pomagala doseči točko, kjer se lahko osredotočimo na izpopolnjevanje svojih idej in ne na iskanje takšne, ki deluje. Vendar to še ni planota projekta. Z vidika tehnologije in izdelka je še veliko za raziskati.

Načelo 1: Poslovna vrednost na prvem mestu

V ospredje vseh naših prizadevanj smo postavili »poslovno vrednost«. Na splošno je vsak avtomatiziran analitični sistem kompleksen sistem z visoko stopnjo avtomatizacije in tehnične dovršenosti. Ustvarjanje celovite rešitve iz nič bi zahtevalo veliko časa. Odločili smo se, da bomo poslovni vrednosti in tehnološki zrelosti dali prednost. V praksi to pomeni, da najsodobnejših tehnologij ne sprejemamo kot dogmo. Izberemo tehnologijo, ki nam trenutno najbolj ustreza. Sčasoma se lahko zgodi, da bomo morali nekatere module ponovno implementirati. To je kompromis, ki smo ga sprejeli.

Načelo 2: Razširjena inteligenca

Stavim, da večina ljudi, ki niso globoko vpleteni v razvoj rešitev strojnega učenja, misli, da je cilj nadomestitev ljudi. Pravzaprav rešitve strojnega učenja še zdaleč niso popolne in jih je mogoče nadomestiti le na določenih področjih. To idejo smo že od samega začetka zavrnili iz več razlogov: neuravnoteženi podatki o goljufivih dejavnostih in nezmožnost zagotavljanja celovitega seznama funkcij za modele strojnega učenja. Nasprotno pa smo izbrali pristop obogatene inteligence. To je alternativni koncept umetne inteligence, ki se osredotoča na podporno vlogo umetne inteligence in poudarja dejstvo, da so kognitivne tehnologije namenjene izboljšanju človeške inteligence, ne pa njeni nadomestitvi. [1]

Glede na to bi razvoj celovite rešitve strojnega učenja od začetka zahteval ogromno truda, kar bi odložilo ustvarjanje vrednosti za naše podjetje. Odločili smo se, da bomo pod vodstvom naših strokovnjakov za to področje zgradili sistem z iterativno rastočo komponento strojnega učenja. Najtežji del razvoja takšnega sistema je, da mora našim analitikom zagotoviti študije primerov, ki presegajo zgolj prepoznavanje goljufivih dejavnosti. Na splošno je vsaka anomalija v vedenju strank sumljiv incident, ki ga morajo strokovnjaki raziskati in se nanj odzvati. Le del teh zabeleženih primerov je mogoče resnično opredeliti kot goljufive.

Načelo 3: Platforma za bogato analitiko

Najzahtevnejši del našega sistema je celovito preverjanje poteka dela sistema. Analitiki in razvijalci morajo enostavno pridobiti zgodovinske nabore podatkov z vsemi metrikami, uporabljenimi za analizo. Poleg tega mora podatkovna platforma omogočati preprost način za dopolnitev obstoječega nabora metrik z novimi. Procesi, ki jih ustvarjamo – in to niso le programski procesi – morajo omogočati enostavno preračunavanje prejšnjih obdobij, dodajanje novih metrik in napovedovanje podatkov. To bi lahko dosegli s kopičenjem vseh podatkov, ki jih generira naš produkcijski sistem. V tem primeru bi podatki postopoma postali nadloga. Shranjevati in zaščititi bi morali naraščajočo količino neuporabljenih podatkov. V takšnem scenariju bi podatki sčasoma postali vse bolj nepomembni, vendar bi še vedno zahtevali naša prizadevanja za njihovo upravljanje. Kopičenje podatkov za nas ni imelo smisla, zato smo se odločili za drugačen pristop. Odločili smo se, da bomo organizirali skladišča podatkov v realnem času okoli ciljnih entitet, ki jih želimo razvrstiti, in shranili le podatke, ki omogočajo validacijo najnovejših in relevantnih obdobij. Kompleksnost tega prizadevanja je v tem, da je naš sistem heterogen, z več shrambami podatkov in programskimi moduli, ki zahtevajo skrbno načrtovanje za skupno delovanje.

Koncepti oblikovanja našega sistema

V našem sistemu imamo štiri glavne komponente: sistem za vnos podatkov, računski sistem, sistem za analizo poslovne inteligence in sistem za sledenje. Služijo specifičnim, ločenim namenom, izolirane pa jih ohranjamo z upoštevanjem specifičnih razvojnih pristopov.

Izdelava avtomatskega sistema za boj proti vsiljivcem na spletnem mestu (goljufije)

Pogodbeno oblikovanje

Najprej smo se dogovorili, da se morajo komponente zanašati le na specifične podatkovne strukture (pogodbe), ki si jih izmenjujejo. To omogoča enostavno integracijo med njimi in ne nalaga posebne sestave (in vrstnega reda) komponent. V nekaterih primerih nam to na primer omogoča neposredno integracijo sistema za vnos podatkov s sistemom za sledenje opozoril. V tem primeru bo to storjeno v skladu z dogovorjeno pogodbo o opozorilih. To pomeni, da bosta obe komponenti integrirani z uporabo pogodbe, ki jo lahko uporablja katera koli druga komponenta. Za dodajanje opozoril v sistem za sledenje iz sistema za vnos podatkov ne bomo dodali dodatne pogodbe. Ta pristop zahteva uporabo vnaprej določenega minimalnega števila pogodb in poenostavlja sistem ter komunikacijo. V bistvu uporabljamo pristop, imenovan »Contract First Design« (Najprej načrtovanje pogodbe), in ga uporabljamo za pogodbe o pretakanju podatkov. [2]

Pretakanje povsod

Shranjevanje in upravljanje stanja v sistemu neizogibno uvaja kompleksnost implementacije. Na splošno mora biti stanje dostopno iz katere koli komponente, dosledno in zagotavljati najnovejšo vrednost za vse komponente ter zanesljivo s pravilnimi vrednostmi. Poleg tega bi klici v trajno shrambo za pridobitev najnovejšega stanja povečali število V/I operacij in kompleksnost algoritmov, ki se uporabljajo v naših cevovodih v realnem času. Zato smo se odločili, da čim bolj popolnoma odstranimo shranjevanje stanja iz našega sistema. Ta pristop zahteva vključitev vseh potrebnih podatkov v preneseno podatkovno enoto (sporočilo). Če moramo na primer izračunati skupno število določenih opazovanj (število operacij ali primerov z določenimi značilnostmi), ga izračunamo v pomnilniku in ustvarimo tok teh vrednosti. Odvisni moduli bodo uporabili particioniranje in paketno obdelavo za razdelitev toka po entitetah in delovali na najnovejših vrednostih. Ta pristop je odpravil potrebo po trajnem shranjevanju na disku za takšne podatke. Naš sistem uporablja Kafko kot posrednika sporočil in ga je mogoče uporabiti kot bazo podatkov s KSQL. [3] Vendar bi njegova uporaba močno povezala našo rešitev s Kafko, zato smo se odločili, da ga ne bomo uporabili. Naš izbrani pristop nam omogoča, da Kafko zamenjamo z drugim posrednikom sporočil brez večjih notranjih sprememb sistema.

Ta koncept ne pomeni, da ne uporabljamo diskovnega prostora in podatkovnih baz. Za testiranje in analizo delovanja sistema moramo na disku shraniti znaten del podatkov, ki predstavljajo različne metrike in stanja. Pomembno je, da algoritmi v realnem času niso odvisni od takšnih podatkov. V večini primerov shranjene podatke uporabljamo za analizo brez povezave, odpravljanje napak in sledenje določenim primerom in rezultatom sistema.

Težave z našim sistemom

Določene težave smo do neke mere že obravnavali, vendar zahtevajo bolj premišljene rešitve. Zaenkrat bi jih rad tukaj le omenil, saj si vsaka točka zasluži ločen članek.

  • Še vedno moramo opredeliti procese in politike, ki omogočajo zbiranje smiselnih in ustreznih podatkov za našo avtomatizirano analizo, odkrivanje in raziskovanje podatkov.
  • Vključitev rezultatov človeške analize v avtomatiziran postopek uglaševanja sistema za posodobitev z najnovejšimi podatki. To ne posodablja le našega modela, temveč tudi posodablja naše procese in izboljšuje naše razumevanje podatkov.
  • Iskanje ravnovesja med determinističnim pristopom IF-ELSE in strojnim učenjem. Nekdo je rekel: »strojno učenje je orodje za obupane.« To pomeni, da boste želeli uporabljati strojno učenje, ko ne boste več razumeli, kako optimizirati in izboljšati svoje algoritme. Po drugi strani pa deterministični pristop ne omogoča odkrivanja anomalij, ki niso bile pričakovane.
  • Potrebujemo preprost način za preverjanje naših hipotez ali korelacij med metrikami v podatkih.
  • Sistem mora imeti več ravni resnično pozitivnih rezultatov. Primeri goljufij so le podmnožica vseh primerov, ki jih sistem lahko šteje za pozitivne. Analitiki na primer želijo prejeti vse sumljive primere v pregled, le majhna podmnožica teh pa je goljufivih. Sistem mora analitikom učinkovito zagotoviti vse primere, ne glede na to, ali gre za dejansko goljufijo ali zgolj za sumljivo vedenje.
  • Podatkovna platforma mora omogočati pridobivanje zgodovinskih naborov podatkov z izračuni, ustvarjenimi in izračunanimi sproti.
  • Preprosta in samodejna namestitev katere koli sistemske komponente v vsaj treh različnih okoljih: produkcijskem, eksperimentalnem (beta) in za razvijalce.
  • Nenazadnje moramo ustvariti celovito platformo za testiranje zmogljivosti, na kateri lahko analiziramo naše modele.[4]

reference

  1. Kaj je obogatena inteligenca?
  2. Izvajanje metodologije načrtovanja, ki temelji na API-ju
  3. Kafka se preoblikuje v »bazo podatkov za pretakanje dogodkov«
  4. Razumevanje krivulje AUC-ROC

Vir: www.habr.com

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster