Точности недостаточно
Почему 99 процентов точности бывают бесполезной моделью, что на самом деле доказывает отложенная проверка и какие два числа побеждают точность, когда один ответ редкий.
Точность — это доля строк, на которых модель оказалась права. Это первое число, за которое все хватаются, его легко объяснить, и само по себе оно одно из самых обманчивых во всей области. Вот капкан, и для него не нужна никакая сложная модель. Это медицинский тест на редкую болезнь в городе на тысячу человек.
disease screening, 1000 people, 10 are ill
model: always answer no
correct: 990 healthy people
wrong: 10 ill people missed
accuracy = 990 / 1000 = 99 percentМодель, которая не делает вообще ничего, и её 99 процентов.Такая модель отвечает «нет» каждому человеку. Она не выучила ничего, она никогда не найдёт ни одного больного и всё равно даёт 99 процентов, потому что болезнь редкая, а здоровых большинство. Точность тихо награждает самый частый класс. Как только один ответ встречается намного чаще другого, ленивая модель, всегда выбирающая частый ответ, на бумаге выглядит превосходно, а на практике не стоит ничего.
Теперь второй капкан, и он про честность, а не про редкость. Модель можно проверять на тех самых строках, на которых она училась, — так же, как ученику можно вернуть контрольную с уже вписанными ответами. Конечно, результат будет высоким. Нужное тебе число получается на строках, которых модель никогда не видела. Поэтому до обучения таблицу делят: одна часть обучает модель, остальное запечатывается и вскрывается один раз, в конце. Эта запечатанная часть и есть отложенная выборка.
Проверка на обучающих данных — не мелкая оплошность, а выброшенное измерение целиком. Если ты настраиваешь модель, смотришь на результат отложенной выборки и снова настраиваешь, эта выборка постепенно перестаёт быть невиданной и начинает быть выученной. Профессионалы поэтому делят данные на три части: обучение, проверочная часть для настройки и отложенная выборка, к которой прикасаются ровно один раз. Прикоснёшься чаще — её число перестанет что-либо значить.
spam filter, 100 emails, 20 are spam
+----------------+----------------+----------------+
| | says spam | says inbox |
+----------------+----------------+----------------+
| is spam | 16 | 4 |
| is not spam | 3 | 77 |
+----------------+----------------+----------------+
accuracy = (16 + 77) / 100 = 93 percent
precision = 16 / 19 = 84 percent
recall = 16 / 20 = 80 percentКаждое предсказание спам-фильтра попадает ровно в одну из этих четырёх клеток.Эти четыре клетки — матрица ошибок, и два полезных числа читаются прямо с неё. Точность ответа спрашивает: из всего, что модель пометила как спам, какая доля действительно спам? Низкая точность ответа означает, что уничтожается нормальная почта, и это ровно та жалоба, которую пишут пользователи. Полнота спрашивает: из всего спама, который был, какую долю модель поймала? Низкая полнота означает, что спам продолжает приходить, и на это никто не жалуется. Оба числа описывают одну и ту же модель и отвечают на совершенно разные вопросы.
Эти два числа тянут в разные стороны, и одна ручка двигает оба. Сделай фильтр строже — точность ответа растёт, полнота падает: меньше ложных тревог, больше спама просачивается. Сделай мягче — будет наоборот. Настройки, где оба числа максимальны, не существует, поэтому настоящий вопрос не «какая оценка лучше», а «сколько стоит каждая ошибка именно здесь». Заблокировать предложение о работе — катастрофа; пропустить одну рекламу — пожать плечами.
same test, two thresholds
+----------------+-----------+-----------+
| threshold | precision | recall |
+----------------+-----------+-----------+
| strict | high | low |
| loose | low | high |
+----------------+-----------+-----------+
ask instead: what does a miss cost here?Один порог — и два числа, движущиеся в противоположные стороны.Практика
Тест на редкую болезнь показывает 99 процентов точности в городе на 1000 человек. Болезнь есть только у 10 из них. Коллега говорит, что вопрос с тестом практически закрыт. Что проверить в первую очередь?
Подсказки
- Посчитай, сколько человек в таком городе действительно больны, прежде чем судить о точности.
- Модель, всегда отвечающая «нет», права почти всегда и не помогает никому в редком классе.
Сопоставь каждое число спам-фильтра с тем, что оно на самом деле измеряет.
Подсказки
- Точность ответа спрашивает про письма, на которые фильтр среагировал; полнота — про спам, который существовал.
- Из 20 спам-писем 4 остались во входящих: это число относится к полноте.
Расставь шаги честной оценки модели в правильном порядке.
- 1Попросить модель предсказать метки для запечатанных строк
- 2Посчитать precision и recall по настоящим меткам этих строк
- 3Обучить модель только на обучающей части
- 4Разделить таблицу на обучающую и отложенную части и запечатать отложенную
Подсказки
- Отложенные строки нужно запечатать до начала обучения, иначе разделение ничего не доказывает.
- Сравнивать две модели нельзя, пока обе не дали число на одних и тех же отложенных строках.