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

Zadnjih približno šest mesecev ustvarjam sistem za boj proti goljufijam (goljufive dejavnosti, goljufije itd.) brez začetne infrastrukture za to. Današnje ideje, ki smo jih našli in implementirali v naš sistem, nam pomagajo odkriti in analizirati številne goljufive dejavnosti. V tem članku bi rad govoril o načelih, ki smo jih upoštevali in kaj smo storili, da bi dosegli trenutno stanje našega sistema, ne da bi se poglabljal v tehnični del.

Načela našega sistema

Ko slišite izraze, kot sta "samodejno" in "goljufija", boste najverjetneje začeli razmišljati o strojnem učenju, Apache Spark, Hadoop, Python, Airflow in drugih tehnologijah v ekosistemu Apache Foundation in na področju Data Science. Mislim, da obstaja en vidik uporabe teh orodij, ki se običajno ne omenja: zahtevajo, da so v sistemu vašega podjetja vzpostavljeni določeni predpogoji, preden jih lahko uporabite. Skratka, potrebujete podatkovno platformo podjetja, ki vključuje podatkovno jezero in shranjevanje. Kaj pa, če nimate takšne platforme in morate še vedno razvijati to prakso? Naslednja načela, ki jih opisujem spodaj, so nam pomagala priti do točke, ko se lahko osredotočimo na izboljšanje svojih zamisli, namesto da bi našli delujočo. Vendar to ni "plato" projekta. S tehnološkega in produktnega vidika je v načrtu še marsikaj.

Načelo 1: Poslovna vrednost na prvem mestu

V ospredje vseh naših prizadevanj postavljamo »poslovno vrednost«. Na splošno velja, da vsak avtomatski analizni sistem spada v skupino kompleksnih sistemov z visoko stopnjo avtomatizacije in tehnične zahtevnosti. Ustvarjanje popolne rešitve vam bo vzelo veliko časa, če jo ustvarite iz nič. Odločili smo se, da na prvo mesto postavimo poslovno vrednost, na drugo pa tehnološko zrelost. V realnem življenju to pomeni, da napredne tehnologije ne sprejemamo kot dogmo. Izberemo tehnologijo, ki nam trenutno najbolj ustreza. Čez čas se bo morda zdelo, da bomo morali nekatere module na novo implementirati. To je kompromis, ki smo ga sprejeli.

2. princip: Povečana inteligenca

Stavim, da večina ljudi, ki niso globoko vpleteni v razvoj rešitev za strojno učenje, morda misli, da je cilj zamenjava ljudi. Pravzaprav rešitve strojnega učenja še zdaleč niso popolne in le na določenih področjih je možna zamenjava. To idejo smo že na začetku opustili zaradi več razlogov: neuravnoteženi podatki o goljufivi dejavnosti in nezmožnost zagotavljanja izčrpnega seznama funkcij za modele strojnega učenja. Nasprotno pa smo se odločili za možnost razširjene inteligence. To je alternativni koncept umetne inteligence, ki se osredotoča na podporno vlogo umetne inteligence in poudarja dejstvo, da so kognitivne tehnologije zasnovane za izboljšanje človeške inteligence, ne za njeno nadomestitev. [1]

S tem v mislih bi razvoj celovite rešitve strojnega učenja od samega začetka zahteval ogromno truda, kar bi odložilo ustvarjanje vrednosti za naše podjetje. Odločili smo se zgraditi sistem z iterativno rastočim vidikom strojnega učenja pod vodstvom naših strokovnjakov za področje. Težaven del razvoja takšnega sistema je, da mora našim analitikom zagotoviti študije primerov, ne le glede tega, ali gre za goljufivo dejavnost ali ne. Na splošno je vsaka anomalija v vedenju strank sumljiv primer, ki ga morajo strokovnjaki raziskati in se nekako odzvati. Le nekaj od teh zabeleženih primerov je res mogoče opredeliti kot goljufijo.

Načelo 3: Platforma bogatih vpogledov

Najtežji del našega sistema je preverjanje delovnega toka sistema od konca do konca. Analitiki in razvijalci bi morali zlahka pridobiti zgodovinske nabore podatkov z vsemi meritvami, ki so bile uporabljene za analizo. Poleg tega bi morala podatkovna platforma zagotavljati enostaven način za dopolnitev obstoječega niza kazalnikov z novim. Procesi, ki jih ustvarjamo, in to niso samo programski procesi, bi morali olajšati preračunavanje prejšnjih obdobij, dodajanje novih metrik in spreminjanje napovedi podatkov. To bi lahko dosegli z zbiranjem vseh podatkov, ki jih ustvari naš proizvodni sistem. V tem primeru bi podatki postopoma postali ovira. Vedno več podatkov, ki jih ne uporabljamo, bi morali shraniti in zaščititi. V takem scenariju bodo podatki sčasoma postajali vse bolj nepomembni, vendar še vedno zahteva naš trud, da jih upravljamo. Za nas kopičenje podatkov ni bilo smiselno in smo se odločili za drugačen pristop. Odločili smo se, da bomo okoli ciljnih subjektov, ki jih želimo razvrstiti, organizirali podatkovna skladišča v realnem času in shranili samo tiste podatke, ki nam omogočajo preverjanje najnovejših in najnovejših obdobij. Izziv pri tem prizadevanju je, da je naš sistem heterogen z več shrambami podatkov in programskimi moduli, ki zahtevajo skrbno načrtovanje, da delujejo na dosleden način.

Koncepti oblikovanja našega sistema

V našem sistemu imamo štiri glavne komponente: sistem za zaužitje, računalniški sistem, analizo BI in sistem za sledenje. Služijo posebnim izoliranim namenom, mi pa jih ohranjamo izolirane z upoštevanjem določenih razvojnih pristopov.

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

Oblikovanje na podlagi pogodbe

Najprej smo se strinjali, da se morajo komponente zanašati samo na določene podatkovne strukture (pogodbe), ki se prenašajo med njimi. To omogoča enostavno integracijo med njimi in ne vsiljuje posebne sestave (in vrstnega reda) komponent. Na primer, v nekaterih primerih nam to omogoča neposredno integracijo sprejemnega sistema s sistemom za sledenje opozorilom. V tem primeru bo to storjeno v skladu z dogovorjeno notifikacijsko pogodbo. To pomeni, da bosta obe komponenti integrirani s pogodbo, ki jo lahko uporablja katera koli druga komponenta. Ne bomo dodali dodatne pogodbe za dodajanje opozoril sistemu za sledenje iz vnosnega sistema. Ta pristop zahteva uporabo vnaprej določenega minimalnega števila pogodb in poenostavlja sistem in komunikacije. V bistvu uporabljamo pristop, imenovan »Najprej zasnova pogodbe«, in ga uporabljamo za pogodbe o pretakanju. [2]

Pretakanje povsod

Varčevanje in upravljanje stanja v sistemu bo neizogibno povzročilo zaplete pri njegovem izvajanju. Na splošno mora biti stanje dostopno iz katere koli komponente, mora biti dosledno in zagotavljati najsodobnejšo vrednost v vseh komponentah ter mora biti zanesljivo s pravilnimi vrednostmi. Poleg tega bo uporaba klicev v trajno shrambo za pridobitev najnovejšega stanja povečala količino V/I in kompleksnost algoritmov, ki se uporabljajo v naših cevovodih v realnem času. Zaradi tega smo se odločili, da iz našega sistema popolnoma odstranimo državno shranjevanje, če je to mogoče. Ta pristop zahteva, da so vsi potrebni podatki vključeni v preneseno podatkovno enoto (sporočilo). Na primer, če moramo izračunati skupno število nekaterih opazovanj (število operacij ali primerov z določenimi značilnostmi), ga izračunamo v pomnilniku in ustvarimo tok takih vrednosti. Odvisni moduli bodo uporabili particioniranje in paketno združevanje za razdelitev toka po entitetah in delovanje na najnovejših vrednostih. Ta pristop je odpravil potrebo po trajnem shranjevanju na disku za take podatke. Naš sistem uporablja Kafko kot posrednika sporočil in se lahko uporablja kot baza podatkov s KSQL. [3] Toda njegova uporaba bi našo rešitev močno povezala s Kafko, zato smo se odločili, da je ne bomo uporabili. Pristop, ki smo ga izbrali, nam omogoča zamenjavo Kafke z drugim posrednikom sporočil brez večjih notranjih sprememb v sistemu.

Ta koncept ne pomeni, da ne uporabljamo diskovnega pomnilnika in baz podatkov. Za preverjanje in analizo delovanja sistema moramo na disk shraniti precejšnjo količino podatkov, ki predstavljajo različne indikatorje in stanja. Pri tem je pomembno, da algoritmi v realnem času niso odvisni od takih podatkov. V večini primerov shranjene podatke uporabimo za analizo brez povezave, odpravljanje napak in sledenje specifičnim primerom in rezultatom, ki jih sistem ustvari.

Težave v našem sistemu

So nekateri problemi, ki smo jih do neke mere rešili, a zahtevajo bolj premišljene rešitve. Zaenkrat bi jih tukaj le omenil, saj je vsaka stvar vredna svojega članka.

  • Še vedno moramo opredeliti postopke in politike, ki pomagajo ustvariti smiselne in ustrezne podatke za našo avtomatizirano analizo, odkrivanje in raziskovanje podatkov.
  • Vnos rezultatov analize s strani osebe v procesu samodejnega prilagajanja sistema, da se posodobi z najnovejšimi podatki. To ni le posodobitev našega modela, ampak tudi posodobitev naših procesov in boljše razumevanje naših podatkov.
  • Iskanje ravnotežja med determinističnim pristopom IF-ELSE in ML. Nekdo je rekel: "ML je orodje za obupane." To pomeni, da boste želeli uporabljati ML, 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 predvidene.
  • Potrebujemo enostaven način za testiranje naših hipotez ali korelacije med meritvami v podatkih.
  • Sistem mora imeti več ravni resničnih pozitivnih rezultatov. Primeri goljufij so le del vseh primerov, ki se lahko štejejo za pozitivne za sistem. Na primer, analitiki želijo prejeti vse sumljive primere v pregled in le majhen del jih je lažnih. Sistem mora analitikom učinkovito posredovati vse primere, ne glede na to, ali gre za pravo goljufijo ali zgolj za sumljivo vedenje.
  • Podatkovna platforma bi morala biti sposobna pridobiti zgodovinske nize podatkov z izračuni, ustvarjenimi in izračunanimi sproti.
  • Preprosta in samodejna uvedba katere koli sistemske komponente v vsaj treh različnih okoljih: produkcijsko, eksperimentalno (beta) in za razvijalce.
  • In ne nazadnje. Ustvariti moramo obsežno platformo za primerjalno analizo, na kateri bomo lahko analizirali svoje modele. [4]

reference

  1. Kaj je razširjena inteligenca?
  2. Izvajanje metodologije oblikovanja API-First
  3. Kafka se spreminja v "podatkovno bazo pretakanja dogodkov"
  4. Razumevanje krivulje AUC—ROC

Vir: www.habr.com

Dodaj komentar