Files
NLP/lab1/METRICS_AND_CLASSIFIERS.md

895 lines
54 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Метрики и классификаторы: методическое описание
Документ предназначен для отчёта и презентации. Он объясняет, что показывает
каждая метрика, как она вычисляется, как интерпретировать значения и чем
отличаются классификаторы. Аудитория может не знать деталей машинного
обучения, но предполагается, что базовые понятия выборки, признака и класса
знакомы.
Обозначения:
- \(n\) — число объектов (реплик) в выборке;
- \(C\) — число классов (в основном эксперименте \(C=34\));
- \(y_i\) — истинный класс объекта \(i\);
- \(\hat y_i\) — предсказанный класс;
- \(c\) — индекс класса;
- \(n_c\) — число объектов класса \(c\);
- \(\hat p_{i,c}\) — вероятность, которую модель приписывает объекту \(i\)
и классу \(c\).
---
## 1. Постановка задачи
Решается задача **многоклассовой классификации с одним правильным ответом**:
каждая реплика относится ровно к одному персонажу. Модель получает вектор
стилометрических признаков и должна выбрать один из 34 классов.
Особенности, которые влияют на выбор метрик:
1. **Дисбаланс классов.** Число реплик изменяется от 15 до 139. Модель, которая
всегда предсказывает самый частый класс, может иметь заметную долю
правильных ответов, но бесполезна для редких персонажей.
2. **Много классов.** Случайное угадывание даёт около \(1/34 \approx 2{,}9\%\).
Поэтому полезны top-3 и top-5.
3. **Короткие тексты.** Один объект — реплика длиной около 19 слов. Оценки
качества будут ниже, чем на длинных документах; это ожидаемо.
4. **Один автор.** Задача измеряет различимость речевых масок, а не авторскую
атрибуцию.
---
## 2. Матрица ошибок
**Матрица ошибок** (confusion matrix) — таблица \(C \times C\), где строка
соответствует истинному классу, столбец — предсказанному. Элемент \(m_{ab}\) —
число объектов класса \(a\), которые модель отнесла к классу \(b\).
Для одного класса \(c\) удобно рассматривать задачу «класс \(c\) против
остальных»:
| | Предсказан \(c\) | Предсказан не \(c\) |
|---|---:|---:|
| Истинно \(c\) | \(TP_c\) (истинно положительные) | \(FN_c\) (ложно отрицательные) |
| Истинно не \(c\) | \(FP_c\) (ложно положительные) | \(TN_c\) (истинно отрицательные) |
Диагональ матрицы — правильные ответы. Вне диагонали — ошибки. По матрице
видно не только «сколько ошибок», но и **какие персонажи перепутываются**.
Это важно для содержательной интерпретации: например, ошибки между детьми
(Jas и Vincent) или между нелюдьми (Krobus, Dwarf, Wizard) могут отражать
сходство их речевых масок.
---
## 3. Метрики для одного класса
### 3.1. Точность (precision)
\[
P_c = \frac{TP_c}{TP_c + FP_c}.
\]
Показывает, какая доля объектов, которые модель назвала классом \(c\),
действительно принадлежит этому классу. Высокая точность означает мало
ложных срабатываний.
Пример: если модель 10 раз предсказала Abigail, и 7 раз правильно, точность
равна \(7/10 = 0{,}7\).
### 3.2. Полнота (recall)
\[
R_c = \frac{TP_c}{TP_c + FN_c}.
\]
Показывает, какую долю объектов класса \(c\) модель нашла. Высокая полнота
означает мало пропусков.
Пример: если в выборке 20 реплик Abigail, и модель правильно нашла 12,
полнота равна \(12/20 = 0{,}6\).
### 3.3. F-мера (F1)
\[
F1_c = \frac{2 P_c R_c}{P_c + R_c}.
\]
Гармоническое среднее точности и полноты. Почему гармоническое, а не
арифметическое: оно сильнее наказывает за низкое значение любой из двух
метрик. Если точность 1,0, а полнота 0,1, арифметическое среднее 0,55, а
F-мера — около 0,18. Это соответствует интуиции: модель, которая находит
только десятую часть класса, нельзя считать хорошей.
F-мера полезна, когда важно и не пропускать объекты класса, и не приписывать
к нему чужие. В нашей задаче это естественная метрика для каждого персонажа.
### 3.4. Поддержка (support)
\(n_c\) — число истинных объектов класса \(c\) в выборке. Support нужен,
чтобы понимать, насколько надёжна оценка: F-мера по классу с 15 объектами
имеет гораздо больший разброс, чем по классу с 139 объектами.
---
## 4. Способы усреднения метрик
### 4.1. Macro-усреднение
\[
\text{macro-F1} = \frac{1}{C}\sum_{c=1}^{C} F1_c.
\]
Каждый класс получает одинаковый вес независимо от числа объектов. Это
**основная метрика** в нашей задаче, потому что исследовательский вопрос
касается всех 34 персонажей, включая редких.
Недостаток: редкий класс с 15 репликами влияет на итог так же сильно, как
класс с 139 репликами; поэтому macro-F1 может сильно колебаться между
блоками перекрёстной проверки.
### 4.2. Взвешенное усреднение
\[
\text{weighted-F1} = \sum_{c=1}^{C} \frac{n_c}{n} F1_c.
\]
Каждый класс взвешен по числу объектов. Метрика ближе к качеству на частых
классах; её полезно приводить как дополнительную, но не как основную.
### 4.3. Микро-усреднение
Сначала суммируются \(TP\), \(FP\), \(FN\) по всем классам, затем считается
общая F-мера. В задаче с одним правильным ответом micro-F1 **совпадает с
долей правильных ответов** (accuracy). Поэтому отдельно его считать не нужно,
но можно указать для полноты.
### 4.4. Пример влияния усреднения
Пусть модель хорошо различает Abigail, Alex и Haley, но почти не различает
редких персонажей. Тогда:
- доля правильных ответов и взвешенная F-мера будут относительно высокими;
- macro-F1 будет заметно ниже;
- F-мера по классам покажет, какие именно классы провалились.
Именно поэтому в отчёте нужны macro-F1 **и** отчёт по классам.
---
## 5. Основные метрики
### 5.1. Доля правильных ответов (accuracy)
\[
\text{Accuracy} = \frac{1}{n}\sum_{i=1}^{n} \mathbf{1}[y_i = \hat y_i].
\]
Доля объектов, для которых предсказание совпало с истинным классом.
Плюсы: проста и интуитивна. Минусы: при дисбалансе может вводить в
заблуждение. Пример из наших прогонов: модель `char + multinomial_nb` имеет
долю правильных ответов около 9,7%, но сбалансированная доля правильных
ответов 4,7% и macro-F1 0,028, потому что она часто предсказывает частые
классы и почти не находит редкие.
Случайный уровень: \(1/34 \approx 2{,}9\%\). Модель, всегда предсказывающая
самый частый класс, даёт около \(139/2005 \approx 6{,}9\%\) правильных
ответов, но
macro-F1 около 0,004.
### 5.2. Сбалансированная доля правильных ответов (balanced accuracy)
\[
\text{BalancedAccuracy} = \frac{1}{C}\sum_{c=1}^{C} R_c.
\]
Средняя полнота по классам. Каждый класс получает одинаковый вес, поэтому
метрика устойчива к дисбалансу. Случайный уровень \(1/C\).
Плюс: хорошо показывает, находит ли модель редкие классы. Минус: не учитывает
точность (ложные срабатывания), поэтому её нужно дополнять macro-F1 и MCC.
### 5.3. Macro-F1
Основная метрика. Формула приведена выше. Интерпретация:
- 0 — модель не находит ни одного класса;
- \(1/C \approx 0{,}029\) — уровень случайного угадывания;
- 0,10–0,20 — слабый, но заметный сигнал;
- 0,30–0,50 — умеренное качество;
- выше 0,50 — сильный результат для 34 классов и коротких реплик.
Пороговые значения условны: они зависят от числа классов, длины текста и
сложности задачи. В отчёте лучше сравнивать с базовой моделью и доверительными
интервалами, а не с абстрактной шкалой.
### 5.4. Коэффициент корреляции Мэтьюса (MCC)
Для двух классов:
\[
\text{MCC} = \frac{TP \cdot TN - FP \cdot FN}
{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}.
\]
Для многих классов используется обобщение через ковариацию матриц истинных и
предсказанных индикаторов (так реализовано в scikit-learn). MCC принимает
значения от \(-1\) до \(1\):
- \(1\) — идеальные предсказания;
- \(0\) — уровень случайного угадывания;
- \(-1\) — полная инверсия классов.
MCC удобен тем, что учитывает все четыре клетки матрицы ошибок и устойчив к
дисбалансу. В отличие от F-меры, он одинаково штрафует за ложные
срабатывания и пропуски.
### 5.5. Каппа Коэна (Cohen's kappa)
\[
\kappa = \frac{p_o - p_e}{1 - p_e},
\]
где \(p_o\) — наблюдаемая доля согласия (accuracy), \(p_e\) — ожидаемая доля
согласия при случайном предсказании с учётом распределения классов.
Интерпретация:
- \(\kappa = 0\) — согласие не лучше случайного;
- \(\kappa = 1\) — полное согласие;
- отрицательные значения — хуже случайного.
Полезна как дополнение к доле правильных ответов: показывает, насколько модель превосходит
случайное угадывание с тем же распределением классов. При сильном дисбалансе
каппа может быть нестабильной; используйте вместе с macro-F1.
### 5.6. Top-k
\[
\text{Top-}k = \frac{1}{n}\sum_{i=1}^{n}
\mathbf{1}\left[y_i \in \text{Top-}k(\hat p_{i,\cdot})\right].
\]
Доля объектов, для которых истинный класс попал в \(k\) наиболее вероятных
(или наиболее высоко оценённых) классов.
При 34 классах top-1 может быть низким, но top-3 и top-5 показывают, что
модель «чувствует» правильную область. Случайный уровень:
- top-3: \(3/34 \approx 8{,}8\%\);
- top-5: \(5/34 \approx 14{,}7\%\).
Top-k особенно полезен для вероятностных моделей и моделей с решающей
функцией. Для моделей без вероятностей ранжирование строится по значению
решающей функции; это не калиброванные вероятности, но порядок классов
корректен.
### 5.7. Логарифмическая потеря (log loss)
\[
\text{LogLoss} = -\frac{1}{n}\sum_{i=1}^{n} \log \hat p_{i,y_i}.
\]
Оценивает качество вероятностей, а не только правильность ответа. Если модель
уверена в неправильном классе, штраф растёт логарифмически.
Случайный уровень для 34 классов: \(\ln 34 \approx 3{,}53\). Значения ниже
лучше. В предварительных прогонах значения различаются: около 3,1 для
объединённого набора с n-граммами и около 7,3 для одних ручных признаков.
Чем ближе значение к 3,53, тем лучше калибровка; значения существенно выше
означают, что модель часто уверена, но ошибается. Это не обязательно плохо
для классификации, но важно для вероятностных выводов.
Log loss определён только для моделей, выдающих вероятности. Для `linear_svc`
он не считается.
### 5.8. Оценка Брайера (Brier score)
Для многоклассовой задачи:
\[
\text{Brier} = \frac{1}{n}\sum_{i=1}^{n}\sum_{c=1}^{C}
\left(\hat p_{i,c} - \mathbf{1}[y_i = c]\right)^2.
\]
Средний квадрат отклонения предсказанных вероятностей от вектора с единицей
в позиции истинного класса. Чем меньше, тем лучше. В отличие от log loss, Brier менее
чувствителен к редким уверенным ошибкам, но тоже оценивает калибровку.
Ориентир: для равномерного случайного распределения по 34 классам
\(\text{Brier} \approx (C-1)/C \approx 0{,}971\). Значения выше этого
означают, что модель хуже равномерного случайного распределения по качеству
вероятностей.
### 5.9. Матрица ошибок и отчёт по классам
Матрица ошибок — не одна метрика, а инструмент анализа. В отчёте полезны:
- **абсолютная матрица** — сколько реплик перепутано;
- **нормированная по строкам матрица** — какая доля истинного класса ушла в
каждый предсказанный;
- **самые частые пары ошибок** — какие классы чаще всего перепутываются.
Отчёт по классам содержит точность, полноту, F-меру и support для каждого
персонажа. Именно он показывает, что средние метрики могут скрывать провал
редких классов.
---
## 6. Метрики верификации «свой/чужой»
В верификации задача формулируется иначе: для тестовой реплики нужно решить,
принадлежит ли она тому же персонажу, что и эталонный центроид. Это бинарная
задача; положительный класс — «свой», отрицательный — «чужой».
### 6.1. ROC-AUC
Площадь под ROC-кривой. Интерпретация: вероятность того, что случайно взятый
положительный объект получил более высокую оценку, чем случайно взятый
отрицательный.
- 0,5 — случайное ранжирование;
- 1,0 — идеальное разделение;
- ниже 0,5 — модель систематически ставит чужие объекты выше своих.
ROC-AUC не зависит от выбранного порога, поэтому удобна для сравнения
способов построения оценок.
### 6.2. Равная ошибка (EER)
Порог, при котором доля ложных принятий (FPR) равна доле ложных отклонений
(FNR). Чем меньше EER, тем лучше. EER удобна как одна точка на ROC-кривой,
но не заменяет всю кривую.
### 6.3. TAR@FAR
Доля истинных принятий при фиксированной доле ложных принятий. Например,
TAR@FAR=1% показывает, какую долю «своих» можно принять, если разрешить не
более 1% ложных принятий. В практических системах это часто важнее, чем EER.
---
## 7. Доверительные интервалы и статистическая значимость
### 7.1. Зачем нужны интервалы
Оценка качества по одной выборке — случайная величина. Если повторить
разбиение, macro-F1 изменится. Поэтому в отчёте нужны не только точечные
значения, но и интервалы.
### 7.2. Бутстрэп (bootstrap)
Алгоритм:
1. Из \(n\) объектов случайно с возвращением выбираются \(n\) объектов.
2. На этой выборке считается метрика.
3. Шаги 1–2 повторяются \(B\) раз (обычно 1000).
4. Берутся 2,5-й и 97,5-й процентили — это 95% доверительный интервал.
Плюс: не требует предположений о распределении метрики. Минус: объекты
считаются независимыми; если реплики внутри сцен коррелируют, интервал может
быть слишком узким.
### 7.3. Критерий Мак-Немара
Сравнивает две модели на одних и тех же объектах. Пусть:
- \(b\) — число объектов, где модель A правильна, а B ошибается;
- \(c\) — число объектов, где A ошибается, а B правильна.
При нулевой гипотезе «модели одинаковы» \(b\) и \(c\) — результаты
\(b+c\) испытаний с вероятностью \(1/2\). Точный двусторонний критерий
использует биномиальное распределение. Если \(b+c\) мало, критерий
консервативен.
### 7.4. Критерий Уилкоксона
Парный непараметрический критерий для двух наборов оценок (например, macro-F1
по блокам перекрёстной проверки). Проверяет, что медиана разностей не равна
нулю. Не требует нормальности. При малом числе блоков мощность низкая.
### 7.5. Критерий Фридмана
Сравнивает три и более модели на одних и тех же блоках. Нулевая гипотеза —
все модели одинаковы. При отклонении нулевой гипотезы можно использовать
post-hoc критерий Неменьи и поправку Холма. В отчёте достаточно указать
статистику, p-значение и поправку.
### 7.6. Поправка Холма—Бонферрони
При \(m\) одновременных проверках вероятность хотя бы одного ложного
отклонения растёт. Поправка Холма упорядочивает p-значения и умножает их на
\((m - \text{ранг})\). Она менее консервативна, чем классическая поправка
Бонферрони, и широко используется.
### 7.7. Размер эффекта
p-значение отвечает на вопрос «есть ли различие», но не «насколько оно
велико». Поэтому приводите разницу macro-F1 и её доверительный интервал.
Разница в 1–2 процентных пункта при 34 классах и 2005 объектах может быть
статистически значимой, но практически незначимой.
---
## 8. Метрики для LSA и кластеризации
### 8.1. Объяснённая дисперсия
`TruncatedSVD` раскладывает матрицу TF-IDF по компонентам. Доля объяснённой
дисперсии компоненты \(j\):
\[
\text{EVR}_j = \frac{\sigma_j^2}{\sum_k \sigma_k^2},
\]
где \(\sigma_j\) — сингулярное число. Накопленная доля — сумма первых \(k\).
Она показывает, какая доля вариабельности матрицы сохраняется при усечении.
Важно: высокая объяснённая дисперсия не гарантирует полезность для
классификации. Выбор \(k\) делается по внешней метрике (macro-F1) и
интерпретируемости, а не только по графику объяснённой дисперсии.
### 8.2. Ошибка восстановления
Относительная ошибка \(\|X - X_k\|_F / \|X\|_F\), где \(X_k\) —
приближение матрицы после SVD. Показывает, насколько потеря информации велика.
Полезна как дополнительная диагностика.
### 8.3. ARI, NMI, силуэт
- **ARI** (Adjusted Rand Index) — согласие кластеризации с истинными классами
с поправкой на случай. 1 — идеальное совпадение, 0 — случайный уровень.
- **NMI** (Normalized Mutual Information) — взаимная информация между
кластеризацией и классами, нормированная в [0,1].
- **Силуэт** — насколько объект ближе к своему кластеру, чем к соседнему.
Значения от -1 до 1; выше лучше.
- **Calinski–Harabasz** — отношение межкластерной дисперсии к внутрикластерной;
выше лучше.
- **Davies–Bouldin** — среднее отношение внутрикластерного разброса к
межкластерному; ниже лучше.
Кластеризация центроидов персонажей — предварительный анализ. ARI может быть
низким даже при полезной структуре; не делайте из кластеризации сильных
выводов.
---
## 9. Классификаторы
### 9.1. Зачем несколько классификаторов
Разные модели по-разному извлекают сигнал:
- вероятностные модели (наивный Байес) хорошо работают с разреженными
частотными признаками;
- линейные модели (логистическая регрессия, SVM) устойчивы при большом числе
признаков и малом числе объектов;
- деревья и ансамбли ловят нелинейные взаимодействия;
- метод ближайших соседей использует локальную структуру.
Сравнение нескольких моделей нужно не для «гонки за процентом», а чтобы
показать, что вывод не зависит от одного алгоритма. Если разные модели дают
близкие результаты, вывод надёжнее.
### 9.2. DummyClassifier (базовая модель)
Предсказывает самый частый класс или случайный класс с учётом распределения.
Не использует признаки. Нужен как нижняя граница: если модель не лучше
Dummy, она не извлекла сигнал.
В нашей задаче Dummy с самым частым классом даёт долю правильных ответов
около 6,9%, но macro-F1 около 0,004. Это хороший пример того, почему долю
правильных ответов нельзя использовать отдельно.
### 9.3. Наивный байесовский классификатор (Multinomial Naive Bayes)
Идея: применить теорему Байеса и предположить, что признаки условно
независимы при данном классе:
\[
P(c \mid x) \propto P(c)\prod_{j=1}^{d} P(x_j \mid c).
\]
Для текстовых частот используется мультиномиальное распределение. Чтобы не
было нулевых вероятностей, применяется сглаживание Лапласа:
\[
P(w \mid c) = \frac{N_{w,c} + \alpha}{N_c + \alpha V},
\]
где \(N_{w,c}\) — число вхождений слова \(w\) в класс \(c\), \(N_c\) — общее
число слов класса, \(V\) — размер словаря, \(\alpha\) — параметр сглаживания.
Плюсы:
- очень быстрый;
- хорошо работает на разреженных TF-IDF и частотных признаках;
- устойчив при малом числе объектов;
- легко объясняется.
Минусы:
- предположение о независимости признаков почти всегда ложно;
- чувствителен к дисбалансу, если не использовать веса классов;
- требует неотрицательных признаков; поэтому LSA-компоненты (они могут быть
отрицательными) в нашей реализации исключены;
- вероятности плохо калиброваны.
В нашем конвейере для MultinomialNB используются ручные неотрицательные
признаки после MinMax-масштабирования, символьные и POS n-граммы. Это
честная базовая модель, но не основной кандидат.
### 9.4. Логистическая регрессия
Линейная модель. Для каждого класса вычисляется линейная оценка:
\[
s_c(x) = w_c^\top x + b_c.
\]
Вероятности получаются через softmax:
\[
P(c \mid x) = \frac{\exp(s_c(x))}{\sum_{k=1}^{C}\exp(s_k(x))}.
\]
Обучение минимизирует перекрёстную энтропию:
\[
\mathcal{L} = -\frac{1}{n}\sum_{i=1}^{n}\log P(y_i \mid x_i)
+ \frac{1}{2C}\|w\|_2^2.
\]
Параметр \(C\) — обратная сила регуляризации: меньше \(C\) — сильнее
регуляризация, проще модель. В нашей реализации используется L2 и
`class_weight="balanced"`, чтобы редкие классы не игнорировались.
Плюсы:
- сильная и стабильная базовая модель для текста;
- хорошо работает при \(d \gg n\);
- коэффициенты интерпретируемы: видно, какие признаки увеличивают шанс
класса;
- выдаёт вероятности.
Минусы:
- только линейные границы;
- чувствительна к масштабу признаков (поэтому стандартизация);
- при сильной мультиколлинеарности коэффициенты нестабильны;
- вероятности могут быть плохо калиброваны.
В наших прогонах логистическая регрессия — основная модель для сравнения
наборов признаков.
### 9.5. Линейный метод опорных векторов (Linear SVM)
Ищет линейную границу, максимизирующую зазор между классами. Для
неразделимых данных используется мягкий зазор:
\[
\min_{w,b,\xi} \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{n}\xi_i
\]
при ограничениях \(y_i(w^\top x_i + b) \ge 1 - \xi_i\), \(\xi_i \ge 0\).
Параметр \(C\) задаёт штраф за нарушения зазора.
Плюсы:
- часто очень силён на текстовых признаках;
- устойчив к высокой размерности;
- хорошо работает с разреженными матрицами;
- класс-веса поддерживаются.
Минусы:
- не выдаёт вероятности; есть только решающая функция;
- требует калибровки, если нужны вероятности;
- чувствителен к выбору \(C\);
- для top-k используем значения решающей функции, а не вероятности.
В отчёте не сравнивайте log loss у SVM: он не определён без калибровки.
### 9.6. Случайный лес (Random Forest)
Ансамбль решающих деревьев. Каждое дерево обучается на бутстрэп-выборке, а
при разбиении рассматривается случайное подмножество признаков. Итоговый
класс — голосование деревьев (или среднее вероятностей).
Плюсы:
- ловит нелинейные взаимодействия;
- устойчив к выбросам и масштабу признаков;
- даёт permutation importance;
- поддерживает веса классов.
Минусы:
- склонен к переобучению при большом числе признаков и малом числе объектов;
- медленнее линейных моделей;
- importance смещены в пользу коррелированных признаков;
- вероятности могут быть плохо калиброваны.
В нашей задаче лес — дополнительная проверка, а не основной кандидат:
2005 объектов и 34 класса — небольшая выборка для леса.
### 9.7. Сверхслучайные деревья (ExtraTrees)
Похожи на случайный лес, но пороги разбиения выбираются случайно, а не
оптимизируются. Это уменьшает дисперсию и ускоряет обучение, но может
увеличить смещение. Полезны как альтернатива случайному лесу.
### 9.8. Метод k ближайших соседей (kNN)
Для объекта находится \(k\) ближайших объектов обучающей выборки; класс
определяется голосованием (или взвешенным голосованием). В нашей реализации
используется косинусное расстояние и веса, обратные расстоянию.
Плюсы:
- простая и интерпретируемая идея;
- не делает предположений о форме границы;
- хорошо работает, если признаки хорошо нормированы.
Минусы:
- проклятие размерности: в высоком измерении расстояния становятся похожими;
- чувствителен к масштабу и шуму;
- медленный на больших выборках;
- не выдаёт содержательных коэффициентов.
kNN полезен как локальная базовая модель, но в стилометрии обычно уступает
линейным моделям.
### 9.9. Градиентный бустинг (опционально)
Последовательно строит деревья, каждое из которых исправляет ошибки
предыдущих. Обычно силён на табличных данных, но на 2005 объектах и 34
классах легко переобучается. В основной конфигурации не используется; может
быть добавлен как дополнительная модель при аккуратной настройке.
### 9.10. Дельта Барроуза
Классический метод стилометрии, не являющийся классификатором в смысле
машинного обучения.
Алгоритм:
1. Выбрать \(m\) наиболее частотных слов обучающей выборки (MFW).
2. Для каждого документа вычислить относительные частоты \(f_{ij}\).
3. z-нормировать каждый признак по обучающей выборке:
\[
z_{ij} = \frac{f_{ij} - \mu_j}{\sigma_j}.
\]
4. Вычислить центроид каждого класса.
5. Отнести документ к классу с минимальным расстоянием:
\[
\Delta_i = \frac{1}{m}\sum_{j=1}^{m}|z_{ij} - z_{cj}|
\]
(манхэттенская дельта) или косинусным расстоянием (Cosine Delta).
Плюсы:
- стандартная и хорошо объяснимая базовая модель;
- не требует сложной настройки;
- устойчив к теме, если выбраны частотные слова;
- легко воспроизводится.
Минусы:
- на коротких репликах оценки частот шумные;
- число MFW \(m\) нужно подбирать;
- z-нормирование чувствительно к выбросам;
- уступает ML-моделям при наличии большого числа признаков.
В отчёте дельта нужна как независимая проверка: если ML-модели и дельта
показывают сходную картину, вывод надёжнее.
### 9.11. Сравнение классификаторов
| Модель | Тип | Вероятности | Работа с разреженными признаками | Веса классов | Интерпретируемость |
|---|---|---|---|---|---|
| Dummy | базовая модель | да | не использует | нет | тривиальная |
| MultinomialNB | вероятностная | да | хорошо | нет | средняя |
| LogisticRegression | линейная | да | хорошо | да | высокая |
| LinearSVC | линейная | нет | хорошо | да | средняя |
| RandomForest | ансамбль деревьев | да | удовлетворительно | да | средняя |
| ExtraTrees | ансамбль деревьев | да | удовлетворительно | да | средняя |
| kNN | локальная | да | удовлетворительно | нет | низкая |
| Delta | метрическая | нет/условно | хорошо | нет | высокая |
---
## 10. Схема валидации
### 10.1. Обучение и тест
Модель настраивается на обучающей выборке и проверяется на тестовой. Нельзя
оценивать модель на тех же объектах, на которых она обучалась: она может
запомнить их и показать завышенное качество (переобучение).
### 10.2. Перекрёстная проверка
При перекрёстной проверке (cross-validation) выборка делится на \(k\)
блоков. Модель обучается на \(k-1\) блоках и проверяется на оставшемся;
процедура повторяется \(k\) раз. Итог — среднее и разброс метрик.
### 10.3. Стратификация
При стратификации сохраняется доля классов в каждом блоке. Это важно при
дисбалансе: иначе редкий класс может вообще не попасть в тестовый блок.
В нашей задаче 5 блоков и минимум 15 реплик на класс дают около 3 тестовых
реплик на класс.
### 10.4. Повторность
Одного разбиения недостаточно: результат зависит от случайного деления.
Повторная перекрёстная проверка (repeated cross-validation) выполняет
несколько разбиений с разными seed и даёт более устойчивую оценку.
### 10.5. Вложенная перекрёстная проверка
Гиперпараметры нельзя настраивать на тестовых блоках. Вложенная схема:
- внешние блоки — оценка качества;
- внутренние блоки — настройка гиперпараметров.
Такой протокол дороже, но честнее.
### 10.6. Утечка данных
Утечка (data leakage) — ситуация, когда информация из тестовой выборки
попадает в обучение. Типичные причины:
- TF-IDF или SVD обучены на всём корпусе до кросс-валидации;
- отбор признаков выполнен по всей выборке;
- масштабирование выполнено до разделения;
- почти одинаковые тексты есть и в обучении, и в тесте.
В нашем конвейере все обучаемые преобразования находятся внутри `Pipeline` и
настраиваются только на обучающих блоках. Ручные признаки и POS-теги не
используют метки, поэтому их можно считать заранее.
### 10.7. Дисбаланс
Основные способы:
- веса классов (`class_weight="balanced"`);
- macro-F1 и сбалансированную долю правильных ответов;
- отчёт по классам;
- стратификация.
Не используйте SMOTE и другие методы синтеза текста без крайней
необходимости: они могут создать искусственные комбинации слов и исказить
стилометрический сигнал.
---
## 11. Как объяснять результаты на защите
1. **Сначала постановка.** 2005 реплик, 34 персонажа, один автор; задача —
различить речевые маски, а не авторов.
2. **Затем данные и ограничения.** Короткие реплики, дисбаланс, ручная
фильтрация, отсутствие сцен.
3. **Затем признаки.** Функциональные слова, POS, символьные n-граммы, LSA;
почему именно они.
4. **Затем валидация.** 5-блочная стратифицированная перекрёстная проверка,
повторность, вложенная настройка, контроль утечек.
5. **Затем метрики.** Macro-F1 как основная; доля правильных ответов как дополнительная;
top-3/top-5; F-мера по классам; матрица ошибок.
6. **Затем результаты.** Сравнение с базовой моделью, доверительные интервалы,
статистические тесты.
7. **Затем интерпретация.** Какие персонажи различаются, какие
перепутываются, что это говорит о речевых масках.
8. **Затем ограничения и улучшения.** Больше данных, агрегация реплик,
тематический контроль, более точный частеречный теггер, сцены.
### 11.1. Пример корректной формулировки
> «На 2005 репликах и 34 классах модель логистической регрессии по
> объединённому набору стилометрических признаков, символьных и частеречных
> n-грамм достигает macro-F1 0,18 при 5-блочной стратифицированной
> перекрёстной проверке. Случайный уровень для 34 классов
> составляет 0,029; top-3 равен 0,34 при случайном уровне 0,088. Это
> указывает на статистически различимый, но не абсолютный сигнал. Основной
> вклад дают символьные и частеречные n-граммы; LSA по всем словам может
> частично отражать тему, поэтому мы сравниваем её с LSA по POS и
> функциональным словам».
### 11.2. Чего избегать
- «Доля правильных ответов 10%, значит модель плохая» — без сравнения с
базовой моделью и macro-F1 это не вывод.
- «Модель различает авторов» — автор один; различаются персонажи.
- «LSA выявил стиль» — LSA может выявить тему; нужен контроль.
- «p < 0,05, значит различие важное» — нужен размер эффекта и интервал.
- «Кластеризация доказала группы» — кластеризация носит предварительный характер.
---
## 12. Краткая версия для слайдов
### 12.1. Метрики
| Метрика | Формулировка для слайда | Ориентир |
|---|---|---|
| Macro-F1 | Средняя F-мера по 34 классам; все персонажи важны одинаково | Случайно около 0,029 |
| Сбалансированная доля правильных ответов | Средняя полнота по классам; показывает, находит ли модель редких персонажей | Случайно около 0,029 |
| Доля правильных ответов | Доля совпавших предсказаний; при дисбалансе может вводить в заблуждение | Случайно около 0,029 |
| MCC | Корреляция истинных и предсказанных меток от -1 до 1; устойчив к дисбалансу | 0 — случайно |
| Каппа Коэна | Согласие с поправкой на случайное угадывание | 0 — случайно |
| Top-3 | Истинный персонаж попал в тройку лучших ответов модели | Случайно около 0,088 |
| Логарифмическая потеря | Качество вероятностей; штраф за уверенную ошибку | Случайно около 3,53 |
| Оценка Брайера | Квадратичная ошибка вероятностей | Случайно около 0,971 |
| ROC-AUC | Для верификации «свой/чужой»: качество ранжирования без выбора порога | 0,5 — случайно |
| EER | Порог, где доля ложных принятий равна доле ложных отклонений | Чем меньше, тем лучше |
| Бутстрэп-интервал | Диапазон, в котором с вероятностью 95% лежит метрика | Уже — устойчивее |
| Мак-Немар | Парный тест: различаются ли две модели на одних и тех же репликах | p < 0,05 — есть различие |
### 12.2. Классификаторы
| Модель | Формулировка для слайда | Сильная сторона | Ограничение |
|---|---|---|---|
| Dummy | Нижняя граница: всегда предсказывает частый класс | Простота | Не использует признаки |
| MultinomialNB | Быстрый вероятностный baseline для частотных признаков | Скорость, устойчивость | Независимость признаков, дисбаланс |
| LogisticRegression | Линейная модель с вероятностями и интерпретируемыми коэффициентами | Стабильность, интерпретируемость | Только линейные границы |
| LinearSVC | Линейная модель с максимальным зазором | Сильна на текстовых признаках | Нет калиброванных вероятностей |
| RandomForest | Ансамбль деревьев, ловит нелинейные взаимодействия | Нелинейность, importance | Переобучение на малой выборке |
| kNN | Локальная модель по близости объектов | Простая идея | Проклятие размерности |
| Delta | Классическое расстояние до центроида по частотным словам | Независимый стилометрический baseline | Шум на коротких репликах |
### 12.3. Одна фраза для вывода
> «Качество оценивалось по macro-F1 с 95% бутстрэп-интервалом; модели
> сравнивались точным критерием Мак-Немара, а не только по доле правильных
> ответов. Устойчивость вывода проверяется сравнением нескольких
> классификаторов: если разные модели дают близкие значения macro-F1 и top-3,
> результат не является артефактом одного алгоритма».
---
## 13. Глоссарий
| Русский термин | Английский термин | Краткое значение |
|---|---|---|
| Признак | feature | Измеримая характеристика объекта |
| Класс | class | Один из вариантов ответа (персонаж) |
| Обучающая выборка | training set | Объекты, на которых модель учится |
| Тестовая выборка | test set | Объекты, на которых измеряется качество |
| Перекрёстная проверка | cross-validation | Многократное деление на обучение и тест |
| Блок | fold | Одна часть при перекрёстной проверке |
| Стратификация | stratification | Сохранение долей классов в блоках |
| Гиперпараметр | hyperparameter | Параметр модели, задаваемый до обучения |
| Переобучение | overfitting | Запоминание обучающих данных вместо обобщения |
| Утечка данных | data leakage | Информация из теста попадает в обучение |
| Матрица ошибок | confusion matrix | Таблица истинных и предсказанных классов |
| Точность | precision | Доля правильных среди предсказанных классом |
| Полнота | recall | Доля найденных среди истинных класса |
| F-мера | F1 score | Гармоническое среднее точности и полноты |
| Macro-F1 | macro F1 | Среднее F1 по классам с равным весом |
| Доля правильных ответов | accuracy | Доля совпавших предсказаний |
| Сбалансированная доля | balanced accuracy | Средняя полнота по классам |
| MCC | Matthews correlation coefficient | Корреляция истинных и предсказанных меток |
| Каппа Коэна | Cohen's kappa | Согласие с поправкой на случай |
| Top-k | top-k accuracy | Попал ли истинный класс в k лучших |
| Логарифмическая потеря | log loss | Качество вероятностей |
| Оценка Брайера | Brier score | Квадратичная ошибка вероятностей |
| ROC-AUC | ROC AUC | Площадь под ROC-кривой |
| EER | equal error rate | Точка равенства FPR и FNR |
| Бутстрэп | bootstrap | Выборка с возвращением для интервалов |
| Мак-Немар | McNemar test | Парный тест двух моделей |
| Уилкоксон | Wilcoxon test | Парный непараметрический тест |
| Фридман | Friedman test | Сравнение нескольких моделей |
| LSA | latent semantic analysis | TF-IDF + сингулярное разложение |
| TF-IDF | term frequency — inverse document frequency | Взвешивание слов |
| SVD | singular value decomposition | Сингулярное разложение |
| ARI | adjusted Rand index | Согласие кластеризации с классами |
| NMI | normalized mutual information | Взаимная информация кластеризации и классов |
| Силуэт | silhouette | Качество кластерной структуры |
| Наивный Байес | naive Bayes | Вероятностная модель с независимостью признаков |
| Логистическая регрессия | logistic regression | Линейная вероятностная модель |
| Метод опорных векторов | support vector machine | Линейная модель с максимизацией зазора |
| Случайный лес | random forest | Ансамбль решающих деревьев |
| kNN | k-nearest neighbours | Классификация по ближайшим объектам |
| Дельта Барроуза | Burrows' Delta | Метрика расстояния в стилометрии |