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

"Sympatyczny" punkt przecięcia / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 16)

Do napisania 16 części cyklu "Ocena jakości klasyfikacji" zainspirował mnie Kolega i dawny współpracownik! Michał - dzięki za "hint" 🙂 Dziś wskażę pewien sympatyczny punkt przecięcia, którego znajomość jest przydatna, a już z pewnością można "zaszpanować" 🙂 Wpis stanowi zdecydowane wzbogacenie serii "Tips & Tricks na krzywych".

Krzywe Captured Response (TPR) i prawdopodobieństwo skumulowane (PPV, Precision) przecinają się w punkcie a-priori 🙂

TPR vs Precision

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(q) - true positive;
  • n_0(q) - false positive;
  • n(q)=n_1(q)+n_0(q)=q\cdot N

Wtedy

TPR(q)=CR_1(q)=\frac{n_1(q)}{N_1}=\frac{n_1(q)}{apriori\times N}

PPV(q)=P\big(~1~|~[0,q]~\big)=\frac{n_1(q)}{n(q)}=\frac{n_1(q)}{qN}

Porównując

PPV(q)=TPR(q)

\frac{n_1(q)}{qN}=\frac{n_1(q)}{apriori\times N}

Zakładając, że n_1(q)\neq 0

q=apriori

cbdo 🙂

Do czego "sympatyczny" punkt przecięcia może się przydać?

Znajomość punktu przecięcia może się przydać do weryfikacji poprawności analizowanych wykresów i ich spójności z założeniami. Przykładowo - jeśli analityk na jednym wykresie naniesie Captured Response wraz z modelem idealnym, następnie do wykresu doda p-ństwo skumulowane (czyli PPV), i jeśli te krzywe przetną się w innym punkcie niż "aprirori", to gdzieś mamy błąd! Być może prezentowane wykresy przedstawiają różne modele?

Pozdrowienia,

Mariusz Gromada

Matematyka w obrazkach #16 - Mathistopheles - Atraktor Lorenza :-)

Dziś, przeglądając Twittera, natknąłem się na profil @Mathistopheles - Thomas Oléron Evans. Zdjęcie profilowe jest genialne - wykonane na bazie Atraktora Lorenza - musiałem dodać do cyklu "Matematyka w obrazkach" 🙂 Równie ciekawe jest zdjęcie w tle 🙂

Atraktor Lorenza

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 KS na bazie Captured Response / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 14)

Witaj w 14 części cyklu "Ocena jakości klasyfikacji". Dziś rozwinę wątek oszacowania separacji klas na bazie krzywej Captured Response - będzie to kolejny odcinek z serii "Tips & Tricks na krzywych".

Statystyka KS Kołmogorowa-Smirnowa jako miara różnicy rozkładów

Rozważmy dwie rzeczywiste zmienne losowe X_1 i X_2 oraz ich dystrybuanty odpowiednio F_{X_1} oraz F_{X_2}. Statystyką Kołmogorowa-Smirnowa dla zmiennych X_1 oraz X_2 nazywamy odległość D\big(X_1,X_2\big) zdefiniowaną następująco:

D\big(X_1,X_2\big)=\displaystyle\sup_{x\in\mathbb{R}}\bigg|F_{X_1}(x)-F_{X_2}(x)\bigg|

Statystyka KS Kołmogorowa-Smirnowa

Jeśli x jest badaną wartością, to odległość KS interpretujemy jako maksymalną różnicę pomiędzy rzędem kwantyla w rozkładzie pierwszym i rzędem kwantyla w rozkładzie drugimi, które to rzędy odpowiadają wspólnej wartości x.

Do tanga trzeba dwojga

Przy modelach predykcyjnych, dla problemu klasyfikacji binarnej, tak naprawdę dysponujemy trzema rozkładami:

  • rozkład populacji / próby względem oceny modelem;
  • rozkład klasy pozytywnej względem oceny tym samym modelem;
  • rozkład klasy negatywnej również względem oceny tym samym modelem.

W części #13 "Lift i Captured Response to gęstość i dystrybuanta tego samego rozkładu" pokazałem jak "wygląda" rozkład klasy pozytywnej. Dziś interesuje nas odległość KS rozkładu "jedynek" od rozkładu "zer", przechodzimy więc do zdefiniowana gęstości i dystrybuanty dla klasy negatywnej.

Lift nieskumulowany dla klasy negatywnej - tzn. "klasy 0"

Załóżmy, że dana jest funkcja Lift.Niesk_1(\Delta q) liftu nieskumulowanego dla klasy pozytywnej, gdzie \Delta q to przedział rzędu kwantyla (w całej populacji) względem malejącej oceny modelem.

