Сайттағы зиянкестермен күресудің автоматты жүйесін құру (алаяқтық)

Соңғы алты ай бойы мен бұл үшін бастапқы инфрақұрылымсыз алаяқтықпен (алаяқтық әрекет, алаяқтық және т.б.) күресу жүйесін жасап жатырмын. Біздің жүйеде тапқан және іске асырған бүгінгі идеялар көптеген алаяқтық әрекеттерді анықтауға және талдауға көмектеседі. Бұл мақалада мен техникалық бөлікке үңілмей-ақ, біз ұстанған принциптер және жүйеміздің қазіргі жағдайына жету үшін не істегеніміз туралы айтқым келеді.

Біздің жүйенің принциптері

«Автоматты» және «алаяқтық» сияқты терминдерді естігенде, сіз Apache Foundation экожүйесіндегі және Data Science саласындағы машиналық оқыту, Apache Spark, Hadoop, Python, Airflow және басқа технологиялар туралы ойлай бастайсыз. Менің ойымша, бұл құралдарды пайдаланудың әдетте айтылмайтын бір аспектісі бар: оларды пайдалану үшін кәсіпорын жүйеңізде белгілі бір алғышарттардың болуын талап етеді. Қысқасы, сізге деректер көлі мен сақтауды қамтитын кәсіпорын деректер платформасы қажет. Бірақ сізде мұндай платформа болмаса және әлі де осы тәжірибені дамыту қажет болса ше? Төменде сипаттайтын келесі принциптер бізге жұмыс істейтін идеяны табудың орнына, өз идеяларымызды жақсартуға көңіл бөлуге болатын деңгейге жетуге көмектесті. Дегенмен, бұл жобаның «платосы» емес. Жоспарда технологиялық және өнім жағынан да көп нәрсе бар.

1-қағидат: Біріншіден, іскерлік құндылық

Біз барлық күш-жігерімізде «іскерлік құндылықты» бірінші орынға қоямыз. Жалпы алғанда, кез келген автоматты талдау жүйесі автоматтандыру деңгейі және техникалық күрделілігі жоғары күрделі жүйелер тобына жатады. Толық шешімді жасау, егер сіз оны нөлден жасасаңыз, көп уақытты алады. Біз бизнес құндылығын бірінші, ал технологиялық жетілуді екінші орынға қоюды шештік. Шынайы өмірде бұл озық технологияны догма ретінде қабылдамайтынымызды білдіреді. Біз қазіргі уақытта біз үшін ең қолайлы технологияны таңдаймыз. Уақыт өте келе кейбір модульдерді қайта енгізуге тура келетін сияқты көрінуі мүмкін. Бұл біз қабылдаған ымыра.

2-қағида: Толықтырылған интеллект

Мен машиналық оқыту шешімдерін әзірлеуге терең қатысы жоқ адамдардың көпшілігі адам ауыстыруды мақсат деп ойлауы мүмкін деп ойлаймын. Шындығында, машиналық оқыту шешімдері мінсіз емес және тек белгілі бір салаларда ауыстыруға болады. Біз бұл идеядан бірнеше себептерге байланысты бас тарттық: алаяқтық әрекет туралы теңгерімсіз деректер және машиналық оқыту үлгілері үшін мүмкіндіктердің толық тізімін беру мүмкін еместігі. Керісінше, біз кеңейтілген интеллект опциясын таңдадық. Бұл жасанды интеллекттің баламалы тұжырымдамасы, ол AI-ның қосалқы рөліне назар аударады, когнитивті технологиялар адам интеллектін алмастыруға емес, жақсартуға арналғанын атап көрсетеді. [1]

Осыны ескере отырып, машиналық оқытудың толық шешімін басынан бастап әзірлеу біздің бизнес үшін құндылықты жасауды кешіктіретін үлкен күш-жігерді қажет етеді. Біз домен мамандарының жетекшілігімен машиналық оқытудың қайталанатын аспектісі бар жүйені құруды шештік. Мұндай жүйені әзірлеудің қиын жағы - ол біздің талдаушыларға бұл алаяқтық әрекет пе, жоқ па деген сұраққа ғана емес мысалдарды ұсынуы керек. Тұтастай алғанда, тұтынушылардың мінез-құлқындағы кез-келген ауытқу мамандарға тексеріп, қандай да бір түрде жауап беруі керек күдікті жағдай болып табылады. Осы тіркелген жағдайлардың тек бірнешеуі ғана алаяқтық ретінде жіктелуі мүмкін.

