Торкнути лопатою
Першим кроком буде зайти на офіційний сайт TensorFlow і прочитати ML для початківців.
TensorFlow — це команда хакерів Google і найпопулярніша бібліотека ML, яка підтримує Python, Java, C ++ і Go.
Крім того, є Scikit-learn – ще одна бібліотека для ML, орієнтована на Python. Ключовими перевагами цієї бібліотеки є значна кількість готових алгоритмів. Існує підручник для визначення мови з текстом, написаним за допомогою Scikit-learn.
Отже, як приклад, поставимо таку мету – навчити модель визначати наявність SQL-ін’єкції в текстовому рядку.
Перш за все Набори даних Go
Різновид класифікаційного завдання – це коли алгоритм після отримання даних визначає конкретні категорії.
Функції називаються записами, у яких алгоритм шукатиме шаблони.
Мітка називається категорією, до якої належать певні функції. Важливо пам’ятати, що вхідні дані можуть мати кілька ознак, але лише одну мітку.
Для цього завдання ми використаємо алгоритм навчання під наглядом. Це означає, що під час навчання алгоритм отримуватиме як функції, так і мітки.
За допомогою ML збір даних є пріоритетом №1 у вирішенні будь-якої проблеми.
Візьміть файл CSV із трьома типами даних: випадкові електронні листи (20 тис.), випадкові електронні листи з SQL-ін’єкціями (20 тис.) і чисті SQL-ін’єкції (10 тис.).
Тепер слід прочитати дані бенчмарку. Функція повертає аркуш X, який містить об’єкти, аркуш Y, який містить мітки для кожного об’єкта, і аркуш label_names. Останній просто містить текстове визначення для міток, яке необхідно для зручної обробки результатів.
Далі слід розділити дані на навчальні та тестові набори. Щоб функція cross_validation.train_test_split () була оптимальною, вона перетасує записи та поверне нам чотири набори даних — два навчальні та два тестові для функцій і міток.
Потім ми ініціалізуємо об’єкт векторизатора, який посимвольно зчитує передані дані, об’єднує їх у N-грами та переводить у числові вектори, які здатні сприймати алгоритм ML.
Подача даних
Наступним кроком є ініціалізація конвеєра та передача його раніше створеному векторизатору та алгоритму, які ми будемо використовувати для аналізу нашого набору даних. Ось так виглядає алгоритм логістичної регресії.
Модель готова до обробки даних. Тепер ми передаємо навчальні набори функцій і міток у наш конвеєр, і модель починає навчання. У наступному рядку ми пропустимо набір тестів функцій через конвеєр, щоб отримати кількість правильно вгаданих даних.
Якщо ви хочете знати, наскільки модель правильна для прогнозування результатів, ви можете порівняти припущені дані та тестовий аркуш міток.
Точність моделі визначається значенням від 0 до 1 і може бути переведена у відсотки. Ця модель повертає правильну відповідь у 100% випадків. Звичайно, використовуючи реальні дані, досягти такого результату буде нелегко, а завдання відносно просте.
Останнім штрихом є збереження моделі у навченому вигляді, щоб її можна було використовувати без повторного навчання в будь-якій іншій програмі Python. Ми серіалізуємо модель у файл pickle за допомогою вбудованої функції Scikit-learn:
Невелика демонстрація використання серіалізованої моделі в іншій програмі.
На виході ми отримаємо такий результат:
Як бачите, модель впевнено визначає атаки SQL-ін’єкції.
Висновок
У результаті ми маємо добре навчену модель для визначення SQL-ін’єкцій. Теоретично, ми можемо вставити його у бекенд. Крім того, у разі ін’єкційних атак планується перенаправити всі підроблені запити, щоб приховати всі можливі вразливості.
Це перші кроки у сфері машинного навчання. Наша пристрасть до машинного навчання та штучного інтелекту не випадкова, оскільки одне з наших рішень, наприклад LS Intranet уже містить їхні розумні алгоритми. Щоб дізнатися більше про нашого штучного помічника для корпорацій, прочитайте цю копію.
Сподіваємося, ті, кого програмування лякає, знайдуть цей матеріал цікавим і надихнуться почати власну подорож машинного навчання.
Leave a Comments