Точността добра мярка ли е?

Когато говорим за измерване на производителността на класификационен модел на машинно обучение, първият термин, който ни идва наум, е Точност, който е много прост, но много мощен. Но може ли точността наистина да помогне за разбирането на модела във всеки сценарий? Отговорът е Не. Нека да видим кога точността може да не покаже дали даден модел е добър или не.

Сега нека приемем, че моделът, който тестваме, е „тъп модел“. Това означава, че в повечето случаи моделът класифицира входните данни само в един клас. За нашия пример нека приемем, че това е само отрицателен клас. Ще обозначим Отрицателния клас като ‘0’, а Положителния клас като ‘1’.

В изображението по-горе има 100 точки от данни за тестване на модела, от които 90 принадлежат към отрицателния клас и 10 принадлежат към положителния клас. Тъй като нашият модел е тъп и предвижда всеки вход да бъде отрицателен изход от клас, затова няма истински положителни (TP) отговори и точността достига до 0,9, което е 90%.

Ако погледнете само числото, значи 90% е много добро число, но ако погледнете внимателно матрицата на объркването, всички прогнози са направени само в полза на отрицателния клас. Следователно не можем да гледаме само точността и да решим дали моделът е добър или не.

Други мерки за ефективност могат да се използват в такива случаи като прецизност и извикване. Но преди това нека разберем подробно матрицата на объркването.

Подробно разбиране на матрицата на объркването:

Терминологии:

TN: Истински отрицателен (Всички точки, които действително са отрицателни и прогнозирани отрицателни)

FN: фалшиво отрицателно (всички точки, които всъщност са положителни, но прогнозирани отрицателни)

FP: фалшиво положително (всички точки, които всъщност са отрицателни, но прогнозирани положителни)

TP: Истински положителен (Всички точки, които действително са положителни и прогнозирани положителни)

Прогнозирано отрицателно: Всички точки, които са прогнозирани отрицателни от модела.

Прогнозирани положителни: Всички точки, които са прогнозирани положителни от модела.

Действителен отрицателен: Всички точки, които действително са отрицателни.

Действително положително: Всички точки, които действително са положителни.

Има няколко прозрения, които можем да получим от матрицата на объркването, като например:

Точност = (TP+TN)/(TP+TN+FP+FN)

Истински положителен процент (TPR) = TP/(TP+FN)

Истински отрицателен процент (TNR) = TN/(TN+FP)

Процент на фалшиви положителни резултати (FPR) = FP/(TN+FP)

Грешно отрицателна честота (FNR) = FN/(TP+FN)

TPR: Разказва за дела на правилно предвидените положителни точки от всички действителни положителни точки.

TNR: Разказва за дела на правилно прогнозираните отрицателни точки от всички действителни отрицателни точки.

FNR: Разказва за съотношението на грешно прогнозираните отрицателни точки от всички действителни положителни точки.

FPR: Разказва за съотношението на грешно предвидените положителни точки от всички действителни отрицателни точки.

Дебатът за избора между прецизност и припомняне е много стар и много объркващ. Така че нека го разберем с няколко прости примера.

Прецизност:

Прецизността разказва от всички точки, които моделът е предвидил като положителни, каква част всъщност е положителна. Така че се фокусира върху фалшиви положителни резултати. Намалете фалшивите положителни резултати, по-висока е прецизността.

прецизност = TP/(TP+FP)

Припомняне:

Recall разказва от всички действителни положителни точки каква пропорция моделът е предсказал правилно положително. Това не е нищо друго освен истинският положителен процент. Така че се фокусира върху фалшиви отрицания. По-малко фалшиво отрицание, по-високо извикване.

извикване = TP/(TP+FN)

Сега въпросът е кога какво да изберем?

Нека видим с няколко примера:

Случай на използване 1: Имаме модел за машинно обучение на двоичен класификатор, който приема URL адреса на уебсайта като вход и казва дали уебсайтът е безопасен или небезопасен за деца. Така че изходът е (безопасен, небезопасен).

Етикети: Безопасно:1, опасно:0

сега нека видим този случай в матрицата на объркването и да разберем върху какво трябва да се съсредоточим.

В този случай нашият основен фокус е всеки URL адрес, който е опасен за деца, да не бъде класифициран като безопасен. От друга страна, ако някой безопасен URL е класифициран като опасен, това не е голям проблем.

Така разбрахме, че трябва да намалим броя на фалшивите безопасни прогнози (погрешно класифицирани като безопасни). В изображението по-горе можем да видим, че False safe не е нищо друго освен False Positive (FP), така че сега просто трябва да проверим между прецизността и извикването кое се фокусира повече върху намаляването на False Positive.

В горното определение за прецизност и припомняне разбрахме, че прецизността се фокусира върху фалшиво положително, следователно можем да кажем, че за този случай на употреба можем да считаме прецизността за добра мярка за ефективност.

Случай на използване 2:Имаме модел за машинно обучение с двоичен класификатор, който приема докладите за диагнозата на хора като входни данни и казва дали човекът има рак или не. Така че резултатът е (has_cancer, no_cancer).

Етикет:has_cancer:1, no_cancer:0

сега нека видим този случай също в матрицата на объркването и да разберем върху какво трябва да се съсредоточим.

В този случай основният ни фокус е, че всеки човек, който има рак, не трябва да бъде класифициран като no_cancer, тъй като това е много критичен случай, всеки човек, който има рак, ако бъде класифициран като no_cancer, ще бъде в опасност. Но ако човек, който няма рак, е класифициран като има_рак, може да отиде на допълнителни тестове и да бъде сигурен в това.

Така разбрахме, че трябва да намалим броя на фалшивите прогнози за no_cancer (погрешно класифицирани като no_cancer). В изображението по-горе можем да видим, че False no_cancer не е нищо друго освен False Negative (FN), така че сега просто трябва да проверим между прецизността и извикването кое се фокусира повече върху намаляването на False Negative.

В горното определение за прецизност и припомняне разбрахме, че припомнянето се фокусира върху фалшиво отрицателно, следователно можем да кажем, че за този случай на употреба можем да считаме припомнянето за добра мярка за ефективност.

И в двата горни случая на използване или прецизността беше полезна, или си припомнете какво, ако имаме нужда и двете да бъдат високи. В такива случаи можем да използваме F1-Score.

F1-резултат:

F1-Score е хармоничната средна стойност на прецизност и припомняне. Тъй като има както прецизност, така и запомняне, се счита за добра мярка.

F1-резултат = 2 * (прецизност * припомняне)/(прецизност + припомняне)

Сега трябва да ви хрумне един въпрос защо F1-резултатът се нарича хармонична средна стойност. Нека да разберем защо?

Така че има различни видове налични средства, които можем да използваме и ще ги използваме, за да видим какво генерират за точност=0,1 и припомняне=0,9. Взехме ниска прецизност и високо припомняне, така че крайният резултат не трябва да е достатъчно добър, за да приемем модела, тъй като и прецизността, и припомнянето трябва да са високи за модела, който ще бъде избран.

Средна аритметична точност и припомняне:

AM = (прецизност + припомняне)/2

AM = (0.1+0.9)/2 = 0.5

Средна геометрична точност и припомняне:

GM = sqrt(прецизност*извикване)

GM = sqrt(0,1*0,9) = 0,3

Хармонично средно на прецизност и припомняне:

HM = 2 * (прецизност * припомняне)/(прецизност + припомняне)

HM = 2 * (0.1 * 0.9)/(0.1 + 0.9) = 0.18

Във всичките три средни резултати най-наказаната средна е хармоничната средна, следователно ние я използваме, защото ако някоя от стойностите е много ниска, това ще накаже резултата.

Надяваме се, че тази статия е изчистила съмненията ви, свързани с прецизността, припомнянето и F1-резултат.