Wskaźnik Giniego na bazie wartości oczekiwanej / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 19)

W trakcie minionej nocy, około godziny 02:00, miałem nagły przebłysk 🙂 Prawdziwie magiczna chwila! 🙂 Jakoś tak, nie wiem dlaczego, przypomniałem sobie pewną zależność dla wartości oczekiwanej zmiennej losowej o wartościach nieujemnych. Zdałem sobie sprawę, że na tej podstawie, jestem w stanie opracować twierdzenie dotyczące wskaźnika Giniego (dla modelu predykcyjnego), dające elegancką postać oraz łatwe narzędzie jego estymacji. Wzór, który wyprowadziłem, bazuje na wartości oczekiwanej, dającej się z powodzeniem przybliżyć średnią (np. w SQL). Zaczynamy część #19 cyklu "Ocena jakości klasyfikacji", jest to "hardcorowy" wpis z serii "Tips & Tricks na krzywych" 🙂 Zapraszam!

Zmienna losowa reprezentująca rząd kwantyla (pozycję) elementu w populacji

  • Niech będzie dana zmienna losowa Q\in[0;1], której wartość reprezentuje rząd kwantyla odpowiadający danemu elementowi, gdzie porządek jest dany malejącą oceną modelem. Inaczej - Q to frakcja bazy.
  • Niech y\in\{0,1\} oznacza klasę faktyczną.
  • Rozważmy zmienne losowe: Q|y=1 oraz Q|y=0.
  • W częściach #13 oraz #14 wykazałem, że zmienne Q|y=1 oraz Q|y=0 są opisane funkcjami gęstości podanymi przez: lifty nieskumulowane odpowiednio dla klasy "1" oraz klasy "0".
  • Również w częściach #13 oraz #14 wykazałem, że zmienne Q|y=1 oraz Q|y=0 są opisane dystrybuantami podanymi przez: odpowiednio TPR dla klasy "1" oraz TNR dla klasy "0" (tam te funkcje nazywałem Captured Response).
  • W części #15 wykazałem, że wskaźniki Giniego, zdefiniowane osobno dla klasy "1" oraz klasy "0", są sobie równe - grafika poniżej.

Równość wskaźników Giniego

  • Również w części #15 pokazałem, że

Gini=\frac{2G_1}{1-apriori}=\frac{2G_0}{apriori}

  • Z powyższego, po drobnych przekształceniach

G_1=\frac{(1-apriori)\times Gini}{2}

G_0=\frac{apriori\times Gini}{2}

Wartość oczekiwana zmienne losowej o wartościach nieujemnych

Poniższą zależność pamiętam z analizy przeżycia, gdzie średnią długość przeżycia liczono jako całkę pod funkcją przeżycia 🙂 Każda funkcja przeżycia ma postać S(t)=1-F(t), gdzie F to pewna dystrybuanta.

Twierdzenie: Jeśli zmienna losowa X, o ciągłym rozkładzie, przyjmuje wartości nieujemne to:

EX=\displaystyle\int_0^\infty P(X\geq x)dx

Zakładając, że F jest dystrybuantą zmiennej X, bazując na ciągłości rozkładu, możemy zapisać

EX=\displaystyle\int_0^\infty \Big(1-F(x)\Big)dx

W takim przypadku wartość oczekiwana to pole powierzchni "nad" dystrybuantą ograniczone prostą o wartości 1.

Wskaźniki Giniego na bazie E(Q|y=1)

Załóżmy, że Q|y=1 ma rozkład ciągły, wtedy

E(Q|y=1)=\displaystyle\int_0^1\Big(1-TPR(q)\Big)dq

Wartość oczekiwana dla klasy pozytywnej

Ale

\displaystyle\int_0^1\Big(1-TPR(q)\Big)dq=\frac{1}{2}-G_1

Więc

E(Q|y=1)=\frac{1}{2}-G_1

Podstawiając

E(Q|y=1)=\frac{1}{2}-G_1=

=\frac{1}{2}-\frac{(1-apriori)\times Gini}{2}

E(Q|y=1)=\frac{1-(1-apriori)\times Gini}{2}

