Ela.kpi.ua



Нац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського?Факультет ?нформатики та обчислювально? техн?киКафедра обчислювально? техн?ки?На правах рукопису??До захисту допущено?УДК Зав?дувач кафедриСт?ренко С.Г.(п?дпис) (?н?ц?али, пр?звище)“” 2019 р.Маг?стерська дисертац?яз? спец?альност?: 123. Комп’ютерна ?нженер?я____________(код та назва напряму п?дготовки або спец?альност?)Спец?ал?зац?я:123. Комп’ютерн? системи та мереж?_________________на тему: Метод прогнозування впливу шк?дливого програмного забезпечення на роботу обчислювальних систем Виконав: студент 2 курсу, групи ?В-82мп (шифр групи) Шевчук Богдан Миколайович(пр?звище, ?м’я, по батьков?)(п?дпис) Науковий кер?вник с.н.с., професор Горд??нко Ю.Г.(посада, науковий ступ?нь, вчене звання, пр?звище та ?н?ц?али)(п?дпис) Консультант (назва розд?лу)(посада, вчене звання, науковий ступ?нь, пр?звище, ?н?ц?али)(п?дпис) Рецензент (посада, науковий ступ?нь, вчене звання, науковий ступ?нь, пр?звище та ?н?ц?али)(п?дпис) Засв?дчую, що у ц?й маг?стерськ?й дисертац?? нема? запозичень з праць ?нших автор?в без в?дпов?дних посилань.Студент (п?дпис)Ки?в – 2019 рокуНац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського?Факультет (?нститут) ?нформатики та обчислювально? техн?ки (повна назва)Кафедра Обчислювально? техн?ки (повна назва)Р?вень вищо? осв?ти – другий (маг?стерський) за осв?тньо-профес?йною програмоюСпец?альн?сть 123. Комп’ютерна ?нженер?я (код ? назва)Спец?ал?зац?я 123. Комп’ютерн? системи та мереж?________ (код ? назва)ЗАТВЕРДЖУЮЗав?дувач кафедриСт?ренко С.Г.(п?дпис)(?н?ц?али, пр?звище)?? 2019 р.ЗАВДАННЯна маг?стерську дисертац?ю студенту Шевчуку Богдану Миколайовичу(пр?звище, ?м’я, по батьков?)1. Тема дисертац?? ?Метод прогнозування впливу шк?дливого програмного забезпечення на роботу обчислювальних систем? Науковий кер?вник дисертац?? с.н.с., професор Горд??нко Ю.Г.(пр?звище, ?м’я, по батьков?, науковий ступ?нь, вчене звання)затверджен? наказом по ун?верситету в?д ?28 ? _жовтня 2019 р. № 3770-с 2. Строк подання студентом дисертац?? _____________3. Об’?кт досл?дження анал?з даних4. Предмет досл?дження створення алгоритму передбачення впливу шк?дливого програмного забезпечення 5. Перел?к завдань, як? потр?бно розробити:досл?дження предметно? област?, проектування та програмна реал?зац?я алгоритму, розробка стартап-проекту 6. Консультанти розд?л?в дисертац??: Розд?лПр?звище, ?н?ц?али та посада консультантаП?дпис, датазавдання видавзавдання прийнявнормоконтрольд.т.н., професор Кулаков Ю.О.7. Дата видач? завдання Календарний план№ з/пНазва етап?в виконання маг?стерсько? дисертац??Строк виконання етап?в дисертац?? Прим?тка1Досл?дження л?тератури та документац??08.09.20192Огляд ?снуючих р?шень15.09.20193Анал?з теоретичних метод?в 15.09.20194Проектування системи22.09.20195Програмна реал?зац?я системи27.10.20196Тестування та виправлення помилок17.11.20197Оформлення документац??17.11.2019Студент ______________ Шевчук Б.М. (п?дпис) (?н?ц?али, пр?звище)Науковий кер?вник дисертац?? Горд??нко Ю.Г. (п?дпис) (?н?ц?али, пр?звище)РефератМаг?стерська дисертац?я: 76 с., 18 рис., 23 табл., 1 додаток, 59 джерел.Актуальн?сть. Кожна комп’ютерна система в св?т? ма? сво? переваги та недол?ки, але ус?х ?х об’?дню? те, що в певн?й м?р? вс? вони вразлив? до певних д?й. Цим дуже часто користуються зловмисники, задля враження потенц?йно ц?кавих, у р?зних сферах, комп’ютерних систем. Дуже часто це в?дбува?ться для обману, крад?жки особистих даних, використання системи для сво?х ц?лей та нав?ть знищення системи. Дана тема досл?джу?ться багатьма компан?ями та розробниками, як? зац?кавлен? у збереженн? сво?? ?нтелектуально? власност? в?д чужих очей та стаб?льно? роботи ?хньо? ?нфраструктури.Мета досл?дження. Отримати метод, за допомогою якого можливо буде легше прогнозувати д?ю зловмисних програмних забезпечень на даних, як? отримуються в процес? враження комп’ютерно? системи, задля передбачення можливост? враження системи под?бними загрозами.Об’?кт досл?дження. Обробка та анал?з даних.Предмет досл?дження. Метод передбачення вражень шк?дливим програмним забезпеченням.Наукова новизна одержаних результат?в. Отримання програмного продукту, що призначений детального анал?зу д?й зловмисних програмних забезпечень на роботу комп’ютерних систем.Ключов? слова. Метод анал?зу даних, обробка даних, Зловмисне програмне забезпечення.AbstractMaster's Desertation: 76 pp., 18 Fig., 23 Tables, 1 Appendix, 59 sources.The urgency of the problem. Every computer system in the world has its advantages and disadvantages, but they all united by the fact that they are to some extent vulnerable to certain actions. This often used by attackers to impress potentially interesting computer systems in various areas. Very often, this happens to deceive, steal personal data, use the system for its own purposes, and even destroy the system. This topic is explored by many companies and developers, who interested in keeping their intellectual property away from other people's eyes and the stable operation of their infrastructure.Purpose and tasks of the research. Obtain a method that makes it easier to predict the impact of malware on data generated by the computer system in order to predict the likelihood of the system being affected by such threats.Object of study. Data processing and analysis.Subject of study. A method for predicting malware.The novelty of the results. Obtaining a software product designed to provide a detailed analysis of the malicious software's actions on the operation of computer systems.Keywords. Data Analysis Method, Data Processing, Malware.ЗМ?СТСПИСОК УМОВНИХ СКОРОЧЕНЬ3ВСТУП4РОЗД?Л 15ДОСЛ?ДЖЕННЯ ПРИНЦИП?В ЗЛОВМИСНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ТА МЕТОДИ ?Х АНАЛ?ЗУ51.1. Концепц?я шк?дливого ПЗ.51.2. Анал?з зловмисних програм61.2.1. Статичний анал?з71.2.2. Динам?чний анал?з81.3. Машинне навчання для виявлення ? класиф?кац?? шк?дливих програм101.4. Висновок до розд?лу 120РОЗД?Л 221РОЗРОБКА МОДЕЛ? АНАЛ?ЗУ СИСТЕМИ212.1. Нейронн? мереж?212.1.1. DEEPLOCKER212.1.2. KERAS - TensorFlow222.1.3. FCNN (Fully Connected Neural Network)242.2. NUMPY242.2.1. СТРУКТУРА ДАНИХ NDARRAY262.2.2. ОБМЕЖЕННЯ262.3. Pandas272.4. MATPLOTLIB282.5. SEABORN292.6. ReLU302.7. Пакетна нормал?зац?я302.8. Алгоритм оптим?зац?? Адам312.7. Висновок до розд?лу 233РОЗД?Л 334РЕАЛ?ЗАЦ?Я АЛГОРИТМУ МОДЕЛ? АНАЛ?ЗУ СИСТЕМИ П?ДВЕРГНУТО? ВПЛИВУ ЗЛОВМИСНИЦЬКОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ343.1. Досл?дницький анал?з даних.343.2. Побудова та навчання463.2.1. Нормал?зац?я зм?нних463.2.2. Побудова мереж?493.3. Тест передбачення563.4. Висновок до розд?лу 358РОЗД?Л 459РОЗРОБКА СТАРТАП ПРОЕКТУ594.1. Опис ?де? проекту594.2. Технолог?чний аудит ?де? проекту614.3. Розроблення ринково?? стратег??? проекту684.5. Розроблення маркетингово?? програми стартап-проекту704.6. Висновки до розд?лу 473ВИСНОВКИ74Список використаних джерел75ДОДАТОК А82Л?СТИНГ СИСТЕМИ83СПИСОК УМОВНИХ СКОРОЧЕНЬПЗ – Програмне забезпечення.IDA – Interactive disassembler - ?нтерактивний розбиральник.DLL – Dynamic-link library -?Динам?чно при?днувана б?бл?отека.MSE – Microsoft Security Essentials – Необх?дн? захисн? механ?зми Microsoft.GUI – Graphical User Interface – Граф?чний ?нтерфейс користувача.ReLU – Rectified Linear Activation Function - Випрямлена функц?я л?н?йно? активац??.FCN – Fully connected Network - Повн?стю об’?днана мережаNCD – Normalized compression distance - Нормал?зована в?дстань стиснення.WEKA – Waikato Environment for Knowledge Analysis – Серидовище Уайкато для анал?зу знань.PE – Portable executable – Моб?льний виконавчий.LLGC – Learning with Local and Global Consistency - Навчання з локально? та глобально? узгоджен?стю.LSH – Locality-sensitive hashing - Хеш-чутлив?сть.SGD – Stochastic gradient descent - ?теративний метод?оптим?зац???град??нтного спуску .GTK – The?GIMP?ToolKit – Наб?р ?нструмент?в GIMP.GIMP?– The?GNU?Image Manipulation Program – Програма ман?пуляц?? зображеннями GNU.GNU?– GNU’s Not Unix -?GNU не Unix.BSD – Berkeley Software Distribution - Дистрибутив?програм?Беркл?.CSV – Comma-separated values?- Значення, розд?лен? комою.ROC – Receiver operating characteristic curve - Робоча характеристика приймача.AUC – Area Under Curve – Площина п?д кривою.ВСТУПЗловмисне програмне забезпечення визнача?ться як програмне забезпечення (ПЗ), яке умисно завда? шкоду жертв? зловмисника. Анал?з зловмисного ПЗ - це процес визначення повед?нки та мети даного ПЗ (наприклад, в?русу, хробака чи троянського коня). Цей процес ? вимушеним кроком для розвитку ефективних метод?в для виявлення та видалення зловмисних д?й.. На даний момент, цей анал?з проводиться, в основному, вручну спец?ал?стами, який вимага? багато кроп?тко? та тривало? роботи. Для усунення ц??? проблеми було запропоновано ряд ?нструмент?в анал?зу, як? самост?йно вид?ляють повед?нку нев?домо? програми, виконують ?? в спец?ально в?дведеному середовищ? та записують виклики операц?йно? системи, як? симулюються. Проблема динам?чного анал?зу поляга? в тому, що йде спостереження лише одного виконання програми. Однак, на жаль ? можлив?сть, що певн? шк?длив? д?? виконуються лише за певних обставин (наприклад, лише за певно? дати, певних д?й або наявност? файл?в). У цьому документ? я пропоную систему, яка дозволя? досл?джувати дек?лька шлях?в виконання та виявляти шк?длив? д??, як? виконуються лише за умови дотримання певних умов. Це да? нам змогу автоматично отримати б?льш повний вигляд анал?зовано? програми та визначити, за яких обставин зд?йснюються п?дозр?л? д??. Таким чином, досл?джуючи к?лька шлях?в виконання, ми можемо отримати б?льш повну картину ?хн?х д?й.РОЗД?Л 1 ДОСЛ?ДЖЕННЯ ПРИНЦИП?В ЗЛОВМИСНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ТА МЕТОДИ ?Х АНАЛ?ЗУ1.1. Концепц?я шк?дливого ПЗ.Програмне забезпечення, яке "умисно викону? шк?длив? нам?ри зловмисника", назива?ться шк?дливим програмним забезпеченням [1]. Вони призначен? для отримання доступу до комп'ютерних систем та мережевих ресурс?в, порушення роботи комп'ютера та збору особисто? ?нформац?? без згоди власника системи, створюючи тим самим загрозу для доступност? ?нтернету, ц?л?сност? його хост?в та конф?денц?йност? його користувач?в. Вони бувають багатьох вид?в, так? вар?анти, як В?рус, Черв'як, Троянський к?нь, Rootkit, Backdoor, Botnet, Spyware, Adware тощо. Ц? класи шк?дливих програм не вза?мовиключн?, так як деяк? з них можуть мати властивост? дек?лькох.Зловмисне програмне забезпечення - одна з найстрашн?ших та найважлив?ших загроз безпец?, з якими стика?ться ?нтернет сьогодн?. Зг?дно з опитуванням щодо всесв?тнього ?нформац?йного захисту CITATION eyc18 \l 1049 (EY Global Information Security Survey 2018–19)[2], щодня надсила?ться б?льше 6.4 м?льярди фейкових лист?в, 50% урядових систем залежн? в?д необновлюваного забезпечення. Варто згадати, що було записано 1,946,181,599 втрат особисто? ?нформац?? в?д зловмисницьких атак м?ж лютим 2017 та березнем 2018 року. Щодня тисяч? нових приклад?в шк?дливих програм означа? приблизно семидесяти нових загроз щохвилини, або приблизно одну загрозу в секунду. З? зб?льшенням к?лькост? ?нструмент?в та функц?ональност? к?берзагрози / атаки нового покол?ння стають б?льш хитрими, направленими та загадков?шими. Просунут? шк?длив? програмн? продукти ? ц?льовими, нев?домими, прихованими, персонал?зованими пор?вняно з звичними дос? проблемами, як? охоплювали багатьох та загальнов?домими. Потрапивши в систему, вони ховаються, поширюються, в?дключивши захист хоста. П?сля встановлення вони активують сво? системи управл?ння та д?ють зг?дно встановлених ?нструкц?й, як? можуть бути викраданням даних, зараженням ?нших машин, дозволом на розв?дку, тощо[5]. Зловмисники використовують уразливост? у веб-службах, браузерах та операц?йних системах або використовують на?вн?сть користувач?в задля запуску шк?дливого коду для розповсюдження шк?дливих програм. Автори зловмисних програм використовують заторможуюч? методи так?, як вставка мертвого коду[6], переназначення ре?стру, упорядкування п?дпрограми, зам?на ?нструкц?й, перем?щення коду та ?нтеграц?я коду, щоб уникнути виявлення типовими засобами захисту, таких як брандмауер, антив?руси та шлюзи, як? зазвичай використовують методи, базован? на п?дписах ? не в змоз? виявити зловмисн? файли. Комерц?йн? антив?русн? постачальники не в змоз? забезпечити ц?лодобовий захист в?д шк?дливих програм моментально, оск?льки необх?дно пост?йно оновлювати базу запис?в.Щоб уникнути проблеми обходження метод?в на основ? п?дпису, застосовуються методи анал?зу програмного забезпечення, як? можуть бути статичними або динам?чними. Отримана таким способом ?нформац?я може бути використана для реагування на нове розвитки зловмисного програмного забезпечення та вживати проф?лактичних заход?в для подолання майбутн?х загроз. Детал?, отриман? в результат? анал?зу шк?дливих програм, можуть бути використан? для групування нев?домих шк?дливих програм та класиф?кац?? ?х до ?снуючих с?мей. Спец?ал?сти усього св?ту використовують ?дину систему класиф?кац??, задля б?льш ефективного реагування, оч?куючи на сп?впрацю одне з одним.1.2. Анал?з зловмисних програмПерш н?ж створити п?дписи для новоприбулих шк?дливих програм, ?х потр?бно проанал?зувати, щоб зрозум?ти пов'язан? з цим ризики. Зловмисну програму та ?? можливост? можна спостер?гати або досл?джуючи ?? код, або виконуючи його в безпечному середовищ?.1.2.1. Статичний анал?з Анал?з шк?дливого програмного забезпечення без його виконання назива?ться статичним анал?зом. Шаблони виявлення, як? використовуються в статичному анал?з?, включають в себе сигнатуру рядки, n-грами байтово? посл?довност? виклик синтаксично? б?бл?отеки . Граф?к потоку управл?ння, розпод?л частоти коду операц?? (операц?йного коду) ? т. д. Перед виконанням статичного анал?зу виконуваний файл необх?дно розпакувати ? розшифрувати. ?нструменти дизасемблера / в?дладчика ? дампера пам'ят? можуть бути використан? для реверсування комп'ютера.Традиц?йн? та передов? шк?длив? програми 58 набор?в в?кон виконуваних файл?в. ?нструменти дизассемблирування / налагодження, так? як IDA Pro[7] ? OllyDbg[8], в?дображают код шк?дливого ПЗ у вигляд? ?нструкц?й по зб?рц? Intel × 86, як? дають докладне уявлення про те, що робить шк?дливе ПЗ, ? надають шаблони для ?дентиф?кац?? зловмисник?в. ?нструменти дампа пам'ят?, так? як LordPE[9] ? OllyDump[10] , використовуються для отримання захищеного коду, що знаходиться в пам'ят? системи, ? вивантаження його в файл. Це корисний метод для анал?зу стиснут? виконуван? файли, як? важко роз?брати. Методи дв?йкових обфускац??, як? перетворять виконавч? файли шк?дливих програм в самозжимання ? ун?кально структурован? виконавч? файли, призначен? для протид?? зворотному ?нжин?рингу та, таким чином, роблять статичний анал?з дуже дорогим ? ненад?йним. Б?льш того, при використанн? дв?йкових виконуваних файл?в (отриманих шляхом комп?ляц?? вих?дного коду) для статичного анал?зу ?нформац?я, така як розм?р структур даних або зм?нних, втрача?ться, що ускладню? анал?з шк?дливого коду. Кра?ни, що розвивають методи ухилення, використовуван? авторами шк?дливих програм для запоб?гання статичного анал?зу, привели до розвитку динам?чного анал?зу. Мозер[12] досл?джував недол?ки методолог?? статичного анал?зу. У сво?й робот? вони представили схему, засновану на заплутуванн? коду, що розкрива? той факт, що одного статичного анал?зу недостатньо для виявлення та класиф?кац?? шк?дливих програм. Кр?м того, вони припустили, що динам?чний анал?з ? необх?дним доповненням до статичного анал?зу, оск?льки в?н менш вразливий для перетворення обфускац?? коду.1.2.2.Динам?чний анал?зАнал?з повед?нки шк?дливого коду (вза?мод?я з системою) п?д час його виконання в контрольованому середовищ? (в?ртуальна машина, симулятор, емулятор, п?сочниця ? т.Д.) Назива?ться динам?чним анал?зом. Перед запуском зразка шк?дливого ПО використовуйте в?дпов?дн? ?нструменти мон?торингу, так? як Process Monitor[13] ? Capture BAT[14] (Для мон?торингу файлово? системи ? ре?стру), Process Explorer [15] ? Process Hackerreplace[16] (для мон?торингу процес?в), Wireshark[17] (для мон?торингу мереж?) ? Regshot[18] (для виявлення зм?н системи) встановлен? ? активован?, р?зн? методи, як? можуть застосовуватися для виконання динам?чного анал?зу, включають мон?торинг виклик?в функц?й, анал?з параметр?в функц?й, в?дстеження потоку ?нформац??, трасування команд ? точки розширення автоматичного запуску ? т. д. Динам?чний анал?з б?льш ефективний у пор?внянн? з? статичним анал?зом ? не вимага? розбирання виконуваного файлу. В?н розкрива? природну повед?нку шк?дливих програм, яке ст?йк?ше до статичного анал?зу. Однак це вимага? багато часу ? ресурс?в, що п?двищу? проблеми з масштабн?стю. В?ртуальне середовище, в як?й виконуються шк?длив? програми, в?др?зня?ться в?д реально?, ? шк?длив? програми можуть працювати по-р?зному, приводячи до штучного повед?нки, а не до точного. Кр?м того, ?нод? повед?нку шк?дливого ПО запуска?ться т?льки при певних умовах (на певну системну дату або за допомогою певно? команди) ? не може бути виявлено у в?ртуальному середовищ?. ?сну? к?лька онлайн-?нструмент?в для динам?чного анал?зу шк?дливих програм, наприклад, Norman Sandbox[19], CWSandbox[20] , Anubis[21] ? TTAnalyzer[22], Ether[23] ? ThreatExpert[24]. Анал?тичн? зв?ти, як? генеруються цими ?нструментами, дають глибоке розум?ння повед?нки шк?дливих програм ? ц?нну ?нформац?ю про виконуван? ними д??. Система анал?зу повинна мати в?дпов?дне подання для шк?дливих програм, як? пот?м використовуються для класиф?кац?? або за критер??м под?бност?, або по векторах ознак.Однак велика к?льк?сть нових зразк?в шк?дливих програм, що надходять в антив?русн? компан?? кожен день, вимага? автоматизованого п?дходу, щоб обмежити к?льк?сть зразк?в, що вимагають ретельного людського анал?зу. К?лька метод?в штучного ?нтелекту, зокрема, заснован? на машинному навчанн?, використовувалися в л?тератур? для автоматичного анал?зу ? класиф?кац?? шк?дливих програм.1.3. Машинне навчання для виявлення ? класиф?кац?? шк?дливих програмБули запропонован? р?зн? п?дходи машинного навчання, так? як правило асоц?ац??, машина опорних вектор?в, дерево р?шень, випадковий л?с, на?вний байесовский анал?з ? кластеризац?я, для виявлення та класиф?кац?? нев?домих виб?рок або в в?дом? с?мейства шк?дливих програм, або для п?дкреслення тих виб?рок, як? демонструють невидиме повед?нку, для докладного анал?зу. Деяк? з них, як? використовуються в л?тератур?, обговорюються в цьому розд?л?. Шульц ? сп?вавт.[25] були першими, хто представив концепц?ю ?нтелектуального анал?зу даних для виявлення шк?дливих програм. Вони використовували три р?зних статичних функц?? для класиф?кац?? шк?дливих програм: Portable Executable (PE), рядки ? посл?довност? байт?в. У п?дход? PE функц?? (так? як список DLL, використовуваних дв?йковим файлом, список виклик?в функц?й DLL ? к?льк?сть р?зних системних виклик?в, як? використовуються в кожн?й DLL) витягуються з ?нформац?? DLL всередин? файл?в PE. Рядки витягуються з виконуваних файл?в на основ? текстових рядк?в, як? закодован? в програмних файлах. П?дх?д посл?довност? байт?в використову? посл?довност? з n байт?в, витягнут? з виконуваного файлу. Вони використовували наб?р даних, що склада?ться з 4266 файл?в, що включають 3265 шк?дливих ? тисяча один шк?дливих програм. Алгоритм ?ндукц?? правила Р?пер [26]застосову?ться для пошуку шаблон?в в даних DLL. Алгоритм навчання на?вного бай?с?вського алгоритму використовувався для пошуку шаблон?в в строкових даних, а n-грами байтових посл?довностей використовувалися в якост? вх?дних даних для алгоритму многочлен?в на?вного бай?с?вського алгоритму. На?вний байесовский алгоритм, приймаючи рядки в якост? вх?дних даних, да? найвищу точн?сть класиф?кац?? - 97,11%.Автори стверджують, що р?вень виявлення шк?дливих програм з використанням методу ?нтелектуального анал?зу даних в два рази вище в пор?внянн? з методом на основ? сигнатур.П?зн?ше ?х результати були покращен? Колтер [27]. Вони використовували n-грам (зам?сть неперес?чною посл?довност? байт?в) ? метод ?нтелектуального анал?зу даних для виявлення шк?дливих виконуваних файл?в. Вони використовували р?зн? класиф?катори, включаючи Naive-Bayes, Support Vector Machine, Decision Tree ? ?х розширен? верс??. Вони прийшли до висновку, що пол?пшене дерево р?шень да? найкращ? результати класиф?кац??. Натарадж ? сп?вавт.[28] запропонували метод в?зуал?зац?? та класиф?кац?? шк?дливих програм з використанням метод?в обробки зображень, як? в?зуал?зують виконавч? файли шк?дливих програм у вигляд? нап?втонових зображень. Метод K-найближчого сус?да з методом Евкл?дова в?дстан? використову?ться для класиф?кац?? шк?дливих програм. Хоча це дуже швидкий метод в пор?внянн? з ?ншими методами анал?зу шк?дливих програм, обмеження поляга? в тому, що зловмисник може прийняти контрзаходи, щоб об?йти систему, оск?льки цей метод використову? глобальн? функц??, заснован? на зображеннях. Наприклад, зловмисник може перем?стити розд?ли в дов?чним файл? або додати величезну к?льк?сть надлишкових даних. В [29] автори пор?вняли анал?з на основ? б?нарних текстур (заснований на техн?ц? обробки зображень) з анал?зом динам?чного анал?зу. Вони виявили, що класиф?кац?я з використанням цього методу ? б?льш швидкою, масштабовано? ? пор?внянно? з динам?чним анал?зом з точки зору точност?. Вони також виявили, що цей п?дх?д дозволя? над?йно класиф?кувати велику к?льк?сть шк?дливих програм як з упакованими, так ? з розпакованими зразками. Обмеження поляга? в тому, що цей метод вразливий для добре об?знаних супротивник?в, як? можуть заплутати св?й шк?дливий код, щоб перемогти анал?з текстур. Конг та сп?вавт.[30] представили структуру для автоматично? класиф?кац?? шк?дливих програм на основ? структурно? ?нформац?? (. Граф?к виконання функц?й) шк?дливих програм. П?сля вилучення др?бнозернистих функц?й на основ? . Графа виклик?в функц?й для кожного зразка шк?дливого ПО схож?сть оц?ню?ться для двох програм шк?дливого ПО шляхом застосування розп?знавання метрики з дистанц?йним визначенням, яке групу? зразки шк?дливого ПО, що належать до одного с?мейства, при цьому р?зн? кластери под?ляються на граничну в?дстань. Пот?м автори використовували ансамбль класиф?катор?в, як? навчаються на в?дстан? пари шк?дливих програм, щоб класиф?кувати шк?длив? програми в ?х в?дпов?дн? с?мейства.Т?ан ? сп?вавт.[31] використовував частоту функц?? довжини для класиф?кац?? троян?в. Довжина функц?? вим?рю?ться к?льк?стю байт?в в код?. ?х результати показують, що довжина функц?? поряд з ?? частотою ма? велике значення для ?дентиф?кац?? с?мейства шк?дливих програм ? може по?днуватися з ?ншими функц?ями для швидко? ? масштабовано? класиф?кац?? шк?дливих програм. Кр?м того, вони в?дзначили, що зазвичай обфусц?рованний файл не ма? якого-небудь рядка, що склада?ться з? сл?в або пропозиц?й, ?, таким чином, використовував друковану ?нформац?ю, що м?ститься в виконуваних файлах [32]. Вони використовували алгоритми машинного навчання, доступн? в б?бл?отец? WEKA[33] для класиф?кац?? шк?дливих програм. Сантос ? сп?вавт.[34] вказали, що контрольоване навчання вимага? значно? к?лькост? пом?чених виконуваних файл?в для обох клас?в (як шк?дливих, так ? набор?в даних), ? запропонували п?дх?д до навчання п?д наглядом для виявлення нев?домих шк?дливих програм. В?н призначений для створення класиф?катора машинного навчання з використанням безл?ч? пом?чених ? немаркованих прим?рник?в. Використову?ться нап?вкерованих алгоритм LLGC (навчання з локально? та глобально? узгоджен?стю), який може витягувати уроки з маркованих ? немаркованих даних ? нада? р?шення щодо внутр?шньо? структури, яка в?добража?ться як маркованими, так ? немаркованими екземплярами. Виконуван? файли представлен? за допомогою техн?ки розпод?лу n-грам. Вони також визначають ? оц?нюють оптимальну к?льк?сть пом?чених прим?рник?в ? вплив цього параметра на точн?сть модел?. Основний внесок цього досл?дження поляга? в скороченн? к?лькост? необх?дних пом?чених прим?рник?в при збереженн? високо? точност?. Обмеження поляга? в тому, що попередн? п?дходи до навчання п?д наглядом, представлен? в [27][35], дають кращ? результати (точн?сть вище 90%), н?ж представлений п?дх?д з нап?в-зверхнаглядом. Дал? в [36] автори запропонували колективний п?дх?д до навчання для виявлення нев?домих шк?дливих програм. Це тип навчання з нап?вкерованих навчанням, який представля? метод оптим?зац?? класиф?кац?? частково пом?чених даних. Алгоритми колективно? класиф?кац?? використовуються для створення р?зних класиф?катор?в машинного навчання з використанням набору пом?чених ? немаркованих прим?рник?в. Затверджено, що зусилля по маркуванню нижче, н?ж при використанн? контрольованого навчання при збереженн? високого ступеня точност?. С?дд?к? ? сп?вавт.[37] використовували посл?довн?сть команд зм?нно? довжини разом з машинним навчанням для виявлення черв'як?в в дик?й природ?. Перед розбиранням файл?в вони виявляють комп?лятори, пакувальники. Було виконано скорочення посл?довност?, ? для класиф?кац?? використовувалися модел? дерева р?шень ? модел? випадкового л?сового навчання. Вони перев?рили св?й метод на набор? даних 2774, включаючи 1444 черв'як?в ? 1330 доброяк?сних файл?в. Багато досл?дник?в зараз вважають за краще працювати над динам?чними методами, щоб п?двищити точн?сть ? ефективн?сть класиф?кац?? шк?дливих програм.Золк?пл? ? сп?вавт.[38] представили п?дх?д для анал?зу повед?нки шк?дливих програм. Вони використовували HoneyClients ? Amun в якост? ?нструмент?в безпеки для збору шк?дливих програм. Повед?нка цих шк?дливих програм ?дентиф?ку?ться шляхом виконання кожного зразка на CWSandbox[20] ? Anubis[21] на платформ? в?ртуально? машини. Результати, отриман? обома з них анал?затори налаштовуються з використанням анал?зу повед?нки людини. Пот?м шк?длив? програми групуються в с?мейства шк?дливих програм Worms ? Trojans. Обмеженням ц??? роботи ? те, що настройка з використанням людського анал?зу неможлива для сьогодн?шнього траф?ку в реальному час?, який ? об'?мним ? ма? безл?ч загроз. Р?к ? сп?вавт.[39] запропонували основу для автоматичного анал?зу повед?нки шк?дливих програм з використанням машинного навчання. Це середовище збирала велику к?льк?сть зразк?в шк?дливого ПО ? в?дстежувала ?х повед?нку за допомогою середовища п?сочниц?. Вбудовуючи спостер?га?ться повед?нка в векторний прост?р, вони застосовують алгоритми навчання. Кластеризац?я використову?ться для виявлення нових клас?в шк?дливих програм з? схожою повед?нкою. Присво?ння нев?домих шк?дливих програм цим виявленим клас?в зд?йсню?ться шляхом класиф?кац??. Заснований як на кластеризац??, так ? на класиф?кац??, для анал?зу повед?нки використову?ться ?нкрементний п?дх?д, здатний щодня обробляти повед?нку тисяч дов?чних файл?в шк?дливих програм. Андерсон ? сп?вавт.[40] представили алгоритм виявлення шк?дливих програм, заснований на анал?з? . Граф?к?в, побудованих з динам?чно з?браних сл?д?в команд. Для збору даних використову?ться модиф?кована верс?я середовища анал?зу шк?дливих програм Ether. Метод використову? 2-грами, щоб зумовити ймов?рност? переходу ланцюга Маркова (розгляда?ться як . Граф). Механ?зм ядр . Граф?в використову?ться для побудови матриц? под?бност? м?ж екземплярами в навчальному набор?. Ядро матриц? буду?ться з використанням двох р?зних заход?в под?бност?: гауссово ядро, яке вим?рю? локальне схож?сть м?ж краями . Графа, ? спектральний ядро, яке вим?рю? глобальне схож?сть м?ж . Графами. З матриц? ядра навча?ться машина опорних вектор?в для класиф?кац?? тестових даних. Ефективн?сть методу навчання з дек?лькома ядрами, використаного в ц?й робот?, демонстру?ться шляхом розр?знення р?зних випадк?в шк?дливих програм ? шк?дливого програмного забезпечення. Обмеженням цього п?дходу ? те, що складн?сть обчислень дуже висока, що обмежу? його використання в реальних умовах. Байер та сп?вавт.[41] запропонували систему, яка ефективно ? автоматично групу? велик? набори шк?дливих дов?чних файл?в на основ? ?х повед?нки. Запропонована методика спира?ться на Anubis для генерац?? сл?д?в виконання вс?х виб?рок. Anubis[21] було розширено в ц?й робот? з можливостями поширення зараження, щоб використовувати додатков? джерела ?нформац??. П?сля створення трас вилучення разом з ?нформац??ю про зараження для кожно? траси витягу?ться повед?нковий проф?ль, який служить входом для алгоритму кластеризац??. Використовуваний алгоритм кластеризац?? заснований на локально-чутливому хешуванн? (LSH)[42], який ? субл?н?йним (ефективним) п?дходом до наближено? проблеми найближчого сус?да. LSH може використовуватися для виконання приблизною кластеризац?? при розрахунку т?льки невелико? частки n2 / 2-в?дстаней м?ж парами точок. Автори демонструють масштабован?сть свого п?дходу шляхом кластеризац?? набору з 75 000 зразк?в шк?дливого ПО за три години. Т?ан та сп?вавт.[43] використовував автоматизований ?нструмент для вилучення посл?довностей виклик?в API з виконуваних файл?в, коли вони виконуються в в?ртуальному середовищ?. Вони використовували класиф?катори, доступн? в б?бл?отец? WEKA, щоб в?др?зняти файли шк?дливих програм в?д чистих файл?в, а також для класиф?кац?? шк?дливих програм в ?х с?мейства. Для демонстрац?? сво?? роботи вони використовували наб?р даних з тисячу триста ш?стдесят в?с?м шк?дливих програм ? 456 обл?кових запис?в ? досягли точност? понад 97%. Б?лей та сп?вавт.[44] вказали, що антив?русн? (AV) продукти характеризують шк?длив? програми способами, як? не узгоджен? м?ж р?зними AV-продуктами, не ? повними для шк?дливих програм ? не ? лакон?чними за сво?ю семантикою. Вони розробили методику класиф?кац??, яка опису? повед?нку шк?дливих програм з точки зору зм?н стану системи. Дв?йков? файли виконуються в в?ртуал?зованому середовищ? з? встановленою Windows XP. В?ртуальна машина частково захищена брандмауером, щоб обмежити вплив будь-якого негайного повед?нки атаки протягом пер?оду виконання. Створю?ться повед?нковий в?дбиток активност? шк?дливого ПО, який включа? записан? файли, створен? процеси ? п?дключення до мереж?. ? т. д. ??рарх?чна кластеризац?я в?дбитк?в пальц?в по одн?й попарно з використанням нормал?зованого в?дстан? стиснення (NCD) в якост? метрики в?дстан? використову?ться для кластеризац?? шк?дливих програм. Цей метод застосову?ться для автоматично? класиф?кац?? та анал?зу 3700 зразк?в шк?дливих програм, з?браних за ш?сть м?сяц?в. Вони також вим?рюють ? пор?внюють посл?довн?сть, повноту ? стисл?сть кластер?в з продуктами AV. Обмеження Ця робота поляга? в тому, що можливост? ? середовище в?ртуал?зовано? системи статичн? протягом експеримент?в для пост?йност?.Парк ? сп?вавт.[45] запропонували метод класиф?кац?? шк?дливих програм, заснований на виявленн? максимального п?д. Графа компонента. П?сля виконання приклад?в шк?дливих програм в ?зольованому середовищ? системн? виклики разом з? значеннями параметр?в цих виклик?в ф?ксуються, ? на основ? цих трассирувань системних виклик?в створю?ться ор??нтований . Граф. Максимальний загальний п?д. Граф обчислю?ться для пор?вняння двох програм. Недол?к цього методу поляга? в тому, що ?снують деяк? в?дом? зразки шк?дливих програм, яким вда?ться отримати прив?ле? режиму ядра без використання ?нтерфейсу системних виклик?в ? як? можуть об?йти метод анал?зу.Ф?рдаус ? сп?вавт.[46] представили п?дтвердження концепц?? методу виявлення шк?дливих програм. По-перше, повед?нка зразк?в шк?дливого ПО анал?зу?ться в середовищ? п?сочниц? з використанням Anubis. Згенерован? зв?ти попередньо обробляються в розр?джених векторних моделях для класиф?кац?? з використанням машинного навчання. Пор?вняння продуктивност? 5 р?зних класиф?катор?в, т. Е K-Nearest Neighbours (kNN), На?вний Байес, Дерево р?шень J48, Машина опорних вектор?в (SVM) ? Багатошарова перцептором Нейронна Мережа (MLP) викону?ться на невеликому набор? даних з 220 шк?дливих зразк?в ? 250 доброяк?сних зразк?в з вибором функц?й ? без нього. Отриман? результати показують, що в ц?лому найкраща продуктивн?сть досяга?ться за допомогою дерева р?шень J48 з в?дкликанням 95,9%, помилковим позитивним результатом 2,4%, точн?стю 97,3% ? точн?стю 96,8%.Нари ? сп?вавт.[47] представили структуру для автоматично? класиф?кац?? шк?дливих програм за в?дпов?дними родин на основ? повед?нки мереж?. Мережев? трасування приймаються в якост? вх?дних даних для платформи у вигляд? файл?в pcap, з яких витягуються мережев? потоки. Пот?м створю?ться . Граф?к повед?нки, що в?добража? мережеву активн?сть шк?дливих програм ? залежност? м?ж мережевими потоками. З цих повед?нкових . Граф?к?в витягуються так? особливост?, як розм?р . Граф?ка, ступ?нь виходу кореня, середня ступ?нь виходу, максимальний ступ?нь виходу, к?льк?сть певних вузл?в. Ц? функц?? пот?м використовуються для класиф?кац?? шк?дливих програм з використанням алгоритм?в класиф?кац??, доступних в б?бл?отец? WEKA, ? робиться висновок, що дерево р?шень J48 працю? краще, н?ж ?нш? класиф?катори.Л? ? сп?вавт.[48] ??запропонували метод кластеризац?? шк?дливих програм з використанням методу машинного навчання. Вс? зразки набору даних виконуються у в?ртуальному середовищ?, а системн? виклики ? ?х аргументи в?дсл?дковуються. Повед?нковий проф?ль створю?ться на основ? записано? ?нформац?? про вза?мод?ю зразка з системними ресурсами, такими як ключ? ре?стру, запис файл?в ? мережев? операц??. Под?бн?сть м?ж двома проф?лями обчислю?ться, ? пот?м, застосовуючи k-medoids, р?зн? зразки групуються в р?зн? кластери. П?сля завершення процесу навчання нов? ? нев?дом? зразки призначаються кластеру, ма? medoids ближче до зразка, тобто до найближчого сус?да. Ясно, що ?дино? думки, статичного або динам?чного, недостатньо для ефективно? ? точно? класиф?кац?? шк?дливих програм через методи заплутування ? зупинення виконання. Таким чином, досл?дники адаптували г?бридну техн?ку, яка включа? в себе як статичн?, так ? динам?чн? функц?? одночасно для кращого виявлення ? класиф?кац?? шк?дливих програм.Сантос ? сп?вавт.[49] запропонував г?бридний детектор нев?домого шк?дливого ПЗ п?д назвою OPEM, який використову? наб?р функц?й, отриманих як в результат? статичного, так ? динам?чного анал?зу шк?дливого коду. Статичн? характеристики отриман? шляхом моделювання виконуваного файлу в вигляд? посл?довност? операц?йних код?в, а динам?чн? характеристики отриман? шляхом мон?торингу системних виклик?в, операц?й ? п?двищених винятк?в. Пот?м цей п?дх?д перев?ря?ться для двох р?зних набор?в даних з урахуванням р?зних алгоритм?в навчання для класиф?катор?в Decision Tree, K-найближчого сус?да, бай?с?всько? мереж? та машини опорних вектор?в, ? було виявлено, що цей г?бридний п?дх?д п?двищу? продуктивн?сть обох п?дход?в при запуску окремо. ,Аналог?чна робота зроблена ?сламом та сп?вавт.[50] з класиф?кац?? виконуван? файли на шк?длив? ? безпечн? файли, використовуючи як статичн?, так ? динам?чн? функц??. Статичн? функц??, як? використовуються в ц?й робот?, включають частоту довжини можливостей та ?нформац?? щодо друковано? рядку, а динам?чн? функц?? - ?мена функц?й API ? параметри API. Експеримент проводився з використанням 2939 виконуваних файл?в, в тому числ? 541 чистих файл?в окремо для кожно? функц??, тобто частоти довжини функц??, ?нформац?? про друковано? рядку ? виклик?в функц?й API, а пот?м для ?нтегрованого методу для мета-класиф?катор?в SVM, IB1, DT ? RF . Отриман? результати показали, що все мета-класиф?катори досягають найвищо? точност? для ?нтегрованих функц?й, ? мета-RF ? найкращим виконавцем для вс?х випадк?в. Автори також пор?вняли точн?сть ?х ?нтегрованого методу з точн?стю ?снуючих ? виявили, що ?х п?дх?д показу? кращ? результати.Андерсон ? сп?вавт.[51] В запропоновано спос?б, в якому використовуються к?лька джерел даних (статичний б?нарний файл, роз?браний дв?йковий файл, його . Граф потоку керування, динам?чна трасування команд ? трасування системних виклик?в ? вектор ознак ?нформац?? про фото). Для дв?йкового файлу, дизасемблювати файлу ? двох динам?чних трас використовуються ядра на основ? ланцюг?в Маркова. Для . Графа потоку керування використову?ться ядро ??. Графлета, а для вектора ознак ?нформац?? про фото - стандартне ядро ??Гаусса. Пот?м використову?ться багатор?вневе навчання, щоб знайти зважену комб?нац?ю джерел даних, а класиф?катор машин опорних вектор?в використову?ться для класиф?кац?? набору даних на шк?дливий ? безпечний. В?н протестований на набор? даних з 780 шк?дливих програм ? 776 доброяк?сних прим?рник?в, що да? точн?сть 98,07%.Методи ?нтелектуального анал?зу даних ? машинного навчання давно використовуються для виявлення ? класиф?кац?? шк?дливих програм. Сьогодн? ?нтернет-траф?к генеру? величезн? набори даних для щоденного мон?торингу та проф?лювання моделей в моделях к?бербезпеки ? вимага? масштабованих, швидких ? гнучких метод?в машинного навчання. Величезний обсяг мережевих даних безперервно ? динам?чно переда?ться в к?бер-?нфраструктур?, що ставить п?д сумн?в моделювання машинного навчання ? вимага? нових принцип?в, методолог?? ? алгоритм?в для перетворення необроблених даних в корисну ?нформац?ю.1.4. Висновок до розд?лу 1Передов? шк?длив? програми представляють серйозну загрозу для ?нтернету та комп'ютерних систем. Антив?русн? продукти на основ? сигнатур здатн? виявляти т?льки т? шк?длив? програми, як? вже завдали шкоди ? заре?строван?. Пост?йно розвиваються методи, використовуван? шк?дливими програмами для запоб?гання статичного анал?зу, спрямован? на розвиток динам?чного анал?зу, який викону? виб?рку шк?дливого ПО в контрольованому середовищ? ? в?дстежу? його повед?нку. Зв?ти, згенеровано динам?чним анал?зом, можуть бути скомп?льован? в повед?нков? проф?л?, як? можуть бути згрупован? для об'?днання виб?рок з? схожою повед?нкою в узгоджен? с?мейства. Недол?к динам?чного анал?зу поляга? в тому, що в?н вимага? великих витрат часу ? ресурс?в. Щоб протистояти компром?су м?ж швидк?стю анал?зу ? виявленням обфусц?рованних шк?дливих програм, досл?дники адаптували методику, що включа? по?днання статичних ? динам?чних функц?й для виявлення ? класиф?кац?? шк?дливих програм. У цьому документ? висв?тлюються ?снуюч? методи анал?зу, виявлення та класиф?кац?? шк?дливих програм. Технолог?? машинного навчання, як? використовуються при виявленн? ? класиф?кац?? шк?дливих програм, недостатн? для вир?шення проблем, що виникають через величезно? к?лькост? динам?чних ? сильно незбалансованих мережевих даних. Вони повинн? бути перетворен? таким чином, щоб ?х потенц?ал м?г бути використаний для вир?шення проблем, пов'язаних з к?бербезпекою.РОЗД?Л 2 РОЗРОБКА МОДЕЛ? АНАЛ?ЗУ СИСТЕМИДля розробки даного проекту було розглянуто ряд р?шень, як? уже були оглянут? та були зроблен? певн? висновки. Для цього було розглянуто певний ряд джерел у в?льному доступ?. За основу було використано особист? записи дек?лькох учасник?в дискус?й на р?зноман?тних форумах, як? зач?пають дан? питання.2.1. Нейронн? мереж?2.1.1.DEEPLOCKERDeepLocker[52] зм?нив гру в ухиленн? в?д шк?дливого ПО, прийнявши принципово ?нший п?дх?д у пор?внянн? з будь-яким ?ншим сучасним ухиля?ться ? ц?льовим шк?дливим ПЗ. DeepLocker прихову? свою шк?дливе/корисне навантаження в додатках-нос?ях, таких як програмне забезпечення для в?део конференц?й, щоб уникнути виявлення б?льш?стю антив?русних ? шк?дливих сканер?в.Ун?кальн?сть DeepLocker поляга? в тому, що використання штучного ?нтелекту робить ?тригерн? умови? для розблокування атаки практично неможливими для зворотного ?нжин?рингу. Шк?длива корисне навантаження буде розблокована т?льки при досягненн? поставлено? мети. Це досяга?ться за допомогою модел? штучного ?нтелекту (DNN).Модель нейронного комп’ютера навчена поводитися нормально, якщо вона не представлена ??з конкретним входом: умови запуску, що визначають конкретн? жертви. Нейронна мережа виробля? ?ключ?, необх?дний для розблокування атаки. DeepLocker може використовувати к?лька атрибут?в для визначення сво?? мети, включаючи в?зуальн?, ауд?о, геолокац?? ? функц?? р?вня системи. Оск?льки практично неможливо достатньо перерахувати вс? можлив? умови тригера для модел? штучного ?нтелекту, цей метод зробить надзвичайно важким для анал?тик?в шк?дливих програм зворотний ?нжин?ринг нейронно? мереж? ? в?дновлення критично важливих секрет?в, включаючи корисне навантаження атаки ? специф?ку мета. Коли зловмисники намагаються проникнути в ц?ль за допомогою шк?дливого ПО, прихована ц?льова атака повинна приховувати два основних компоненти: умови тригера ? корисне навантаження атаки.DeepLocker може використовувати природу ?чорного ящика? модел? штучного ?нтелекту DNN(deep neural nets – глибок? нейронн? мереж?), щоб приховати стан тригера. Проста умова запуску ?якщо це, тод? …? трансформу?ться в глибоку надточну мережу модел? штучного ?нтелекту, яку дуже важко розшифрувати. Кр?м того, в?н може сам перетворювати прихований стан тригера в ?пароль? або ?ключ?, який потр?бно для розблокування навантаження атакуючих пакет?в.Техн?чно, цей метод допуска? три р?вн? маскування атаки. Тобто, враховуючи т?льки модель DeepLocker AI, анал?тикам шк?дливого ПО вкрай складно визначити, який клас вразливост? в?н шука?.Важливо розум?ти, що DeepLocker опису? зовс?м новий клас шк?дливих програм - будь-яка к?льк?сть моделей штучного ?нтелекту може бути п?дключена для пошуку умисно? жертви, а р?зн? типи шк?дливих програм можуть використовуватися в якост? ?пакета даних?, прихованих в додатку.2.1.2. KERAS - TensorFlowKeras - це б?бл?отека нейронних мереж з в?дкритим вих?дним кодом, написана на Python. Вона може працювати поверх багатьох б?бл?отек та структур глибинного навчання.Розроблений для швидкого експериментування з глибинним нейронними мережами, в?н ор??нтований на зручн?сть використання, модульн?сть ? розширюван?сть. В?н був розроблений в рамках досл?дницького проекту ONEIROS (В?дкрита нейро-електронна ?нтелектуальна операц?йна система робот?в).Keras м?стить безл?ч реал?зац?й зазвичай використовуваних буд?вельних блок?в нейронно? мереж?, таких як шари, ц?л?, функц?? активац??, оптим?затори ? безл?ч ?нструмент?в, що полегшують роботу з зображеннями ? текстовими даними, щоб спростити кодування, необх?дне для написання коду Deep Neural Network(глибинно? нейроно? мереж?).В додаток до стандартних нейронних мереж, Keras п?дтриму? згортков? (клас глибинних?штучних нейронних мереж?прямого поширення, який усп?шно застосовувався до анал?зу в?зуальних зображень) ? рекурентн? (клас?штучних нейронних мереж, у якому з'?днання м?ж вузлами утворюють?. Граф ор??нтований?у час?) нейронн? мереж?. В?н п?дтриму? ?нш? загальн? службов? р?вн?, так? як випадання, пакетна нормал?зац?я ? об'?днання.Keras дозволя? користувачам створювати глибок? модел? на смартфонах (iOS ? Android), в ?нтернет?, або на в?ртуальн?й машин? Java. Це також дозволя? використовувати розпод?лене навчання моделей глибокого навчання на кластерах . Граф?чних процесор?в (GPU) ? тензорних блок?в обробки (TPU) в основному в по?днанн? з деякою л?н?йкою . Граф?чних процесор?в, так? як NVIDIA CUDA(арх?тектура прилад?в об’?днаних розрахунк?в). В свою чергу, тензорн? блоки обробки ? спец?альними ?нтегральними схемами для прискорення розрахунк?в штучного ?нтелекта.TensorFlow - це безкоштовна б?бл?отека програмного забезпечення з в?дкритим вих?дним кодом для поток?в даних ? диференц?йованого програмування для р?зних завдань. Це символ?чна математична б?бл?отека, яка також використову?ться в додатках машинного навчання, таких як нейронн? мереж?TensorFlow був розроблений командою Google Brain для внутр?шнього використання Google.TensorFlow пропону? к?лька р?вн?в абстракц??, тому можна вибрати в?дпов?дний для наших потреб. Нада?ться можлив?сть створювати ? навчати модел? за допомогою високор?вневого API-?нтерфейсу Keras, що полегшу? початок роботи з TensorFlow ? машинне навчання.Коли нам потр?бна велика гнучк?сть, швидк?сне виконання забезпечу? негайну ?терац?ю ? ?нту?тивно зрозум?ле налагодження. Для великих навчальних завдань ML використову?ться API стратег?? розпод?лу для розпод?леного навчання на р?зних апаратних конф?гурац?ях без зм?ни визначення модел?.2.1.3. FCNN (Fully Connected Neural Network)Повн?стю пов'язана нейронна мережа склада?ться з сер?? повн?стю пов'язаних шар?в. Повн?стю пов'язаний шар - це функц?я в?д ? m до ? n. Кожне вих?дний вим?р залежить в?д кожного вх?дного вим?рювання.Нехай x ∈ represent m явля? вх?д в повн?стю зв'язний шар. Нехай y i ∈ ? i-й вих?д повн?стю зв'язкового шару. Тод? y i ∈ ? обчислю?ться таким чином:y?i?=?σ?(?w?1?x?1?+???+?w?m?x?m?)Тут σ - нел?н?йна функц?я (на даний момент можна уявити, що σ - сигмовидная функц?я, представлена в попередньому розд?л?), а w i - досл?джуван? параметри в мереж?. Повний вих?д у тод?y?=?σ?(?w?1,1?x?1?+???+?w?1,m?x?m?)???σ?(?w?n,1?x?1?+???+?w?n,m?x?m?)Мережа з дек?лькома повн?стю п?дключеними мережами часто називають ?глибокою? мережею.2.2. NUMPYNumPy[53] - це б?бл?отека для мови програмування Python, в яку додана п?дтримка великих багатовим?рних масив?в ? матриць, а також з великою колекц??ю математичних функц?й високого р?вня для роботи з цими масивами. Предок NumPy, Numeric, спочатку був створений Джимом Хугун?ним за участю к?лькох ?нших розробник?в. У 2005 роц? Трев?с Ол?фант створив NumPy, включивши в нього можливост? конкуруючого Numarray з великими модиф?кац?ями. NumPy ? програмним забезпеченням з в?дкритим вих?дним кодом ? ма? багато учасник?в.NumPy нац?лений на еталонну реал?зац?ю CPython Python, який ? не оптим?зуючим ?нтерпретатором байт-коду. Математичн? алгоритми, написан? для ц??? верс?? Python, часто працюють набагато пов?льн?ше, н?ж скомп?льован? екв?валенти. NumPy частково вир?шу? проблему пов?льност?, надаючи багатовим?рн? масиви, а також функц?? та оператори, як? ефективно працюють з масивами, вимагаючи переписування деякого коду, в основному внутр?шн?х процедур, використовуючи NumPy.Використання NumPy в Python да? функц?ональн?сть, пор?внянну з MATLAB, оск?льки вони обидва ?нтерпретуються, ? вони обидва дозволяють користувачев? писати швидк? програми, якщо б?льш?сть операц?й працюють з масивами або матрицями зам?сть скаляр?в. Для пор?вняння, MATLAB може похвалитися великою к?льк?стю додаткових набор?в ?нструмент?в, зокрема Simulink, тод? як NumPy нерозривно ?нтегрований з Python, б?льш сучасним ? повним мовою програмування. Кр?м того, доступн? додатков? пакети Python; SciPy - це б?бл?отека, яка дода? б?льше функц?ональност?, под?бно? MATLAB, а Matplotlib - це пакет для креслення, який забезпечу? функц?ональн?сть, под?бну MATLAB. Внутр?шньо, ? MATLAB, ? NumPy покладаються на BLAS ? LAPACK для ефективних обчислень л?н?йно? алгебри.Прив'язки Python широко використову?ться б?бл?отеки комп'ютерного зору OpenCV використовують масиви NumPy для збер?гання ? обробки даних. Оск?льки зображення з дек?лькома каналами просто представлен? у вигляд? тривим?рних масив?в, ?ндексац?я, розр?зування або маскування за допомогою ?нших масив?в ? дуже ефективними способами доступу до певних п?кселям зображення. Масив NumPy як ун?версальна структура даних в OpenCV для зображень, вид?лених характерних точок, ядр ф?льтр?в ? багато чого ?ншого значно спрощу? процес програмування ? налагодження.2.2.1. СТРУКТУРА ДАНИХ NDARRAYОсновна функц?ональн?сть NumPy - це ?ndarray?, для n-м?рного масиву, структура даних. Ц? масиви ? посл?довними поглядами на пам'ять. На в?дм?ну в?д вбудовано? структури даних списку Python (яка, незважаючи на назву, ? динам?чним масивом), ц? масиви мають однакову тип?зац?ю: вс? елементи одного масиву повинн? бути одного типу.Так? масиви також можуть бути уявленнями в буферах пам'ят?, вид?лених розширеннями C / C ++, Cython ? Fortran для ?нтерпретатора CPython без необх?дност? коп?ювати дан?, забезпечуючи певну ступ?нь сум?сност? з ?снуючими числовими б?бл?отеками. Ця функц?ональн?сть використову?ться пакетом SciPy, який включа? ряд таких б?бл?отек (особливо BLAS ? LAPACK). NumPy ма? вбудовану п?дтримку в?дображаються в пам'ят? ndarrays.2.2.2.ОБМЕЖЕННЯВставка чи додавання запис?в в масив не так проста, як в списках Python. Процедура np.pad (...) для розширення масив?в фактично створю? нов? масиви бажано? форми ? значень заповнення, коп?ю? даний масив в новий ? поверта? його. Операц?я NumPy np.concatenate ([a1, a2]) насправд? не пов'язу? два масиви, а поверта? новий, заповнений записами з обох зазначених масив?в в посл?довност?. Зм?на розм?рност? масиву за допомогою np.reshape (...) можлива т?льки до тих п?р, поки к?льк?сть елемент?в в масив? не зм?ниться. Ц? обставини ? насл?дком того факту, що масиви NumPy повинн? бути уявленнями про сум?жних буферах пам'ят?. Пакет зам?ни п?д назвою Blaze намага?ться подолати це обмеження.Алгоритми, як? не можуть бути виражен? як векторизованих операц?я, як правило, будуть виконуватися пов?льно, тому що вони повинн? бути реал?зован? в ?чистому Python?, в той час як векторизац?я може зб?льшити складн?сть пам'ят? деяких операц?й з константи на л?н?йну, тому що повинн? бути створен? тимчасов? масиви розм?ром до входи. Комп?ляц?я числового коду п?д час виконання була реал?зована дек?лькома групами, щоб уникнути цих проблем; Р?шення з в?дкритим вих?дним кодом, як? вза?мод?ють з NumPy, включають scipy.weave, Numberxpr ? Numba. Cython ? Pythran ? альтернативами статично? комп?ляц??.2.3. PandasУ комп'ютерному програмуванн? pandas[54] - це б?бл?отека програмного забезпечення, написана для мови програмування Python для обробки ? анал?зу даних. Зокрема, в?н пропону? структури даних ? операц?? для роботи з числовими таблицями ? тимчасовими рядами. Назва походить в?д терм?ну ?групов? дан??, економетричного терм?ну для набор?в даних, як? включають спостереження за дек?лькома пер?одами часу для одних ? тих же людей.особливост? б?бл?отеки-Об'?кт DataFrame для ман?пулювання даними з вбудованою ?ндексац??ю.-?нструменти для читання ? запису даних м?ж структурами даних в пам'ят? ? р?зними форматами файл?в.-Вир?внювання даних ? ?нтегрована обробка в?дсутн?х даних.-Зм?на форми ? поворот набор?в даних.-Зр?зи на основ? м?ток, незвичайне ?ндексування ? п?дмножина великих набор?в даних.-Вставка ? видалення стовпця структури даних.-Групування по движку, що дозволя? виконувати операц?? под?лу-застосування-об'?днання над наборами даних.-Злиття ? об'?днання даних.-?ндексац?я по ??рарх?чн?й ос? для роботи з багатовим?рними даними в низько розм?рних структур? даних.-Функц?ональн?сть часових ряд?в: генерац?я д?апазону дат ? перетворення частоти, статистика рухомого в?кна, л?н?йн? регрес?? рухомого в?кна, зрушення дати ? в?дставання.-Забезпечу? ф?льтрац?ю даних.-Б?бл?отека високо оптим?зована для продуктивност?, критичн? шляху коду написан? на Cython або C.Pandas в основному використовуються для машинного навчання у вигляд? ?нформац?йних фрейм?в. Pandas дозволя? ?мпортувати дан? з р?зних формат?в файл?в, таких як CSV, Excel ? т.д. Pandas дозволя? виконувати р?зн? операц?? з даними, так? як групування, об'?днання, об'?днання, плавлення, об'?днання, а також функц?? очищення даних, так? як заповнення, зам?на або додавання нульових значень.2.4. MATPLOTLIBMatplotlib[55] - це б?бл?отека креслення для мови програмування Python ? його числового математичного розширення NumPy. В?н нада? об'?ктно-ор??нтований API для вбудовування . Граф?к?в в додатки, використовуючи ун?версальн? набори ?нструмент?в GUI, так? як Tkinter, wxPython, Qt або GTK +. ?сну? також процедурний ?нтерфейс ?pylab?, заснований на к?нцевому автомат? (наприклад, OpenGL), який дуже схожий на MATLAB, хоча його використання не рекоменду?ться. SciPy використову? Matplotlib.Matplotlib був спочатку написаний Джоном Д. Хантером, ма? активне сп?втовариство розробник?в ? поширю?ться п?д л?ценз??ю в стил? BSD. Майкл Дроттбум був призначений головним розробником matplotlib незадовго до смерт? Джона Хантера в серпн? 2012 року, ? до нього при?днався Томас Касвелл.Matplotlib пооб?цяв не п?дтримувати Python 2 п?сля 2020 року, п?дписавши заяву Python 3.Доступно дек?лька набор?в ?нструмент?в, як? розширюють функц?ональн?сть Matplotlib. Деяк? завантажуються окремо, ?нш? поставляються з вих?дним кодом Matplotlib, але мають зовн?шн? залежност?.Базова карта: побудова карти з р?зними карто. Граф?чними проекц?ями, береговими л?н?ями ? пол?тичними кордонами Cartopy: б?бл?отека карто. Граф??, що показу? визначення об'?ктно-ор??нтовано? проекц?? карти, а також можливост? перетворення дов?льних точок, л?н?й, багатокутник?в ? зображень. (Matplotlib v1.2 ? вище)?нструменти Excel: утил?ти для обм?ну даними з Microsoft Excel?нструменти GTK: ?нтерфейс до б?бл?отеки GTK +?нтерфейс QtMplot3d: тривим?рн? д?лянкиNatgrid: ?нтерфейс з б?бл?отекою natgrid для с?тки даних з нер?вном?рним розташуванням.matplotlib2tikz: експорт в Pgfplots для плавно? ?нтеграц?? в документи LaTeX.2.5. SEABORNSeaborn[56] - це б?бл?отека в?зуал?зац?? даних Python, заснована на matplotlib. В?н нада? високор?внева ?нтерфейс для малювання привабливою ? ?нформативною статистично?.2.6. ReLUУ контекст? штучних нейронних мереж випрямляч (Rectified Linear Unit) [57] - це функц?я активац??, визначена як позитивна частина його аргументу:де x – вх?дне значення нейрона. Це також в?доме як рампова функц?я ? ? аналогом нап?вхвильово? ректиф?кац?? в електротехн?ц?.Ця функц?я активац?? вперше була введена в динам?чну мережу Hahnloser et al. у 2000 р. ?з сильними б?олог?чними мотивац?ями та математичними об?рунтуваннями. Це було вперше продемонстровано в 2011 роц? для того, щоб забезпечити кращу п?дготовку б?льш глибоких мереж [3] пор?вняно з широко використовуваними функц?ями активац?? до 2011 року, наприклад, лог?стичним сигмо?дом (який натхненний теор??ю ймов?рностей; див. Лог?стичну регрес?ю) та його б?льш практичний аналог, г?пербол?чний дотичний. Випрямляч станом на 2017 р?к ? найпопулярн?шою функц??ю активац?? для глибоких нейронних мереж.Одиниця, що використову? випрямляч, також назива?ться випрямленою л?н?йною одиницею (ReLU). Випрямлен? л?н?йн? одиниц? знаходять застосування в комп’ютерному зор? та розп?знаванн? мови за допомогою глибоких нейронних мереж.2.7. Пакетна нормал?зац?яЩоб п?двищити стаб?льн?сть нейронно? мереж?, нормал?зац?я Batch [58] нормал?зу? вих?дн? дан? попереднього шару активац?? шляхом вирахування середнього значення парт?? ? д?лення на стандартне в?дхилення Batch.Однак п?сля цього зсуву / шкали активац?? за деякими випадково ?н?ц?ал?зувати параметрам ваги в наступному шар? перестають бути оптимальними. SGD (Стохастический град??нтний спуск) скасову? цю нормал?зац?ю, якщо це спос?б м?н?м?зувати функц?ю втрат.Отже, пакетна нормал?зац?я дода? два параметра, що навчаються, до кожного шару, тому нормал?зований вих?дний сигнал множиться на параметр ?стандартне в?дхилення? (гамма) ? дода?ться ?середн?й? параметр (бета). ?ншими словами, пакетна нормал?зац?я дозволя? SGD виконувати денормал?зац?ю, зм?нюючи т?льки ц? дв? ваги для кожно? активац??, зам?сть втрати ст?йкост? мереж? шляхом зм?ни вс?х ваг. 2.8. Алгоритм оптим?зац?? АдамAdam[59] - це алгоритм оптим?зац??, який можна використовувати зам?сть класично? процедури стохастичного град??нтного спуску для ?теративного поновлення ваг мереж? на основ? даних навчання. Стохастичний град??нтний спуск п?дтриму? ?дину швидк?сть навчання (звану альфа) для вс?х оновлень ваги ? швидк?сть навчання не зм?ню?ться п?д час тренування.Швидк?сть навчання п?дтриму?ться для кожного ваги мереж? (параметра) ? окремо адапту?ться в м?ру розвитку навчання.Метод обчислю? ?ндив?дуальн? адаптивн? швидкост? навчання для р?зних параметр?в з оц?нок першого ? другого момент?в град??нт?в.Автори описують Адам як об'?днання переваг двох ?нших розширень стохастичного град??нтного спуску. Зокрема:Адаптивний алгоритм град??нта (AdaGrad), який п?дтриму? швидк?сть навчання за параметрами, що п?двищу? продуктивн?сть при проблемах з розр?дженими град??нтами (наприклад, проблеми з природною мовою ? комп'ютерним зором).Середньоквадратичне поширення (RMSProp), яке також п?дтриму? швидкост? навчання по кожному параметру, як? адаптован? на основ? середнього значення останн?х град??нт?в для ваги (наприклад, як швидко воно зм?ню?ться). Це означа?, що алгоритм добре справля?ться з онлайн ? нестац?онарними завданнями (наприклад, з шумом).Зам?сть того, щоб адаптувати швидкост? навчання параметр?в на основ? середнього першого моменту (середнього), як в RMSProp, Адам також використову? середн? значення других момент?в град??нт?в (нецентрованого дисперс?я).Зокрема, алгоритм обчислю? експонентну ковзаючу середню град??нта ? квадрата град??нта, а параметри бета1 ? бета2 контролюють швидкост? загасання цих ковзних середн?х.Початкове значення зм?нних середн?х ? значень бета1 ? бета2, близьких до 1,0 (рекоменду?ться), призводить до зм?щення оц?нок момент?в в сторону нуля. Цей зсув дола?ться спочатку обчисленням зм?щених оц?нок, а пот?м обчисленням оц?нок з поправкою на зм?щення. 2.7. Висновок до розд?лу 2Я розглянув ус? потр?бн? матер?али для п?дготовки свого проекту, Пор?внявши та зваживши б?бл?отеки р?зних направленостей для легшого виконання та кращо? в?зуал?зац?? мо?х д?й. Також було розглянуто ряд нейронних машин та р?зн? методики заучування, задля усп?шного навчання та передбачення небезпеки. Було зроблено виб?р використовувати:1. Для навчання нейронну машину FCNN через його гнучк?сть та версетильн?сть.2. Було вир?шено використовувати ряд б?бл?отек, як для необх?дност?, так ? для легчого сприйняття ?нформац??, так? як SEABORN, MATPLOTLIB.3. Також для обробки даних було використано б?бл?отеки в?льного доступу PANDAS та NumPy.4. Як основну мову було використано Phyton, через його доступн?сть та велику к?льк?сть допом?жно? л?тератури з ц??ю мовою.5. Як алгоритми для навчання було вибрано зсилатися на Алгоритм оптим?зац?? Адам, Batch нормал?зац?я, ReLU та ?нш?.РОЗД?Л 3 РЕАЛ?ЗАЦ?Я АЛГОРИТМУ МОДЕЛ? АНАЛ?ЗУ СИСТЕМИ П?ДВЕРГНУТО? ВПЛИВУ ЗЛОВМИСНИЦЬКОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯПроблема зараження шк?дливим ПЗ може торкнутися вс?х, в?д окремих приватних ос?б, через компан??, до державних установ. Саме розповсюдженн? шк?дливих програм - це заразне програмне забезпечення (в основному троянськ? програми ? в?руси, але не т?льки), яке намага?ться зловживати або завдавати шкоди комп'ютеру, серверу, а також витягувати / викрадати конф?денц?йну або конф?денц?йну ?нформац?ю. Ними можуть бути, наприклад, дан? вашого банк?вського рахунку, дан? ваших кредитних карт, р?зн? парол? або будь-як? ?нш? конф?денц?йн? дан? (наприклад, внутр?шн? документи компан??).Щоб протистояти цим загрозам, постачальники програмного забезпечення вводять активн? ? пасивн? контрзаходи. Це, наприклад, антив?руси ? антив?русн? програми (активн?). У раз? IBM, такими продуктами ?, наприклад, Microsoft Security Essentials (MSE) або добре в?домий Захисник Windows. Незважаючи на ц? активн? контрзаходи, шк?дливе ПЗ може проникнути в систему, використовуючи дефекти безпеки в самому програмному забезпеченн?, наприклад в р?зних верс?ях / зб?рках операц?йно? системи, ?нтернет-браузер?в або ?х плаг?н?в. Тому операц?йн? системи та програмне забезпечення повинн? час в?д часу оновлюватися, щоб п?двищити ?х продуктивн?сть ? безпеку.3.1. Досл?дницький анал?з даних.Першим кроком ? читання б?бл?отек, як? ми будемо використовувати в нашому анал?з?.Основн? б?бл?отеки, встановлен? для анал?зу даних:Numpy - фундаментальний пакет для наукових обчисленьpandas - б?бл?отека ?нструмент?в для анал?зу даних ? данихmatplotlib - в?зуал?зац?я данихSeaborn - в?зуал?зац?я данихБуло проведено ряд д?й, задля виведення вс?х метаданих в таблиц?, задля легшого розпод?лення та селекц?? потр?бно? ?нформац??. П?сля цього провели перев?рку форми нашо? бази даних. П?сля цього було виписано в окремий список ус? б?нарн? значення, як? зустр?лися у нас в таблиц?. В?дтворили перев?рку ск?льки у нас зм?нних в анал?з? виявилися пустими, щоб не використовувати ?х дал? у обробц?.Таблиця 3.1Таблиця вражених данихназваВ?дсутн? значенняВ?дсоток в?дсутност? (%)0PuaMode891917499.9741191Census_ProcessorClass888485299.5894072DefaultBrowsersIdentifier848804595.1416373Census_IsFlightingInternal740875983.0440304Census_InternalBatteryType633842971.0468095Census_ThresholdOptIn566732563.5244726Census_IsWIMBootEnabled565970363.4390387SmartScreen317701135.6107958OrganizationIdentifier275151830.8414879SMode5377596.02768610CityIdentifier3254093.64747711Wdft_IsGamer3034513.40135212Wdft_RegionIdentifier3034513.40135213Census_InternalBatteryNumberOfCharges2687553.01244814Census_FirmwareManufacturerIdentifier1832572.05410915Census_IsFlightsDisabled1605231.79928616Census_FirmwareVersionIdentifier1601331.79491517Census_OEMModelIdentifier1022331.14591918Census_OEMNameIdentifier954781.07020319Firewall913501.02393320Census_TotalPhysicalRAM805330.90268621Census_IsAlwaysOnAlwaysConnectedCapable713430.79967622Census_OSInstallLanguageIdentifier600840.67347523IeVerIdentifier588940.66013724Census_PrimaryDiskTotalCapacity530160.59425125Census_SystemVolumeTotalCapacity530020.59409426Census_InternalPrimaryDiagonalDisplaySizeInInches471340.52832027Census_InternalPrimaryDisplayResolutionHorizontal469860.52666128Census_InternalPrimaryDisplayResolutionVertical469860.52666129Census_ProcessorModelIdentifier413430.46341030Census_ProcessorManufacturerIdentifier413130.46307331Census_ProcessorCoreCount413060.46299532AVProductStatesIdentifier362210.40599833AVProductsInstalled362210.40599834AVProductsEnabled362210.40599835IsProtected360440.40401436RtpStateBitfield323180.36224937Census_IsVirtualDevice159530.17881638Census_PrimaryDiskTypeName128440.14396739UacLuaenable108380.12148240Census_ChassisTypeName6230.00698341GeoNameIdentifier2130.00238742Census_PowerPlatformRoleName550.00061643OsBuildLab210.00023574 колонок без в?дсутн?х значень35 з менш н?ж 10% втратами 2 втрати м?ж 10% та 50% 7 втрати б?льш? за 50%Рис. 3.1. Граф втрачених данихРис. 3.2. Граф ф?ксац?? втратиСпостер?га?ться в?дносна збалансован?стьДля того, щоб розд?лити наш? машини на к?лька категор?й, потр?бно розглянути категор?? продукт?в, верс?? движк?в, платформи, Census_MDC2FormFactor ? OsSuite.Досл?джу?мо перший стовпець ?Назва продукту?. Тут ма?мо категор??:win8defender (Захисник в Windows 8)MSE (Microsoft Security Essentials)У таких пор?вняннях дуже важливо завжди дивитися на абсолютн? ? в?дносн? числа, щоб правильно ?нтерпретувати результати. Рис. 3.3. Граф встановлених ПЗ на вражених машинахНаведен? вище . Граф?ки ясно показують, що на переважн?й б?льшост? машин встановлений Windows 8 Defender. Проте, з точки зору в?дсотка заражених комп'ютер?в в кожн?й категор?? обидва однаков? - близько 50%.Було взято за прикладWindows 10Windows 8Windows 7Windows 2016Рис. 3.4. Граф вражених платформCensus_MDC2FormFactor:'Desktop''Notebook''Detachable''PCOther''AllInOne''Convertible''SmallTablet''LargeTablet''SmallServer''LargeServer''MediumServer''ServerOther'В?дф?льтру?мо результати лише вище за 1%Рис. 3.5. Граф вражених пристро?в р?зних форм-фактор?в Рис. 3.6. Граф вражених платформ за верс??ю Рис. 3.7. Граф платформ з враженими OsSuite Рис. 3.8. Граф вражених платформ р?зних видань Рис. 3.9. Граф платформ з враженими процесорами Рис. 3.10. Граф вражених платформ за верс??юРис. 3.11. Граф вражених платформ за наявност? SmartScreenПрограма зробила роботу по виявленню та анал?зу даних, як? були виведен? на графи та показан? в статистиц? для подальшо? обробки та прийняття р?шень.к?льк?сть ?дентиф?катор?в л?чильника: 222найпопулярн?ший ?дентиф?катор: 43Рис. 3.12. Г?стограма ?дентиф?катор?в по кра?нах3.2. Побудова та навчанняДля початку було ?мпортовано б?бл?отеку Pandas, п?сля чого завантажили дан? як частоти, тобто в залежност? в?д к?лькост? даних буде зростання ?нтенсивност? ?х обробки, та як ун?тарний код, дв?йковий код ф?ксовано? довжини. П?сля чого ми завантажили ц? дан? разом як категор??, щоб створити таблицю цих даних.Завантаживши дан? для перев?рки, ми обмежимо максимальну к?льк?сть строк для обробки 2 000 000 за перев?рку, щоб не навантажувати комп’ютерну систему.3.2.1. Нормал?зац?я зм?ннихВс? зм?нн? в списку зм?нних частот будуть закодован? як частоти, а вс? зм?нн? в списку ун?тарних кодувань - статистично ун?тарн?. В ц?лому сорок три зм?нн? були ?мпортован? з навчально? зб?рки даних, а тридцять дев'ять були про?гнорован?.Серед вс?х зм?нних нашо? категор?? ? 211 562 значень, тож не можливо закодувати вс? як ун?тарн?. Було припущено, що у нас ? готовий приклад, з якого ми можемо робити H0: Ймов?рн?сть (HasDetections=1 дане значення ?сну?) = 0.5HA: Ймов?рн?сть (HasDetections=1 дане значення ?сну?) ≠ 0.5Тестова статистика z дор?вню? р, де огляда?мий HasDetection ма? значення, м?нус 0.5, пот?м розд?ля?ться на стандартне в?дхилення р, тому використа?мо теорему центрального л?м?туде n число повтор?в цих значень. Якщо ц?ле значення z б?льше 2.0, тод? ми на 95% впевнен?, що ймов?рн?сть (HasDetection=1) не дор?внюватиме 0.5 та буде мати булеве значення в наш?й модел?. Але знадобиться межа z в 5.0 та 10-7n>0.005. Це дода? 350 нових булевих значень зам?сть запису ун?тарним кодом 211,562 значень.3.2.1.1. Наприклад – Census_FirmwareManufacturerIdentifierНа рисунках 3.13 та 3.14 пунктир використову? вертикаль право? сторони(точн?сть передбачення), а суц?льн? л?н?? – л?во?(пропорц?? категор?й). На рисунку 3.13 зображу? 20 значень зм?них Census_FirmwareManufacturerIdentifier включаючи нульов?. Кожне значення утриму? 0.5% ?нформац??, вс? зм?нн? разом утворюють 97%. Значення 93 мають ймов?рн?сть HasDetection в 52.5%, в той час коли значення 803 ма? HasDetection ймов?рн?сть аж у 35.4%. ?хн? z значення22.2 = 2×(0.5253?0.5)×192481?71.3 = 2×(0.3535?0.5)×59145Разом ця ймов?рн?сть утворю? 50%, що ? дуже низьким показником, бо шанс близький до нуля. Можна пом?тити, що ц? два значення були пост?йно високими протягом усього 2018-го року, на чому можна зробити висновок, що ця тенденц?я буде продовжуватися ? надал?.Рис. 3.13. Census_FirmwareManufacturerIdentifier. Пропорц?? категор?й в?дпов?дно вс?х значень, що утримують б?льше 0.5% ?нформац??. Зображено 97% ?нформац??.Рис. 3.14. Census_FirmwareManufacturerIdentifier. Насичен?сть категор?ями в?дпов?дно модиф?кац?? моделей.Було ?мпортовано б?бл?отеку для математичних розрахунк?в та зроблена перев?рка на пуст? значення. Дал? було використано метод нормал?зац?? зм?нних, де було ун?тарно закодовано вс? значення категор?й, як? разом складаються в б?льший за визначений ф?льтром в?дсоток загально? пам’ят? та мають р?зницю б?льшу за значення z. П?сля цього ми коду?мо вс? значення в Булев?.Був створений цикл для того, щоб пройтись по кожному даному елементу, п?сля чого утворю?ться наб?р булевих значень кожного елемента, який упорядкований по типам зм?нних.3.2.1.2. Наприклад – Census_OEModelIdentifierНа рисунку 3.15 нульове значення (NAN) вважа?ться як категор?я значення, яка завжди ма? найнижче значення ймов?рност? HasDetection за увесь 2018. В той самий час значення 245824 спостер?галося з пост?йно високою. Ц?кавим було й те, що значення 188345 та 248045 високе та низьке в?дпов?дно, в Серпн? та Вересн?, хоч ран?ше цього ж року ц? позиц?? були навпаки.Рис. 3.15. Census_OEModelIdentifier. Пропорц?? категор?й в?дпов?дно вс?х значень, що утримують б?льше 0.5% ?нформац??. Зображено 15% ?нформац??.Рис. 3.16. Census_OEModelIdentifier. Насичен?сть категор?ями в?дпов?дно модиф?кац?? моделей.3.2.2. Побудова мереж?Було вир?шено налагодити роботу трьох повних шар?в об’?днано? мереж? (FCNN) з одн??ю сотнею нейрон?в на кожному прихованому шар?. Було використано активац?ю ReLU, пакетну нормал?зац?ю, 40% виключень, оптим?зац?ю Адам та Спадну частоту навчання. Також, було вир?шено використовувати стаохастичний клас алгоритм?в оптим?зац??, щоб шукати оптимальне р?шення використовуючи випадков?сть. Це все можна ?мпортувати з б?бл?отек Keras.На даному етап? у нас нема? функц?? втрати площини п?д кривою, тому використа?мо зам?сть не? функц?ю перехресно? ентроп??. П?сля кожного Епоху(кол?на) буде викликатися сво?р?дний виклик Keras, щоб кожного разу перезаписувалася краща модель площини п?д кривою ROC. Вона нам потр?бна для того, щоб п?зн?ше правильно оц?нити як?сть б?нарно? класиф?кац??.Для початку, було вид?лено пам’ять для запит?в в Keras, п?сля чого ми п?дключилися до TensorFlow.Для використання стохастичного град??нтного спуску з? зворотним поширенням помилок, для навчання глибоких нейронних мереж, необх?дна функц?я активац??, яка вигляда? ? д?? як л?н?йна функц?я, але насправд? ? нел?н?йно? функц??ю, що дозволя? вивчати складн? зв’язки в даних.Рис. 3.17. Структура проектуФункц?я також повинна забезпечувати б?льшу чутлив?сть до введення суми активац?? ? уникати легкого насичення.Р?шення поляга? в тому, щоб використовувати випрямлену функц?ю л?н?йно? активац?? або ReLU для стислост?.Зазвиичай, область нейронних мереж уникала будь-яко? функц?? активац??, яка не була повн?стю диференц?йована, можливо, затримуючи прийняття виправлено? л?н?йно? функц?? та ?нших кусочно-л?н?йних функц?й. Техн?чно, ми не можемо обчислити пох?дну, коли вв?д дор?вню? 0.0, тому ми можемо припустити, що в?н дор?вню? нулю.Вузол або модуль, який реал?зу? цю функц?ю активац??, назива?ться випрямленою модулем л?н?йно? активац??, або скорочено ReLU. Часто мереж?, як? використовують функц?ю випрямляча для прихованих шар?в, називаються випрямленими мережами.3.2.2.1. Модуль FCNNОдним з вражаючих аспект?в повн?стю п?дключених мереж ? те, що вони, як правило, запам'ятовують тренувальн? дан? повн?стю при наявност? достатнього часу. В результат?, навчання повн?стю п?дключено? мереж? до ?конвергенц??? не ? значимим показником. Мережа буде продовжувати навчання ? навчання, поки користувач готовий чекати.Для досить великих мереж досить часто втрати в навчанн? мають тенденц?ю наближатися до нуля. Це емп?ричне спостереження ? одн??ю з найб?льш практичних демонстрац?й можливостей ун?версального наближення повн?стю пов'язаних мереж. Проте, зверн?ть увагу, що тенденц?я до втрати навчання до нуля не означа?, що мережа вивчила б?льш потужну модель. Ц?лком ймов?рно, що модель почала запам'ятовувати особливост? навчального набору, як? не застосовн? до жодних ?нших точок даних.Одним з ц?кавих властивостей багатовим?рно? статистики ? те, що при досить великому набор? даних буде багато помилкових кореляц?й ? патерн?в, доступних для вибору. На практиц? повн?стю п?дключен? мереж? повн?стю здатн? виявляти ? використовувати ц? помилков? кореляц??. Управл?ння мережами ? запоб?гання ?х неправильно? повед?нки таким чином ма? вир?шальне значення для усп?ху моделювання.Випадання в нейронн?й мереж? - форма регуляризац??, яка випадковим чином в?дкида? деяку частку вузл?в, як? подають в повн?стю пов'язаний шар. Тут видалення вузла означа?, що його внесок в збереження об'?кта активац?? встановлений на 0. Оск?льки внесок в активац?ю в?дсутн?й, град??нти для в?дкинутих вузл?в також падають до нуля.В?дкидн? вузли вибираються випадковим чином на кожному етап? град??нтного спуску. Основний принцип проектування поляга? в тому, що мережа буде змушена уникати ?коадаптац???. Припустимо, що один нейрон в глибок?й мереж? отримав корисне враження. Тод? ?нш? нейрони, що знаходяться глибше в мереж?, швидко навчаться залежати в?д цього конкретного нейрона для отримання ?нформац??. Цей процес зробить мережу вразливою, оск?льки мережа буде надм?рно залежати в?д функц?й, вивчених цим нейроном, як? можуть представляти примху набору даних, зам?сть вивчення загального правила.Випадання запоб?га? цей тип коадаптац??, тому що б?льше не буде можливост? залежати в?д присутност? одиночних потужних нейрон?в (так як цей нейрон може випадково падати п?д час тренування). В результат?, ?нш? нейрони будуть змушен? ?розслабитися? ? вивчити корисн? уявлення. Теоретичний аргумент виплива?, що цей процес повинен привести до б?льш сильним вивченим моделям.На практиц? в?дс?в ма? пару емп?ричних ефект?в. По-перше, в?н не дозволя? мереж? запам'ятовувати дан? навчання; з випаданням втрати при навчанн? б?льше не будуть стр?мко наближатися до 0 нав?ть для дуже великих глибоких мереж. Пот?м, в?дс?в ма? тенденц?ю трохи п?двищити передбачувану силу модел? на нових даних. Цей ефект часто ма? м?сце для широкого д?апазону набор?в даних, що ? одн??ю з причин того, що в?дс?в вважа?ться визнаним потужним винаходом, а не просто статистичними зломом.Для оц?нки точност? модел? стандартна практика вимага? вим?рювання точност? модел? за даними, що не використаним для навчання (а саме, наб?р для перев?рки). Однак той факт, що дан? незбалансован?, ускладню? завдання. Метрика точност? класиф?кац??, яку ми використовували в попередньому розд?л?, просто вим?рю? частку точок даних, як? були правильно позначен?. Однак 95% даних в нашому набор? даних позначен? як 0, ? т?льки 5% позначен? як 1. У результат? модель все-0 (яка познача? все як негативн?) досягла б точност? 95%.3.2.2.2. Переваги функц?? випрямлено? л?н?йно? активац?? (ReLU)1. Простота обчислень.Функц?я випрямляча трив?альна для реал?зац??, вимагаючи функц?? max ().Це в?др?зня?ться в?д функц?? активац?? tanh ? sigmoid, яка вимага? використання експоненц?ального розрахунку.2. Репрезентативна розр?джен?стьВажливою перевагою функц?? випрямляча ? те, що вона здатна видавати справжн? нульове значення.Це в?др?зня?ться в?д ?нших функц?й активац??, як? навчаються наближати нульовий вих?д, наприклад, значення, дуже близьке до нуля, але не справжн? нульове значення.Це означа?, що негативн? вх?дн? дан? можуть виводити справжн? нульов? значення, що дозволя? активувати прихован? шари в нейронних мережах, щоб утримувати одне або к?лька справжн?х нульових значень. Це назива?ться розр?дженим поданням ? ? бажаною властив?стю в репрезентативному навчанн?, оск?льки воно може прискорити навчання ? спростити модель.Область, де ефективн? подання, так? як розр?джен?сть, вивчаються ? шукаються, знаходиться в автоенкодерах, де мережа вивча? компактне уявлення введення (також в?домо як р?вень коду), таке як зображення або ряд, до того, як воно в?дновлю?ться з компактного представлення.3.2.2.3 Пакетна нормал?зац?яПакетна нормал?зац?я - це метод п?двищення швидкост?, продуктивност? ? стаб?льност? штучних нейронних мереж. Пакетна нормал?зац?я була введена в статт? 2015 року. Вона використову?ться для нормал?зац?? вх?дного шару шляхом настройки ? масштабування активац?й. Хоча ефект нормал?зац?? парт?? очевидний, причини ?? ефективност? залишаються в стад?? обговорення. Вважалося, що це може пом'якшити проблему внутр?шнього ковар?атного зсуву, коли ?н?ц?ал?зац?я параметр?в ? зм?ни в розпод?л? вход?в кожного шару впливають на швидк?сть навчання мереж?.У нейронн?й мереж? пакетна нормал?зац?я досяга?ться за допомогою кроку нормал?зац??, який ф?ксу? середн? значення ? в?дхилення вход?в кожного шару. В ?деал? нормал?зац?я повинна проводитися по всьому навчальному набору, але для використання цього кроку сп?льно з? стохастичними методами оптим?зац?? використання глобально? ?нформац?? недоц?льно. Таким чином, нормал?зац?я обмежу?ться кожною м?н?-парт??ю в процес? навчання.3.2.2.4. Алгоритм оптим?зац?? АдамТакож було використано алгоритм оптим?зац?? Адам, адже в?н мав так? переваги, як Простий для реал?зац??.Обчислювально ефективний.Низьк? вимоги до пам'ят?.Незалежний до зм?ни масштабу град??нта по д?агонал?.Добре п?дходить для задач, як? ? великими з точки зору даних ? / або параметр?в.П?дходить для нестац?онарних ц?лей.П?дходить для задач з дуже важкими град??нтами.Г?перпараметри мають ?нту?тивно зрозум?лу ?нтерпретац?ю ? зазвичай вимагають невелико? настройки.Конф?гурац?йн? параметри АДАМalpha. Також назива?ться швидк?стю навчання або розм?ром кроку. Пропорц?я, що обчислю?ться оновлю?ться (наприклад, 0,001). Б?льш? значення (наприклад, 0,3) призводять до б?льш швидкого початкового навчання до поновлення швидкост?. Менш? значення упов?льнюють навчання прямо п?д час тренуванняbeta1. Показник експоненц?йно? швидкост? загасання для першого моменту (наприклад, 0,9).beta2. Показник експоненц?ального спаду для оц?нок другого моменту (наприклад, 0,999). Це значення ма? бути близько до 1,0 в раз? проблем з розр?дженим град??нтом.epsilon. Це дуже невелика к?льк?сть, щоб запоб?гти будь-який под?л на нуль при реал?зац??.Зам?сть того щоб адаптувати швидкост? навчання параметр?в на основ? середнього першого значення, також використову?ться середн? значення других момент?в град??нт?в (нецентрованого дисперс?я).Зокрема, алгоритм обчислю? експонентну ковзаючу середню град??нта ? квадрата град??нта, а параметри beta1 ? beta2 контролюють швидкост? загасання цих ковзних середн?х.Початкове значення зм?нних середн?х ? значень beta1 ? beta2, близьких до 1, 0 (рекоменду?ться), призводить до зм?щення оц?нок момент?в в сторону нуля. Цей зсув дола?ться спочатку обчисленням зм?щених оц?нок, а пот?м розрахунком поправок зм?щення.3.2.2.5. Крива ROC та AUCROC-крива — граф?к, що дозволя? оц?нити як?сть?б?нарно? класиф?кац??, в?добража? сп?вв?дношення м?ж часткою об'?кт?в в?д загально? к?лькост? нос??в?ознаки, в?рно класиф?кованих до загально? к?лькост? об'?кт?в, що не несуть ознаки, помилково класиф?кованих, як так?, що мають ознаку. Також в?дома як?крива похибок. Анал?з класиф?кац?й ?з застосуванням ROC-кривих назива?ться?ROC-анал?зом.Структура прогнозування структурованого виведення створю? предиктори, як? враховують ц? залежност? ? використовують ?х для п?двищення точност?. У багатьох таких завданнях продуктивн?сть оц?ню?ться по площ? п?д кривою ROC (AUC). Хоча ?сну? основа для оптим?зац?? втрат площ? п?д кривою для неструктурованих моделей, вона не поширю?ться природним чином на структурован? модел?. У ц?й робот? ми пропону?мо форму подання ? навчання для оптим?зац?? структурованих моделей по втратах AUC, показу?мо, як наш п?дх?д узагальню? неструктурований випадок, ? нада?мо алгоритми для вир?шення виникаючих в результат? проблем виведення ? навчання. Було застосовано алгоритми оптим?зац?? навчання, задля того, щоб нейронна машина змогла ефективн?ше обробляти дан?, зважаючи на ?х зв’язки та к?льк?сть вх?дних даних.Проанал?зувавши дан? ми можемо ?х завантажити для спроби передбачення шк?дливих програмних засоб?в.3.3. Тест передбаченняП?сля проходження навчання ми можемо завантажити тренувальн? дан? в такий самий спос?б, як було зроблено п?д час навчання, тобто частинами. В такий спос?б можна обмежити навантаження на обчислювальну систему, при великих к?лькостях даних, що в свою чергу вплива? на швидкод?ю тесту.Вив?дLoaded 2000000 rows of TEST.CSV! encoded and predicted part 1Loaded 2000000 rows of TEST.CSV! encoded and predicted part 2Loaded 2000000 rows of TEST.CSV! encoded and predicted part 3Loaded 1853253 rows of TEST.CSV! encoded and predicted part 4Ми збудували та натренували нейронну мережу, використовуючи Keras. В заключенн? наша площина п?д кривою складала 0.703, а нижня межа складала 0.671. З цього, можна визначити, що можливо зб?льшити ймов?рн?сть вдалого передбачення з б?льшою к?льк?стю зм?нних та кращим налаштуванням мереж?. Таким чином, з зб?льшенням даних для обробки буде необх?дно ?х розд?ляти, щоб розрахункова машина не вийшла з ладу, що, в свою чергу, зб?льшить час обробки даних.3.4. Висновок до розд?лу 3У рамках даного розд?лу було детально розглянуто аспекти розробки методу анал?зу та передбачення впливу шк?дливого програмного забезпечення, використовуючи досв?д open-source розробник?в та об’?днання ?х знань задля створення кращого продукту.Було проведено детальний огляд та роботу нейронно? мереж?, ?? особливостей та в?дтворення ?? зд?бностей на практиц?. Використовуючи власн? знання та досв?д було створено новий пол?пшений метод для анал?зу та передбачення впливу шк?дливого ПЗ. Даний метод проявив себе краще в ймов?рност? вдалих передбачень, але через додатковий анал?з перед навчанням нейронно? мереж?, цей процес став тривал?шим. Також, у цьому розд?л? було розглянуто та вир?шено певн? завдання:Були висунут? вимоги щодо даних, як? приймаються для подальшого анал?зу.Було пояснено, чому було вибрано саме так? мову програмування та б?бл?отеки, як? сприяли легш?й вза?мод?? з open-source р?шеннями та анал?зу за допомогою в?зуал?зац?й.Проведено детальний опис основно? функц?? програми, ?? вимоги та зд?бност? до навчання.Дана робота в?дкрива? двер? для пол?пшення та розвитку наступних його верс?й, якщо буде необх?дно зробити з нього повноц?нний додаток. РОЗД?Л 4 РОЗРОБКА СТАРТАП ПРОЕКТУ4.1. Опис ?де? проектуНараз?, питання к?бербезпеки дуже часто всплива?у вс?х сферах д?яльност?, тому ? попит р?шень проблем такого роду приверта? багато уваги. За допомогою анал?зу даних, як? збираються п?сля кожно? атаки, можна провести детальний огяд проблем, як? виникли, або можуть виникнути, якщо не вжити запоб?жних заход?в. Використовуючи ц? дан?, розроблюються р?зн? методики, як? повинн? передбачати, запоб?гати небажан? втрати з? сторони вражено? системи.В дипломному проект? розгляда?ться реал?зац?я такого алгоритму передбачення, який буде отримувати дан? з вражених д?лянок системи, робити ?х анал?з та виводити ймов?рност? подальшого розвитку под?й, тобто як буде вражена дана система п?сля схожих атак.Таблиця 4.1. Опис ?де?? стартап-проектуЗм?ст ?де?Напрямки застосуванняВигоди для користувачаМетод прогнозування впливу шк?дливого програмного забезпечення на роботу обчислювальних системАнал?з даних з вражених д?лянок системиАнал? в?део по тегам на б?льш трендових в?део для мон?торингу найпопулярн?ших тенденц?й в?део на платформ? Прогнозування схожих випадк?в Прогнозування популярност? в?део тег?в для розум?ння як? теги в видео збирають б?льше перегляд?в Анал?з потенц?и?них техн?ко-економ?чних переваг ?де?? (чим в?др?зня?ться в?д ?снуючих аналог?в та зам?нник?в). Оск?льки проект даного типу зазвичай ? внутр?шньо розробкою компан?й, або знаходяться у в?льному доступ?, ?х ? достатня к?льк?сть на вс? види загроз. Адже ця тема зараз дуже необх?дна.Таблиця 4.2. Визначення сильних, слабких та неи?тральних характеристик ?де?? проекту№Техн?ко-економ?чн? характеристики ?де?М?й проектКонкурентиWNS121Анал?з даних з р?зних джерел+-++2В?зуал?зац?я ймов?рностей ++-+3Висока швидк?сть обробки даних --++Визначении? перел?к неи?тральних, сильних та слабких характеристик ? особливостей ?де?? потенц?и?ного продукту ? основою для формування и?ого конкурентоспроможност?. Як можно побачити в таблиц? 4.2, основною перевагою розроблюваного продукту ? саме об’?днання сильних сторон ?хн?х методик, але це коштувало швидкост? обробки даних4.2. Технолог?чний аудит ?де? проектуТаблиця 4.3. Технолог?чна зд?и?сненн?сть ?де?? проекту№?дея проектуТехнолог?? ?? реал?зац??Наявн?сть технолог??Доступн?сть технолог?й1Метод прогнозування впливу шк?дливого програмного забезпечення на роботу обчислювальних системМова програмування Python? в наявност?Доступн? безкоштовно2Штучна нейрона мережаDEEPLOCKER? в наявност?Доступн? безкоштовно3Б?бл?отека NUMPY? в наявност?Доступн? безкоштовно4Б?бл?отека PANDAS? в наявност?Доступн? безкоштовно5Б?бл?отека METPLOTLIB? в наявност?Доступн? безкоштовно6Б?бл?отека SEABORN? в наявност?Доступн? безкоштовноОбрана технолог?я реал?зац?? ?де? проекту: розробка програми на мов? програмування Python, б?бл?отека для створення, з'?днання та отримання даних, б?бл?отеки для в?зуал?зац??, матеаматичних вираз?в та нейронна мережа.Анал?з ринкових можливостей запуску стартап-проектуВизначення ринкових можливостеи?, як? можна використати п?д час ринкового впровадження проекту, та загроз ринку, як? можуть перешкодити реал?зац??? проекту, дозволя? спланувати напрями розвитку проекту ?з урахуванням стану ринкового оточення, потреби к?нцевих кл??нт?в ? пропозиц?и? конкурентних проект?в. В таблиц? 4.4 наведена попередня характеристика можливого ринку для розробляючого стартап-проекту.Таблиця 4.4. Попередня характеристика потенц?и?ного ринку стартап-проекту№Показники стану ринкуХарактеристика1К?льк?сть головних гравц?в, од>102Динам?ка ринку (як?сна оц?нка)В сфер? анал?зу та передбачення шкоди ринок знаходиться на етап? стр?мкого зростання3Наявн?сть обмежень для входу (вказати характер обмежень)Велика к?льк?сть конкурент?в4Специф?чн? вимоги до стандартизац??? та сертиф?кац???Стандартизац??ю в сфер? обробки даних великого обсягу займаються орган?зац?? Apache License 2.0 и GNU GPLТаблиця 4.5. Характеристика потенц?и?них кл??нт?в стартап-проекту№Потреба, що форму? ринокЦ?льова аудитор?яВ?дм?нност? у повед?нц? р?зних потенц?йних ц?льових груп кл??нт?вВимоги споживач?в до товару1Попередження ф?нансових втратПриватн? компан??, як? через неполадки втрачають дох?дВипередження або виправлення п?сля ударуШвидк?сть та над?йн?сть2Збереження особисто? ?нформац??Корпоративн? кл??нти, що хочуть уберегти ?нформац?ю, як? збиралиБезпосередн? використання для р?зних потребШвидк?сть та над?йн?стьТаблиця 4.6. Фактори загроз№ФакторЗм?ст загрозиМожлива реакц?я компан??1Висока конкуренц?яНа даний момент ?сну? велика к?льк?сть аналог?в, як? в основному повторюють функц?ональн?сть одне одного, тому ? загроза не переманити кл??нтаШвидка реакц?я команди розробник?в на побажання потенц?йних кл??нт?в, пост?йне оновлення та розширення функц?ональностей, спираючись на останн? тенденц?? потреб користувач?в2Вузький спектр функц?ональностей ? можливостейНа ринок треба вийти якомога швидше, тому до цього моменту повинн? бути реал?зован? вс? основн? функц?? для забезпечення можливост? конкуренц?? та розширенню кл??нтсько? базиЗатримка моменту виходу на ринок, з метою розширення базового набору функц?ональностей3Економ?чнийВ силу обмеженост? в ф?нансовому план?, можлив? втрата актуальност?Побудова ч?ткого б?знес-плану ?з залученням сприятливих ?нвестор?вТаблиця 4.7. Фактори можливостей№ФакторЗм?ст можливост?Можлива реакц?я компан??1Залучення ?нвестиц?йСклавши ч?ткий б?знес-план, можна залучити необх?дну к?льк?сть ?нвестиц?й, що дозволить розширити штат ? прискорити момент виходу на ринокЗб?льшити штат, прискорити вих?д на ринок, вийти на пер?од самоокупност? ран?ше2Розширення кл??нтсько? базиЗ допомогою продумано? PR-кампан??, можна переманити кл??нт?в конкурент?в запропонувавши б?льш виг?дн? умови та послугиСпланувати рекламну кампан?ю, проводити презентац?? на тему к?бербезпекиТаблиця 4.8. Ступеневии? анал?з конкуренц??? на ринкуОсобливост? конкурентного середовищаВ чому проявля?ться дана характеристикаВплив на д?яльн?сть п?дпри?мства (можлив? д??? компан???, щоб бути конкурентос- проможною)Складн?сть входу на ринокРинок ? новим та велика к?льк?сть конкурент?в не укр?пили сво? позиц??, не завели зв'язки та мають налагоджену кл??нтську базуПропонувати б?льш виг?дн? умови (нав?ть з можлив?стю працювати без прибутку), анал?зувати та впроваджувати нов? розробки в сфер? ран?ше конкурент?в, як?сна рекламна кампан?яЗагальнодоступн?сть ?нформац??Базовий анал?з буде доступний для вс?х користувач?в Критично важливо готувати оновлення в м?н?мальний п?сля оприлюднення стандарт?в терм?н, щоб мати перевагу перед конкурентамиСхож?сть продукт?в-зам?нник?вТак як продукти на обраному ринку виконують фактично одну ? ту ж функц?ю, важко сутт?во вир?знятися серед конкурент?вЕкспериментувати з ?деями для нових оновлень, впроваджувати нов? р?шення в м?н?мальний терм?нТаблиця 4.9. Анал?з конкуренц??? в галуз? за М. ПортеромСкладов? анал?зуПрям? конкуренти в галуз?Потенц?йн? конкуренти в галуз?ПостачальникиКл??нтиТовари-зам?нникиIntelAMDIT companiesIntel,Open-Sourceприватн? компан??Open Source-р?шенняВисновки:?сну? не велика к?льк?сть р?зноман?тних р?шень у конкурент?в? маса додатк?в, що можуть виконувати так? ж операц??Постачальниками не ? св?тов? л?дери у сфер? в?деоанал?тики Б?льш?сть кл??нт?в уже давно на ринку та мають налагоджен? контакти з постачальниками? безкоштовн? р?шення розроблен? ентуз?астами для виконання анал?зу та обробки данихТаблиця 4.10. Об?рунтування фактор?в конкурентоспроможност?№Фактор конкурентоспроможност?Об?рунтування (наведення чинник?в, що роблять фактор для пор?вняння конкурентних проект?в значущим)1Зрозум?ла в?зуал?зац?яТак як проект на етап? розробки, можна врахувати переваги та недол?ки конкурент?в, щоб до виходу на ринок мати прост?ший для розум?ння вив?д2Забезпечення над?йного передбаченняРозробка для обробки даних та в?дсоток правильних передбачень дуже важливий фактор3Швидкий вив?д данихОбробка даних часто займа? багато часу, у деяких може буди доступ до хмарних серв?с?в, задля прискорення обчислювальних зд?бностейТаблиця 4.11. Пор?вняльнии? анал?з сильних та слабких стор?н№Фактор конкурентоспроможност?Бали 1-20Реи?тинг товар?в-конкурент?в у по- р?внянн? з розроблюваним продуктом-3-2-101231Зрозум?ла в?зуал?зац?я12?2Забезпечення над?йного передбачення17?3Швидкий вив?д даних10?Таблиця 4.12. SWOT- анал?з стартап-проектуСильн? сторони: Зручний ?нтерфейсЗрозум?ла в?зуал?зац?яЗабезпечення над?йного передбаченняШвидкий вив?д данихВикористання досв?ду конкурент?вСлабк? сторони:Наявн?сть opensource р?шеньНедов?ра великих кл??нт?вМожливост?:Отримати контракти на анал?з та обробку вже п?двержених атаками комп’ютерних систем Загрози:Програти конкуренц?ю opensource проектамНе переманити кл??нт?в в?д уже наявних конкурент?вТаблиця 4.13. Альтернативи ринкового впровадження стартап-проекту№Альтернатива ринково? повед?нкиЙмов?рн?сть отримання ресурс?вСтроки реал?зац??1В?дкриття проекту та розповсюдження в рамках opensource л?ценз??Низька, так як в основному це будуть пожертви ентуз?аст?в. Можлив?сть продажу компан?? у випадку зац?кавленост? з боку великих компан?йПрактично митт?во2Розповсюдження проекту через конференц??, публ?чн? виступиВисока, оск?льки публ?чними заходами можна поширити ?дею проекту та познайомитися з потенц?йними ?нвесторами та кл??нтамиДо року, з можлив?стю продовження3Участь в тендерах ? укладення договор?в з державними установамиСередня, так як на це впливають економ?чн?, пол?тичн?, особист? мотиви ? не можна гарантувати абсолютну прозор?сть та добросов?сну конкуренц?ю на цьому ринкуК?лька м?сяц?в, в залежност? в?д наявност? запиту з боку держави4.3. Розроблення ринково?? стратег??? проектуТаблиця 4.14.Виб?р ц?льових груп потенц?и?них споживач?в№Опис проф?лю ц?льово?? групи потенц?и?них кл??нт?вГотовн?сть споживач?в сприи?няти продуктОр??нтовнии? попит в межах ц?льово? групи (сегменту)?нтенсивн?сть конкуренц??? в сегмент?Простота входу у сегмент1Приватн? компан??Вс? користувач? готов? прийнятиПродукт необх?дний не вс?мКонкуренц?я високаВх?д не ? складний2Навчальн? та досл?дницьк? програмиНе вс? користувач? готов? прийнятиНе вс? зац?кавлен? в продукт?Конкуренц?я високаВх?д не ? складнийЯк? ц?льов? групи обрано:Потр?бно працювати з? вс?ма ц?льовими групами, перевагу надати приватними компан?ямТаблиця 4.15. Визначення базово?? стратег??? розвитку№Обрана альтернатива розвитку проектуСтратег?я охоплення ринкуКлючов? конкурентос- проможн? позиц??? в?дпов?дно до обрано?? альтернативиБазова стратег?я розвитку1Розвиток шляхом маркетингов?й компан?? та публ?чн?й демонстрац?? можливост? продуктуВпливати на обран? ц?льов? групи в порядку значимост? та перспективВиступ на конференц?ях, в?льне розповсюдження для навчально-досл?дницьких ц?лейОперативно оновлювати продукт в?дпов?дно до побажань кл??нт?в Таблиця 4.16. Визначення базово?? стратег??? конкурентно?? повед?нки№Чи ? проект ?першопрох?дцем? на ринку?Чи буде компан?я шукати нових споживач?в, або забирати ?снуючих у конкурент?в?Чи буде компан?я коп?ювати основн? характеристики товару конкурента, ? як??Стратег?я конкурентно?? повед?нки1Н?, проект не ? ?першопрох?дцем?Необх?дно рухатись у р?зних напрямках, як шукати нових споживач?в, так ? в?дбирати ?снуючих у конкурент?вЧерез схож?сть функц?ональностей, компан?я буде коп?ювати основн? характеристики у конкурент?в, так? як швидкод?я та точн?стьПропонувати функц?ональн?сть на кращих умовах, оперативно оновлювати в?дпов?дно до нових стандарт?вТаблиця 4.17. Визначення стратег??? позиц?онування№Вимоги до товару ц?льово?? аудитор???Базова стратег?я розвиткуКлючов? конкуренто- спроможн? позиц??? власного стартап- проектуВиб?р асоц?ац?и?, як? мають сфо- рмувати комплексну позиц?ю власного проекту (три ключових)1Висока частота оновлення стандарт?вРозширити штат, досл?джувати новини щодо виходу нових можливостейОперативне виправлення недол?к?в та впровадження побажаньАнал?з втрат, прогнозування та попередження шк?дливого впливу4.5. Розроблення маркетингово?? програми стартап-проектуТаблиця 4.18. Визначення ключових переваг концепц??? потенц?и?ного товару№ПотребаВигода, яку пропону? товарКлючов? переваги перед конкурентами (?снуюч? або так?, що потр?бно створити1Обробка даних великого обсягу в вигляд? анал?зу данихМожлив?сть обробки велико? к?лькост? ?нформац?? Анал?з з меншою к?льк?стю даних та б?льшою ймов?рн?стю попередження шк?дника2Часте оновлення системиВрахування побажань кл??нт?в та виправлення помилок в найкоротш? терм?ниСтворення в?дд?лу п?дтримки для анал?зування реагування на в?дгуки кл??нт?в3Формування зв?т?в з результатами обробки та анал?зу даних Можлив?сть формувати зв?ти по робот?Модель для формування зв?ту анал?зу з результатами роботи ресурсу Таблиця 4.19. Опис трьох р?вн?в модел? товаруР?вн? товаруСутн?сть та складов??. Товар за задумомПрограмма для обробки та анал?зу даних великого обсягу в вигляд? в?део за тегами та тональн?стью коментар?в ??. Товар у реальному виконанн?Властивост?/характеристикиПотребаМетодика виконання анал?зу данихДан?, для анал?зу Попередження вразливост? системиМашина для обрахунк?в Як?сть: публ?чне тестування методу, логування збо?в та система зворотнього зв’язку для пов?домлення про неналежну роботу методуПоширення: продаж послуг на веб-ресурс? Марка: назва орган?зац??-розробника та назва товару???. Товар ?з п?дкр?пленнямДо продажу: програмний код та послугиП?сля продажу: веб-ресурс доступний безкоштовно з обмеженням та рекламою ? можлив?стю придбання послуг За рахунок того що продукт буде у закритому доступ?, в?н буде мати можлив?сть лише проводити операц??, та не може бути продубльованим.Таблиця 4.20. Визначення меж встановлення ц?ни№ п/пР?вень ц?н на товари-зам?нникиР?вень ц?н на товари-аналогиР?вень доход?в ц?льово? групи споживач?вВерхня та нижня меж? становлення ц?ни на товар/послугу10$ - 300$0$-300$>7000$/м?сяць70$-210$Таблиця 4.21. Формування системи збуту№ п/пСпециф?ка закуп?вельно?? повед?нки ц?льових кл??нт?вФункц??? збуту, як? ма? виконувати постачальник товаруГлибина каналу збутуОптимальна система збуту1Продаж послуг на ресурс? Можлив?сть авторизац?? та онлайн оплати послуг на платформ?Канал збуту однор?вневий Вертикальна (право власност? залиша?ться у розробника ПЗ)Таблиця 4.22. Концепц?я маркетингових комун?кац?й№ п/пСпециф?ка повед?нки ц?льових кл??нт?вКанали комун?кац?и?, якими користуються ц?льов? кл??нтиКлючов? позиц???, обран? для позиц?онуванняЗавдання рекламного пов?домленняКонцепц?я рекламного звернення1Куп?вля функц?? та послуг на ресурс?Тематичн? зустр?ч?, соц?альн? мереж?, конференц??, презентац?? тощоНадання послуг для обробки та анал?зу Демонстрац?я основних функц?й розробленого продуктуОхоплення аудитор??, пояснення функц?й та можливостей розробленого продукту та його переваг4.6. Висновки до розд?лу 4Четвертий розд?л призначений для розробки стартап-проекту для розробленого програмного продукту, створено опис ?де? продукту, наведено детальний анал?з конкурент?в та можливостей, що доступн? на даному ринку. Для досл?дження в рамках розробки стартап-проекту було обрано наступн? завдання:Наведено загальний опис ?де? продукту для виходу на ринок, описаний функц?? проекту, визначено основн? конкуренти та сп?вставлено функц?? конкурент?в для визначення переваг розроблюваного продукту над обраними конкурентами.Проанал?зовано ринков? можливост? для запуску проекту, пор?вняно перспективи запуску в пор?внянн? з конкурентами, встановлено план та ринкову стратег?ю розвитку продукту, визначено ц?льов? групи та способи просування проекту. Проведено техн?чний аудит проекту ? визначено можливост? реал?зац?? програмного продуктуРозроблено маркетингову програму для просування продукту на ринку, описано способи та основн? канали збуту, визначено пр?оритетн? ц?льов? групи та маркетингов? пов?домлення для розширення кл??нтсько? базиВ п?дсумку, було отримано стартап-проект для запуску розробленого програмного продукту на ринок, отримано навички створення стартап-проект?в, побудови маркетингово? стратег?? та анал?зу обраного ринку.ВИСНОВКИМаг?стерська робота була присвячена створення власного методу анал?зу великих поток?в даних та ?п подальшого анал?зу, задля передбачення впливу шк?дливого програмного забезпечення. Було проведено теоретичний огляд та анал?з особливостей уже ?снуючих р?шень та зачтосування нейронних комп’ютер?в для навчання передбачення.Уже ?снуюч? алгоритми, як? знаходятся у в?дкритому доступ?, були розглянут? та ?хн? досв?д та помилки були врахован? при розробц? даного алгоритму.Було обрано та аргументовано виб?р використання нейронного комп’ютера, який буде отримувати уже оброблену ?нформац?ю, та виводити на ?? основ? пропозиц??. Чим б?льше ?нформац?? щодо шк?дливого програмного забезпечення алгоритм буде обробляти, нейронна машина матиме прир?ст точност? в передбаченн?.Для перев?рки результату роботи програми, було розроблено програмний продукт для анал?зу вражених д?лянок комп’ютерно? системи та виведення формул, як? дозволять найб?льш точно виявити схожу проблему у майбутньому. П?д час досл?дження програмного продукту було створено граф?чний список вражених д?лянок систем, та ?х поширен?сть. Таким чиом можна було спостер?гати за зоною враження та найвразлив?шими м?сцями даних систем, на баз? чого нейронний комп’ютер м?г робити висновки.Список використаних джерелBayer, U., Moser, A., Kruegel, C. and Kirda, E. (2006) Dynamic Analysis of Malicious Code. Journal in Computer Virology, 2, 67-77. (2013) The Need for Speed: 2013 Incident Response Survey, FireEye. (2012) Addressing Big Data Security Challenges: The Right Tools for Smart Protection. (2013) Infographic: The State of Malware. (2013) Next Generation Threats. You, I. and Yim, K. (2010) Malware Obfuscation Techniques: A Brief Survey. Proceedings of International conference on Broadband, Wireless Computing, Communication and Applications, Fukuoka, 4-6 November 2010, 297-300. IDAPro. [Електронний ресурс], Режим доступу до ресурсу: . [Електронний ресурс], Режим доступу до ресурсу: LordPE. [Електронний ресурс], Режим доступу до ресурсу: . [Електронний ресурс], Режим доступу до ресурсу: , M., Scholte, T., Kirda, E. and Kruegel, C. (2012) A Survey on Automated Dynamic Malware-Analysis Techniques and Tools. Journal in ACM Computing Surveys, 44, Article No. 6. Moser, A., Kruegel, C.and Kirda, E. (2007) Limits of Static Analysis for Malware Detection. 23rd Annual Computer Security Applications Conference, Miami Beach, 421-430. (2014) Process Monitor. [Електронний ресурс], Режим доступу до ресурсу: Capture BAT. [Електронний ресурс], Режим доступу до ресурсу: (2014) Process Explorer. [Електронний ресурс], Режим доступу до ресурсу: Process Hackerreplace. [Електронний ресурс], Режим доступу до ресурсу: Wireshark. [Електронний ресурс], Режим доступу до ресурсу: Regshot. [Електронний ресурс], Режим доступу до ресурсу: Norman Sandbox. [Електронний ресурс], Режим доступу до ресурсу: , C., Holz, T. and Freiling, F. (2007) Toward Automated Dynamic Malware Analysis Using Cwsandbox. IEEE Security & Privacy, 5, 32-39. Anubis. [Електронний ресурс], Режим доступу до ресурсу: Bayer, U., Kruegel, C. and Kirda, E. (2006) TTAnalyze: A Tool for Analyzing Malware. Proceedings of the 15th European Institute for Computer Antivirus Research Annual Conference. Dinaburg, A., Royal, P., Sharif, M. and Lee, W. (2008) Ether: Malware Analysis via Hardware Virtualization Extensions. Proceedings of the 15th ACM Conference on Computer and Communications Security, CCS’08, Alexandria, 27-31 October 2008, 51-62. ThreatExpert. [Електронний ресурс], Режим доступу до ресурсу: Schultz, M., Eskin, E., Zadok, F. and Stolfo, S. (2001) Data Mining Methods for Detection of New Malicious Executables. Proceedings of 2001 IEEE Symposium on Security and Privacy, Oakland, 14-16 May 2001, 38-49. Cohen, W. (1995) Fast Effective Rule Induction. Proceedings of 12th International Conference on Machine Learning, San Francisco, 115-123.Kolter, J. and Maloof, M. (2004) Learning to Detect Malicious Executables in the Wild. Proceedings of the 10th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 470-478. Nataraj,L.,Karthikeyan, S., Jacob, G. and Manjunath, B. (2011) Malware Images: Visualization and Automatic Classification. Proceedings of the 8th International Symposium on Visualization for CyberSecurity,Article No.4. Nataraj, L., Yegneswaran, V., Porras, P. and Zhang, J. (2011) A Comparative Assessment of Malware Classification Using Binary Texture Analysis and Dynamic Analysis. Proceedings of the 4th ACM Workshop on Security and Artificial Intelligence, 21-30. Kong, D. and Yan, G. (2013) Discriminant Malware Distance Learning on Structural Information for Automated Malware Classification. Proceedings of the ACM SIGMETRICS/International Conference on Measurement and Modeling of Computer Systems, 347-348. Tian, R., Batten, L. and Versteeg, S. (2008) Function Length as a Tool for Malware Classification. Proceedings of the 3rd International Conference on Malicious and Unwanted Software, Fairfax, 7-8 October 2008, 57-64. Tian, R., Batten, L., Islam, R. and Versteeg, S. (2009) An Automated Classification System Based on the Strings of Trojan and Virus Families. Proceedings of the 4th International Conference on Malicious and Unwanted Software, Montréal, 13-14 October 2009, 23-30. Hall, M., Frank, E., Holmes, G., Pfahringer, B., Reutemann, P. and Witten, I. (2009) The WEKA Data Mining Software: An Update. ACM SIGKDD Explorations Newsletter, 10-18. Santos, I., Nieves, J. and Bringas, P.G. (2011) Semi-Supervised Learning for Unknown Malware Detection. International Symposium on Distributed Computing and Artificial Intelligence Advances in Intelligent and Soft Computing, 91, 415-422. Moskovitch, R., Stopel, D., Feher, C., Nissim, N. and Elovici, Y. (2008) Unknown Malcode Detection via Text Categorization and the Imbalance Problem. Proceedings of the 6th IEEE International Conference on Intelligence and Security Informatics, Taipei, 17-20 June 2008, 156-161. Santos, I., Nieves, J. and Bringas, P.G. (2011) Collective Classification for Unknown Malware Detection. Proceedings of the International Conference on Security and Cryptography, Seville, 18-21 July 2011, 251-256. Siddiqui, M., Wang, M.C. and Lee, J. (2009) Detecting Internet Worms Using Data Mining Techniques. Journal of Systemics, Cybernetics and Informatics, 6, 48-53. Zolkipli, M.F. and Jantan, A. (2011) An Approach for Malware Behavior Identification and Classification. Proceeding of 3rd International Conference on Computer Research and Development, Shanghai, 11-13 March 2011, 191-194. Rieck, K., Trinius, P., Willems, C. and Holz, T. (2011) Automatic Analysis of Malware Behavior Using Machine Learning. Journal of Computer Security, 19, 639-668.Anderson, B., Quist, D., Neil, J., Storlie, C. and Lane, T. (2011) Graph Based Malware Detection Using Dynamic Analysis. Journal in Computer Virology, 7, 247-258. [Електронний ресурс], Режим доступу до ресурсу: Bayer, U., Comparetti, P.M., Hlauschek, C. and Kruegel, C. (2009) Scalable, Behavior-Based Malware Clustering. Proceedings of the 16th Annual Network and Distributed System Security Symposium.Indyk, P. and Motwani, R. (1998) Approximate Nearest Neighbor: Towards Removing the Curse of Dimensionality. Proceedings of 30th Annual ACM Symposium on Theory of Computing, Dallas, 24-26 May 1998, 604-613. Tian, R., Islam, M.R., Batten, L. and Versteeg, S. (2010) Differentiating Malware from Cleanwares Using Behavioral Analysis. Proceedings of 5th International Conference on Malicious and Unwanted Software (Malware), Nancy, 19-20 October 2010, 23-30. Biley, M., Oberheid, J., Andersen, J., Morley Mao, Z., Jahanian, F. and Nazario, J. (2007) Automated Classification and Analysis of Internet Malware. Proceedings of the 10th International Conference on Recent Advances in Intrusion Detection, 4637, 178-197. [Електронний ресурс], Режим доступу до ресурсу: Park, Y., Reeves, D., Mulukutla, V. and Sundaravel, B. (2010) Fast Malware Classification by Automated Behavioral Graph Matching. Proceedings of the 6th Annual Workshop on Cyber Security and Information Intelligence Research, Article No. 45. Firdausi, I., Lim, C. and Erwin, A. (2010) Analysis of Machine Learning Techniques Used in Behavior Based Malware Detection. Proceedings of 2nd International Conference on Advances in Computing, Control and Telecommunication Technologies (ACT), Jakarta, 2-3 December 2010, 201-203. Nari, S. and Ghorbani, A. (2013) Automated Malware Classification Based on Network Behavior. Proceedings of International Conference on Computing, Networking and Communications (ICNC), San Diego, 28-31 January 2013, 642-647. Lee, T. and Mody, J.J. (2006) Behavioral Classification. Proceedings of the European Institute for Computer Antivirus Research Conference (EICAR’06). Santos, I., Devesa, J., Brezo, F., Nieves, J. and Bringas, P.G. (2013) OPEM: A Static-Dynamic Approach for Machine Learning Based Malware Detection. Proceedings of International Conference CISIS’12-ICEUTE’12, Special Sessions Advances in Intelligent Systems and Computing, 189, 271-280. Islam, R., Tian, R., Battenb, L. and Versteeg, S. (2013) Classification of Malware Based on Integrated Static and Dynamic Features. Journal of Network and Computer Application, 36, 646-556. [Електронний ресурс], Режим доступу до ресурсу: Anderson, B., Storlie, C. and Lane, T. (2012) Improving Malware Classification: Bridging the Static/Dynamic Gap. Proceedings of 5th ACM Workshop on Security and Artificial Intelligence (AISec), 3-14. DeepLocker: How AI Can Power a Stealthy New Breed of Malware [Електронний ресурс], Режим доступу до ресурсу: [Електронний ресурс], Режим доступу до ресурсу: [Електронний ресурс], Режим доступу до ресурсу: [Електронний ресурс], Режим доступу до ресурсу: [Електронний ресурс], Режим доступу до ресурсу: [Електронний ресурс], Режим доступу до ресурсу: (neural_networks)Batch normalization in Neural Networks [Електронний ресурс], Режим доступу до ресурсу: Introduction to the Adam Optimization Algorithm for Deep Learning [Електронний ресурс], Режим доступу до ресурсу: ДОДАТОК АЛ?СТИНГ СИСТЕМИimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.simplefilter(action='ignore', category=FutureWarning)warnings.filterwarnings('ignore')import osprint(os.listdir("../input"))nans = []pcts = []for cols in train: nans.append(train[cols].isnull().sum()) pcts.append(train[cols].isnull().sum()/train.shape[0]*100)missing_data = pd.DataFrame({"Col":train.columns,"Missing values": nans, "Pct missing [%]": pcts}).sort_values("Missing values", ascending=False)missing_data[missing_data["Missing values"]!=0].reset_index(drop=True)dtypes = {# завантаження шифровкок по частот?FE = ['EngineVersion','AppVersion','AvSigVersion','Census_OSVersion']# завантаження шифровкок на гарячу рукуOHE = [ 'RtpStateBitfield','IsSxsPassiveMode','DefaultBrowsersIdentifier', 'AVProductStatesIdentifier','AVProductsInstalled', 'AVProductsEnabled', 'CountryIdentifier', 'CityIdentifier', 'GeoNameIdentifier', 'LocaleEnglishNameIdentifier', 'Processor', 'OsBuild', 'OsSuite', 'SmartScreen','Census_MDC2FormFactor', 'Census_OEMNameIdentifier', 'Census_ProcessorCoreCount', 'Census_ProcessorModelIdentifier', 'Census_PrimaryDiskTotalCapacity', 'Census_PrimaryDiskTypeName', 'Census_HasOpticalDiskDrive', 'Census_TotalPhysicalRAM', 'Census_ChassisTypeName', 'Census_InternalPrimaryDiagonalDisplaySizeInInches', 'Census_InternalPrimaryDisplayResolutionHorizontal', 'Census_InternalPrimaryDisplayResolutionVertical', 'Census_PowerPlatformRoleName', 'Census_InternalBatteryType', 'Census_InternalBatteryNumberOfCharges', 'Census_OSEdition', 'Census_OSInstallLanguageIdentifier', 'Census_GenuineStateName','Census_ActivationChannel', 'Census_FirmwareManufacturerIdentifier', 'Census_IsTouchEnabled', 'Census_IsPenCapable', 'Census_IsAlwaysOnAlwaysConnectedCapable', 'Wdft_IsGamer', 'Wdft_RegionIdentifier'] }numerics = ['int8', 'int16', 'int32', 'int64', 'float16', 'float32', 'float64']numerical_columns = [c for c,v in dtypes.items() if v in numerics]categorical_columns = [c for c,v in dtypes.items() if v not in numerics]train = pd.read_csv('../input/train.csv',usecols = retained_columns,dtype = dtypes)for x in FE+OHE: dtypes[x] = 'category'dtypes['MachineIdentifier'] = 'str'dtypes['HasDetections'] = 'int8'# DOWNSAMPLEsm = 2000000df_train = df_train.sample(sm)print ('Only using',sm,'rows to train and validate')x=gc.collect()'''В альтернатив? можна зчитувати ?нформац?ю в чанках по 1000 MB'''for column in train.select_dtypes(include=['float','int']): if train[column].min() == 0 and train[column].max() == 1 : print(column)nans = []pcts = []for cols in train: nans.append(train[cols].isnull().sum()) pcts.append(train[cols].isnull().sum()/train.shape[0]*100)missing_data = pd.DataFrame({"Col":train.columns,"Missing values": nans, "Pct missing [%]": pcts}).sort_values("Missing values", ascending=False)missing_data[missing_data["Missing values"]!=0].reset_index(drop=True)complete = (missing_data["Pct missing [%]"]<=10).sum()a = ((missing_data["Pct missing [%]"]!=0) & (missing_data["Pct missing [%]"]<=10)).sum()b = ((missing_data["Pct missing [%]"]>10) & (missing_data["Pct missing [%]"]<=50)).sum()c = (missing_data["Pct missing [%]"]>50).sum()print("There are:\n{} columns without missing values\n{} columns with less than 10% of missing values\n {} columns withmissing values between 10% and 50%\n {} columns with more than 50% of missing values".format(complete,a,b,c))labels =["No missing data", "Missing 0-10%", "Missing 10-50%", "Missing over 50% of data"]fig1, ax1 = plt.subplots(figsize=(8,8))ax1.pie([complete,a,b,c],autopct='%1.1f%%',labels=labels, textprops={'fontsize': 15})ax1.axis('equal')plt.show()detect_no = (train["HasDetections"]==0).sum()detect_yes = (train["HasDetections"]==1).sum()print(detect_no,detect_yes)4462591 4458892Зверта?мо увагу на колонку з назвою HasDetectionslabels = 'No detection', 'Detection',sizes = [detect_no, detect_yes]fig1, ax1 = plt.subplots(figsize=(8,8))ax1.pie(sizes, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90, textprops={'fontsize': 15})ax1.axis('equal')plt.show()def my_graphs1(col_name, rotation=45, threshold=0.01, explode =-1): '''Функц?я створю? два . Графи:розпод?л по категор?ям(. Граф п?)частка заражених машин в кожн?й категор?? ''' category = train[col_name].unique().tolist() totals=[] infected=[] for item in category: a = (train[col_name]==item).sum() totals.append(a) infected.append((train[train[col_name]==item]["HasDetections"]==1).sum()/a) #creating a summary dataframe df = pd.DataFrame({"Total":totals,"Infected": infected}, index=category).sort_values("Total", ascending=False) fig, ax = plt.subplots(ncols=2, nrows=1,figsize=(20,8)) #creating a pie chart with conditional explode option threshold = train.shape[0]*threshold if explode==-1: ax[0].pie(df[df["Total"]>threshold]["Total"], labels=df[df["Total"]>threshold].index.values, autopct='%1.1f%%',shadow=False, startangle=rotation, textprops={'fontsize': 15}) else: ax[0].pie(df[df["Total"]>threshold]["Total"], labels=df[df["Total"]>threshold].index.values, autopct='%1.1f%%',shadow=False, startangle=rotation, textprops={'fontsize': 15}, explode=explode) ax[0].axis('equal') ax[0].set_title(col_name) #created a sorted bar chart df.sort_values("Infected", ascending=False, inplace=True) ax[1].set_xticklabels(category,rotation=45, horizontalalignment='right') ax[1].set_title('Infected fractions') ax[1] = sns.barplot(x=df.index, y="Infected",data=df) plt.show()def my_graphs1(col_name, rotation=45, threshold=0.01, explode =-1): '''Функц?я створю? два . Графи:розпод?л по категор?ям(. Граф п?)частка заражених машин в кожн?й категор?? ''' category = train[col_name].unique().tolist() totals=[] infected=[] for item in category: a = (train[col_name]==item).sum() totals.append(a) infected.append((train[train[col_name]==item]["HasDetections"]==1).sum()/a) #creating a summary dataframe df = pd.DataFrame({"Total":totals,"Infected": infected}, index=category).sort_values("Total", ascending=False) fig, ax = plt.subplots(ncols=2, nrows=1,figsize=(20,8)) #creating a pie chart with conditional explode option threshold = train.shape[0]*threshold if explode==-1: ax[0].pie(df[df["Total"]>threshold]["Total"], labels=df[df["Total"]>threshold].index.values, autopct='%1.1f%%',shadow=False, startangle=rotation, textprops={'fontsize': 15}) else: ax[0].pie(df[df["Total"]>threshold]["Total"], labels=df[df["Total"]>threshold].index.values, autopct='%1.1f%%',shadow=False, startangle=rotation, textprops={'fontsize': 15}, explode=explode) ax[0].axis('equal') ax[0].set_title(col_name) #created a sorted bar chart df.sort_values("Infected", ascending=False, inplace=True) ax[1].set_xticklabels(category,rotation=45, horizontalalignment='right') ax[1].set_title('Infected fractions') ax[1] = sns.barplot(x=df.index, y="Infected",data=df) plt.show()FE encoded EngineVersionFE encoded AppVersionFE encoded AvSigVersionFE encoded Census_OSVersionOHE encoded RtpStateBitfield - Created 2 booleansOHE encoded IsSxsPassiveMode - Created 1 booleansOHE encoded DefaultBrowsersIdentifier - Created 1 booleansOHE encoded AVProductStatesIdentifier - Created 9 booleansOHE encoded AVProductsInstalled - Created 3 booleansOHE encoded AVProductsEnabled - Created 2 booleansOHE encoded CountryIdentifier - Created 40 booleansOHE encoded CityIdentifier - Created 11 booleansOHE encoded GeoNameIdentifier - Created 32 booleansOHE encoded LocaleEnglishNameIdentifier - Created 26 booleansOHE encoded Processor - Created 2 booleansOHE encoded OsBuild - Created 6 booleansOHE encoded OsSuite - Created 2 booleansOHE encoded SmartScreen - Created 4 booleansOHE encoded Census_MDC2FormFactor - Created 5 booleansOHE encoded Census_OEMNameIdentifier - Created 20 booleansOHE encoded Census_ProcessorCoreCount - Created 6 booleansOHE encoded Census_ProcessorModelIdentifier - Created 27 booleansOHE encoded Census_PrimaryDiskTotalCapacity - Created 14 booleansOHE encoded Census_PrimaryDiskTypeName - Created 3 booleansOHE encoded Census_HasOpticalDiskDrive - Created 1 booleansOHE encoded Census_TotalPhysicalRAM - Created 9 booleansOHE encoded Census_ChassisTypeName - Created 10 booleansOHE encoded Census_InternalPrimaryDiagonalDisplaySizeInInches - Created 21 booleansOHE encoded Census_InternalPrimaryDisplayResolutionHorizontal - Created 4 booleansOHE encoded Census_InternalPrimaryDisplayResolutionVertical - Created 6 booleansOHE encoded Census_PowerPlatformRoleName - Created 3 booleansOHE encoded Census_InternalBatteryType - Created 4 booleansOHE encoded Census_InternalBatteryNumberOfCharges - Created 4 booleansOHE encoded Census_OSEdition - Created 4 booleansOHE encoded Census_OSInstallLanguageIdentifier - Created 18 booleansOHE encoded Census_GenuineStateName - Created 2 booleansOHE encoded Census_ActivationChannel - Created 4 booleansOHE encoded Census_FirmwareManufacturerIdentifier - Created 13 booleansOHE encoded Census_IsTouchEnabled - Created 1 booleansOHE encoded Census_IsPenCapable - Created 0 booleansOHE encoded Census_IsAlwaysOnAlwaysConnectedCapable - Created 2 booleansOHE encoded Wdft_IsGamer - Created 2 booleansOHE encoded Wdft_RegionIdentifier - Created 12 booleansEncoded 340 new variablesRemoved original 43 variablesfig, ax = plt.subplots(ncols=1, nrows=1,figsize=(20,8))ax = sns.distplot(train["CountryIdentifier"], kde=False, bins=250)print("к?льк?сть ?дентиф?катор?в л?чильника: " + str(train["CountryIdentifier"].nunique()))print("найпопулярн?ший ?дентиф?катор: " + str(train["CountryIdentifier"].mode()[0]))import math# CHECK FOR NANdef nan_check(x): if isinstance(x,float): if math.isnan(x): return True return False# FREQUENCY ENCODINGdef encode_FE(df,col,verbose=1): d = df[col].value_counts(dropna=False) n = col+"_FE" df[n] = df[col].map(d)/d.max() if verbose==1: print('FE encoded',col) return [n]def encode_OHE(df, col, filter, zvalue, tar='HasDetections', m=0.5, verbose=1): cv = df[col].value_counts(dropna=False) cvd = cv.to_dict() vals = len(cv) th = filter * len(df) sd = zvalue * 0.5/ math.sqrt(th) #print(sd) n = []; ct = 0; d = {} for x in cv.index: try: if cv[x]<th: break sd = zvalue * 0.5/ math.sqrt(cv[x]) except: if cvd[x]<th: break sd = zvalue * 0.5/ math.sqrt(cvd[x]) if nan_check(x): r = df[df[col].isna()][tar].mean() else: r = df[df[col]==x][tar].mean() if abs(r-m)>sd: nm = col+'_BE_'+str(x) if nan_check(x): df[nm] = (df[col].isna()).astype('int8') else: df[nm] = (df[col]==x).astype('int8') n.append(nm) d[x] = 1 ct += 1 if (ct+1)>=vals: break if verbose==1: print('OHE encoded',col,'- Created',len(d),'booleans') return [n,d]def encode_OHE_test(df,col,dt): n = [] for x in dt: n += encode_BE(df,col,x) return ndef encode_BE(df,col,val): n = col+"_BE_"+str(val) if nan_check(val): df[n] = df[col].isna() else: df[n] = df[col]==val df[n] = df[n].astype('int8') return [n]cols = []; dd = []for x in FE: cols += encode_FE(df_train,x)for x in OHE: tmp = encode_OHE(df_train,x,0.005,5) cols += tmp[0]; dd.append(tmp[1])print('Encoded',len(cols),'new variables')for x in FE+OHE: del df_train[x]print('Removed original',len(FE+OHE),'variables')x = gc.collect()from sklearn.metrics import roc_auc_scoreclass printAUC(callbacks.Callback): def __init__(self, X_train, y_train): super(printAUC, self).__init__() self.bestAUC = 0 self.X_train = X_train self.y_train = y_train def on_epoch_end(self, epoch, logs={}): pred = self.model.predict(np.array(self.X_train)) auc = roc_auc_score(self.y_train, pred) print("Train AUC: " + str(auc)) pred = self.model.predict(self.validation_data[0]) auc = roc_auc_score(self.validation_data[1], pred) print ("Validation AUC: " + str(auc)) if (self.bestAUC < auc) : self.bestAUC = auc self.model.save("bestNet.h5", overwrite=True) returnfrom sklearn.model_selection import train_test_splitfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, BatchNormalization, Activationfrom keras.callbacks import LearningRateSchedulerfrom keras.optimizers import AdamX_train, X_val, Y_train, Y_val = train_test_split( df_train[cols], df_train['HasDetections'], test_size = 0.5)model = Sequential()model.add(Dense(100,input_dim=len(cols)))model.add(Dropout(0.4))model.add(BatchNormalization())model.add(Activation('relu'))model.add(Dense(100))model.add(Dropout(0.4))model.add(BatchNormalization())model.add(Activation('relu'))model.add(Dense(1, activation='sigmoid'))pile(optimizer=Adam(lr=0.01), loss="binary_crossentropy", metrics=["accuracy"])annealer = LearningRateScheduler(lambda x: 1e-2 * 0.95 ** x)model.fit(X_train,Y_train, batch_size=32, epochs = 20, callbacks=[annealer, printAUC(X_train, Y_train)], validation_data = (X_val,Y_val), verbose=2)Using TensorFlow backend.Train on 1000000 samples, validate on 1000000 samplesEpoch 1/20 - 128s - loss: 0.6444 - acc: 0.6206 - val_loss: 0.6339 - val_acc: 0.6273Train AUC: 0.6933346462001464Validation AUC: 0.6912612506941198Epoch 2/20 - 127s - loss: 0.6387 - acc: 0.6280 - val_loss: 0.6282 - val_acc: 0.6362Train AUC: 0.6982506064751803Validation AUC: 0.6956000576475689Epoch 3/20 - 131s - loss: 0.6368 - acc: 0.6305 - val_loss: 0.6286 - val_acc: 0.6370Train AUC: 0.7007412986372941Validation AUC: 0.6973941619062344Epoch 4/20 - 126s - loss: 0.6358 - acc: 0.6316 - val_loss: 0.6269 - val_acc: 0.6375Train AUC: 0.7016034446417853Validation AUC: 0.6978407744028299Epoch 5/20 - 126s - loss: 0.6346 - acc: 0.6330 - val_loss: 0.6258 - val_acc: 0.6398Train AUC: 0.7031193933359536Validation AUC: 0.6991105853011363Epoch 6/20 - 126s - loss: 0.6341 - acc: 0.6333 - val_loss: 0.6271 - val_acc: 0.6392Train AUC: 0.7038570320998554Validation AUC: 0.6996470556494905Epoch 7/20 - 127s - loss: 0.6333 - acc: 0.6342 - val_loss: 0.6266 - val_acc: 0.6386Train AUC: 0.7045994300426082Validation AUC: 0.7000486435451285Epoch 8/20 - 126s - loss: 0.6327 - acc: 0.6344 - val_loss: 0.6285 - val_acc: 0.6402Train AUC: 0.7055087691573714Validation AUC: 0.7006234463009472Epoch 9/20 - 127s - loss: 0.6324 - acc: 0.6349 - val_loss: 0.6255 - val_acc: 0.6411Train AUC: 0.7061243855261722Validation AUC: 0.7009121400139172Epoch 10/20 - 128s - loss: 0.6319 - acc: 0.6356 - val_loss: 0.6307 - val_acc: 0.6405Train AUC: 0.7065540292175616Validation AUC: 0.7010786840586227Epoch 11/20 - 126s - loss: 0.6314 - acc: 0.6366 - val_loss: 0.6238 - val_acc: 0.6414Train AUC: 0.7072878977532046Validation AUC: 0.7015355407856272Epoch 12/20 - 125s - loss: 0.6312 - acc: 0.6370 - val_loss: 0.6242 - val_acc: 0.6412Train AUC: 0.7079650916308952Validation AUC: 0.7020796169582244Epoch 13/20 - 126s - loss: 0.6310 - acc: 0.6369 - val_loss: 0.6248 - val_acc: 0.6406Train AUC: 0.7082480756844242Validation AUC: 0.7018906517431152Epoch 14/20 - 127s - loss: 0.6303 - acc: 0.6374 - val_loss: 0.6245 - val_acc: 0.6404Train AUC: 0.7089586725801257Validation AUC: 0.7024551821405017Epoch 15/20 - 127s - loss: 0.6301 - acc: 0.6377 - val_loss: 0.6259 - val_acc: 0.6423Train AUC: 0.7090732589227717Validation AUC: 0.7024799888668641Epoch 16/20 - 126s - loss: 0.6297 - acc: 0.6378 - val_loss: 0.6231 - val_acc: 0.6425Train AUC: 0.7098057367795816Validation AUC: 0.7027273728479257Epoch 17/20 - 126s - loss: 0.6294 - acc: 0.6388 - val_loss: 0.6238 - val_acc: 0.6419Train AUC: 0.7093010620392429Validation AUC: 0.7023760449935433Epoch 18/20 - 127s - loss: 0.6292 - acc: 0.6389 - val_loss: 0.6258 - val_acc: 0.6426Train AUC: 0.7099419919152088Validation AUC: 0.7028040761968868Epoch 19/20 - 129s - loss: 0.6290 - acc: 0.6391 - val_loss: 0.6244 - val_acc: 0.6421Train AUC: 0.7105092539150418Validation AUC: 0.7030129516163394Epoch 20/20 - 128s - loss: 0.6286 - acc: 0.6391 - val_loss: 0.6254 - val_acc: 0.6415Train AUC: 0.7104918925106409Validation AUC: 0.7030240908474825Out[5]:<keras.callbacks.History at 0x7efd17083908>Тест передбаченняdel df_traindel X_train, X_val, Y_train, Y_valx = gc.collect()from keras.models import load_modelmodel = load_model('bestNet.h5')pred = np.zeros((7853253,1))id = 1chunksize = 2000000for df_test in pd.read_csv('../input/test.csv', chunksize = chunksize, usecols=list(dtypes.keys())[0:-1], dtype=dtypes): print ('Loaded',len(df_test),'rows of TEST.CSV!') cols = [] for x in FE: cols += encode_FE(df_test,x,verbose=0) for x in range(len(OHE)): cols += encode_OHE_test(df_test,OHE[x],dd[x]) end = (id)*chunksize if end>7853253: end = 7853253 pred[(id-1)*chunksize:end] = model.predict(df_test[cols]) print(' encoded and predicted part',id) id += 1 ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download