Бизнес-проблема

В соответствии с ростом информационных технологий, обмен информацией и данными по электронной почте является основной ключевой внутренней информацией компании, чтобы поддерживать соблюдение закона о защите персональных данных и обеспечивать сохранение наших активов, у нас должна быть стратегия для поддержания. Основываясь на расследовании утечки данных Verizon, в среднем утечка стоит 3,93 миллиона долларов, и эти цифры зависят от размера компании.

Бизнес-цель

Мы все знаем, что киберугрозы могут предотвратить эту деятельность разными способами: от оборудования, программного обеспечения, людей. Мы не можем полагаться на аппаратное и программное обеспечение, потому что рост киберугроз также огромен, главное, что автор хочет выделиться, - это люди. Основная цель — повысить осведомленность людей с помощью создания системы для обнаружения фишинга и спама в электронной почте, к которым можно легко получить доступ, чтобы снизить потенциальные потери из-за киберугроз.

Большая компания, в которой работает более 500 сотрудников, даже если у них есть много уровней безопасности, таких как «Расширенная защита от угроз», мы не можем закрыть глаза на тот факт, что в главном почтовом ящике будет происходить фишинг по электронной почте. если сотрудник сообщает, что служба ИТ-поддержки или служба ИТ-безопасности, как мы предполагаем, могут ответить в течение 5–7 минут, чтобы определить классификацию электронной почты СПАМ или ВРЕМЯ. Как мы минимизируем риск свободного времени, если сотрудник получил электронную почту и классифицировал ее как СПАМ или ВРЕМЯ? по мнению автора, это реализация модели машинного обучения для классифицированной электронной почты SPAM или HAM.

Машинное обучение

Выгода

Какая польза от использования машинного обучения для обнаружения спама или HAM?

  1. Адаптивность: модель может адаптироваться и учиться на новых шаблонах и вариациях спам-сообщений, если мы будем предоставлять им непрерывные данные.
  2. Извлечение функции: извлеките важную функцию, чтобы определить, где находится СПАМ или ВРЕМЯ.
  3. Улучшенная точность: благодаря огромному набору данных можно повысить точность, а также изучить новый шаблон.

для следующего автора главы дайте объяснение от начала до конца рабочего процесса машинного обучения

Сделать модель

в этой главе может быть больше технических деталей, а также автор может дать ссылку на Github-репозиторий этого проекта, ССЫЛКА.

  • Набор данных

этот набор данных имеет 5572 электронных письма, соотношение 4825 HAM и 747 SPAM, поскольку данные чище, чем «реальные» данные в отрасли, автор не использовал EDA так много, как обычно.

  • Разработка функций

для разработки функций мы решили использовать Count Vectorizer (CV). Count Vectorizer (CV) — это метод извлечения признаков, который преобразует текстовые данные в матричное представление на основе частоты слов. Он позволяет алгоритмам машинного обучения обрабатывать и анализировать текстовые данные.

Вот пошаговое описание того, как работает Count Vectorizer (CV):

  1. Токенизация: текст сначала делится на отдельные слова или токены. Он удаляет знаки препинания, преобразует текст в нижний регистр и применяет другие методы предварительной обработки.
  2. Создание словаря: Count Vectorizer создает словарь уникальных слов или терминов из размеченного текста. Каждое слово становится характеристикой, а его индекс в словаре представляет собой столбец результирующей матрицы.
  3. Подсчет частоты слов: алгоритм подсчитывает появление каждого слова в каждом документе. Он создает матрицу, в которой строки соответствуют документам, а столбцы представляют слова из словаря. Значения в матрице обозначают частоту каждого слова в каждом документе.
  4. Векторизация: матрица преобразуется в числовое представление, подходящее для алгоритмов машинного обучения. Это преобразование обычно включает преобразование частот слов в числовые значения, такие как двоичные индикаторы (наличие или отсутствие слова) или необработанные частоты терминов.
  • Модель

после того, как мы используем CV, мы должны подогнать его под модель, которую мы согласны использовать. в этом случае автор использует полиномиальный наивный байесовский алгоритм для подбора данных. Первый шаг — мы разделяем данные для обучения, тестирования.

после этого мы вводим модель и подгоняем их

после этого мы хотим знать, насколько хороша наша модель в тестовых данных, поэтому мы решаем составить матрицу путаницы, из набора данных 1115 мы получили 974 истинно положительных результата, 17 ложноположительных результатов, 9 ложноотрицательных результатов, 115 ложноотрицательных результатов.

по мнению автора, модель хорошо понимает данные. но чтобы убедиться, что мы могли бы перейти к следующему шагу.

  • показатели оценки

в этой части мы хотим увидеть, что модель может прогнозировать на основе точности, отзыва, а также оценки f1, поэтому мы поместили это.

