Accuracy (точность) — это одна из самых простых и интуитивно понятных метрик для оценки классификационных моделей машинного обучения.
Если говорить просто:
Accuracy — это доля правильных ответов модели от общего числа всех предсказаний.
Формула
Accuracy рассчитывается по очень простой формуле:
Accuracy = (Number of Correct Predictions) / (Total Number of Predictions)
Или, если использовать элементы матрицы ошибок (Confusion Matrix):
где:
- (True Positive) — Истинно-положительные: модель верно предсказала положительный класс.
- (True Negative) — Истинно-отрицательные: модель верно предсказала отрицательный класс.
- (False Positive) — Ложно-положительные: модель неверно предсказала положительный класс (ошибка 1-го рода).
- (False Negative) — Ложно-отрицательные: модель неверно предсказала отрицательный класс (ошибка 2-го рода).
Пример для понимания
Представьте, что у нас есть модель, которая определяет, болен ли человек (1) или здоров (0). Мы протестировали её на 100 пациентах.
Результаты:
- Правильно предсказано болезней (TP): 45
- Правильно предсказано здоровых (TN): 40
- Ошибочно предсказано болезней (FP): 8 (здорового человека посчитали больным)
- Ошибочно предсказано здоровых (FN): 7 (больного человека посчитали здоровым)
Расчет Accuracy:
- Правильные прогнозы: TP + TN = 45 + 40 = 85
- Всего прогнозов: 100
- Accuracy = 85 / 100 = 0.85 или 85%
Вывод: Наша модель правильно ставит диагноз в 85% случаев.
Плюсы и минусы Accuracy
Плюсы:
- Простота: Легко вычислить и понять.
- Интуитивность: Понятие “процент правильных ответов” понятно всем.
- Хорошая метрика, когда классы в данных сбалансированы (например, 50% котов и 50% собак в наборе данных).
Минусы (ОЧЕНЬ важные!):
Accuracy может быть крайне вводящей в заблуждение метрикой в случае несбалансированных данных.
Классический пример “Проклятия несбалансированных данных”
Задача: Определить, есть ли у транзакции признаки мошенничества.
- Данные: Из 10 000 транзакций только 100 являются мошенническими (1%), а 9 900 — легальными (99%).
Рассмотрим “тупую” модель, которая всегда предсказывает “Легальная”:
- TP = 0 (мошеннические не найдены)
- TN = 9900 (все легальные верно определены)
- FP = 0 (ложных обвинений нет)
- FN = 100 (все мошеннические пропущены)
Accuracy = (0 + 9900) / 10000 = 99%
Вывод по accuracy: У нас супер-модель с точностью 99%!
Реальность: Модель не нашла ни одного мошенничества и является абсолютно бесполезной для нашей задачи. Высокий accuracy достигнут просто за счет угадывания большинства класса.
Когда использовать Accuracy?
- Когда классы примерно сбалансированы. Например, определение пола по фото (~50/50) или классификация кошек и собак.
- Как одна из многих метрик. Никогда не полагайтесь только на accuracy. Всегда смотрите на другие метрики.
Какие метрики использовать вместо / вместе с Accuracy?
В случае несбалансированных данных или когда цена разных ошибок неодинакова, используют:
- Precision (Точность): Какая доль предсказанных “мошенничеств” была настоящей?
- Вопрос: Насколько мы можем доверять, что если модель сказала “да”, то это правда “да”?
- Recall (Полнота): Какую долю настоящих “мошенничеств” мы нашли?
- Вопрос: Не пропускаем ли мы слишком много реальных событий?
- F1-Score (F-мера): Гармоническое среднее между Precision и Recall. Полезен, когда нужно найти баланс между двумя этими метриками.
- AUC-ROC: Показывает, насколько хорошо модель отделяет один класс от другого в целом.
Краткий итог
- Accuracy — это доля правильных ответов.
- Это хорошая и простая метрика для быстрой оценки и для сбалансированных данных.
- Это очень плохая и обманчивая метрика для несбалансированных данных.
- Всегда анализируйте задачу глубже и используйте несколько метрик (Precision, Recall, F1) для получения полной картины о качестве модели.