895 lines
54 KiB
Markdown
895 lines
54 KiB
Markdown
# Метрики и классификаторы: методическое описание
|
||
|
||
Документ предназначен для отчёта и презентации. Он объясняет, что показывает
|
||
каждая метрика, как она вычисляется, как интерпретировать значения и чем
|
||
отличаются классификаторы. Аудитория может не знать деталей машинного
|
||
обучения, но предполагается, что базовые понятия выборки, признака и класса
|
||
знакомы.
|
||
|
||
Обозначения:
|
||
|
||
- \(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 | Метрика расстояния в стилометрии |
|