3-қағида: Rich Insights платформасы

Жүйенің ең қиын бөлігі - жүйенің жұмыс процесін түпкілікті тексеру. Талдаушылар мен әзірлеушілер талдау үшін пайдаланылған барлық көрсеткіштермен тарихи деректер жиынын оңай алуы керек. Сонымен қатар, деректер платформасы бар көрсеткіштер жинағын жаңасымен толықтырудың оңай жолын қамтамасыз етуі керек. Біз жасайтын процестер және бұл жай ғана бағдарламалық қамтамасыз ету процестері емес, алдыңғы кезеңдерді қайта есептеуді, жаңа көрсеткіштерді қосуды және деректер болжамын өзгертуді жеңілдетуі керек. Біз бұған біздің өндірістік жүйеміз жасайтын барлық деректерді жинақтау арқылы қол жеткізе аламыз. Мұндай жағдайда деректер бірте-бірте кедергіге айналады. Біз пайдаланбайтын деректердің өсіп келе жатқан көлемін сақтап, оны қорғауымыз керек. Мұндай сценарийде деректер уақыт өте келе маңызды емес болады, бірақ оны басқару үшін біздің күш-жігеріміз қажет. Біз үшін деректерді жинақтау мағынасы жоқ және біз басқа тәсілді қолдануды шештік. Біз жіктегіміз келетін мақсатты нысандардың айналасында нақты уақыттағы деректер қоймаларын ұйымдастыруды және ең соңғы және жаңартылған кезеңдерді тексеруге мүмкіндік беретін деректерді ғана сақтауды шештік. Бұл әрекеттің қиындығы біздің жүйенің бірнеше деректер қоймаларымен және жүйелі жұмыс істеу үшін мұқият жоспарлауды қажет ететін бағдарламалық модульдерден тұратын гетерогенді болуы.

Біздің жүйенің дизайн тұжырымдамалары

Біздің жүйеде төрт негізгі компонент бар: қабылдау жүйесі, есептеу жүйесі, BI талдауы және бақылау жүйесі. Олар белгілі бір оқшауланған мақсаттарға қызмет етеді және біз оларды белгілі бір даму тәсілдерін ұстану арқылы оқшаулаймыз.

Сайттағы зиянкестермен күресудің автоматты жүйесін құру (алаяқтық)

Келісімшарт негізіндегі дизайн

Біріншіден, біз құрамдас бөліктер олардың арасында берілетін белгілі бір деректер құрылымдарына (келісімшарттарға) ғана сенуі керек деп келістік. Бұл олардың арасында біріктіруді жеңілдетеді және компоненттердің белгілі бір құрамын (және тәртібін) жүктемейді. Мысалы, кейбір жағдайларда бұл қабылдау жүйесін ескертулерді бақылау жүйесімен тікелей біріктіруге мүмкіндік береді. Мұндай жағдайда бұл келісілген хабарлама шартына сәйкес орындалады. Бұл екі құрамдас кез келген басқа құрамдас пайдалана алатын келісім-шарт арқылы біріктірілетінін білдіреді. Енгізу жүйесінен бақылау жүйесіне ескертулер қосу үшін біз қосымша келісім-шарт қоспаймыз. Бұл тәсіл келісім-шарттардың алдын ала белгіленген ең аз санын пайдалануды талап етеді және жүйе мен коммуникацияларды жеңілдетеді. Негізінде, біз «Келісімшарттың бірінші дизайны» деп аталатын әдісті қолданып жатырмыз және оны ағынды келісімшарттарға қолданамыз. [2]

Барлық жерде ағын

