В статье рассмотрена возможность применения машинного обучения при классификации спама, в рамках курсового проекта по дисциплине «Методы интеллектуального анализа данных», научный руководитель – д.ф.-м.н., профессор Воронова Л.И. [1].
В настоящее время, время высоких технологий, автоматизированного развития задача нахождения спама является весьма актуальной. Достаточно лишь привести цифру, что более половины всех электронных писем, поступающих в корпоративные сети, являются спамом в том или ином виде.
Спам — это сообщения, массово рассылаемые людям, не дававшим согласие на их получение. Чаще всего спам встречается на электронных почтах, на сайтах, в комментариях и др.
Спам в комментариях на сайте, как правило, рассылается автоматически. При этом отличительной чертой спама в комментариях является то, что текст такого комментария подходит для сайта или блога абсолютно любой тематики: компьютеры, футбол, дети, кулинария и т.д.
В основном спам – это негативный момент, который доставляет много проблем. Если не настроить сайт на автоматическую фильтрацию спама, то вычищать вручную автоматически присланные спам-комментарии крайне долго и нудно.
Именно поэтому классификация спамов с использованием методов машинного обучения является актуальной.
В качестве данных для анализа используются комментарии выгруженные с видеохостингового сайта [9], в csv файл spam с исходным набором данных (спам и не спам сообщения). Файл spam представляет собой список сообщения, каждое из которых является спамом или не спамом. Содержимое файла представлено на рисунке 1.
Рис.1- Структура файла «spam»
Для отчистки, обработки и записи данных в csv формат, для удобного использования, применялась библиотека ElementTree [8].
Для чтения и обработки обработанных данных использовалась библиотека pandas [7]. Программный код использования данной библиотеки отображен на рисунке 2. Функция read_csv считать csv как data frame. С помощью функции split () разделяет слепленные классы. Функция dropna() позволяет удалять пустые записи [3].
Рис. 2- Программный код использования библиотеки pandas
В качестве инструмента машинного обучения использовалась библиотека scikit-learn [6]. Данная библиотека не позволяет обрабатывать категориальные признаки, для реализации модели необходимо перевести их в числовые признаки, программный код перевода показан на рисунке 3.
Рис. 3- Программный код перевода категориальных признаков в числовые
При анализе текстовых признаков было использованы 3 модели:
Bags of words или мешок слов — представляет собой неупорядоченный набор слов, входящих в обрабатываемый текст. Модель представляют в виде матрицы, в которой строки соответствуют отдельному тексту, а столбцы — входящие в него слова. Ячейки на пересечении являются числом вхождения данного слова в соответствующий документ.
N-grams— последовательность из n элементов. С семантической точки зрения, это может быть последовательность звуков, слогов, слов или букв. На практике чаще встречается N-грамма как ряд слов, устойчивые словосочетания называют коллокацией.,
tf-idf— статистическая мера, используемая для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса. Вес некоторого слова пропорционален частоте употребления этого слова в документе и обратно пропорционален частоте употребления слова во всех документах коллекции. [10]
Программный код анализа текстовых признаков представлен на рисунке 4.
Рис. 4- Программный код анализа текстовых признаков
На эффективность алгоритмов машинного обучения влияет множество факторов вроде размера и структуры набора данных. По этой причине приходится пробовать различные алгоритмы, проверяя эффективность на тестовом наборе данных, и затем выбирать лучший вариант. В работе было выбрано несколько алгоритмов классификации, программный код которых показан ниже на рисунке 5.
Рис. 5- Программный код выбора алгоритма классификации
RandomForest- множество решающих деревьев. В задаче регрессии их ответы усредняются, в задаче классификации принимается решение голосованием по большинству.
ComplimentNB- метод, основанный на применении наивного байесовского классификатора, в основе которого лежит применение теоремы Байеса.
Perceptron, который имеет множество слоев: входной слой для получения данных, скрытые слои и выходной слой для вывода данных.
В данном случае для классификации спам/не спам нейронная сеть показала себя лучше, чем другие алгоритмы классификации. [4]:
F-мера случайного леса= 0.972;
F-мера тестовой выборки персептрона= 0.9861;
F-мера тестовой выборки байесовского классификатора: 0.966.
График сравнения алгоритмов классификации отображается на рисунке 6.
Рис. 6 - Сравнение алгоритмов классификации
Для выбора оптимального количества нейронов и уровней в сети – была протестирована сеть с различным количеством нейронов. Программный код тестирования показан на рисунке 7.
Рис. 7 - Код тестирования различного количества нейронов
Исходя из этого был построен график: зависимости качества классификации от количества слоев [2]. График зависимости качества классификации от количества нейронов находится на рисунке 8.
Рис. 8 - Зависимость качества классификации от количества слоев нейронов
Опираясь на график, можно сделать вывод, что для алгоритма «мешок слов» наилучшее количество слоев нейронов 12, а количество входных нейронов 8617.
Модель нейронной сети показан на рисунке 9.
Рис. 9 - Нейронная сеть для классификации спама
Для проверки работы классификатора, подадим на вход текст и классификатор выдает результат: «спам», что является таковым.
Результат работы программы предоставлен на рисунке 10.
Рис. 10 - Работа классификатора спама
Выводы
В статье проанализирована проблема классификации спама методами машинного обучения; обозначены основные понятия. Описан программный код и построены графики для выбора наилучших условий для качества классификатора спама. Спроектирована и реализована нейронная сеть, а также другие методы машинного обучения, такие как: RandomForest, байесовский классификатор спама для сравнения и сделан вывод что наилучшим методом машинного обучения является нейронная сеть, показан результат работы программы [5].
Список литературы и источников
Л.И. Воронова, В.И. Воронов. Machine Learning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2017 – 81 с.
Курс машинного обучения Andrew Ng Machine Learning [Электронный ресурс]. – Режим доступа: https://www.coursera.org/learn/machinelearning (дата обращения: 01.12.2017)
Высокоуровневый язык программирования Python [Электронный ресурс]. – Режим доступа: https://www.python.org/ (дата обращения: 5.12.2018)
Открытая библиотека машинного обучения TensorFlow [Электронный ресурс]. – Режим доступа: https://www.tensorflow.org/ (дата обращения: 7.12.2017)
Открытая библиотека разработки нейронных сетей Keras [Электронный ресурс]. – Режим доступа: https://keras.io/ (дата обращения: 15.12.2018)
Открытая библиотека машинного обучения scikit-learn [Электронный ресурс]. – Режим доступа: http://scikit-learn.org/ (дата обращения: 17.12.2018)
Библиотека Анализа Данных Python. [Электронный ресурс]. – Режим доступа: https://pandas.pydata.org (дата обращения: 17.12.2018)
Python XML with ElementTree: Beginner's Guide [Электронный ресурс]. – Режим доступа: https://www.datacamp.com/community/tutorials/python-xml-elementtree (дата обращения: 17.12.2018)
YouTube [Электронный ресурс]. – Режим доступа: https://www.youtube.com(дата обращения: 7.12.2017)
Классификация текстов с помощью мешка слов. Руководство [Электронный ресурс]. – Режим доступа: http://datareview.info/article/klassifikatsiya-tekstov-s-pomoshhyu-meshka-slov-rukovodstvo/(дата обращения: 7.12.2017)