Обсуждение участника:Imil Baltaniazov

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
+
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
-
'''Нормализация и стандартизация признаков''' — группа методов [[Предобработка данных|предобработки данных]], предназначенных для приведения числовых [[Признак|признаков]] к сопоставимому масштабу. Эти преобразования не изменяют форму распределения признака по существу (за исключением специальных методов, таких как [[Преобразование Бокса-Кокса|преобразование Бокса—Кокса]]), а лишь линейно или монотонно переносят значения в новый диапазон или к новым статистическим характеристикам.
+
'''Метрики качества в машинном обучении''' — совокупность количественных показателей, позволяющих оценить эффективность работы модели и сравнить между собой различные алгоритмы. Выбор метрики определяет цель оптимизации и непосредственно влияет на поведение обученной модели в реальных условиях эксплуатации.
== Введение ==
== Введение ==
-
Многие алгоритмы [[Машинное обучение|машинного обучения]] чувствительны к масштабу входных признаков. Если один признак измеряется в единицах порядка десятков тысяч, а другой — в единицах порядка нескольких единиц, алгоритмы, основанные на вычислении расстояний, скалярных произведений или градиентной оптимизации, начинают неявно придавать больший вес признаку с большим числовым разбросом — вне зависимости от его реальной информативности. Это приводит к смещённым, плохо интерпретируемым и медленно обучающимся моделям.
+
'''Метрика качества''' (англ. evaluation metric) — это функция, отображающая предсказания модели и истинные значения целевой переменной в числовую оценку, характеризующую степень соответствия модели решаемой задаче. В отличие от [[функция потерь|функции потерь]], используемой на этапе обучения и обязанной быть дифференцируемой, метрика качества может быть произвольной вычислимой функцией, что позволяет точнее отражать бизнес-требования или клинические стандарты.
-
Нормализация и стандартизация решают эту проблему, приводя признаки к единой шкале до подачи в модель. Несмотря на то, что оба термина в бытовом употреблении нередко смешиваются, в строгом смысле они обозначают разные преобразования: нормализация переносит значения в фиксированный диапазон (чаще всего <tex>[0,1]</tex>), а стандартизация центрирует признак и приводит его дисперсию к единице. Выбор конкретного метода зависит от природы данных, наличия выбросов и используемого алгоритма.
+
Корректный выбор метрики критически важен по двум причинам. Во-первых, метрика служит ориентиром при [[валидация модели|валидации]] и отборе моделей: модель, оптимальная по одной метрике, может оказаться неприемлемой по другой. Во-вторых, в условиях [[дисбаланс классов|дисбаланса классов]] или асимметричной цены ошибок традиционные метрики вроде [[Accuracy|доли правильных ответов]] дают чрезмерно оптимистичную картину, маскируя неспособность модели распознавать миноритарный класс.
-
== Постановка задачи ==
+
== Матрица ошибок ==
-
Рассмотрим датасет с двумя признаками: возраст клиента (лет) и годовой доход (в рублях).
+
'''[[Матрица ошибок]]''' (англ. confusion matrix) для задачи [[бинарная классификация|бинарной классификации]] представляет собой таблицу размером 2×2, строки которой соответствуют истинным классам, а столбцы — предсказанным. Приняты следующие обозначения:
-
{| class="wikitable"
+
{| class="wikitable" style="text-align:center;"
 +
|+ Матрица ошибок бинарного классификатора
|-
|-
-
! Клиент !! Возраст, лет !! Доход, руб./год
+
! colspan="2" rowspan="2" |
 +
! colspan="2" | Предсказанный класс
|-
|-
-
| 1 || 25 || 450 000
+
! Положительный (P)
 +
! Отрицательный (N)
|-
|-
-
| 2 || 40 || 1 200 000
+
! rowspan="2" | Истинный класс
 +
! Положительный (P)
 +
| style="background:#d4edda;" | TP<br>(True Positive)
 +
| style="background:#f8d7da;" | FN<br>(False Negative)
|-
|-
-
| 3 || 60 || 3 000 000
+
! Отрицательный (N)
 +
| style="background:#f8d7da;" | FP<br>(False Positive)
 +
| style="background:#d4edda;" | TN<br>(True Negative)
|}
|}
-
Возраст изменяется в диапазоне примерно 25–60 (разброс порядка десятков), доход — в диапазоне 450 000–3 000 000 (разброс порядка миллионов). Если такие данные подать, например, в [[Метод k ближайших соседей|метод k ближайших соседей]], евклидово расстояние между объектами будет практически полностью определяться разницей в доходе — вклад возраста окажется пренебрежимо мал, хотя с содержательной точки зрения оба признака могут быть одинаково важны. Аналогичная проблема возникает при обучении [[Линейная регрессия|линейных моделей]] градиентными методами: поверхность функции потерь становится сильно вытянутой вдоль направления признака с малым масштабом, что замедляет сходимость [[Градиентный спуск|градиентного спуска]].
+
Здесь:
-
== Нормализация (min-max scaling) ==
+
* <tex>\text{TP}</tex> (True Positive) — число верно предсказанных положительных объектов;
 +
* <tex>\text{TN}</tex> (True Negative) — число верно предсказанных отрицательных объектов;
 +
* <tex>\text{FP}</tex> (False Positive) — число ошибочно предсказанных положительных объектов ([[ошибка I рода]]);
 +
* <tex>\text{FN}</tex> (False Negative) — число ошибочно предсказанных отрицательных объектов ([[ошибка II рода]]).
-
'''Нормализация''' (min-max scaling) линейно переносит значения признака в заданный диапазон, обычно <tex>[0,1]</tex>. Для признака <tex>x</tex> преобразование задаётся формулой:
+
Сумма всех элементов равна общему числу наблюдений: <tex>N = \text{TP} + \text{TN} + \text{FP} + \text{FN}</tex>.
-
:: <tex>x' = \frac{x - x_{min}}{x_{max} - x_{min}}</tex>
+
== Метрики для бинарной классификации ==
-
где <tex>x_{min}</tex> и <tex>x_{max}</tex> — минимальное и максимальное значения признака на обучающей выборке. Для приведения к произвольному диапазону <tex>[a, b]</tex> используется обобщённая формула:
+
На основе матрицы ошибок вычисляются производные показатели, каждый из которых отражает определённый аспект качества классификации.
-
:: <tex>x' = a + \frac{(x - x_{min})(b - a)}{x_{max} - x_{min}}</tex>
+
=== Accuracy (доля правильных ответов) ===
-
'''Числовой пример.''' Возьмём признак «возраст» из таблицы выше: значения 25, 40, 60. Тогда <tex>x_{min}=25</tex>, <tex>x_{max}=60</tex>:
+
:: <tex>\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}}</tex>
-
* для 25: <tex>x' = (25-25)/(60-25) = 0{,}00</tex>
+
'''[[Accuracy]]''' показывает общую долю верных предсказаний. Метрика интуитивно понятна, но непригодна при сильном дисбалансе классов. Если отрицательный класс составляет 99% выборки, константный классификатор, всегда предсказывающий отрицательный класс, достигнет Accuracy = 0.99, будучи абсолютно бесполезным для детекции положительного класса.
-
* для 40: <tex>x' = (40-25)/(60-25) = 0{,}43</tex>
+
-
* для 60: <tex>x' = (60-25)/(60-25) = 1{,}00</tex>
+
-
'''Когда применять.''' Min-max scaling полезен, когда требуется строго ограниченный диапазон значений — например, для входов [[Нейронная сеть|нейронных сетей]] с сигмоидными или tanh-активациями, для алгоритмов обработки изображений (пиксели естественно ограничены), а также когда распределение признака заведомо не является нормальным и не имеет тяжёлых выбросов.
+
=== Precision (точность) ===
-
'''Чувствительность к выбросам.''' Основной недостаток метода — сильная зависимость от экстремальных значений <tex>x_{min}</tex> и <tex>x_{max}</tex
+
:: <tex>\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}</tex>
-
>. Единственный аномальный объект способен «сжать» основную массу данных в узкий поддиапазон. Например, если среди клиентов появится доход в 50 000 000 руб., все остальные значения дохода после нормализации окажутся сосредоточены вблизи нуля, потеряв различимость.
+
-
В библиотеке scikit-learn метод реализован классом <code>MinMaxScaler</code>.
+
'''[[Точность и полнота|Precision]]''' измеряет долю истинно положительных объектов среди всех, кого модель отнесла к положительному классу. Высокая точность означает, что модель редко ошибается, называя объект положительным. Метрика критична в задачах, где цена ложноположительного срабатывания велика — например, при фильтрации спама, когда ложное отнесение легитимного письма к спаму нежелательно.
-
== Стандартизация (z-score) ==
+
=== Recall (полнота) ===
-
'''Стандартизация''' (standardization, z-score normalization) центрирует признак относительно среднего и масштабирует его так, чтобы [[Дисперсия случайной величины|дисперсия]] стала равна единице. Формула преобразования:
+
:: <tex>\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}</tex>
-
:: <tex>x' = \frac{x - \mu}{\sigma}</tex>
+
'''[[Точность и полнота|Recall]]''' (также называемый '''Sensitivity''' или '''True Positive Rate''') показывает, какую долю истинно положительных объектов модель сумела обнаружить. Метрика приоритетна в задачах, где пропуск положительного объекта недопустим — например, в [[медицинская диагностика|скрининге онкологических заболеваний]], когда ложноотрицательный диагноз стоит жизни.
-
где <tex>\mu</tex> — выборочное среднее признака, <tex>\sigma</tex> — выборочное [[Среднеквадратичное отклонение|стандартное отклонение]]:
+
=== Specificity (специфичность) ===
-
:: <tex>\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}</tex>
+
:: <tex>\text{Specificity} = \frac{\text{TN}}{\text{TN} + \text{FP}}</tex>
-
После преобразования признак имеет нулевое среднее и единичную дисперсию: <tex>E[x']=0</tex>, <tex>Var(x')=1</tex>. Полученные значения называют '''z-оценками''' (z-scores) — они показывают, на сколько стандартных отклонений конкретное наблюдение отстоит от среднего.
+
'''[[Specificity]]''' (True Negative Rate) — доля верно распознанных отрицательных объектов. Совместно с Recall образует пару, характеризующую способность модели разделять классы. В медицинской диагностике Specificity показывает, насколько хорошо тест исключает заболевание у здоровых пациентов.
-
'''Числовой пример.''' Для того же признака «возраст» (25, 40, 60): <tex>\mu = 41{,}67</tex>, <tex>\sigma \approx 14{,}36</tex>. Тогда:
+
=== F1-мера ===
-
* для 25: <tex>x' = (25-41{,}67)/14{,}36 \approx -1{,}16</tex>
+
:: <tex>F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}</tex>
-
* для 40: <tex>x' = (40-41{,}67)/14{,}36 \approx -0{,}12</tex>
+
-
* для 60: <tex>x' = (60-41{,}67)/14{,}36 \approx 1{,}28</tex>
+
-
'''Когда применять.''' Стандартизация — наиболее универсальный выбор для большинства алгоритмов, использующих градиентную оптимизацию ([[Логистическая регрессия|логистической регрессии]], [[Метод опорных векторов|SVM]], нейронных сетей), а также для методов, опирающихся на предположения о нормальном распределении данных или на разложение [[Ковариационная матрица|ковариационной матрицы]], в первую очередь для [[Метод главных компонент|метода главных компонент]] (PCA). В отличие от min-max scaling, стандартизация не привязана к жёсткому диапазону, поэтому она устойчивее к добавлению новых наблюдений и мягче реагирует на умеренные выбросы, хотя среднее и стандартное отклонение сами по себе также чувствительны к экстремальным значениям.
+
'''[[F-мера|F1-мера]]''' — гармоническое среднее Precision и Recall. В отличие от арифметического, гармоническое среднее сильнее штрафует дисбаланс составляющих: если одна из метрик близка к нулю, F1 также будет близка к нулю. Это делает F1 удобной агрегированной метрикой, когда важен баланс между точностью и полнотой. Обобщением служит <tex>F_\beta</tex>-мера:
-
Важно подчеркнуть: стандартизация не делает распределение признака нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму распределения (асимметрию, эксцесс).
+
:: <tex>F_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}</tex>
-
В scikit-learn метод реализован классом <code>StandardScaler</code>.
+
Параметр <tex>\beta > 1</tex> увеличивает вес Recall, <tex>\beta < 1</tex> — вес Precision.
-
== Робастное масштабирование ==
+
=== Сводная таблица метрик ===
-
'''Робастное масштабирование''' (robust scaling) — метод, использующий устойчивые к выбросам статистики: [[Медиана|медиану]] и [[Интерквартильный размах|межквартильный размах]] (IQR) вместо среднего и стандартного отклонения. Формула:
+
{| class="wikitable"
 +
|+ Основные метрики бинарной классификации
 +
|-
 +
! Метрика
 +
! Формула
 +
! Когда использовать
 +
|-
 +
| Accuracy
 +
| <tex>\frac{\text{TP} + \text{TN}}{N}</tex>
 +
| Сбалансированные классы, равнозначные ошибки
 +
|-
 +
| Precision
 +
| <tex>\frac{\text{TP}}{\text{TP} + \text{FP}}</tex>
 +
| Высокая цена ложных срабатываний
 +
|-
 +
| Recall
 +
| <tex>\frac{\text{TP}}{\text{TP} + \text{FN}}</tex>
 +
| Высокая цена пропуска цели
 +
|-
 +
| Specificity
 +
| <tex>\frac{\text{TN}}{\text{TN} + \text{FP}}</tex>
 +
| Дополнение к Recall, анализ обеих ошибок
 +
|-
 +
| F1
 +
| <tex>2 \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}</tex>
 +
| Компромисс между Precision и Recall
 +
|}
-
:: <tex>x' = \frac{x - Q_2}{Q_3 - Q_1}</tex>
+
== Компромисс Precision/Recall ==
-
где <tex>Q_2</tex> медиана (второй квартиль), <tex>Q_1</tex> и <tex>Q_3</tex> — первый и третий квартили, а разность <tex>Q_3 - Q_1 = IQR</tex> — межквартильный размах, охватывающий центральные 50% наблюдений.
+
Precision и Recall связаны обратной зависимостью: увеличение одной метрики часто ведёт к снижению другой. Фундаментальная причина [[классификационный порог]]: понижая порог, модель относит к положительному классу больше объектов, что увеличивает Recall (находим больше истинно положительных), но одновременно снижает Precision (растёт число ложных срабатываний). Повышение порога даёт обратный эффект.
-
'''Устойчивость к выбросам.''' Поскольку медиана и квартили являются робастными статистиками — их значение определяется порядком наблюдений, а не их абсолютной величиной, — единичные аномальные значения практически не влияют на результат преобразования. Это ключевое отличие от min-max scaling и стандартизации, где выброс напрямую входит в вычисление масштабирующих параметров (<tex>x_{max}</tex>, <tex>\mu</tex>, <tex>\sigma</tex>).
+
Рассмотрим задачу детекции мошеннических транзакций. Если банк установит низкий порог и будет блокировать любые подозрительные операции, Recall окажется высоким (почти все мошеннические транзакции заблокированы), но Precision низким (множество легитимных операций ложно помечены как мошеннические, что вызывает недовольство клиентов). Если же банк повысит порог, Precision возрастёт, но часть мошеннических операций пройдёт незамеченной (Recall снизится). Выбор рабочей точки на кривой Precision-Recall определяется бизнес-ограничениями и относительной стоимостью ошибок FP и FN.
-
'''Пример влияния выброса.''' Пусть к выборке дохода (450 000, 1 200 000, 3 000 000) добавлено аномальное значение 50 000 000. При min-max scaling три «нормальных» наблюдения сожмутся в диапазон около 0–0,05. При робастном масштабировании медиана и IQR практически не изменятся, и относительное положение исходных наблюдений останется информативным.
+
== ROC-кривая и AUC-ROC ==
-
Метод рекомендуется использовать при работе с данными, содержащими выбросы, которые нежелательно удалять (например, в финансовых или медицинских данных, где экстремальные значения могут быть содержа
+
'''[[ROC-кривая]]''' (Receiver Operating Characteristic) строится в координатах True Positive Rate (Recall) против False Positive Rate:
-
тельно важны).
+
-
В scikit-learn метод реализован классом <code>RobustScaler</code>.
+
:: <tex>\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}, \quad \text{FPR} = \frac{\text{FP}}{\text{TN} + \text{FP}}</tex>
-
== Другие методы масштабирования ==
+
Каждая точка кривой соответствует определённому [[классификационный порог|порогу классификации]]. При варьировании порога от 0 до 1 точка (FPR, TPR) перемещается от (1,1) до (0,0). Идеальный классификатор проходит через точку (0,1). Диагональ <tex>\text{TPR} = \text{FPR}</tex> соответствует случайному гаданию.
-
* '''MaxAbsScaler''' — делит значения признака на максимум по модулю: <tex>x' = x / \max(|x|)</tex>. Результат лежит в диапазоне <tex>[-1, 1]</tex>, при этом сохраняется знак и разреженность данных (нулевые значения остаются нулевыми), поэтому метод удобен для разреженных матриц.
+
'''AUC-ROC''' (Area Under the ROC Curve) — площадь под ROC-кривой, принимающая значения от 0 до 1. Значение 0.5 означает бесполезный классификатор, 1.0 — идеальное разделение классов. AUC-ROC обладает вероятностной интерпретацией: это вероятность того, что случайно выбранный положительный объект получит от модели более высокую оценку принадлежности к положительному классу, чем случайно выбранный отрицательный.
-
* '''PowerTransformer''' семейство степенных преобразований (Бокса—Кокса и Йео—Джонсона), приближающих распределение признака к нормальному. Преобразование Бокса—Кокса применимо только к строго положительным значениям:
+
Достоинство AUC-ROC независимость от порога и априорных вероятностей классов. Недостаток — нечувствительность к калибровке вероятностей и маскировка проблем при сильном дисбалансе, когда большая площадь достигается за счёт корректного ранжирования отрицательных примеров, а положительные тонут в массе FP.
-
:: <tex>x^{(\lambda)} = \begin{cases} \dfrac{x^\lambda - 1}{\lambda}, & \lambda \neq 0 \\ \ln(x), & \lambda = 0 \end{cases}</tex>
+
== PR-кривая и AUC-PR ==
-
Преобразование Йео—Джонсона обобщает эту формулу на случай отрицательных и нулевых значений. Параметр <tex>\lambda</tex> подбирается по максимуму правдоподобия. Метод полезен для сильно скошенных распределений (доход, цены, время ожидания), после которых применение стандартизации даёт более симметричные признаки.
+
'''PR-кривая''' (Precision-Recall curve) строится в координатах Precision против Recall. В отличие от ROC, PR-кривая не учитывает TN, что делает её чувствительной исключительно к качеству предсказаний положительного класса.
-
* '''QuantileTransformer''' — непараметрическое преобразование, отображающее эмпирическую функцию распределения признака на равномерное или нормальное распределение. Метод наиболее устойчив к выбросам среди перечисленных, поскольку явно «сжимает» хвосты распределения, но является нелинейным и может исказить взаимные расстояния между близкими наблюдениями.
+
'''AUC-PR''' — площадь под PR-кривой. В условиях сильного дисбаланса (доля положительного класса < 5%) PR-кривая даёт более информативную картину, чем ROC. Причина в том, что FPR в знаменателе ROC-кривой доминируется огромным количеством TN, из-за чего даже значительный абсолютный рост FP слабо меняет FPR. Precision же непосредственно реагирует на каждый ложноположительный объект.
-
 
+
-
== Влияние на алгоритмы машинного обучения ==
+
-
 
+
-
Чувствительность алгоритмов к масштабу признаков определяется тем, используют ли они расстояния, скалярные произведения или величину коэффициентов в функции потерь.
+
{| class="wikitable"
{| class="wikitable"
 +
|+ Сравнение ROC и PR кривых
|-
|-
-
! Алгоритм !! Чувствительность к масштабу !! Обоснование
+
! Характеристика
 +
! ROC
 +
! PR
|-
|-
-
| [[Линейная регрессия]], [[Логистическая регрессия]] || Высокая || Градиентная оптимизация и регуляризация зависят от масштаба коэффициентов
+
| Оси
 +
| TPR vs FPR
 +
| Precision vs Recall
|-
|-
-
| [[Метод опорных векторов|SVM]] || Высокая || Оптимизация зазора и ядровые функции зависят от геометрии пространства признаков
+
| Учёт TN
 +
| Да (через FPR)
 +
| Нет
|-
|-
-
| [[Метод k ближайших соседей|KNN]] || Высокая || Классификация напрямую основана на евклидовом (или ином) расстоянии
+
| Чувствительность к дисбалансу
 +
| Занижена
 +
| Высокая
|-
|-
-
| [[Метод главных компонент|PCA]] || Высокая || Направления максимальной дисперсии определяются масштабом признаков
+
| Рекомендуемое применение
-
|-
+
| Сбалансированные классы
-
| [[Нейронные сети|Нейронные сети]] || Высокая || Влияет на скорость и устойчивость сходимости градиентного спуска
+
| Дисбаланс классов, фокус на положительном классе
-
|-
+
-
| [[K-means|Метод k-средних]] || Высокая || Кластеризация основана на расстояниях между объектами
+
-
|-
+
-
| [[Дерево решений|Деревья решений]] || Низкая || Разбиения строятся по пороговым значениям отдельного признака, монотонные преобразования не меняют порядок
+
-
|-
+
-
| [[Случайный лес]] || Низкая || Ансамбль деревьев, наследует их нечувствительность к масштабу
+
-
|-
+
-
| [[Градиентный бустинг]] || Низкая || Базовые модели — деревья решений, разбиения не зависят от абсолютного масштаба
+
-
|-
+
-
| [[Наивный байесовский классификатор]] || Низкая || Оценивает распределения по каждому признаку независимо
+
|}
|}
-
Таким образом, масштабирование признаков критично для всех методов, работающих с расстояниями, скалярными произведениями или градиентной оптимизацией, и практически не влияет на модели, основанные на древовидных разбиениях.
+
== Многоклассовые обобщения ==
-
== Влияние на регуляризацию ==
+
Для задач [[многоклассовая классификация|многоклассовой классификации]] метрики Precision, Recall и F1 обобщаются путём усреднения по классам.
-
[[Регуляризация|Регуляризация]] штрафует величину коэффициентов модели, добавляя к функции потерь L1- или L2-норму вектора весов:
+
Пусть <tex>C</tex> — множество классов, <tex>P_c, R_c, F1_c</tex> — точность, полнота и F1-мера для класса <tex>c</tex>, вычисленные по схеме «один против всех» (класс <tex>c</tex> считается положительным, остальные — отрицательным), <tex>N_c</tex> — число истинных примеров класса <tex>c</tex>.
-
:: <tex>L1: \; \lambda \sum_{j=1}^{p} |w_j|, \qquad L2: \; \lambda \sum_{j=1}^{p} w_j^2</tex>
+
'''Micro-усреднение''' агрегирует элементы матрицы ошибок по всем классам перед вычислением метрики:
-
Штраф применяется одинаково ко всем коэффициентам <tex>w_j</tex>, независимо от того, какому признаку они соответствуют. Если признаки измеряются в разных масштабах, коэффициенты, соответствующие признакам с малым разбросом значений, вынуждены принимать большие абсолютные значения, чтобы вносить сопоставимый вклад в предсказание, — и именно эти коэффициенты регуляризация штрафует сильнее всего, хотя содержательно признак может быть не менее важен, чем остальные.
+
:: <tex>P_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FP}_c)}, \quad R_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FN}_c)}</tex>
-
В результате без предварительной стандартизации регуляризация штрафует признаки не по их информ
+
Micro-усреднение даёт больший вес классам с большим числом примеров. В пределе micro-averaged Accuracy, Precision и Recall численно совпадают.
-
ативности, а по их исходному масштабу, что искажает как качество модели, так и интерпретацию значимости коэффициентов. По этой причине стандартизация признаков — обязательный шаг перед применением [[Гребневая регрессия|Ridge]] (L2), [[Лассо|Lasso]] (L1) и [[Эластичная сеть|Elastic Net]] регрессии.
+
-
== Сравнение методов ==
+
'''Macro-усреднение''' вычисляет метрику независимо для каждого класса, затем берёт арифметическое среднее:
 +
 
 +
:: <tex>P_{\text{macro}} = \frac{1}{|C|} \sum_{c} P_c, \quad R_{\text{macro}} = \frac{1}{|C|} \sum_{c} R_c</tex>
 +
 
 +
Macro-усреднение придаёт равный вес всем классам, что делает его чувствительным к качеству классификации миноритарных классов, но и уязвимым к выбросам в классах с малым числом примеров.
 +
 
 +
'''Weighted-усреднение''' берёт средневзвешенное по числу истинных примеров класса:
 +
 
 +
:: <tex>P_{\text{weighted}} = \frac{\sum_{c} N_c \cdot P_c}{\sum_{c} N_c}, \quad R_{\text{weighted}} = \frac{\sum_{c} N_c \cdot R_c}{\sum_{c} N_c}</tex>
 +
 
 +
Weighted-усреднение занимает промежуточную позицию: учитывает размер классов, но чувствительнее к миноритарным классам, чем micro-усреднение.
 +
 
 +
== Метрики для регрессии ==
 +
 
 +
В задачах [[регрессионный анализ|регрессии]], где целевая переменная непрерывна, используются метрики, основанные на отклонениях предсказаний <tex>\hat{y}_i</tex> от истинных значений <tex>y_i</tex>.
{| class="wikitable"
{| class="wikitable"
 +
|+ Основные метрики регрессии
|-
|-
-
! Метод !! Формула !! Диапазон результата !! Устойчивость к выбросам !! Типичное применение
+
! Метрика
 +
! Формула
 +
! Особенности
|-
|-
-
| Min-max scaling || <tex>(x-x_{min})/(x_{max}-x_{min})</tex> || <tex>[0,1]</tex> (фиксированный) || Низкая || Нейросети, изображения, признаки без выбросов
+
| MSE<br>(Mean Squared Error)
 +
| <tex>\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2</tex>
 +
| Сильно штрафует большие ошибки (квадратичная зависимость). Дифференцируема, используется как функция потерь. Чувствительна к выбросам.
|-
|-
-
| Стандартизация (z-score) || <tex>(x-\mu)/\sigma</tex> || не ограничен, <tex>\mu=0,\sigma=1</tex> || Средняя || Линейные модели, SVM, PCA
+
| RMSE<br>(Root Mean Squared Error)
 +
| <tex>\sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}</tex>
 +
| Интерпретируется в единицах целевой переменной. Сохраняет чувствительность к выбросам.
|-
|-
-
| Робастное масштабирование || <tex>(x-Q_2)/(Q_3-Q_1)</tex> || не ограничен || Высокая || Данные с выбросами
+
| MAE<br>(Mean Absolute Error)
 +
| <tex>\frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|</tex>
 +
| Менее чувствительна к выбросам, чем MSE. Даёт линейный штраф. Не дифференцируема в нуле.
|-
|-
-
| MaxAbsScaler || <tex>x/\max(|x|)</tex> || <tex>[-1,1]</tex> || Низкая || Разреженные данные
+
| MAPE<br>(Mean Absolute Percentage Error)
 +
| <tex>\frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right|</tex>
 +
| Выражается в процентах, интуитивно понятна бизнес-пользователям. Неприменима при <tex>y_i = 0</tex>. Асимметрична: штраф за занижение и завышение различен.
|-
|-
-
| PowerTransformer || Бокс—Кокс / Йео—Джонсон || не ограничен, приближается к нормальному || Средняя || Скошенные распределения
+
| <tex>R^2</tex><br>(Коэффициент детерминации)
-
|-
+
| <tex>1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}</tex>
-
| QuantileTransformer || отображение по квантилям || <tex>[0,1]</tex> или нормальное || Высокая || Сильно неоднородные, многомодальные признаки
+
| Показывает долю дисперсии целевой переменной, объяснённой моделью. Значение 1 — идеальное предсказание, 0 — модель не лучше константы (среднего). Может быть отрицательным.
|}
|}
-
Общий недостаток всех перечисленных методов — параметры преобразования (минимум, максимум, среднее, медиана и т. д.) должны вычисляться исключительно на обучающей выборке и затем применяться к валидационной и тестовой выборкам без пересчёта, иначе возникает утечка данных ([[Data Leakage|data leakage]]).
+
Выбор метрики в регрессии диктуется распределением ошибок и бизнес-требованиями. При наличии выбросов предпочтительнее MAE; если большие ошибки критичны — MSE или RMSE. <tex>R^2</tex> удобен для сравнительного анализа моделей на одном наборе данных, но не отражает абсолютную величину ошибки.
-
== Пример: прогнозирование оттока клиентов ==
+
== Метрики для ранжирования ==
-
Рассмотрим упрощённую задачу [[Бинарная классификация|бинарной классификации]] — прогноз оттока клиентов телекоммуникационной компании — с помощью [[Логистическая регрессия|логистической регрессии]]. Используются два признака: количество месяцев обслуживания (tenure) и ежемесячный платёж (monthly charges, руб.).
+
В задачах [[обучение ранжированию|ранжирования]] оценивается качество упорядочивания объектов согласно их релевантности запросу.
-
{| class="wikitable"
+
'''MRR''' (Mean Reciprocal Rank) — среднее обратное значение позиции первого релевантного документа:
-
|-
+
-
! Клиент !! tenure, мес. !! monthly charges, руб. !! Отток
+
-
|-
+
-
| A || 2 || 1 800 || 1
+
-
|-
+
-
| B || 34 || 950 || 0
+
-
|-
+
-
| C || 58 || 2 400 || 0
+
-
|-
+
-
| D || 4 || 3 100 || 1
+
-
|}
+
-
До масштабирования диапазон tenure — [2, 58], диапазон monthly charges — [950, 3100]. При обучении логистической регрессии без предобработки градиентный спуск будет крайне медленно двигаться вдоль оси tenure, а L2-регуляризация станет несоразмерно штрафовать коэффициент при tenure, поскольку для компенсации малого масштаба этот коэффициент должен быть на порядок больше коэффициента при monthly charges.
+
:: <tex>\text{MRR} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{\text{rank}_q}</tex>
-
После стандартизации (<tex>\mu_{tenure}=24{,}5</tex>, <tex>\sigma_{tenure}\approx23{,}0</tex>; <tex>\mu_{charges}=2062{,}5</tex>, <tex>\sigma_{charges}\approx811{,}0</tex>) значения принимают вид:
+
где <tex>\text{rank}_q</tex> — позиция первого релевантного документа для запроса <tex>q</tex>. Метрика проста и интерпретируема, но учитывает только первый релевантный результат.
-
{| class="wikitable"
+
'''MAP''' (Mean Average Precision) — среднее по запросам значение средней точности:
-
|-
+
 
-
! Клиент !! tenure' !! charges'
+
:: <tex>\text{MAP} = \frac{1}{|Q|} \sum_{q \in Q} \frac{\sum_{k=1}^{n_q} P_q(k) \cdot \text{rel}_q(k)}{\text{число релевантных документов для } q}</tex>
-
|-
+
 
-
| A || -0,98 || -0,32
+
где <tex>P_q(k)</tex> — Precision на глубине <tex>k</tex>, <tex>\text{rel}_q(k)</tex> — индикатор релевантности документа на позиции <tex>k</tex>. MAP учитывает все релевантные документы и их позиции.
-
|-
+
 
-
| B || 0,41 || -1,37
+
'''NDCG''' (Normalized Discounted Cumulative Gain) — нормализованный накопленный выигрыш с дисконтированием:
-
|-
+
 
-
| C || 1,46 || 0,42
+
:: <tex>\text{DCG}_q@k = \sum_{i=1}^{k} \frac{2^{\text{rel}_i} - 1}{\log_2(i + 1)}</tex>
-
|-
+
 
-
| D || -0,89 || 1,28
+
:: <tex>\text{NDCG}_q@k = \frac{\text{DCG}_q@k}{\text{IDCG}_q@k}</tex>
-
|}
+
 
 +
где <tex>\text{rel}_i</tex> — оценка релевантности (возможно, многозначная), IDCG — DCG идеального ранжирования. NDCG учитывает как многоградационную релевантность, так и позицию документа, придавая больший вес верхним позициям списка.
 +
 
 +
== Выбор метрики под задачу ==
 +
 
 +
Выбор метрики определяется следующими факторами:
 +
 
 +
# '''Тип задачи.''' Классификация, регрессия или ранжирование задают семейство метрик.
 +
# '''Сбалансированность классов.''' При дисбалансе избегают Accuracy, предпочитая F1, AUC-PR или macro-F1.
 +
# '''Цена ошибок.''' При асимметричной стоимости ошибок ориентируются на Recall (высокая цена FN) или Precision (высокая цена FP).
 +
# '''Требования к интерпретируемости.''' Для коммуникации с заказчиком часто выбирают метрики в абсолютных величинах (RMSE в рублях, Recall в процентах обнаруженных дефектов).
 +
# '''Наличие нескольких классов.''' Выбирают micro- (важна общая эффективность) или macro-усреднение (важен каждый класс).
 +
 
 +
Рекомендуется использовать не единственную метрику, а батарею взаимодополняющих показателей для всесторонней оценки модели.
-
Теперь оба признака имеют сопоставимый масштаб, градиентный спуск сходится быстрее, а величина коэффициентов при регуляризации отражает реальный вклад признака в предсказание, а не его исходную единицу измерения. На практике преобразование выполняется методом <code>fit_transform</code> объекта <code>StandardScaler</code> на обучающей выборке и методом <code>transform</code> — на тестовой:
+
== Пример: медицинская диагностика редкого заболевания ==
-
<pre>
+
Рассмотрим задачу скрининга заболевания с распространённостью 0.1% (один случай на тысячу пациентов). Разрабатывается классификатор, предсказывающий наличие болезни по лабораторным показателям.
-
from sklearn.preprocessing import StandardScaler
+
-
from sklearn.linear_model import LogisticRegression
+
-
scaler = StandardScaler()
+
'''Характеристики задачи:'''
-
X_train_scaled = scaler.fit_transform(X_train)
+
* Сильный дисбаланс классов (1:999).
-
X_test_scaled = scaler.transform(X_test)
+
* Критически высокая цена ложноотрицательного результата: пропуск заболевания может привести к летальному исходу.
 +
* Ложноположительный результат также нежелателен (назначается ненужное дорогостоящее обследование), но его цена ниже.
-
model = LogisticRegression()
+
'''Анализ метрик:'''
-
model.fit(X_train_scaled, y_train)
+
-
</pre>
+
-
== Практические рекомендации ==
+
* '''Accuracy''' неприемлема. Модель, всегда предсказывающая «здоров», имеет Accuracy = 0.999, но не обнаруживает ни одного больного.
 +
* '''Precision''' важна для оценки нагрузки на систему здравоохранения: низкая точность означает, что большинство направленных на доп. обследование окажутся здоровы.
 +
* '''Recall''' — ключевая метрика. Необходимо максимизировать долю обнаруженных больных, возможно, ценой снижения Precision.
 +
* '''F1''' или '''F2-мера''' (с <tex>\beta = 2</tex>) дают сбалансированную оценку с повышенным приоритетом полноты.
 +
* '''ROC-AUC''' может дать завышенно оптимистичную картину из-за доминирования TN. Предпочтительнее использовать '''AUC-PR''', которая непосредственно оценивает способность модели находить редкий положительный класс.
-
* Для алгоритмов, основанных на расстояниях (KNN, k-means, SVM с ядрами), а также для PCA — использовать стандартизацию (<code>StandardScaler</code>) в качестве метода по умолчанию.
+
Рекомендуемый набор метрик для данной задачи: Recall (основная), Precision (контролируемая), AUC-PR (интегральная оценка ранжирования), F2-мера (агрегированная).
-
* Для нейронных сетей и данных с известным ограниченным диапазоном (например, пиксели изображений) — использовать min-max scaling (<code>MinMaxScaler</code>).
+
-
* При наличии выбросов, которые нежелательно удалять из выборки, — использовать роба
+
-
стное масштабирование (<code>RobustScaler</code>).
+
-
* Для сильно скошенных распределений (доходы, цены) перед стандартизацией целесообразно применить <code>PowerTransformer</code>, чтобы приблизить распределение к симметричному.
+
-
* Для разреженных матриц (например, после [[TF-IDF|TF-IDF]] векторизации) — использовать <code>MaxAbsScaler</code>, не нарушающий разреженность.
+
-
* Для древовидных моделей (деревья решений, случайный лес, градиентный бустинг) масштабирование, как правило, не требуется.
+
-
* Параметры масштабирования всегда обучаются только на обучающей выборке и затем применяются к валидационной и тестовой выборкам без повторного вычисления.
+
-
* Перед применением L1- или L2-регуляризации признаки необходимо стандартизировать в обязательном порядке.
+
== См. также ==
== См. также ==
-
* [[Ослабление и усиление шкал признаков]]
+
* [[Матрица ошибок]]
-
* [[Предобработка данных]]
+
* [[Точность и полнота]]
-
* [[Регуляризация]]
+
* [[F-мера]]
-
* [[Логистическая регрессия]]
+
* [[Классификационный порог]]
-
* [[Метод главных компонент]]
+
* [[Дисбаланс классов]]
 +
* [[ROC-кривая]]
== Литература ==
== Литература ==
-
* Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
+
# Powers D. M. W. Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness & Correlation // Journal of Machine Learning Technologies. — 2011. — Vol. 2, no. 1. — P. 37–63.
-
* Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
+
# Davis J., Goadrich M. The Relationship Between Precision-Recall and ROC Curves // Proceedings of the 23rd International Conference on Machine Learning (ICML). — 2006. — P. 233–240.
-
* Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly Media, 2022.
+
# Fawcett T. An Introduction to ROC Analysis // Pattern Recognition Letters. — 2006. — Vol. 27, no. 8. P. 861–874.
-
* Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2. — P. 211—252.
+
# Saito T., Rehmsmeier M. The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets // PLOS ONE. — 2015. — Vol. 10, no. 3. — e0118432.
-
* Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4. — P. 954—959.
+
# Järvelin K., Kekäläinen J. Cumulated Gain-Based Evaluation of IR Techniques // ACM Transactions on Information Systems. — 2002. — Vol. 20, no. 4. — P. 422–446.
-
* Документация scikit-learn: preprocessing [https://scikit-learn.org/stable/modules/preprocessing.html scikit-learn.org/stable/modules/preprocessing.html]
+
# Груздев А. В. Прогнозное моделирование в IBM SPSS Statistics, R и Python. Метод деревьев решений и случайный лес. М.: ДМК Пресс, 2018. — Гл. 4: Оценка качества моделей.

Версия 12:39, 10 июля 2026

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


Метрики качества в машинном обучении — совокупность количественных показателей, позволяющих оценить эффективность работы модели и сравнить между собой различные алгоритмы. Выбор метрики определяет цель оптимизации и непосредственно влияет на поведение обученной модели в реальных условиях эксплуатации.

Содержание

Введение

Метрика качества (англ. evaluation metric) — это функция, отображающая предсказания модели и истинные значения целевой переменной в числовую оценку, характеризующую степень соответствия модели решаемой задаче. В отличие от функции потерь, используемой на этапе обучения и обязанной быть дифференцируемой, метрика качества может быть произвольной вычислимой функцией, что позволяет точнее отражать бизнес-требования или клинические стандарты.

Корректный выбор метрики критически важен по двум причинам. Во-первых, метрика служит ориентиром при валидации и отборе моделей: модель, оптимальная по одной метрике, может оказаться неприемлемой по другой. Во-вторых, в условиях дисбаланса классов или асимметричной цены ошибок традиционные метрики вроде доли правильных ответов дают чрезмерно оптимистичную картину, маскируя неспособность модели распознавать миноритарный класс.

Матрица ошибок

Матрица ошибок (англ. confusion matrix) для задачи бинарной классификации представляет собой таблицу размером 2×2, строки которой соответствуют истинным классам, а столбцы — предсказанным. Приняты следующие обозначения:

Матрица ошибок бинарного классификатора
Предсказанный класс
Положительный (P) Отрицательный (N)
Истинный класс Положительный (P) TP
(True Positive)
FN
(False Negative)
Отрицательный (N) FP
(False Positive)
TN
(True Negative)

Здесь:

  • \text{TP} (True Positive) — число верно предсказанных положительных объектов;
  • \text{TN} (True Negative) — число верно предсказанных отрицательных объектов;
  • \text{FP} (False Positive) — число ошибочно предсказанных положительных объектов (ошибка I рода);
  • \text{FN} (False Negative) — число ошибочно предсказанных отрицательных объектов (ошибка II рода).

Сумма всех элементов равна общему числу наблюдений: N = \text{TP} + \text{TN} + \text{FP} + \text{FN}.

Метрики для бинарной классификации

На основе матрицы ошибок вычисляются производные показатели, каждый из которых отражает определённый аспект качества классификации.

Accuracy (доля правильных ответов)

\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}}

Accuracy показывает общую долю верных предсказаний. Метрика интуитивно понятна, но непригодна при сильном дисбалансе классов. Если отрицательный класс составляет 99% выборки, константный классификатор, всегда предсказывающий отрицательный класс, достигнет Accuracy = 0.99, будучи абсолютно бесполезным для детекции положительного класса.

Precision (точность)

\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}

Precision измеряет долю истинно положительных объектов среди всех, кого модель отнесла к положительному классу. Высокая точность означает, что модель редко ошибается, называя объект положительным. Метрика критична в задачах, где цена ложноположительного срабатывания велика — например, при фильтрации спама, когда ложное отнесение легитимного письма к спаму нежелательно.

Recall (полнота)

\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}

Recall (также называемый Sensitivity или True Positive Rate) показывает, какую долю истинно положительных объектов модель сумела обнаружить. Метрика приоритетна в задачах, где пропуск положительного объекта недопустим — например, в скрининге онкологических заболеваний, когда ложноотрицательный диагноз стоит жизни.

Specificity (специфичность)

\text{Specificity} = \frac{\text{TN}}{\text{TN} + \text{FP}}

Specificity (True Negative Rate) — доля верно распознанных отрицательных объектов. Совместно с Recall образует пару, характеризующую способность модели разделять классы. В медицинской диагностике Specificity показывает, насколько хорошо тест исключает заболевание у здоровых пациентов.

F1-мера

F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}

F1-мера — гармоническое среднее Precision и Recall. В отличие от арифметического, гармоническое среднее сильнее штрафует дисбаланс составляющих: если одна из метрик близка к нулю, F1 также будет близка к нулю. Это делает F1 удобной агрегированной метрикой, когда важен баланс между точностью и полнотой. Обобщением служит F_\beta-мера:

F_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}

Параметр \beta > 1 увеличивает вес Recall, \beta < 1 — вес Precision.

Сводная таблица метрик

Основные метрики бинарной классификации
Метрика Формула Когда использовать
Accuracy \frac{\text{TP} + \text{TN}}{N} Сбалансированные классы, равнозначные ошибки
Precision \frac{\text{TP}}{\text{TP} + \text{FP}} Высокая цена ложных срабатываний
Recall \frac{\text{TP}}{\text{TP} + \text{FN}} Высокая цена пропуска цели
Specificity \frac{\text{TN}}{\text{TN} + \text{FP}} Дополнение к Recall, анализ обеих ошибок
F1 2 \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} Компромисс между Precision и Recall

Компромисс Precision/Recall

Precision и Recall связаны обратной зависимостью: увеличение одной метрики часто ведёт к снижению другой. Фундаментальная причина — классификационный порог: понижая порог, модель относит к положительному классу больше объектов, что увеличивает Recall (находим больше истинно положительных), но одновременно снижает Precision (растёт число ложных срабатываний). Повышение порога даёт обратный эффект.

Рассмотрим задачу детекции мошеннических транзакций. Если банк установит низкий порог и будет блокировать любые подозрительные операции, Recall окажется высоким (почти все мошеннические транзакции заблокированы), но Precision — низким (множество легитимных операций ложно помечены как мошеннические, что вызывает недовольство клиентов). Если же банк повысит порог, Precision возрастёт, но часть мошеннических операций пройдёт незамеченной (Recall снизится). Выбор рабочей точки на кривой Precision-Recall определяется бизнес-ограничениями и относительной стоимостью ошибок FP и FN.

ROC-кривая и AUC-ROC

ROC-кривая (Receiver Operating Characteristic) строится в координатах True Positive Rate (Recall) против False Positive Rate:

\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}, \quad \text{FPR} = \frac{\text{FP}}{\text{TN} + \text{FP}}

Каждая точка кривой соответствует определённому порогу классификации. При варьировании порога от 0 до 1 точка (FPR, TPR) перемещается от (1,1) до (0,0). Идеальный классификатор проходит через точку (0,1). Диагональ \text{TPR} = \text{FPR} соответствует случайному гаданию.

AUC-ROC (Area Under the ROC Curve) — площадь под ROC-кривой, принимающая значения от 0 до 1. Значение 0.5 означает бесполезный классификатор, 1.0 — идеальное разделение классов. AUC-ROC обладает вероятностной интерпретацией: это вероятность того, что случайно выбранный положительный объект получит от модели более высокую оценку принадлежности к положительному классу, чем случайно выбранный отрицательный.

Достоинство AUC-ROC — независимость от порога и априорных вероятностей классов. Недостаток — нечувствительность к калибровке вероятностей и маскировка проблем при сильном дисбалансе, когда большая площадь достигается за счёт корректного ранжирования отрицательных примеров, а положительные тонут в массе FP.

PR-кривая и AUC-PR

PR-кривая (Precision-Recall curve) строится в координатах Precision против Recall. В отличие от ROC, PR-кривая не учитывает TN, что делает её чувствительной исключительно к качеству предсказаний положительного класса.

AUC-PR — площадь под PR-кривой. В условиях сильного дисбаланса (доля положительного класса < 5%) PR-кривая даёт более информативную картину, чем ROC. Причина в том, что FPR в знаменателе ROC-кривой доминируется огромным количеством TN, из-за чего даже значительный абсолютный рост FP слабо меняет FPR. Precision же непосредственно реагирует на каждый ложноположительный объект.

Сравнение ROC и PR кривых
Характеристика ROC PR
Оси TPR vs FPR Precision vs Recall
Учёт TN Да (через FPR) Нет
Чувствительность к дисбалансу Занижена Высокая
Рекомендуемое применение Сбалансированные классы Дисбаланс классов, фокус на положительном классе

Многоклассовые обобщения

Для задач многоклассовой классификации метрики Precision, Recall и F1 обобщаются путём усреднения по классам.

Пусть C — множество классов, P_c, R_c, F1_c — точность, полнота и F1-мера для класса c, вычисленные по схеме «один против всех» (класс c считается положительным, остальные — отрицательным), N_c — число истинных примеров класса c.

Micro-усреднение агрегирует элементы матрицы ошибок по всем классам перед вычислением метрики:

P_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FP}_c)}, \quad R_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FN}_c)}

Micro-усреднение даёт больший вес классам с большим числом примеров. В пределе micro-averaged Accuracy, Precision и Recall численно совпадают.

Macro-усреднение вычисляет метрику независимо для каждого класса, затем берёт арифметическое среднее:

P_{\text{macro}} = \frac{1}{|C|} \sum_{c} P_c, \quad R_{\text{macro}} = \frac{1}{|C|} \sum_{c} R_c

