Большинство других ответов сосредоточены на примере несбалансированных классов. Да, это важно Однако я утверждаю, что точность проблематична даже при сбалансированных классах.
Фрэнк Харрелл написал об этом в своем блоге: Классификация против предсказания и ущерба, вызванного точностью классификации и другими прерывистыми правилами оценки неправильной точности .
По сути, его аргумент заключается в том, что статистический компонент вашего упражнения заканчивается, когда вы выводите вероятность для каждого класса новой выборки. Сопоставление этих предсказанных вероятностей к 0-1 классификации, выбирая порог , за которым вы классифицируют новое наблюдение , как 1 против 0 не является частью статистики больше , Это часть компонента решения . И здесь вам нужен вероятностный вывод вашей модели - но также такие соображения, как:(p^,1−p^)
- Каковы последствия решения рассматривать новое наблюдение как класс 1 против 0? Затем я рассылаю дешевую маркетинговую почту всем 1? Или я применяю инвазивное лечение рака с большими побочными эффектами?
- Каковы последствия обработки «истинного» 0 как 1 и наоборот? Буду ли я ставить галочку на клиенте? Подвергать ли кому-либо ненужное лечение?
- Мои "классы" действительно дискретны? Или на самом деле существует континуум (например, артериальное давление), где клинические пороги в действительности являются просто когнитивными сокращениями? Если да, то насколько далеко за порогом находится дело, которое я сейчас "классифицирую"?
- Или низкая, но положительная вероятность того, что это будет класс 1, на самом деле означает «получить больше данных», «запустить еще один тест»?
В зависимости от последствий вашего решения, вы будете использовать другой порог для принятия решения. Если действие представляет собой инвазивную хирургию, вам потребуется гораздо более высокая вероятность того, что вы классифицируете пациента как нечто, страдающее от чего-то, чем если действие должно рекомендовать два аспирина. Или вы можете даже принять три разных решения, хотя есть только два класса (больной и здоровый): «иди домой и не волнуйся» против «проведи другой тест, потому что тот, который у нас неокончательный» против «действуй немедленно» ,
Правильный способ оценки прогнозируемых вероятностей - не сравнивать их с пороговым значением, сопоставить их с на основе порогового значения и затем оценить преобразованное классификация. Вместо этого следует использовать правильные правила подсчета очков . Это функции потерь, которые отображают предсказанные вероятности и соответствующие наблюдаемые результаты в значения потерь, которые минимизируются в ожидании истинными вероятностями . Идея состоит в том, что мы берем среднее значение по правилу оценки, оцененному по нескольким (наилучшим: многим) наблюдаемым результатам и соответствующим прогнозируемым вероятностям членства в классе, в качестве оценки ожидания правила оценки.(p^,1−p^)( 0 , 1 ) ( 0 , 1 )(0,1)(0,1)(p,1−p)
Обратите внимание, что «правильное» здесь имеет четко определенное значение - существуют неправильные правила оценки, а также надлежащие правила оценки и, наконец, строго правильные правила оценки . Правила подсчета как таковые являются функциями потерь от прогнозируемой плотности и результатов. Правильные правила оценки - это правила оценки, которые минимизируются в ожидании, если прогнозная плотность является истинной плотностью. Строго правильные правила оценки - это правила оценки, которые минимизируются только в том случае, если прогнозная плотность равна истинной плотности.
Как отмечает Фрэнк Харрелл , точность - это неправильное правило подсчета очков. (Точнее, точность даже не правило подсчета очков на всех : см моего ответа на точность ненадлежащего правило подсчета очков в условиях бинарной классификации? ) Это можно увидеть, например, если у нас нет предсказателей на все и просто флип несправедливая монета с вероятностями . Точность максимальна, если мы классифицируем все как первый класс и полностью игнорируем 40% вероятности того, что любой результат может быть во втором классе. (Здесь мы видим , что точность является проблематичной даже для сбалансированных классов.) Правильные скоринг-правила предпочтут прогноза на(0.6,0.4)(0.6,0.4)(1,0) один в ожидании. В частности, точность порогового значения является скачкообразной: незначительное смещение порога может привести к тому, что одно (или несколько) предсказаний изменит классы и изменит всю точность на дискретную величину. Это имеет мало смысла.
Дополнительную информацию можно найти в двух постах Фрэнка, ссылки на которые приведены выше, а также в главе 10 Стратегий регрессионного моделирования Фрэнка Харрелла .
(Это бесстыдно написано в моем предыдущем ответе .)
РЕДАКТИРОВАТЬ. Мой ответ на Пример, когда использование точности в качестве меры результата приведет к неверному выводу, дает, надеюсь, иллюстративный пример, где максимальная точность может привести к неправильным решениям даже для сбалансированных классов .
Когда мы используем точность, мы назначаем равную стоимость ложным срабатываниям и ложным отрицаниям. Когда этот набор данных несбалансирован - скажем, он содержит 99% экземпляров в одном классе и только 1% в другом - есть отличный способ снизить стоимость. Предсказать, что каждый экземпляр относится к классу большинства, получить точность 99% и идти домой рано.
Проблема начинается, когда фактические затраты, которые мы назначаем для каждой ошибки, не равны. Если мы имеем дело с редким, но смертельным заболеванием, стоимость не диагностирования заболевания больного значительно выше, чем стоимость отправки здорового человека на дополнительные анализы.
В общем, нет вообще наилучшей меры. Лучшая мера определяется вашими потребностями. В некотором смысле это не вопрос машинного обучения, а вопрос бизнеса. Обычно два человека используют один и тот же набор данных, но выбирают разные показатели из-за разных целей.
Точность это отличный показатель. На самом деле, большинство показателей отличные, и мне нравится оценивать многие показатели. Однако в какой-то момент вам нужно будет решить, использовать ли модель A или B. Там вы должны использовать одну метрику, которая наилучшим образом соответствует вашим потребностям.
Для дополнительной оценки выберите этот показатель перед анализом, чтобы не отвлекаться при принятии решения.
источник
Проблема с точностью
Стандартная точность определяется как отношение правильных классификаций к числу выполненных классификаций.
Таким образом, он в целом измеряется во всех классах, и, как мы вскоре увидим, не очень хорошая мера отличить оракула от реального полезного теста. Оракул - это функция классификации, которая возвращает случайное предположение для каждой выборки. Аналогично, мы хотим иметь возможность оценить эффективность классификации нашей функции классификации. Точность \ textit {can} может быть полезной мерой, если у нас одинаковое количество выборок на класс, но если у нас несбалансированный набор, точность выборок вообще не нужна. Более того, тест может иметь высокую точность, но на самом деле выполнять хуже, чем тест с меньшей точностью.
Если у нас есть распределение выборок, такое что 90 \% выборок принадлежит классу , 5 \% принадлежит и еще 5 \% принадлежит тогда следующая классификационная функция будет иметь точность :A B C 0.9
Тем не менее, очевидно, учитывая, что мы знаем, как работает что она не может отличить классы вообще. Аналогично, мы можем построить классификационную функциюclassify
который имеет точность и не всегда будет предсказывать но, тем не менее, учитывая, что мы знаем, как работает , очевидно, что он не может отличить классы друг от друга. Точность в этом случае говорит нам только о том, насколько хороша наша классификационная функция при угадывании. Это означает, что точность не является хорошей мерой, чтобы отличить оракула от полезного теста.0.96⋅0.9+0.02⋅0.05⋅2=0.866 A classify
Точность на класс
Мы можем вычислить точность индивидуально для каждого класса, предоставив нашей функции классификации только выборки из одного и того же класса, запомни и посчитав количество правильных классификаций и неправильных классификаций, а затем вычислим . Мы повторяем это для каждого класса. Если у нас есть классификационная функция, которая может точно распознавать класс но выдает случайное предположение для других классов, то это дает точность для и точностьaccuracy:=correct/(correct+incorrect) A 1.00 A 0.33 для других классов. Это уже дает нам гораздо лучший способ оценить эффективность нашей функции классификации. Оракул, всегда угадывающий один и тот же класс, будет давать точность каждого класса для этого класса, но для другого класса. Если наш тест полезен, все точности для каждого класса должны быть . В противном случае наш тест не лучше, чем шанс. Тем не менее, точность каждого класса не учитывает ложных срабатываний. Даже если наша классификационная функция имеет точность 100 \% для класса , также будут ложные срабатывания для (например, ошибочно классифицированный как ).1.00 0.00 >0.5 A A B A
Чувствительность и Специфика
В медицинских тестах чувствительность определяется как соотношение между людьми, правильно определенными как имеющие заболевание, и количеством людей, действительно имеющих заболевание. Специфичность определяется как соотношение между людьми, правильно определенными как здоровые, и количеством людей, которые действительно здоровы. Количество людей, действительно имеющих заболевание, представляет собой количество истинно положительных результатов теста плюс количество ложноотрицательных результатов теста. Количество действительно здоровых людей - это количество истинно отрицательных результатов теста плюс количество ложноположительных результатов теста.
Бинарная классификация
В задачах бинарной классификации есть два класса и . относится к числу выборок, которые были правильно определены как принадлежащие к классу а относится к числу выборок, которые были ошибочно идентифицированы как принадлежащие к классу . В этом случае чувствительность и специфичность определяются следующим образом:P N Tn n Fn n
Однако мы наблюдаем, что и . Это означает, что если у нас есть только два класса, нам не нужны чувствительность и специфичность для каждого класса.sensitivityα=specificityβ specificityα=sensitivityβ
N-Ary классификация
Чувствительность и специфичность для каждого класса бесполезны, если у нас есть только два класса, но мы можем расширить его на несколько классов. Чувствительность и специфичность определяется как:
Истинные позитивы просто , ложные негативы просто и ложные срабатывания просто . Найти истинные негативы гораздо сложнее, но мы можем сказать, что если мы правильно классифицируем что-то как принадлежащее к классу, отличному от это считается истинным негативом. Это означает, что у нас есть по крайней мере истинных негативов. Тем не менее, это не все настоящие негативы. Все неправильные классификации для класса, отличного от , также являются истинными отрицаниями, потому что они правильно не были идентифицированы как принадлежащие .Tn ∑i(Fn,i) ∑i(Fi,n) n ∑i(Ti)−T(n) n n ∑i(∑k(Fi,k)) представляет все неправильные классификации. Из этого мы должны вычесть случаи, когда входной класс был означая, что мы должны вычесть ложные отрицания для который является но мы также должны вычесть ложные срабатывания для поскольку они являются ложными срабатываниями, а не истинными отрицаниями, поэтому мы также должны вычесть наконец получив
. В итоге мы имеем:n n ∑i(Fn,i) n ∑i(Fi,n) ∑i(Ti)−T(n)+∑i(∑k(Fn,i))−∑i(Fn,i)−∑i(Fi,n)
Представляя уверенность
Мы определяем которая является мерой того, насколько мы можем быть уверены, что ответ нашей классификационной функции действительно верен. - все случаи, когда функция классификации ответила но только из них верны. Таким образом, мы определяемconfidence⊤ Tn+∑i(Fi,n) n Tn
Но можем ли мы также определить которая является мерой того, насколько мы можем быть уверены, что если наша классификационная функция отвечает классом, отличным от то она на самом деле не была ?confidence⊥ n n
Ну, мы получаем все из которых верны, кроме Таким образом, мы определяем∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn ∑i(Fn,i)
источник
Несбалансированные классы в вашем наборе данных
Короче говоря: представьте, 99% одного класса (скажем, яблоки) и 1% другого класса находятся в вашем наборе данных (скажем, бананы). Мой суперский алгоритм дает удивительную точность 99% для этого набора данных, проверьте его:
return "it's an apple"
Он будет прав в 99% случаев и, следовательно, получит точность 99%. Могу ли я продать вам мой алгоритм?
Решение: не используйте абсолютную меру (точность), но относительную к каждому классу меру (есть много, например, ROC AUC)
источник
Ответ DaL как раз это. Я проиллюстрирую это очень простым примером о ... продаже яиц.
Вы владеете магазином яиц, и каждое проданное яйцо приносит чистый доход в доллара. Каждый покупатель, который входит в магазин, может либо купить яйцо, либо уйти, не покупая его. Для некоторых клиентов вы можете сделать скидку, и вы получите только доллар дохода, но тогда клиент всегда будет покупать.12 1
Вы подключаете веб-камеру, которая анализирует поведение клиентов с помощью таких функций, как «нюхает яйца», «держит книгу с рецептами омлета» ... и классифицируете их как «хочет купить за доллара» (положительный результат) и «хочет купить». только на доллар "(отрицательный), прежде чем он уходит.12 1
Если ваш классификатор не ошибается, вы получите максимальный доход, который вы можете ожидать. Если это не идеально, тогда:
Тогда точность вашего классификатора - это то, насколько вы близки к максимальному доходу. Это идеальная мера.
Но теперь , если скидка доллары. Стоимость:a
Тогда вам нужна точность, взвешенная с этими числами в качестве меры эффективности классификатора. Например, если , мера совершенно другая. Эта ситуация, скорее всего, связана с несбалансированностью данных: лишь немногие клиенты готовы платить , а большинство заплатило бы . Вам не важно получать много ложных срабатываний, чтобы получить еще несколько истинных положительных результатов. Вы можете настроить порог классификатора в соответствии с этим.2 0,001a=0.001 2 0.001
Если классификатор относится к поиску соответствующих документов, например, в базе данных, то вы можете сравнить, сколько времени тратится на чтение ненужного документа, с поиском соответствующего документа.
источник
Точность классификации - это число правильных прогнозов, деленное на общее количество прогнозов.
Точность может вводить в заблуждение. Например, в проблеме, где существует большой дисбаланс классов, модель может предсказать значение класса большинства для всех прогнозов и достичь высокой точности классификации. Таким образом, необходимы дальнейшие измерения производительности, такие как оценка F1 и оценка Brier.
источник
Вы можете рассматривать точность как классификации: изначально привлекательная метрика, с которой сравниваются модели, которая не подходит для детального изучения.R2
В обоих случаях переоснащение может быть серьезной проблемой. Как и в случае высокого значения может означать, что вы моделируете шум, а не сигнал, с высокой точностью может быть красный флаг, который ваша модель применяет слишком жестко к вашему тестовому набору данных и не имеет общей применимости. Это особенно проблематично, когда у вас сильно разбалансированы классификационные категории. Наиболее точная модель может быть тривиальной, которая классифицирует все данные как одну категорию (с точностью, равной пропорции наиболее частой категории), но эта точность значительно упадет, если вам потребуется классифицировать набор данных с другим истинным распределением категорий ,R2
Как уже отмечали другие, другая проблема с точностью - это неявное равнодушие к цене неудачи, т. Е. Предположение, что все ошибочные классификации равны. На практике это не так, и затраты на получение неправильной классификации сильно зависят от предмета, и вы можете предпочесть свести к минимуму тот или иной вид ошибки, чем максимизировать точность.
источник