Лабораторная работа №7
Ссылка на ipynb-board
Введение
В рамках работы исследуется задача бинарной классификации текстов (positive / negative). Основной акцент — сравнение различных способов векторизации текста и моделей машинного обучения.
Цель работы
- Исследовать влияние разных методов векторизации текста
- Сравнить несколько моделей классификации
- Проанализировать изменение метрики f1-score
Используемые методы
Векторизация:
- CountVectorizer (униграммы, триграммы)
- TF-IDF (1–5 граммы)
- Символьная векторизация
- Кастомные токенизаторы
Модели:
- LogisticRegression
- XGBClassifier
- LinearSVC
- Простые эвристические модели
Результаты classification_report
1. CountVectorizer (униграммы) + LogisticRegression
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.76 | 0.77 | 0.76 |
| positive | 0.77 | 0.76 | 0.77 |
| macro avg | — | — | 0.77 |
2. CountVectorizer + XGBClassifier
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.74 | 0.68 | 0.71 |
| positive | 0.71 | 0.77 | 0.74 |
| macro avg | — | — | 0.72–0.73 |
f1-score ухудшился относительно LogisticRegression
3. CountVectorizer + LinearSVC
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.73 | 0.77 | 0.75 |
| positive | 0.76 | 0.72 | 0.74 |
| macro avg | — | — | 0.75 |
Немного хуже LogisticRegression
4. CountVectorizer (триграммы)
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.71 | 0.46 | 0.56 |
| positive | 0.61 | 0.82 | 0.70 |
| macro avg | — | — | ~0.63 |
| Сильное падение качества |
TF-IDF Векторизация
5. TF-IDF (униграммы)
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.77 | 0.73 | 0.75 |
| positive | 0.75 | 0.78 | 0.76 |
| macro avg | — | — | 0.75–0.76 |
почти как CountVectorizer
6. TF-IDF (пентаграммы)
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.95 | 0.11 | 0.20 |
| positive | 0.53 | 0.99 | 0.69 |
| macro avg | — | — | ~0.45 |
| Скор упал из-за переобучения и разреженности |
7. TF-IDF (биграммы)
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.72 | 0.66 | 0.69 |
| positive | 0.69 | 0.75 | 0.72 |
| macro avg | — | — | ~0.70 |
| --- |
8. TF-IDF (триграммы)
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.72 | 0.45 | 0.56 |
| positive | 0.61 | 0.83 | 0.70 |
| macro avg | — | — | ~0.63 |
Дополнительные методы
9. Smart tokenizer + LogisticRegression
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 0.77 | 0.80 | 0.78 |
| positive | 0.80 | 0.76 | 0.78 |
| macro avg | — | — | 0.78 |
10. Без stop-words
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 1.00 | 1.00 | 1.00 |
| positive | 1.00 | 1.00 | 1.00 |
11. Простая модель (смайлики)
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 1.00 | 0.32 | 0.49 |
| positive | 0.60 | 1.00 | 0.75 |
12. Символьная векторизация + LogisticRegression
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 1.00 | 0.99 | 0.99 |
| positive | 0.99 | 1.00 | 1.00 |
13. Символьная + XGB
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 1.00 | 1.00 | 1.00 |
| positive | 1.00 | 1.00 | 1.00 |
14. Символьная + LinearSVC
| класс | precision | recall | f1-score |
|---|---|---|---|
| negative | 1.00 | 0.99 | 1.00 |
| positive | 0.99 | 1.00 | 1.00 |
Анализ качества методов (по f1-score)
Хорошие методы (высокий f1-score)
К методам с наилучшим качеством относятся:
- Smart tokenizer + LogisticRegression
- macro avg f1-score: 0.78
-
одинаковый f1-score по классам: 0.78 / 0.78
-
CountVectorizer (униграммы) + LogisticRegression
- macro avg f1-score: 0.77
-
сбалансированные значения по классам
-
TF-IDF (униграммы)
- macro avg f1-score: 0.75–0.76
-
близкие значения f1-score для обоих классов
-
CountVectorizer + LinearSVC
- macro avg f1-score: 0.75
- незначительная разница между классами
Средние методы
Методы с заметно более низким, но приемлемым качеством:
- CountVectorizer + XGBClassifier
-
macro avg f1-score: 0.72–0.73
-
TF-IDF (биграммы)
- macro avg f1-score: ~0.70
Слабые методы (снижение качества)
Методы, у которых наблюдается падение f1-score:
- CountVectorizer (триграммы)
- macro avg f1-score: ~0.63
-
сильный разрыв между классами
-
TF-IDF (триграммы)
- macro avg f1-score: ~0.63
- аналогичное поведение
Худшие методы (минимальный f1-score)
Методы с наименьшим качеством:
- TF-IDF (пентаграммы)
- macro avg f1-score: ~0.45
- сильный дисбаланс между классами
Методы с максимальным f1-score
Методы, где значения f1-score достигают максимума:
- Без stop-words
-
f1-score: 1.00 / 1.00
-
Символьная векторизация + LogisticRegression
-
f1-score: 0.99 / 1.00
-
Символьная + XGB
-
f1-score: 1.00 / 1.00
-
Символьная + LinearSVC
- f1-score: 1.00 / 1.00
Отдельный случай
- Простая модель (смайлики)
- negative: f1-score = 0.49
- positive: f1-score = 0.75
- наблюдается сильная разница между классами
Выводы
- Лучшие результаты достигаются при использовании униграмм и классических моделей
- Увеличение размера n-грамм (до триграмм и пентаграмм) может сопровождаться снижением качества
- Некоторые методы показывают идеальные значения метрик (до 1.00)