Precision
Точность — это доля верных положительных предсказаний: TP / (TP + FP). Как на неё влияет распространённость класса, как её вычисляют детекторы и как её повысить.
Точность — это доля положительных предсказаний модели, которые верны. Она отвечает на вопрос «если модель отвечает “да”, как часто она оказывается права?» и вычисляется как число истинно положительных результатов, деленное на все положительные предсказания: точность = TP / (TP + FP), где ложноположительный результат (FP) — это отрицательный случай, который модель ошибочно отметила. Точность принимает значения от 0 до 1: точность 0.95 означает, что одно из 20 предупреждений — ложное. В медицине синонимом служит прогностическая ценность положительного результата (PPV), а частота ложных обнаружений равна единице минус точность. Точность особенно важна, когда ложные тревоги дорого обходятся: например, если спам-фильтр скрывает настоящее письмо, система контроля отбраковывает качественные детали или камера наблюдения вызывает охрану из-за теней.
Как рассчитывается точность#
Точность вычисляется по двум ячейкам матрицы ошибок: истинно положительным и ложноположительным результатам, которые вместе охватывают все положительные предсказания. Пропущенные положительные примеры не входят в формулу, поэтому модель, которая отмечает только один самый уверенный случай, может достичь точности 1.0, почти ничего не обнаружив. Поэтому точность приводят вместе с полнотой, равной TP / (TP + FN) и учитывающей именно эти пропуски; F1-мера объединяет обе метрики в одно число. Если модель не выдает ни одного положительного предсказания, точность равна 0 / 0 и не определена; библиотеки, такие как scikit-learn, сообщают значение 0 с предупреждением.
Если классов больше двух, точность вычисляется отдельно для каждого класса, который поочередно считается положительным, а все остальные классы — отрицательными, после чего результаты усредняются. При макроусреднении все классы имеют одинаковый вес, а в задачах многоклассовой классификации с одной меткой точность, усредненная микроусреднением, равна доле правильных ответов.
Точность зависит от распространенности положительного класса#
Полнота и специфичность описывают отдельно работу модели с положительными и отрицательными примерами, поэтому остаются неизменными, когда положительные примеры встречаются реже. Точность учитывает обе группы и снижается по мере уменьшения распространенности положительного класса: один и тот же уровень ложноположительных результатов среди большего числа отрицательных примеров создает больше ложных тревог на одно истинное обнаружение. Приведенный ниже скрипт scikit-learn оценивает одну скрининговую модель при двух значениях распространенности положительного класса:
import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score
# One screening model at two prevalences: it finds 90% of positives and flags 1% of negatives
for positives in (1000, 100):
negatives = 10_000 - positives
tp, fp = int(0.9 * positives), int(0.01 * negatives)
counts = [tp, positives - tp, fp, negatives - fp] # TP, FN, FP, TN
# Rebuild labels and predictions for 10,000 cases from the confusion-matrix counts
y_true = np.repeat([1, 1, 0, 0], counts)
y_pred = np.repeat([1, 0, 1, 0], counts)
accuracy = accuracy_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
print(f"{positives} positives: accuracy {accuracy:.3f}, recall {recall:.2f}, precision {precision:.2f}")При 1 000 положительных случаях из 10 000 модель достигает точности 0.91. При 100 положительных случаях ее полнота по-прежнему равна 0.90, а доля правильных ответов даже возрастает до 0.989, но теперь на 90 истинных обнаружений приходится 99 ложных тревог, и точность падает до 0.48. Поэтому точность, измеренная на сбалансированной тестовой выборке, завышает значение, которое модель покажет при развертывании, если положительные случаи встречаются реже, например при скрининге на редкое заболевание.
Точность в детекции объектов#
В детекции объектов каждое предсказанное ограничивающее окно выше порога уверенности считается положительным предсказанием. Предсказания сопоставляются в порядке убывания уверенности; окно считается истинно положительным, только если оно перекрывает размеченный объект того же класса на величину пересечения над объединением (IoU), равную порогу или превышающую его, и этот объект еще не сопоставлен с окном с более высокой оценкой. Окна на фоне, окна с неправильным классом, неточно расположенные окна и дублирующие окна для уже сопоставленного объекта считаются ложноположительными.
Повышение порога уверенности удаляет окна с низкими оценками, которые чаще оказываются неверными, поэтому точность обычно растет, а полнота падает. Если построить график зависимости точности от полноты для всех порогов, получится кривая точности-полноты; площадь под ней — это средняя точность (AP), усредняемая по классам при расчете средней точности (mAP), а для mAP50-95 — также по десяти порогам IoU. При валидации YOLO26 сохраняет точность каждого класса при каждом пороге уверенности в BoxP_curve.png и сообщает точность (P) при уровне уверенности, на котором среднее значение F1 максимально, вместе с полнотой и mAP.
Как повысить точность#
- Повысить порог уверенности: Самый быстрый способ исправления, за который приходится платить снижением полноты.
- Добавить сложные отрицательные примеры: Добавь в обучающие данные похожие объекты и пустые сцены, вызывающие ложные тревоги, чтобы модель научилась не отмечать их. Выбор наиболее сбивающих с толку отрицательных примеров таким способом называется поиском сложных отрицательных примеров.
- Исправь пропущенные метки: Правильное обнаружение объекта, который пропустил аннотатор, считается ложноположительным результатом, поэтому неполные метки истинной разметки создают впечатление, что точность ниже, чем на самом деле.
- Раздели классы, которые модель путает: Матрица ошибок показывает, какие классы модель смешивает, а дополнительные примеры или более чёткие определения этих классов устраняют ложноположительные результаты с неверным классом.
Точность и связанные с ней термины#
- Полнота: Доля фактических положительных примеров, найденных моделью: TP / (TP + FN). Она учитывает пропуски, а точность — ложные срабатывания.
- Специфичность: Доля фактических отрицательных примеров, правильно отклонённых моделью: TN / (TN + FP). Даже при специфичности 0,99 точность может быть ниже 0,5, если положительные примеры редки, как показывает скрипт проверки.
- Доля правильных ответов: Доля правильных предсказаний среди всех, на которую в несбалансированных данных влияет преимущественно класс большинства.
- Числовая точность: Количество битов, используемых для хранения каждого значения, например 32-разрядное или 16-разрядное число с плавающей точкой, — это другое, не связанное с ним значение того же слова.
- Точность измерений: Насколько близки друг к другу повторные измерения; правильность показывает, насколько близко они находятся к истинному значению. Весы, которые всегда показывают на 2 кг больше, точны, но неправильны.