Жүйедегі мемлекетті сақтау және басқару оны жүзеге асыруда міндетті түрде қиындықтар туғызады. Жалпы алғанда, күй кез келген құрамдас бөліктен қолжетімді болуы керек, ол дәйекті болуы керек және барлық құрамдас бөліктер бойынша ең соңғы мәнді қамтамасыз етуі керек және ол дұрыс мәндермен сенімді болуы керек. Сонымен қатар, соңғы күйді алу үшін тұрақты сақтауға шақырулар енгізу/шығару көлемін және нақты уақыттағы құбырларымызда қолданылатын алгоритмдердің күрделілігін арттырады. Осыған байланысты біз мемлекеттік сақтауды, мүмкін болса, жүйемізден толығымен алып тастауды шештік. Бұл тәсіл барлық қажетті деректердің жіберілетін деректер бірлігіне (хабарламаға) қосылуын талап етеді. Мысалы, кейбір бақылаулардың жалпы санын (белгілі бір сипаттамалары бар операциялардың немесе жағдайлардың санын) есептеу қажет болса, біз оны жадта есептеп, осындай мәндердің ағынын қалыптастырамыз. Тәуелді модульдер ағынды нысандар бойынша бөлу және ең соңғы мәндерде жұмыс істеу үшін бөлуді және топтастыруды пайдаланады. Бұл тәсіл мұндай деректер үшін тұрақты дискілік жадтың болуы қажеттілігін жойды. Біздің жүйе Кафканы хабарлар брокері ретінде пайдаланады және оны KSQL көмегімен дерекқор ретінде пайдалануға болады. [3] Бірақ оны пайдалану біздің шешімімізді Кафкамен тығыз байланыстырады және біз оны қолданбауды шештік. Біз таңдаған әдіс жүйеге елеулі ішкі өзгерістерсіз Кафканы басқа хабар брокерімен ауыстыруға мүмкіндік береді.

Бұл тұжырымдама біз дискілерді сақтауды және дерекқорды пайдаланбаймыз дегенді білдірмейді. Жүйенің өнімділігін тексеру және талдау үшін бізге әртүрлі көрсеткіштер мен күйлерді білдіретін дискіде деректердің айтарлықтай көлемін сақтау қажет. Мұндағы маңызды жайт, нақты уақыттағы алгоритмдер мұндай деректерге тәуелді емес. Көп жағдайда біз сақталған деректерді желіден тыс талдау, жөндеу және жүйе шығаратын нақты жағдайлар мен нәтижелерді бақылау үшін пайдаланамыз.

Біздің жүйедегі проблемалар

Біз белгілі бір деңгейде шешкен кейбір мәселелер бар, бірақ олар тереңірек ойластырылған шешімдерді талап етеді. Әзірге мен оларды осы жерде ғана атап өткім келеді, өйткені әрбір элемент өз мақаласына тұрарлық.

  • Бізге әлі де деректерді автоматтандырылған талдау, ашу және зерттеу үшін мағыналы және сәйкес деректерді жасауға көмектесетін процестер мен саясаттарды анықтау керек.
  • Жүйені соңғы деректермен жаңарту үшін автоматты түрде баптау процесінде адамның талдау нәтижелерін енгізуі. Бұл біздің үлгімізді жаңарту ғана емес, сонымен қатар процестерімізді жаңарту және деректерімізді жақсырақ түсіну.
  • IF-ELSE және ML детерминирленген тәсілі арасындағы тепе-теңдікті табу. Біреу айтты: «ML - бұл үмітсіздерге арналған құрал». Бұл алгоритмдерді қалай оңтайландыру және жақсарту керектігін түсінбеген кезде ML-ді пайдаланғыңыз келетінін білдіреді. Екінші жағынан, детерминистік тәсіл болжанбаған ауытқуларды анықтауға мүмкіндік бермейді.
  • Бізге деректердегі көрсеткіштер арасындағы гипотезаларды немесе корреляцияларды тексерудің оңай жолы қажет.
  • Жүйеде шынайы оң нәтижелердің бірнеше деңгейі болуы керек. Алаяқтық істері жүйе үшін оң деп санауға болатын барлық істердің бір бөлігі ғана. Мысалы, сарапшылар барлық күдікті істерді қарау үшін алғысы келеді, ал олардың аз ғана бөлігі алаяқтық болып табылады. Жүйе нақты алаяқтық немесе жай күдікті мінез-құлық болсын, талдаушыларға барлық жағдайларды тиімді қамтамасыз етуі керек.
  • Деректер платформасы жылдам жасалған және есептелген есептеулермен тарихи деректер жиынын ала алуы керек.
  • Жүйе құрамдастарының кез келгенін кем дегенде үш түрлі ортада қарапайым және автоматты түрде орналастыру: өндірістік, эксперименттік (бета) және әзірлеушілер үшін.
  • Және соңғы, бірақ кем емес. Біз модельдерімізді талдай алатын кең ауқымды салыстыру платформасын құруымыз керек. [4]

сілтемелер

  1. Толықтырылған интеллект дегеніміз не?
  2. API-First жобалау әдістемесін енгізу
  3. Кафка «Оқиға ағынының дерекқорына» айналады
  4. AUC—ROC қисығын түсіну

Ақпарат көзі: www.habr.com

пікір қалдыру