Przekształcając

2\times E(Q|y=1)=1-(1-apriori)\times Gini

(1-apriori)\times Gini=1-2\times E(Q|y=1)

Twierdzenie:

Gini=\frac{1-2\times E(Q|y=1)}{1-apriori}

Wow - wystarczy średni rząd kwantyla na targecie pozytywnym i apriori 🙂

Wskaźniki Giniego na bazie E(Q|y=0)

Załóżmy, że Q|y=0 ma rozkład ciągły, wtedy

E(Q|y=0)=\displaystyle\int_0^1\Big(1-TNR(q)\Big)dq

Wartość oczekiwana dla klasy negatywnej

Ale

\displaystyle\int_0^1\Big(1-TNR(q)\Big)dq=\frac{1}{2}+G_0

Więc

E(Q|y=0)=\frac{1}{2}+G_0

Podstawiając

E(Q|y=0)=\frac{1}{2}+G_0=

=\frac{1}{2}+\frac{apriori\times Gini}{2}

E(Q|y=0)=\frac{1+apriori\times Gini}{2}

Przekształcając

2\times E(Q|y=0)=1+apriori\times Gini

apriori\times Gini=2\times E(Q|y=0)-1

Twierdzenie:

Gini=\frac{2\times E(Q|y=0)-1}{apriori}

Wow - tym razem wystarczy średni rząd kwantyla na targecie negatywnym i apriori 🙂

Wniosek:

\frac{1-2\times E(Q|y=1)}{1-apriori}=\frac{2\times E(Q|y=0)-1}{apriori}

Przypadki graniczne

Gini dla modelu losowego powinien wynosić 0, a dla modelu teoretycznie idealnego oczekujemy wartości 1 - sprawdźmy.

Wartość oczekiwana dla przypadków skrajnych

Model losowy

  • E(Q|y=1)=0.5
  • E(Q|y=0)=0.5

Gini=\frac{1-2\times E(Q|y=1)}{1-apriori}=

=\frac{1-2\times 0.5}{1-apriori}=

=\frac{0}{apriori}=0 - jest ok 🙂

Gini=\frac{2\times E(Q|y=0)-1}{apriori}=

=\frac{2\times 0.5-1}{apriori}=

=\frac{0}{apriori}=0 - jest ok 🙂

Model teoretycznie idealny

  • E(Q|y=1)=\frac{apriori}{2}
  • E(Q|y=0)=\frac{aprior+1}{2}

Gini=\frac{1-2\times E(Q|y=1)}{1-apriori}=

=\frac{1-2\times\frac{apriori}{2}}{1-apriori}=

=\frac{1-apriori}{1-apriori}=1 - jest ok 🙂

Gini=\frac{2\times E(Q|y=0)-1}{apriori}=

=\frac{2\times\frac{aprior+1}{2}-1}{apriori}=

=\frac{apriori+1-1}{apriori}=1 - jest ok 🙂

Uwaga praktyczna

Jeśli model predykcyjny zwraca dużo nieunikalnych wartości, licząc rząd kwantyla, warto zastąpić go rzędem na bazie pozycji elementu - inaczej wyniki na bazie średniej mogą być nieprzewidywalne (szczególnie dla małych apriori). Wzory testowane na realnych danych 🙂

Pozdrowienia 🙂

Mariusz Gromada

Dwie klasy, ale jeden wskaźnik Giniego / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 15)

Dziś zadałem sobie pytanie: jak mają się do siebie wskaźniki Giniego, gdyby je osobno zdefiniować dla klasy pozytywnej "tzn. klasy 1" oraz klasy negatywnej "tzn. klasy 0"? Odpowiedź uzyskałem, czego efektem jest 15 część cyklu "Ocena jakości klasyfikacji". Tytuł wpisu nawiązuje do faktu, że separację dwóch klas uzyskujemy jednym (i tym) samym modelem 🙂 co poniekąd sugeruje, że ... 🙂

... wskaźniki Giniego dla klasy pozytywnej i klasy negatywnej są sobie równe!