Lift.Niesk_0(\Delta q)=\frac{P(0|\Delta q)}{P(0)}

Lift.Niesk_0(\Delta q)=\frac{1-P(1|\Delta q)}{1-P(1)}=

=\frac{1-P(1)\frac{P(1|\Delta q)}{P(1)}}{1-P(1)}=

=\frac{1-P(1)\cdot Lift.Niesk_1(\Delta q)}{1-P(1)}

Lift.Niesk_0(\Delta q)=\frac{1-apriori\times Lift.Niesk_1(\Delta q)}{1-apriori}

Przykład dla pewnej funkcji liftu nieskumulowanego i apriori = 30%.

Lift nieskumulowany - klasa "1" + klasa "0"

Warto zwrócić uwagę na punkt przecięcia tych krzywych - spotykają się w tym samym miejscu, gdzie dochodzi do zrównania z krzywą dla modelu losowego. Dosyć łatwo to uzasadnić: jeśli P(1|\Delta q^i)=apriori to P(0|\Delta q^i)=1-apriori.

Sprawdźmy jeszcze czy Lift.Niesk_0(\Delta q) spełnia warunek "unormowania".

\displaystyle\int_0^1 Lift.Niesk_0(q)dq=

=\displaystyle\int_0^1 \frac{1-apriori\times Lift.Niesk_1(q)}{1-apriori}dq=

=\frac{1}{1-apriori}\displaystyle\int_0^1 \bigg(1-apriori\times Lift.Niesk_1(q)\bigg)dq=

=\frac{1}{1-apriori}\bigg(\displaystyle\int_0^1 1dq-apriori\displaystyle\int_0^1Lift.Niesk_1(q)dq\bigg)=

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

\displaystyle\int_0^1 Lift.Niesk_0(q)dq=1

Captured Response dla klasy negatywnej - tzn. "klasy 0"

Załóżmy, że dana jest funkcja CR_1(q) Captured Response dla klasy pozytywnej, gdzie q to rząd kwantyla (w całej populacji) względem malejącej oceny modelem.

Oznaczenia:

  • q - punkt, dla którego wyznaczamy wartość krzywej;
  • N=N_1+N_0 - liczba obserwacji: łączna, z "klasy 1", z "klasy 0";
  • n=n_1+n_2=q\cdot N - liczba obserwacji "na lewo" od q: łączna, z "klasy 1", z "klasy 0";

Wtedy:

CR_1(q)=\frac{n_1}{N_1}

CR_0(q)=\frac{n_0}{N_0}

Wyprowadzamy CR_0(q) w zależności od CR_1(q).

CR_0(q)=\frac{n_0}{N_0}=\frac{n-n_1}{N_0}=\frac{n-N_1\frac{n_1}{N_1}}{N_0}=

=\frac{n-N_1 CR_1(q)}{N_0}=\frac{qN-N_1 CR_1(q)}{N_0}=

=\frac{qN}{N_0}+\frac{N_1 CR_1(q)}{N_0}=q\bigg(\frac{N_0}{N}\bigg)^{-1}-\frac{N_1}{N_0}CR_1(q)=

=\frac{q}{1-apriori}-\frac{N_1 N}{NN_0}CR_1(q)=0

=\frac{q}{1-apriori}-\frac{N_1}{N}\bigg(\frac{N_0}{N}\bigg)^{-1}CR_1(q)=

=\frac{q}{1-apriori}-apriori\frac{1}{1-apriori}CR_1(q)

CR_0(q)=\frac{q-apriori\times CR_1(q)}{1-apriori}

Przykład dla pewnej funkcji Captured Response i apriori = 30%.

Captured Response - klasa klasa pozytywna i klasa negatywna

CR_0(q) jest dystrybuantą, gdyż:

  • CR_0(0)=\frac{0-apriori\times CR_1(0)}{1-apriori}=\frac{0-apriori\times 0}{1-apriori}=0
  • CR_0(1)=\frac{1-apriori\times CR_1(1)}{1-apriori}=\frac{1-apriori\times 1}{1-apriori}=1
  • Jest funkcją niemalejącą, co wynika bezpośrednio z jej definicji.

Lift nieskumulowany dla klasy negatywnej to pochodna Captured Response dla klasy negatywnej

CR_0^\prime(q)=\bigg(\frac{q-apriori\times CR_1(q)}{1-apriori}\bigg)^\prime=

=\frac{\big(q-apriori\times CR_1(q)\big)^\prime}{1-apriori}=\frac{1-apriori\times CR_1^\prime(q)}{1-apriori}=

