Проблема с точностью
Стандартная точность определяется как отношение правильных классификаций к числу выполненных классификаций.
accuracy:=correct classificationsnumber of classifications
Таким образом, он в целом измеряется во всех классах, и, как мы вскоре увидим, не очень хорошая мера отличить оракула от реального полезного теста. Оракул - это функция классификации, которая возвращает случайное предположение для каждой выборки. Аналогично, мы хотим иметь возможность оценить эффективность классификации нашей функции классификации. Точность \ textit {can} может быть полезной мерой, если у нас одинаковое количество выборок на класс, но если у нас несбалансированный набор, точность выборок вообще не нужна. Более того, тест может иметь высокую точность, но на самом деле выполнять хуже, чем тест с меньшей точностью.
Если у нас есть распределение выборок, такое что 90 \% выборок принадлежит классу , 5 \% принадлежит и еще 5 \% принадлежит тогда следующая классификационная функция будет иметь точность :ABC0.9
classify(sample):={Aif ⊤
Тем не менее, очевидно, учитывая, что мы знаем, как работает что она не может отличить классы вообще. Аналогично, мы можем построить классификационную функциюclassify
classify(sample):=guess⎧⎩⎨ABCwith p =0.96with p =0.02with p =0.02
который имеет точность и не всегда будет предсказывать
но, тем не менее, учитывая, что мы знаем, как работает , очевидно, что он не может отличить классы друг от друга. Точность в этом случае говорит нам только о том, насколько хороша наша классификационная функция при угадывании. Это означает, что точность не является хорошей мерой, чтобы отличить оракула от полезного теста.0.96⋅0.9+0.02⋅0.05⋅2=0.866Aclassify
Точность на класс
Мы можем вычислить точность индивидуально для каждого класса, предоставив нашей функции классификации только выборки из одного и того же класса, запомни и посчитав количество правильных классификаций и неправильных классификаций, а затем вычислим . Мы повторяем это для каждого класса. Если у нас есть классификационная функция, которая может точно распознавать класс
но выдает случайное предположение для других классов, то это дает точность для
и точностьaccuracy:=correct/(correct+incorrect)A1.00A0.33для других классов. Это уже дает нам гораздо лучший способ оценить эффективность нашей функции классификации. Оракул, всегда угадывающий один и тот же класс, будет давать точность каждого класса для этого класса, но для другого класса. Если наш тест полезен, все точности для каждого класса должны быть . В противном случае наш тест не лучше, чем шанс. Тем не менее, точность каждого класса не учитывает ложных срабатываний. Даже если наша классификационная функция имеет точность 100 \% для класса , также будут ложные срабатывания для (например, ошибочно классифицированный как ).1.000.00>0.5AABA
Чувствительность и Специфика
В медицинских тестах чувствительность определяется как соотношение между людьми, правильно определенными как имеющие заболевание, и количеством людей, действительно имеющих заболевание. Специфичность определяется как соотношение между людьми, правильно определенными как здоровые, и количеством людей, которые действительно здоровы. Количество людей, действительно имеющих заболевание, представляет собой количество истинно положительных результатов теста плюс количество ложноотрицательных результатов теста. Количество действительно здоровых людей - это количество истинно отрицательных результатов теста плюс количество ложноположительных результатов теста.
Бинарная классификация
В задачах бинарной классификации есть два класса и . относится к числу выборок, которые были правильно определены как принадлежащие к классу а относится к числу выборок, которые были ошибочно идентифицированы как принадлежащие к классу . В этом случае чувствительность и специфичность определяются следующим образом:PNTnnFnn
sensitivity:=TPTP+FNspecificity:=TNTN+FP
TP - истинные позитивы, - ложные негативы,
- настоящие негативы, а - ложные срабатывания. , Тем не менее, мышление с точки зрения негативов и позитивов хорошо для медицинских тестов, но для того, чтобы получить лучшую интуицию, мы должны думать не с точки зрения негативов и позитивов, а в общих классах и . Затем мы можем сказать, что количество сэмплов, правильно идентифицированных как принадлежащих равно а количество сэмплов, фактически принадлежащих равноFNTNFPαβαTααTα+Fβ, Количество сэмплов, правильно определенных как не принадлежащие равно а количество сэмплов, фактически не принадлежащих равно
. Это дает нам чувствительность и специфичность для но мы также можем применить то же самое к классу . Количество образцов, правильно идентифицированных как принадлежащие равно
а количество образцов, фактически принадлежащих равно . Количество образцов, правильно определенных как не принадлежащие к равноαTβαTβ+FααββTββTβ+FαβTαи количество образцов, фактически не принадлежащих равно . Таким образом, мы получаем чувствительность и специфичность для каждого класса:βTα+Fβ
sensitivityα:=TαTα+Fβspecificityα:=TβTβ+Fαsensitivityβ:=TβTβ+Fαspecificityβ:=TαTα+Fβ
Однако мы наблюдаем, что и . Это означает, что если у нас есть только два класса, нам не нужны чувствительность и специфичность для каждого класса.sensitivityα=specificityβspecificityα=sensitivityβ
N-Ary классификация
Чувствительность и специфичность для каждого класса бесполезны, если у нас есть только два класса, но мы можем расширить его на несколько классов. Чувствительность и специфичность определяется как:
sensitivity:=true positivestrue positives+false negativesspecificity:=true negativestrue negatives+false-positives
Истинные позитивы просто , ложные негативы просто и ложные срабатывания просто . Найти истинные негативы гораздо сложнее, но мы можем сказать, что если мы правильно классифицируем что-то как принадлежащее к классу, отличному от это считается истинным негативом. Это означает, что у нас есть по крайней мере истинных негативов. Тем не менее, это не все настоящие негативы. Все неправильные классификации для класса, отличного от , также являются истинными отрицаниями, потому что они правильно не были идентифицированы как принадлежащие . Tn∑i(Fn,i)∑i(Fi,n)n∑i(Ti)−T(n)nn∑i(∑k(Fi,k))представляет все неправильные классификации. Из этого мы должны вычесть случаи, когда входной класс был означая, что мы должны вычесть ложные отрицания для который является но мы также должны вычесть ложные срабатывания для поскольку они являются ложными срабатываниями, а не истинными отрицаниями, поэтому мы также должны вычесть наконец получив
. В итоге мы имеем:nn∑i(Fn,i)n∑i(Fi,n)∑i(Ti)−T(n)+∑i(∑k(Fn,i))−∑i(Fn,i)−∑i(Fi,n)
true positives:=Tntrue negatives:=∑i(Ti)−T(n)+∑i(∑k(Fn,i))−∑i(Fn,i)−∑i(Fi,n)false positives:=∑i(Fi,n)false negatives:=∑i(Fn,i)
sensitivity(n):=TnTn+∑i(Fn,i)specificity(n):=∑i(Ti)−Tn+∑i(∑k(Fi,k))−∑i(Fn,i)−∑i(Fi,n)∑i(Ti)−Tn+∑i(∑k(Fi,k))−∑i(Fn,i)
Представляя уверенность
Мы определяем которая является мерой того, насколько мы можем быть уверены, что ответ нашей классификационной функции действительно верен. - все случаи, когда функция классификации ответила но только из них верны. Таким образом, мы определяемconfidence⊤Tn+∑i(Fi,n)nTn
confidence⊤(n):=TnTn+∑i(Fi,n)
Но можем ли мы также определить которая является мерой того, насколько мы можем быть уверены, что если наша классификационная функция отвечает классом, отличным от то она на самом деле не была ?confidence⊥nn
Ну, мы получаем все из которых верны, кроме Таким образом, мы определяем∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn∑i(Fn,i)
confidence⊥(n)=∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn−∑i(Fn,i)∑i(∑k(Fi,k))−∑i(Fi,n)+∑i(Ti)−Tn