Wskaźnik Giniego dla klasy pozytywnej + Wskaźnik Giniego dla klasy negatywnej 0

Gini_1=\frac{G_1}{G_1+P_1}

Gini_0=\frac{G_0}{G_0+P_0}

Gini_1=Gini_0

Dowód:

Wykorzystując wzór na pole trójkąta zapisujemy:

Gini_1=\frac{G_1}{\quad\frac{1-apriori}{2}\quad}=\frac{2G_1}{1-apriori}

Gini_0=\frac{G_0}{\quad\frac{apriori}{2}\quad}=\frac{2G_0}{apriori}

Zauważamy, że pole G_0 można wyznaczyć na bazie różnicy pomiędzy polem trójkąta i polem powierzchni pod krzywą CR_0:

G_0=\frac{1}{2}-\displaystyle\int_0^1 CR_0(q)dq

Korzystając z zależności pomiędzy CR_1 oraz CR_0 wyprowadzonej w części 14 "Captured Response dla klasy negatywnej" przekształcamy

G_0=\frac{1}{2}-\displaystyle\int_0^1\bigg(\frac{q-apriori\times CR_1(q)}{1-apriori}\bigg)dq=

=\frac{1}{2}-\frac{1}{1-apriori}\displaystyle\int_0^1\bigg(q-apriori\times CR_1(q)\bigg)dq=

=\frac{1}{2}-\frac{1}{1-apriori}\Bigg(\displaystyle\int_0^1 qdq-apriori\displaystyle\int_0^1 CR_1(q)dq\Bigg)=

=\frac{1}{2}-\frac{1}{1-apriori}\Bigg[\frac{q^2}{2}\bigg|_0^1-apriori\bigg(G_1+\frac{1}{2}\bigg)\Bigg]=

=\frac{1}{2}-\frac{1}{1-apriori}\bigg(\frac{1}{2}-apriori\times G_1-\frac{apriori}{2}\bigg)

=\frac{1}{2}-\frac{1}{2(1-apriori)}+\frac{apriori\times G_1}{1-apriori}+\frac{apriori}{2(1-apriori)}=

=\frac{1-apriori}{2(1-apriori)}-\frac{1}{2(1-apriori)}+

+\frac{apriori\times 2G_1}{2(1-apriori)}+\frac{apriori}{2(1-apriori)}=

=\frac{1-apriori-1+apriori\times 2G_1+apriori}{2(1-apriori)}=

=\frac{apriori\times 2G_1}{2(1-apriori)}=

=\frac{apriori}{2}\times\frac{2G_1}{1-apriori}=

=\frac{apriori}{2}\times Gini_1

G_0=\frac{apriori}{2}\times Gini_1

Ale

Gini_0=\frac{2G_0}{apriori}=

=\frac{2}{apriori}\times G_0=\frac{2}{apriori}\times\frac{apriori}{2}\times Gini_1

Gini_0=Gini_1

cbdo 🙂

Pozdrowienia,

Mariusz Gromada

Wskaźnik Giniego na bazie Captured Response / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 12)

Wskaźnik Giniego, który opisałem w części #7 poświęconej krzywej ROC, jest jednym z najważniejszych narzędzi wykorzystywanych w procesie oceny jakości klasyfikacji. Choć krzywa ROC jest ważna i bardzo przydatna, to z mojego doświadczenia wynika, że większość analityków woli wykreślać krzywą Captured Response. Sądzę, że wszyscy intuicyjnie czujemy, że "Gini z ROC" i "Gini z Captured Response" to to samo 🙂 Ale dlaczego tak jest? 🙂 Dziś odpowiem na to pytanie, jednocześnie wzbogacając serię "Tips & Tricks na krzywych"!

Wskaźnik Giniego z krzywej Captured Response

Gini=\frac{P_1}{P_1+P_2}=\frac{P_1^\prime}{P_1^\prime+P_2^\prime}

Krzywa Captured Response jako przekształcenie liniowe krzywej ROC

W części #8 wykazałem, że krzywą ROC i krzywą Captured Response łączy poniższa formuła.

