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

TPR i FNR na bazie Liftu Skumulowanego / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 18)

Część #18 cyklu "Ocena jakości klasyfikacji" to pogłębienie interpretacji krzywej Liftu Skumulowanego - mam wrażenie, że to już ostatni wpis z serii "Tips & Tricks na krzywych".

TPR (Captured Response) i FNR na bazie Liftu Skumulowanego

Dla modelu idealnego krzywa liftu skumulowanego przyjmuje następującą postać:

Lift.Skum(q)=\begin{cases}\frac{1}{apriori}&\text{dla}\quad q\leq apriori\\\frac{1}{q}&\text{dla}\quad q>apriori\end{cases}

q - kwantyl (rząd) bazy (malejąco względem oceny modelem)

Stosując technikę "przedłużania modelu idealnego", analogicznie do zastosowanej w części #17 "PPV i FDR na bazie TPR", tworzymy "skalę" umożliwiającą wyznaczenie TPR (True-Positive Rate) oraz FNR (False-Negative Rate).

TPR i FNR na bazie Liftu Skumulowanego

Zależności

TPR(q)=q\times Lift.Skum(q)=\frac{A}{B}

A=Lift.Skum(q)

B=\frac{1}{q}

Dowód: w części #11 "Captured Response vs Lift" pokazałem, że

\frac{CR(q)}{q}=Lift.Skum(q)

ale CR(q) to to samo co TPR(q) - różni się tylko nazwą 🙂

Nieco inny dowód podałem również w części #17 "PPV i FDR na bazie TPR"

PPV(q)=\frac{apriori\times TPR(q)}{q}

trochę przekształcając otrzymujemy

\frac{PPV(q)}{apriori}\times q=TPR(q)

Dalej wystarczy zauważyć, że

\frac{PPV(q)}{apriori}=Lift.Skum(q)

cbdo. 🙂

I ponownie - wydaje mi się, że analogicznie można naszkicować TNR oraz FPR - tylko tu analizując: klasyfikację do klasy negatywnej, krzywą Liftu Skumulowanego dla klasy "0" oraz "przedłużenie" modelu idealnego dla klasy "0" - wymaga sprawdzenia 🙂

Pozdrowienia,

Mariusz Gromada

PPV i FDR na bazie TPR (Captured Response) / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 17)

W części #17 cyklu "Ocena jakości klasyfikacji" wydobędę kolejne informacje z krzywej Captured Response, która, na pierwszy rzut oka, prezentuje wyłącznie TPR (True-Positive-Rate). Kontynuuję zatem serię "Tips & Tricks na krzywych".

Prawdopodobieństwo skumulowane (PPV, PRECISION) na bazie TPR czyli Captured Response

Dla modelu idealnego krzywa Captured Response ma postać

Capt.Resp(q)=\begin{cases}\frac{q}{apriori}&\text{dla}\quad q\leq apriori\\1&\text{dla}\quad q>apriori\end{cases}

q - kwantyl (rząd) bazy (malejąco względem oceny modelem)

Rozważając "przedłużenie pierwszej części" definicji na cały odcinek [0;1] otrzymujemy "skalę", na bazie której łatwo wyznaczyć PPV (Positive Predicted Value) oraz FDR (False Discovery Rate).

PPV=\frac{TP}{TP+FP}

FDR=\frac{FP}{TP+FP}=1-PPV

TPR, TNR, PPV, NPV

Zależności

PPV(q)=\frac{apriori\times TPR(q)}{q}

FDR(q)=1-PPV(q)=1-\frac{apriori\times TPR(q)}{q}

q - cut-off jako kwantyl (rząd) bazy (malejąco względem oceny modelem)

PPV i FDR na bazie TPR - Captured Response

Dowód: zaczynamy od oznaczeń

  • N=N_1+N_0 - liczba obiektów w populacji: total, z klasy pozytywnej "1", z klasy negatywnej "0";
  • q - cut-off (jako kwantyl - a dokładnie jego rząd - względem malejącej oceny modelem);
  • [0,q] - klasyfikacja pozytywna;
  • (q,1] - klasyfikacja negatywna;
  • n_1 - true positive;
  • n_0 - false positive;
  • n=n_1+n_0
  • q=\frac{n}{N}
  • apriori=\frac{N_1}{N}

PPV(q)=\frac{n_1}{n}

A=TPR(q)=\frac{n_1}{N_1}

C=\frac{q}{apriori}=\frac{n}{N}\times\frac{N}{N_1}=\frac{n}{N_1}

\frac{A}{C}=\frac{n_1}{N_1}\times\frac{N_1}{n}=\frac{n_1}{n}

\frac{A}{C}=PPV(q)

\frac{A}{C}=TPR(q)\times\frac{apriori}{q}=\frac{apriori\times TPR(q)}{q}

PPV(q)=\frac{apriori\times TPR(q)}{q}

cbdo. 🙂

Wydaje mi się, że analogicznie można wyznaczyć NPV - tylko tu analizując: klasyfikację do klasy negatywnej, krzywą Captured Response dla klasy "0" (TNR) oraz "przedłużenie" modelu idealnego dla klasy "0" - sprawdzimy 🙂

Pozdrowienia,

Mariusz Gromada