=\frac{1-apriori\times Lift.Niesk_1(q)}{1-apriori}=Lift.Niesk_0(q)

CR_0^\prime(q)=Lift.Niesk_0(q)

Aby w pełni zrozumieć powyższe przejścia zapoznaj się z częścią #11 "Captured Response vs Lift", gdzie uzasadniam, że pochodna Captured Response to lift nieskumulowany.

Wniosek: Lift nieskumulowany dla klasy negatywnej oraz Captured Response dla klasy negatywnej to gęstość i dystrybuanta tego samego rozkładu.

Jeśli

Q=(q_1,q_2)

to

P(q\in Q|0)=\displaystyle\int_{q_1}^{q_2}Lift.Niesk_0(q)dq=

=CR_0(q_2)-CR_0(q_1)

P(q\in Q|1)=\displaystyle\int_{q_1}^{q_2}Lift.Niesk_1(q)dq=

=CR_1(q_2)-CR_1(q_1)

Wskaźnik KS dla CR_1 i CR_0 - czyli miara separacji klas

Wskaźnik KS dla CR_1 i CR_0 zdefiniujemy następująco:

D\big(CR_1,CR_0\big)=\displaystyle\sup_{q\in[0,1]}\bigg|CR_1(q)-CR_0(q)\bigg|

Równoważnie poszukujemy takiego q_{max}\in[0,1], że

D\big(CR_1,CR_0\big)=\displaystyle\sup_{q\in[0,1]}\bigg|CR_1(q)-CR_0(q)\bigg|=

=CR_1(q_{max})-CR_0(q_{max})

Zauważmy, że

CR_1(q)-CR_0(q)=\bigg(CR_1(q)-q\bigg)+\bigg(q-CR_0(q)\bigg)

Badamy przebieg zmienności - a konkretnie typujemy punkt maksimum na podstawie pochodnej.

Dla klasy "1":

\bigg(CR_1(q)-q\bigg)^\prime=0

CR_1^\prime(q)=1

Lift.Niesk_1(q)=1

Dla klasy "0":

\bigg(q-CR_0(q)\bigg)^\prime=0

CR_0^\prime(q)=1

Lift.Niesk_0(q)=1

\frac{1-apriori\times Lift.Niesk_1(q)}{1-apriori}=1

1-apriori\times Lift.Niesk_1(q)=1-apriori

-apriori\times Lift.Niesk_1(q)=-apriori

apriori\times Lift.Niesk_1(q)=apriori

Lift.Niesk_1(q)=1

Wniosek: odległość CR_1(q)-CR_0(q) jest maksymalizowana w punkcie, w którym funkcja liftu nieskumulowanego ma wartość 1 - tzn. w punkcie przecięcia z liftem dla modelu losowego.

Captured Response - klasa klasa pozytywna i klasa negatywna - Statystyka KS Kołmogorowa-Smirnowa

Powyższy wniosek jest dosyć intuicyjny - jeśli lift nieskumulowany "wchodzi w obszar bycia mniejszym niż 1" oznacza to, że jego efekt jest mniejszy od działania modelu losowego. Dodawanie kolejnych obserwacji zaczyna zmniejszać separację rozkładów.

Pozdrowienia,

Mariusz Gromada

Lift nieskumulowany jako gęstość, Captured Response jako dystrybuanta / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 13)

W 13 części cyklu "Ocena jakości klasyfikacji" przedstawię dodatkowe interpretacje dla krzywej liftu nieskumulowanego i krzywej Captured Response. Obiecuję, że będzie ciekawie 🙂 przecież robimy "deep dive into predictive model assessment curves". W dzisiejszym odcinku zapomnimy o punktach odcięcia, klasyfikatorach binarnych, rozważając rozkłady populacji jako całość. Chwilkę się do tego przygotowywałem - było warto - seria "Tips & Tricks na krzywych" nabiera rumieńców!

Pole powierzchni pod krzywą liftu nieskumulowanego

Lift nieskumulowany dla modelu losowego to funkcja stała o wartości 1. Pole pod taką krzywą równe jest polu kwadratu o boku 1 i wynosi oczywiście 1. Model losowy "rozrzuca" obserwacje z "klasy 1" równomiernie, tzn. taka sama część otrzymuje wysoki, średni i niski score. Głównym zadaniem modelu predykcyjnego, w pewnym sensie, jest "przepchnąć" obserwacje należące do "klasy 1" z segmentu niskiego score do segmentu wysokiego score - dzięki temu pojawia się separacja klas. Powyższe dobrze obrazuję animacją, gdzie siła modelu utożsamiana jest z "siłą podmuchu wiatru" 🙂