X_{cr}=\Big(1-apriori\Big)\times X_{roc}+apriori\times Y_{roc}

Y_{cr}=Y_{roc}

Wskaźnik Giniego z krzywej Captured Response - wektory

Powyższy wzór można zapisać na bazie przekształcenia liniowego

\begin{bmatrix}1-apriori & apriori\\0 & 1\end{bmatrix}\times\begin{bmatrix}X_{ROC}\\Y_{ROC}\end{bmatrix}=\begin{bmatrix}X_{CR}\\Y_{CR}\end{bmatrix}

 opisanego macierzą przekształcenia liniowego

A=\begin{bmatrix}1-apriori & apriori\\0 & 1\end{bmatrix}

Po szczegóły odsyłam do części #8 "Captured Response = ROC x apriori".

Wyznacznik macierzy przekształcenia liniowego i współczynnik zmiany pola powierzchni

Przekształcenie liniowe - Pole powierzchni - Wyznacznik macierzy przekształcenia

Jeśli analizujemy przekształcenie liniowe

Ax

gdzie A jest macierzą przekształcenia liniowego, a x wektorem, to wyznacznik

\text{det}(A)

jest współczynnikiem o jaki zmienia się pole powierzchni / objętość / miara figury / obiektu transformowanego poprzez przekształcenie liniowe Ax. Polecam poniższy film.

Wyznacznik macierzy przekształcenia liniowego krzywej ROC w krzywą Captured Response

\text{det}(A)=\text{det}\begin{bmatrix}1-apriori & apriori\\0 & 1\end{bmatrix}=1-apriori

Z powyższego wynika, że pole powierzchni pomiędzy przestrzenią, w której "osadzona" jest krzywa ROC, a przestrzenią "zawierającą" krzywą Captured Response, powinno się skalować poprzez współczynniki 1-apriori. Sprawdźmy 🙂

P_1+P_2=\frac{1}{2}

Wykorzystując wzór na pole trójkąta wyznaczamy

P_1^\prime+P_2^\prime=\frac{1}{2}(1-apriori)

Zgadza się 🙂 I ostatecznie

\frac{P_1^\prime}{P_1^\prime+P_2^\prime}=\frac{P_1(1-apriori)}{(P_1+P2)(1-apriori)}=\frac{P_1}{P_1+P_2}

czyli

Gini=\frac{P_1}{P_1+P_2}=\frac{P_1^\prime}{P_1^\prime+P_2^\prime}

Jako ciekawostka - podobnie można policzyć AUROC z Captured Response:

AUROC=P_1+\frac{1}{2}=\frac{P_1^\prime}{1-apriori}+\frac{1}{2}

Pozdrowienia,

Mariusz Gromada

Receiver Operating Characteristic - Krzywa ROC - czyli ocena jakości klasyfikacji (część 7)

Receiver Operating Characteristic - Krzywa ROC - geneza nazwy

Termin "Krzywa ROC" wywodzi się z teorii detekcji sygnałów, której zadaniem jest odróżnienie sygnału będącego informacją (np. sygnały z maszyn / urządzeń elektronicznych, bodźce pochodzące z organizmów żywych) od wzorców przypadkowych nie zawierających informacji (szum, tło, aktywność losowa). Pierwsze wykorzystanie krzywej ROC datuję się na okres II Wojny Światowej. Po ataku na Pearl Harbor w 1941, USA zaczęły poszukiwać lepszej metody analizy sygnałów radarowych w celu zwiększenia wykrywalności Japońskich samolotów.

Receiver Operating Characteristic - Krzywa ROC - definicja

W statystyce matematycznej krzywa ROC jest graficzną reprezentacją efektywności modelu predykcyjnego poprzez wykreślenie charakterystyki jakościowej klasyfikatorów binarnych powstałych z modelu przy zastosowaniu wielu różnych punktów odcięcia. Mówiąc inaczej - każdy punkt krzywej ROC odpowiada innej macierzy błędu (zobacz tutaj) uzyskanej przez modyfikowanie "cut-off point" (zobacz tu). Im więcej różnych punktów odcięcia zbadamy, tym więcej uzyskamy punktów na krzywej ROC. Finalnie na wykres nanosimy TPR (True-Positive Rate - oś pionowa) oraz FPR (False-Positive Rate - oś pozioma).

