Этот проект посвящен применению моделей для классификации текстовых сообщений на спам и не-спам. Объём тестовых обучающей выборки ~16000 сообщений. Целевая метрика — ROC-AUC. Для классификации используются как стандартные модели машинного обучения, так и некоторые инженерные модификации.
Для установки используемых в ноутбуке библиотек выполните следующую команду в терминале:
pip install -r requirements.txt
Ниже представлены этапы работы над ноутбуком. В самом .ipynb файле навигация отличается минимальным образом от представленной ниже
- Импорт библиотек
- Предварительный анализ данных (EDA)
- Баланс классов
- Сравнение распределений длин слов для спама и не спама
- Облако слов для визуализации часто используемых слов
- Кластеризация текстов для выявления скрытых структур
- Предобработка текстов
- Очистка текста от стоп-слов
- Удаление неинформативных слов
- Приведение всех слов к нижнему регистру
- Лемматизация
- Преобразование текстов в векторы с использованием GloVe эмбеддингов для LSTM
- Создание представлений TF-IDF и Bag Of Words для других моделей
- Модели
- Логистическая регрессия на TF-IDF признаках
- K-Means на TF-IDF признаках + Логистическая регрессия на расстояниях до центров кластеров
- Латентное размещение Дирихле (LDA) + Логистическая регрессия на вероятностях тем
- NaiveBayes на TF-IDF признаках
- NaiveBayes на CountVectorizer
- LightGBM на TF-IDF представлениях
- LSTM на GloVe эмбеддингах слов
- Трансформер на GloVe эмбеддингах слов + Визуализация механизма внимания
- Сравнение лучших кандидатов
- Сравнение качества на общей отложенной выборке
- Калибровочные кривые
- ROC и PR-кривые
- Распределение вероятностей
- Предсказания LSTM на тесте
Результаты подбора параметров представлены в табличке. Результаты указаны для моделей на лучших подобранных гиперпараметрах и отсортированы в порядке убывания качества.
Модель | ROC-AUC | Метод подбора параметров |
---|---|---|
LSTM на GloVe эмбеддингах | 0.9816 | RMSProp |
Логистическая регрессия на TF-IDF | 0.9777 | Кросс-валидация (4 фолда) |
Бустинг на TF-IDF | 0.9762 | Optuna (120 trials) |
K-Means + Логистическая регрессия | 0.972 | Кросс-валидация (4 фолда) |
NaiveBayes на TF-IDF | 0.9713 | Кросс-валидация (4 фолда) |
NaiveBayes на CountVectorizer | 0.9704 | Кросс-валидация (4 фолда) |
LDA + Логистическая регрессия | 0.876 | Кросс-валидация (4 фолда) |
Наиболее качественные результата показала наиболее сложная архитектура - LSTM на основе GloVe эмбеддингов (эмбеддинги дообучались), обученная для классификации. Схема модели: