Почему нельзя напрямую оптимизировать accuracy?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
Accuracy неудобно напрямую оптимизировать, потому что это дискретная и недифференцируемая метрика. Обычно модель обучают минимизировать гладкую surrogate-loss, например log loss или hinge loss, а accuracy используют уже для оценки качества. Кроме того, accuracy плохо работает на несбалансированных данных, поэтому может вводить в заблуждение.
Определение:
Accuracy — это доля верно классифицированных объектов от общего числа. Проблема в том, что в обучении модели нужны функции потерь, по которым можно считать градиенты и улучшать параметры. Accuracy зависит от порога и меняется скачкообразно: небольшое изменение вероятности может никак не повлиять на метрику, а значит она плохо подходит как целевая функция для оптимизации.
Пример использования:
В задаче спама 99% писем — обычные, 1% — спам. Если модель всегда предсказывает «не спам», accuracy будет 99%, хотя полезность такой модели почти нулевая.
from sklearn.metrics import accuracy_score, log_loss
y_true = [0, 0, 0, 0, 1]
y_pred = [0, 0, 0, 0, 0] # всегда предсказываем majority class
y_prob = [0.95, 0.9, 0.92, 0.97, 0.1]
print("accuracy:", accuracy_score(y_true, y_pred))
print("logloss:", log_loss(y_true, y_prob))
Пояснение кода:
Код показывает, что accuracy может быть высокой даже у бесполезного классификатора. В примере модель всегда выбирает класс 0, и по accuracy она ошибается только на одном объекте из пяти. Но по log loss видно, что вероятности на позитивном классе плохие, и такая модель не умеет уверенно отличать спам от обычных писем. Именно поэтому при обучении обычно оптимизируют loss, а accuracy считают отдельно на валидации.
Ключевые моменты:
- Accuracy — это метрика качества, а не удобная цель для градиентной оптимизации.
- Она недифференцируема и меняется скачками, поэтому по ней сложно строить обучение.
- Для обучения используют гладкие функции потерь: log loss, cross-entropy, hinge loss и т. п.
- На несбалансированных данных accuracy может быть обманчиво высокой.
- Для выбора модели лучше смотреть на набор метрик: precision, recall, F1, ROC-AUC, PR-AUC.