Macro-усреднение придаёт равный вес всем классам, что делает его чувствительным к качеству классификации миноритарных классов, но и уязвимым к выбросам в классах с малым числом примеров.

Weighted-усреднение берёт средневзвешенное по числу истинных примеров класса:

P_{\text{weighted}} = \frac{\sum_{c} N_c \cdot P_c}{\sum_{c} N_c}, \quad R_{\text{weighted}} = \frac{\sum_{c} N_c \cdot R_c}{\sum_{c} N_c}

Weighted-усреднение занимает промежуточную позицию: учитывает размер классов, но чувствительнее к миноритарным классам, чем micro-усреднение.

Метрики для регрессии

В задачах регрессии, где целевая переменная непрерывна, используются метрики, основанные на отклонениях предсказаний \hat{y}_i от истинных значений y_i.

Основные метрики регрессии
Метрика Формула Особенности
MSE
(Mean Squared Error)
\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 Сильно штрафует большие ошибки (квадратичная зависимость). Дифференцируема, используется как функция потерь. Чувствительна к выбросам.
RMSE
(Root Mean Squared Error)
\sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} Интерпретируется в единицах целевой переменной. Сохраняет чувствительность к выбросам.
MAE
(Mean Absolute Error)
\frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| Менее чувствительна к выбросам, чем MSE. Даёт линейный штраф. Не дифференцируема в нуле.
MAPE
(Mean Absolute Percentage Error)
\frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| Выражается в процентах, интуитивно понятна бизнес-пользователям. Неприменима при y_i = 0. Асимметрична: штраф за занижение и завышение различен.
R^2
(Коэффициент детерминации)
1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2} Показывает долю дисперсии целевой переменной, объяснённой моделью. Значение 1 — идеальное предсказание, 0 — модель не лучше константы (среднего). Может быть отрицательным.

Выбор метрики в регрессии диктуется распределением ошибок и бизнес-требованиями. При наличии выбросов предпочтительнее MAE; если большие ошибки критичны — MSE или RMSE. R^2 удобен для сравнительного анализа моделей на одном наборе данных, но не отражает абсолютную величину ошибки.

Метрики для ранжирования

В задачах ранжирования оценивается качество упорядочивания объектов согласно их релевантности запросу.

MRR (Mean Reciprocal Rank) — среднее обратное значение позиции первого релевантного документа:

\text{MRR} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{\text{rank}_q}

где \text{rank}_q — позиция первого релевантного документа для запроса q. Метрика проста и интерпретируема, но учитывает только первый релевантный результат.

MAP (Mean Average Precision) — среднее по запросам значение средней точности:

\text{MAP} = \frac{1}{|Q|} \sum_{q \in Q} \frac{\sum_{k=1}^{n_q} P_q(k) \cdot \text{rel}_q(k)}{\text{число релевантных документов для } q}

где P_q(k) — Precision на глубине k, \text{rel}_q(k) — индикатор релевантности документа на позиции k. MAP учитывает все релевантные документы и их позиции.

NDCG (Normalized Discounted Cumulative Gain) — нормализованный накопленный выигрыш с дисконтированием:

\text{DCG}_q@k = \sum_{i=1}^{k} \frac{2^{\text{rel}_i} - 1}{\log_2(i + 1)}
\text{NDCG}_q@k = \frac{\text{DCG}_q@k}{\text{IDCG}_q@k}

где \text{rel}_i — оценка релевантности (возможно, многозначная), IDCG — DCG идеального ранжирования. NDCG учитывает как многоградационную релевантность, так и позицию документа, придавая больший вес верхним позициям списка.

Выбор метрики под задачу

Выбор метрики определяется следующими факторами:

  1. Тип задачи. Классификация, регрессия или ранжирование задают семейство метрик.
  2. Сбалансированность классов. При дисбалансе избегают Accuracy, предпочитая F1, AUC-PR или macro-F1.
  3. Цена ошибок. При асимметричной стоимости ошибок ориентируются на Recall (высокая цена FN) или Precision (высокая цена FP).
  4. Требования к интерпретируемости. Для коммуникации с заказчиком часто выбирают метрики в абсолютных величинах (RMSE в рублях, Recall в процентах обнаруженных дефектов).
  5. Наличие нескольких классов. Выбирают micro- (важна общая эффективность) или macro-усреднение (важен каждый класс).

Рекомендуется использовать не единственную метрику, а батарею взаимодополняющих показателей для всесторонней оценки модели.

Пример: медицинская диагностика редкого заболевания

Рассмотрим задачу скрининга заболевания с распространённостью 0.1% (один случай на тысячу пациентов). Разрабатывается классификатор, предсказывающий наличие болезни по лабораторным показателям.

Характеристики задачи:

  • Сильный дисбаланс классов (1:999).
  • Критически высокая цена ложноотрицательного результата: пропуск заболевания может привести к летальному исходу.
  • Ложноположительный результат также нежелателен (назначается ненужное дорогостоящее обследование), но его цена ниже.

Анализ метрик:

  • Accuracy неприемлема. Модель, всегда предсказывающая «здоров», имеет Accuracy = 0.999, но не обнаруживает ни одного больного.
  • Precision важна для оценки нагрузки на систему здравоохранения: низкая точность означает, что большинство направленных на доп. обследование окажутся здоровы.
  • Recall — ключевая метрика. Необходимо максимизировать долю обнаруженных больных, возможно, ценой снижения Precision.
  • F1 или F2-мера\beta = 2) дают сбалансированную оценку с повышенным приоритетом полноты.
  • ROC-AUC может дать завышенно оптимистичную картину из-за доминирования TN. Предпочтительнее использовать AUC-PR, которая непосредственно оценивает способность модели находить редкий положительный класс.

Рекомендуемый набор метрик для данной задачи: Recall (основная), Precision (контролируемая), AUC-PR (интегральная оценка ранжирования), F2-мера (агрегированная).

См. также

Литература

  1. Powers D. M. W. Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness & Correlation // Journal of Machine Learning Technologies. — 2011. — Vol. 2, no. 1. — P. 37–63.
  2. Davis J., Goadrich M. The Relationship Between Precision-Recall and ROC Curves // Proceedings of the 23rd International Conference on Machine Learning (ICML). — 2006. — P. 233–240.
  3. Fawcett T. An Introduction to ROC Analysis // Pattern Recognition Letters. — 2006. — Vol. 27, no. 8. — P. 861–874.
  4. Saito T., Rehmsmeier M. The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets // PLOS ONE. — 2015. — Vol. 10, no. 3. — e0118432.
  5. Järvelin K., Kekäläinen J. Cumulated Gain-Based Evaluation of IR Techniques // ACM Transactions on Information Systems. — 2002. — Vol. 20, no. 4. — P. 422–446.
  6. Груздев А. В. Прогнозное моделирование в IBM SPSS Statistics, R и Python. Метод деревьев решений и случайный лес. — М.: ДМК Пресс, 2018. — Гл. 4: Оценка качества моделей.
Личные инструменты