Ewaluacja algorytmu ML, krótka historia o detektorze pożaru i Titanicu

Wśród algorytmów ML znajdują się takie, które mają zaklasyfikować zdarzenie do jednej z 2 możliwych kategorii. Przykładowo na portalu Kaggle można znaleźć dataset z informacjami na temat ludzi płynących na statku Titanic.

Nawet najprostszy klasyfikator w postaci KNN można “nauczyć” klasyfikacji osób do tych, które katastrofę przeżyły oraz tych, które miałyby mniej szczęścia. Klasyfikator zazwyczaj osiąga dokładność wynoszącą 80%, co jest generalnie dobrym wynikiem. Generalnie, bo jednak 20% klasyfikacji jest błędna. Dla takiego zabawkowego zadania nie poniesiemy większy konsekwencji związanych ze złą klasyfikacją, jednak są trudniejsze przykłady.

W budynku zamontowaliśmy pełno czujników podłączonych do komputera. Komputer wyposażony w odpowiedni algorytm ML decyduje, czy w budynku wybuchł pożar i należy zarządzić ewakuację włączając syreny (można dodatkowo włączyć spryskiwacze, co zaleje całe pomieszczenia wodą), czy to tylko “przypalony garnek” ewentualnie elektroniczny papieros. Tak zamontowany system detekcji ma dokładność wynoszącą 99%. Czyli na 100 podejrzanych przypadków pożaru pomyli się jedynie w jednym przypadku – hmm to dużo czy mało ??

W przypadku detektora podobną dokładność miałby zwykły program jednolinijkowy, który z każdym przypadkiem informowałby o braku pożaru. Miara dokładności również byłaby wysoka, a nawet sięgnęła 99% przypadków, gdyż pożarów faktycznych jest naprawdę mało. Po tym przykładzie dobitnie widać, że sama miara dokładności nie wystarczy w ocenie przydatności klasyfikatora.

Ten wpis wskaże 4 inne miary, które są niezbędne do oceny algorytmów. Są to poza macierzą omyłek:

  • dokładność
  • precyzja
  • pełność
  • f-miara

Macierz omyłek – kwadratowa macierz K x K, gdzie K jest liczbą klas (czyli kategorii, do których kwalifikujemy zdarzenie). Każdy wiersz odpowiada faktycznej klasie obiektu (np. jest pożar lub brak pożaru), a kolumny odpowiadają klasom wskazanym przez algorytm.

Przykładowa macierz omyłek dla klasyfikatora, który na 100 zdarzeń pożarów, w tym 10 faktycznych pożarów, miał dokładność 95% wygląda jak niżej.

zaklasyfikowane przez algo ->a b
a = jest pożar55
b = brak pożaru090
TP = 5 FP = 0 TN=90 FN=5

Na bazie macierzy omyłek można obliczyć inne miary.

Dokładność: TP + TN / All – najprostsza miara ale bardzo podatna na zakłamania (przykład programu jednolinijkowego).

5 + 90 / 100 = 95%

Precyzja (Precision) P = TP/(TP+FP)

5 / 5 + 0 = 1

Precyzja to proporcja przypadków zaklasyfikowanych jako pozytywne i faktycznie pozytywnych do wszystkich przypadków zaklasyfikowanych jako pozytywne.

Pełność (Recall) R = TP/(TP+FN)

5 / 5 + 5 = 1/2

Pełność to proporcja przypadków zaklasyfikowanych jako pozytywne i faktycznie pozytywne do wszystkich faktycznie pozytywnych

f-miara F = 2PR/(P+R) (średnia harmoniczna P i R)

2×1/2 : 3/2 = 2/3

F miara została wprowadzona jako jedna miara zastępująca precyzje i pełność bo w praktyce poprawa jednej miary łączy się z pogorszeniem drugiej. F miara zbiorczo traktuje oba parametry, więc można ją maksymalizować.

Miara miarą, ale jak płonie budynek, a syreny milczą, to nawet dokładność 95% nie wystarczy, żeby uznać taki system zabezpieczeń za bezpieczny. To byłoby na tyle, aby skrótowo zasygnalizować miary ewaluacji algorytmów ML.

Życzę wszystkim sześcian, bo ci na Titanicu byli zdrowi, tylko algorytm ich oznaczył jako “nie przeżył/a” :).

Leave your comment: