Втыкание лопаты
Первым шагом будет перейти на официальный сайт TensorFlow и прочитать ML для начинающих.
TensorFlow — это хакерская команда Google и самая популярная библиотека машинного обучения, поддерживающая Python, Java, C++ и Go.
Также есть Scikit-learn — еще одна Python-ориентированная библиотека для машинного обучения. Значительное количество готовых алгоритмов является ключевым преимуществом этой библиотеки. Существует учебник для определения языка с текстом, написанным с помощью Scikit-learn.
Итак, в качестве примера поставим такую цель — научить модель определять наличие SQL инъекции в текстовой строке.
В первую очередь Наборы данных в работе
Тип задачи классификации — это когда алгоритм после получения данных выделяет определенные категории.
Функции называются записями, в которых алгоритм будет искать шаблоны.
Метка называется категорией, к которой принадлежат определенные функции. Важно помнить, что входные данные могут иметь несколько признаков, но только одну метку.
Для этой задачи мы будем использовать алгоритм обучения с учителем. Это означает, что в процессе обучения алгоритм будет получать как признаки, так и метки.
С помощью машинного обучения сбор данных является приоритетом №1 в решении любой проблемы.
Возьмите CSV-файл с тремя типами данных: случайные электронные письма (20 тыс.), случайные электронные письма с SQL-инъекциями (20 тыс.) и чистые SQL-инъекции (10 тыс.).
Теперь необходимо прочитать эталонные данные. Функция возвращает лист X, содержащий объекты, лист Y, содержащий метки для каждого объекта, и лист label_names. Последний просто содержит текстовое определение меток, необходимое для удобной обработки результатов.
Далее данные следует разделить на обучающую и тестовую выборки. Для того, чтобы функция cross_validation.train_test_split() была оптимальной, она перетасует записи и вернет нам четыре набора данных — два обучающих и два теста на фичи и метки.
Затем мы инициализируем объект-векторизатор, который будет считывать переданные данные посимвольно, объединять их в N-граммы и переводить в числовые векторы, что способен воспринимать алгоритм ML.
Подача данных
Следующим шагом является инициализация конвейера и передача его ранее созданному векторизатору и алгоритму, которые мы будем использовать для анализа нашего набора данных. Вот так выглядит алгоритм логистической регрессии.
Модель готова к обработке данных. Теперь мы передаем обучающие наборы функций и меток в наш конвейер, и модель начинает обучение. В следующей строке мы пропустим тестовый набор функций через конвейер, чтобы получить количество правильно угаданных данных.
Если вы хотите узнать, насколько модель правильно предсказывает результаты, вы можете сравнить предполагаемые данные и тестовый лист этикеток.
Точность модели определяется значением от 0 до 1 и может быть преобразована в проценты. Эта модель возвращает правильный ответ в 100% случаев. Конечно, на реальных данных такого результата добиться будет непросто, да и задача относительно проста.
Последний штрих — сохранить модель в обученном виде, чтобы ее можно было использовать без повторного обучения в какой-либо другой программе Python. Мы сериализуем модель в файл рассола, используя встроенную функцию Scikit-learn:
Небольшая демонстрация использования сериализованной модели в другой программе.
На выходе получим следующий результат:
Как видите, модель уверенно определяет атаки с помощью SQL-инъекций.
Заключение
В результате у нас есть хорошо обученная модель для определения SQL-инъекций. Теоретически мы можем воткнуть его в бэкэнд. Также в случае инъекционных атак определено перенаправить все поддельные запросы, чтобы скрыть все возможные уязвимости.
Это самые первые шаги в области ML. Наша страсть к машинному обучению и предметам ИИ не случайна, так как одно из наших решений, таких как Интранет LS уже содержит их интеллектуальные алгоритмы. Чтобы узнать больше о нашем искусственном помощнике для корпораций, прочитайте этот текст.
Надеемся, что тем, кого пугает программирование, этот материал покажется интересным и вдохновит их начать собственное путешествие в области машинного обучения.
Leave a Comments