c - punkt odcięcia

\quad c\mapsto \Big(x(c),y(c)\Big)=\Big(FPR(c),TPR(c)\Big)

Krzywa ROC - Receiver Operating Characteristic

Krzywa ROC, będąc funkcją punktu odcięcia, przedstawia zmienność TPR (miary pokrycia / wychwycenia klasy faktycznie pozytywnej) w zależności od FPR (poziomu błędu popełnianego na klasie faktycznie negatywnej). Jak zawsze chodzi o pewien kompromis, tzn. dobierając "cut-off" chcemy maksymalizować TPR "trzymając w ryzach" błąd FPR. Analiza relacji TPR(FPR) jest niezwykle przydatna, ale najpierw przypomnijmy kilka podstawowych definicji.

Krótkie przypomnienie podstawowych definicji

Macierz błędu

TPR, TNR, PPV, NPV

TPR True-Positive Rate (czyli czułość)

TPR=\frac{TP}{TP+FN}=P(pred=P|fakt=P)=

=P(pred=1|fakt=1)=P(1|1)

FPR False-Positive Rate (czyli 1-specyficzność)

FPR=\frac{FP}{FP+TN}=P(pred=P|fakt=N)=

P(pred=1|fakt=0)=P(1|0)=1-P(0|0)=1-TNR

Interpretacja ROC

ROC - Klasyfikator teoretycznie idealny + Klasyfikator losowy

Klasyfikator teoretycznie idealny reprezentowany jest przez punkt (0,1), natomiast klasyfikatory powstałe z modelu losowego "leżą" na prostej TPR=FPR.

Krzywa ROC - Interpretacja - Receiver Operating Characteristic

 

ROC - Punkt równowagi (czułość = specyficzność)

Punkt równowagi leży na przecięciu ROC z prostą TPR = 1-FPR = TNR i reprezentuje "cut-off" point, dla którego klasyfikator osiąga równowagę czułość = specyficzność.

Krzywa ROC - Punkt równowagi - Receiver Operating Characteristic

 

ROC - Współczynnik Giniego

Współczynnik Giniego to pole powierzani pomiędzy krzywą ROC dla badanego modelu oraz krzywą ROC dla modelu losowego w interpretacji procentowej do wartości 1/2 - czyli pola powierzchni dla klasyfikatora teoretycznie idealnego. Współczynnik Giniego jest doskonałą miarą jakości modelu i może być interpretowany jako % "idealności" danego modelu predykcyjnego.

Krzywa ROC - Współczynnik Giniego - Receiver Operating Characteristic

  • Im większy wskaźnik Giniego tym lepiej
  • Wartość wskaźnika Giniego nie zależy od apriori (teoretycznie), w praktyce trudniej o silny model jeśli apriori jest duże
  • Gini = 100% dla modelu teoretycznie idealnego
  • Gini = 0% dla modelu losowego

 

Pole powierzani pod krzywą ROC - AUC, AUROC

Tym razem wyznaczamy całość pola powierzchni pod wykresem ROC odnosząc wartość do analogicznego pola dla modelu idealnego - w tym przypadku pola kwadratu o boku 1. Interpretacja AUROC (Area Under the ROC) to prawdopodobieństwo, że badany model predykcyjny oceni wyżej (wartość score) losowy element klasy pozytywnej od losowego elementu klasy negatywnej.

Krzywa ROC - AUROC - Receiver Operating Characteristic

  • Im większy wskaźnik AUROC tym lepiej
  • Wartość AUROC nie zależy od apriori (teoretycznie), w praktyce trudniej o silny model jeśli apriori jest duże
  • AUROC = 100% dla modelu teoretycznie idealnego
  • AUROC = 50% dla modelu losowego
  • AUROC = 0% dla modelu idealnego klasy przeciwnej do pozytywnej

 

Ciąg dalszy nastąpi ...

Pozdrowienia,

Mariusz Gromada