после получения этой оценки автор остался доволен моделью. и мы хотим продвинуть шаг.

  • Модель дампа

для того, чтобы модель make могла быть развернута на определенном сервере, мы должны сбросить ее на определенное расширение, в этом случае писатель использует рассол.

Развертывание

за понимание в этой справке по развертыванию с помощью некоторых приложений, таких как Github Desktop, Postman, CMD (терминал). читатели советуют установить это приложение, если вы хотите оставаться в соответствии с контекстом

  • Создать репозиторий

Создайте репозиторий на своем github для запуска этого проекта и перейдите в терминал для активации виртуальной среды, используя этот синтаксис.

вы можете проверить, работает ли синтаксис, по префиксу метки (.venv) перед вашим репозиторием местоположения.

  • Установить пакет

для этого проекта мы используем некоторые пакеты, которые необходимо установить в нашей среде FastAPI, Scikit-learn, Pytest.

FastAPI — это пакет, который используется для создания API нашего проекта с помощью Python.

scikit-learn — это пакет для комплексной библиотеки машинного обучения на Python.

pytest — это среда тестирования для Python, которая упрощает написание и выполнение тестов.

а потом мы все знаем, что у установленной нами библиотеки есть зависимости, а также необходимые условия для другого пакета, как мы поддерживаем документ с требованиями? в питоне мы используем:

pip freeze > requirements.txt

для автоматического обновления требований среды, в которой мы нуждаемся.

  • Докер
FROM python:3.9-slim
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
RUN pip install -r requirements.txt
CMD ["python", "main.py"]

Будет обычный синтаксис для создания образов Docker:
1. Из: мы используем базовые образы python 3.9.

2. Env: какую среду мы используем

3. Workdir: поместите исполняемую программу

4. Копировать: Скопируйте весь путь в док-контейнер.

5. Выполнить: команда выполнения для процесса сборки

6. CMD: команда для выполнения при запуске контейнера

  • CI

Основная цель этого раздела — увидеть ожидания от нашего исходного кода, который мы выгружаем и публикуем в main.py, а UNIT тестирует их с помощью pytest.

есть 3 основных сценария юнит-теста,

  1. Предсказание о СПАМе
def test_predict_spam(client):
    input_data = {"text": "This is a promotion email to get discount"}
    response = client.post("/predict", json=input_data)
    assert response.status_code == 200
    assert response.json() == {"prediction": "Spam"}

2. Предсказание о ветчине

def test_predict_ham(client):
    input_data = {"text": "This is a test email"}
    response = client.post("/predict", json=input_data)
    assert response.status_code == 200
    assert response.json() == {"prediction": "Ham"}

3. Верните сообщение, если оно пустое

def test_predict_empty_input(client):
    input_data = {"text": ""}
    response = client.post("/predict", json=input_data)
    assert response.status_code == 400
    assert response.json() == {"detail": "Empty input text"}

и это свидетельство того, что код писателя прошел тест UNIT с определенными критериями.

  • CD

для развертывания в instace автор использует облачный запуск Google для выполнения этого требования. писатель мог бы пошагово объяснить настройку, но читатель в первый раз должен иметь учетную запись Google и перейти на Console.cloud.goole.com.

после этого будет вот так, нажмите на бургер в левом меню->выберите облачный запуск->создайте сервис:

после этого мы выбираем непрерывное развертывание и нажимаем «SET UP CLOUD BUILD»

зайдите в свою учетную запись github, чтобы связать их и выбрать правильный репозиторий

для настройки сборки используем dockerfile -> save

после этого мы должны установить область экземпляра.

для распределения ЦП мы используем этот параметр.

и для емкости мы используем 4Gb Ram и 2 CPU

в части безопасности мы не изменили значение по умолчанию

подождите немного, и сервис будет работать следующим образом:

из соображений безопасности я не делюсь URL-адресом, и автор уже закончил развертывание.

  • Выход тестирования

после завершения настройки развертывания нам нужно проверить вывод нашего текстового прогноза API, а для этого пошагового автора использовать приложение POSTMAN, чтобы помочь решить проблему тестирования.

  1. случае нам нужно увидеть об обнаружении СПАМ, со значением

2. во втором случае нам нужно увидеть обнаружение HAM с этим значением

РЕЗУЛЬТАТ

В этом проекте мы успешно разработали модель машинного обучения для обнаружения спама с использованием Наивного Байеса в FastAPI. Тем не менее, есть еще возможности для улучшения. В будущем мы планируем изучить более продвинутые методы, такие как модели глубокого обучения и ансамблевые методы, чтобы еще больше повысить точность и надежность нашей системы обнаружения спама.

также писатель прикрепил репо моего github для справки в этой ссылке

спасибо за чтение этой статьи, если вы найдете понимание в этой статье, пожалуйста, поделитесь со всеми, кто нуждается.