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