Lift nieskumulowany - całka

Takie "przepchnięcie" nie ma wpływu na ilość "jedynek", zatem należy podejrzewać, że pole pod krzywą liftu nieskumulowanego zawsze wynosi 1. No to całkujemy:

\displaystyle\int_0^1 Lift.Niesk(q)dq

Oznaczenia + zależności:

  • N=N_1+N_0 - liczba obserwacji: łączna, z "klasy 1", z "klasy 0";
  • k - liczba przedziałów, na które dzielimy odcinek [0;1];
  • p=\frac{1}{k} - szerokość pojedynczego przedziału (zakres zmienności rzędu kwantyli);
  • p\cdot N - liczba obserwacji w przedziale (podział po kwantylach, zatem po równo);
  • i=\{1,2,3,\ldots,k\} - numer przedziału;
  • n_1^i+n_0^i=pN - liczba obserwacji w przedziale, osobno "z klasy 1" i "z klasy 0";
  • \Delta q^i - przedział, na którym wyznaczona jest wartość liftu nieskumulowanego;
  • \displaystyle\sum_{i=1}^k n_1^i=N_1
  • \displaystyle\sum_{i=1}^k n_0^i=N_0
  • \displaystyle\sum_{i=1}^k n_1^i+n_0^i=N_1+N_0=N

Lift nieskumulowany jest funkcją przedziałami stałą:

Lift.Niesk(q)=Lift.Niesk(\Delta q^i)\quad\text{dla}\quad q\in\Delta q^i

Lift.Niesk(\Delta q^i)=\frac{P(1|\Delta q^i)}{P(1)}

P(1|\Delta q^i)=\frac{n_1^i}{pN} oraz P(1)=\frac{N_1}{N}

Lift.Niesk(\Delta q^i)=\frac{n_1^i}{pN}\cdot \frac{N}{N_1}=\frac{n_1^i}{pN_1}

Lift.Niesk(\Delta q^i)=\frac{n_1^i}{pN_1}

\displaystyle\int_0^1 Lift.Niesk(q)dq=\displaystyle\sum_{i=1}^k p\cdot Lift.Niesk(\Delta q^i)

\displaystyle\sum_{i=1}^k p\cdot Lift.Niesk(\Delta q^i)=\displaystyle\sum_{i=1}^k p\frac{n_1^i}{pN_1}=

=\displaystyle\sum_{i=1}^k \frac{n_1^i}{N_1}=\frac{\displaystyle\sum_{i=1}^k n_1^i}{N_1}=\frac{N_1}{N_1}=1

\displaystyle\int_0^1 Lift.Niesk(q)dq=1

Lift nieskumulowany jako funkcja gęstości rozkładu prawdopodobieństwa

Funkcja liftu nieskumulowanego jest nieujemna i spełnia warunek "unormowania" (w przeciwieństwie do funkcji nieskumulowanego prawdopodobieństwa) w kontekście gęstości rozkładu prawdopodobieństwa - tzn. pole powierzchni pod krzywą wynosi 1. Taka gęstość opisuje rozkład rzędu kwantyli (kwantyle wyznaczane dla całej populacji "klasa 0 + klasa 1" względem malejącej oceny modelem) w klasie faktycznie pozytywnej - tzn. w "klasie 1".

Lift nieskumulowany jako gęstość

Jeśli

Q=(q_1,q_2)

to

P(q\in Q|1)=\displaystyle\int_{q_1}^{q_2}Lift.Niesk(q)dq

Captured Response jako dystrybuanta rozkładu prawdopodobieństwa

Captured Response jest funkcją niemalejącą, jednostronnie ciągłą (powiedzmy, że prawostronnie), o wartościach z przedziału [0;1], wartości 0 dla q\leq 0 oraz wartości 1 dla q\geq 1. Tym samym spełnione są warunki bycia dystrybuantą pewnego rozkładu prawdopodobieństwa. W części "#11 - Captured Response vs Lift" wykazałem, że pochodna z Captured Response to lift nieskumulowany. Wniosek: Captured Response i lift nieskumulowany to dystrybuanta i gęstość tego samego rozkładu prawdopodobieństwa.

Lift nieskumulowany jako gęstość, Captured Response jako dystrybuanta

Jeśli

Q=(q_1,q_2)

to

P(q\in Q|1)=\displaystyle\int_{q_1}^{q_2}Lift.Niesk(q)dq=CR(q_2)-CR(q_1)

Pozdrowienia,

Mariusz Gromada