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

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

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

Captured Response vs Lift / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 11)

W części #8 cyklu "Ocena jakości klasyfikacji" pokazałem, że ROC i Captured Response to te same krzywe, które łączy proste przekształcenie liniowe. W bieżącym odcinku #11, należącym również do serii "Tips & Tricks na krzywych", przedstawię zależność pomiędzy Captured Response i Lift w wariantach: nieskumulowanym i skumulowanym.

!!! Uwaga: dla uproszczenia - wszędzie tam, gdzie piszę kwantyl, mam na myśli jego rząd !!!

Pochodna z Captured Response to Lift nieskumulowany

Pochodna z Captured Response to Lift nieskumulowany

Oznaczamy:

  • N=N_1+N_0 - liczba obiektów (np. klientów): total, z klasy "1", z klasy"0";
  • \Delta q_n - zmiana argumentu (przyrasta kwantyl bazy), czyli przyrost % populacji;
  • n=n_1+n_0 - liczba obiektów składających się na przyrost \Delta q_n: total, z klasy "1", z klasy"0";
  • \Delta q_t - zmiana wartości funkcji (przyrasta kwantyl targetu), czyli przyrost frakcji targetu jako % całości targetu;
  • n_1 - liczba klientów z klasy "1" składających się na przyrost \Delta q_t.
  • \Delta q_n=\frac{n}{N}
  • \Delta q_t=\frac{n_1}{N_1}

CR'=\frac{\Delta q_t}{\Delta q_n}

I wyprowadzamy 🙂

CR'=\frac{\Delta q_t}{\Delta q_n}=\frac{n_1}{N_1}\bigg/\frac{n}{N}=\frac{n_1}{N_1}\cdot\frac{N}{n}=\frac{n_1}{n}\cdot\frac{N}{N_1}=\frac{n_1}{n}\bigg/\frac{N_1}{N}

CR'=\frac{n_1}{n}\bigg/\frac{N_1}{N}=\frac{p(1|\Delta q_n)}{p(1)}=Lift.Niesk

Fajne 🙂 prawda? Lift nieskumulowany można jednoznacznie wyprowadzić z krzywej Captured Response poprzez analizę "lokalnych" przyrostów frakcji bazy \Delta q_n i frakcji targetu \Delta q_t.

Captured Response - stosunek wartości dla badanego modelu oraz wartości dla modelu losowego to Lift skumulowany

Captured Response - stosunek wartości dla badanego modelu oraz wartości dla modelu losowego to Lift skumulowany

Oznaczamy:

  • N=N_1+N_0 - liczba obiektów (np. klientów): total, z klasy "1", z klasy"0";
  • q_n - kwantyl bazy, czyli argument na osi poziomej;
  • n=n_1+n_0 - liczba obiektów składających się na kwantyl q_n: total, z klasy "1", z klasy"0";
  • q_t^m - kwantyl targetu, czyli wartość Captured Response dla badanego modelu;
  • q_t^l - kwantyl targetu, czyli wartość Captured Response dla modelu losowego;
  • q_n=\frac{n}{N}
  • q_t^m=\frac{n_1}{N_1}
  • Zauważmy, że q_t^l=q_n=\frac{n}{N}

\frac{q_t^m}{q_t^l}=\frac{n_1}{N_1}\bigg/\frac{n}{N}=\frac{n_1}{N_1}\cdot\frac{N}{n}=\frac{n_1}{n}\cdot\frac{N}{N_1}=\frac{n_1}{n}\bigg/\frac{N_1}{N}

\frac{q_t^m}{q_t^l}=\frac{n_1}{n}\bigg/\frac{N_1}{N}=\frac{p(1|q_n)}{p(1)}=Lift.Skumul

Kolejny fajny wniosek 🙂 , który można również łatwo uzasadnić na bazie wyżej opisanej zależności pomiędzy Captured Response i Liftem nieskumulowanym. Mianowicie wystarczy "delty liczyć" od punktu (0,0) i zauważyć, że dla modelu losowego q_t = q_n. Pokazałem to na rysunku poniżej.

Captured Response - stosunek wartości dla badanego modelu oraz wartości dla modelu losowego to Lift skumulowany

Lift skumulowany można jednoznacznie wyprowadzić z krzywej Captured Response poprzez analizę "globalnych" przyrostów frakcji bazy \Delta q_n i frakcji targetu \Delta q_t.

Pozdrowienia,

Mariusz Gromada

Model teoretycznie idealny / Tips & Tricks na krzywych - czyli ocena jakości klasyfikacji (część 10)

Kilka kolejnych części cyklu "Ocena jakości klasyfikacji" skupi się na poradach i pewnych trickach (czyli seria "Tips & Tricks na krzywych"), które zastosowane do krzywych: Lift, Captured Response, ROC, znacząco pogłębiają ich interpretację.

!!! Uwaga: dla uproszczenia - wszędzie tam, gdzie piszę kwantyl, mam na myśli jego rząd !!!

Model teoretycznie idealny a prawdopodobieństwo a-priori

Model teoretycznie idealny to taki model, który daje najlepsze możliwe uporządkowanie - inaczej mówiąc najlepszą możliwą separację klas. Taki model nie myli się przy założeniu, że punkt odcięcia odpowiada prawdopodobieństwu a-priori. Wtedy faktycznie cała klasa pozytywna jest po jednej stronie, a cała klasa negatywna po drugiej stronie punktu cut-off.

Model Teoretycznie Idealny - Porządek - Cut-Off - Brak błędu

Przy każdym innym cut-off model teoretycznie idealny popełnia mniejszy lub większy błąd.

Model Teoretycznie Idealny - Porządek - Cut-Off - Błąd

Ile istnieje różnych modeli teoretycznie idealnych?

Liczba różnych modeli teoretycznie idealnych to funkcja liczności klasy faktycznie pozytywnej i liczności klasy faktycznie negatywnej. Liczba ta będzie iloczynem możliwych permutacji w klasie pozytywnej i możliwych permutacji w klasie negatywnej. Takie modele, z punktu widzenia klasycznej oceny jakości klasyfikacji, są nierozróżnialne (dlatego na wykresach oznaczamy tylko jeden). Sytuacja może się zmienić, jeśli, w celu lepszego uporządkowania, rozważymy dodatkowe cechy (oprócz samej przynależności do badanej klasy), takie jak: wartość klienta, oczekiwany life-time, etc...

Model teoretycznie idealny i maksymalny Lift nieskumulowany

Lift nieskumulowany to stosunek prawdopodobieństwa w przedziale bazy \Delta q_n i prawdopodobieństwa a-priori (w całej bazie).

Lift.Nieskum=\frac{p(1|\Delta n)}{p(1)}

Jeśli baza jest uszeregowana malejąco względem oceny modelem, maksymalny możliwy lift nieskumulowany będzie funkcją dwuwartościową.

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

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

Model Teoretycznie Idealny - Lift Nieskumulowany

Model teoretycznie idealny i maksymalny Lift skumulowany

Również w przypadku skumulowanym, będąc "na lewo od a-priori", maksymalny możliwy lift skumulowany wynosi \frac{1}{apriori} (cały czas mamy do dyspozycji "1-dynki"). Jeśli "cut-off przekroczy kwantyl a-priori", klasyfikacja pozytywna zaczyna być "zaśmiecana" frakcją False-Positive, gdyż nie ma już "1-dynek" - co wynika z najlepszego możliwego porządku (model teoretycznie idealny) - tzn. wszystkie obiekty z klasy faktycznie pozytywnej znajdują się w kwantylach z przedziału [0,apriori].

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 bazy (malejąco względem oceny modelem)

Dlaczego \frac{1}{q}? Przyjmijmy q>apriori, wtedy

  • q to rozmiar "bazy"
  • apriori to rozmiar klasy faktycznie pozytywnej w rozważanej "bazie"

p\big(1\big|~[0,q]~\big)=\frac{apriori}{q}

Lift.Skum(q)=\frac{p\big(1\big|~[0,q]~\big)}{p(1)}=\frac{apriori}{q\times apriori}=\frac{1}{q}

Model Teoretycznie Idealny - Lift Skumulowany

Model teoretycznie idealny i maksymalny Captured Response

Dysponując najlepszym możliwym uporządkowaniem krzywa Captured Response liniowo rośnie dla argumentów "na lewo" od apriori - każdy dodany obiekt, to klasa faktycznie pozytywna. W punkcie "apriori" całość targetu jest już pokryta - zatem wartość krzywej to 100%.

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

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

Model Teoretycznie Idealny - Captured Response

Model teoretycznie idealny i ROC

  • Jeśli cut-off jest "na lewo" od a-priori: pokrywamy wyłącznie elementy klasy faktycznie pozytywnej, zatem rośnie wyłącznie TPR, przy zerowym FPR.
  • Dla cut-off odpowiadającego a-priori: pokryto 100% klasy faktycznie pozytywnej (TPR = 100%), jednocześnie nie popełniając żadnego błędu (FPR = 0%).
  • Dla cut-off większego od a-priori: TPR już wcześniej osiągnęło 100%, teraz klasyfikując pozytywnie popełniamy coraz większy błąd - tzn. FPR zaczyna rosnąć.
  • Dla cut-off = 1: pokryliśmy całość klasy faktycznie pozytywnej (TPR=100%), jednak w tym samym kroku wszelkie obiekty faktycznie negatywne zaliczyliśmy do klasy pozytywnej (FPR=100%).

Model Teoretycznie Idealny - ROC

"Przestrzeń na model" - czyli sens budowy modelu

  • Dla dużych a-priori (np. 50-60%) przestrzeń na model (tzn. możliwy do osiągnięcia lift) jest bardzo mała. W takich sytuacjach należy najpierw zadać sobie pytanie co chcemy osiągnąć, czym jest target, czy nie istnieją proste reguły biznesowe odpowiadające naszym potrzebom? Duże a-priori nie jest przypadkiem abstrakcyjnym - szereg pytań dotyczy cech / zdarzeń bardzo częstych w bazach / populacjach, np: czy rodzina ma dziecko?, czy ktoś posiada samochód?, etc..
  • Małe a-priori (np. kilka promili) daje bardzo dużą przestrzeń na model (typowo duży osiągany lift), ale należy pamiętać, że 5 razy 0 daje 0!! Przykładowa kalkulacja:
    • a-priori = 0.5%
    • lift (na którymś niskim centylu) = 10
    • wtedy prawdopodobieństwo targetu na bazie klasyfikowanej pozytywnie = 0.5% * 10 = 5%
    • wtedy w 95% przypadkach mylimy się - owszem możemy pokryć sporą część targetu, ale sami sobie odpowiedzcie czy nieprawidłowy komunikat do 95% grupy ma sens?
  • Pośrednie a-priori (kilka - kilkanaście procent) - sytuacja optymalna 🙂

Pozdrowienia,

Mariusz Gromada

Captured Response = ROC x apriori - czyli ocena jakości klasyfikacji (część 8)

W części #6 oraz części #7 cyklu "Ocena jakości klasyfikacji" przedstawiłem krzywą zysku (aka: Gain, Captured Response) oraz krzywą ROC. Dzisiaj skupię się na mało znanej, acz bardzo prostej i przydatnej, relacji pomiędzy tymi krzywymi - okazuje się bowiem, że wykresy są "niemal identyczne" 🙂

Captured Response vs ROC

Wzór łączący ROC z Captured Response

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

Y_{cr}=Y_{roc}

Geometryczne podobieństwo Captured Response i ROC

Odpowiednio spoglądając na umieszczone obok siebie wykresy ciężko odeprzeć wrażenie, że krzywe są bardzo podobne. Intuicja podpowiada, że mamy tu do czynienia z tymi samymi funkcjami, jedynie naszkicowanymi w nieco różnych układach współrzędnych.

Captured Response vs ROC

W obu przypadkach to "przestrzeń" pomiędzy modelem losowym i modelem idealnym definiuje odpowiedni układ współrzędnych, a różnica obecna w Captured Response powiązana jest z a-priori (CR jest zależna od a-priori, ROC nie zależy od a-priori). Idąc za kolejnym przeczuciem powiemy, że najprawdopodobniej dla tej samej wartości "Y" różnić się będą wartości "X" (ze względu na "ściśniecie" obecne w Captured Response).

Wzór na bazie macierzy przekształcenia liniowego - jedynie poglądowo

Uwaga: poniższe wyprowadzenie jest jedynie pomocnicze, nie stanowi wystarczającej argumentacji uzasadniającej "identyczność" krzywych Captured Response i ROC!!! Formalna argumentacja znajduje się w kolejnej sekcji.

ROC w CR - przekształcenie liniowe - wektory

Zauważmy, że wektor

\begin{bmatrix}X_{ROC}=0\\Y_{ROC}=1\end{bmatrix} przechodzi w \begin{bmatrix}X_{CR}=apriori\\Y_{CR}=1\end{bmatrix}

oraz wektor

\begin{bmatrix}X_{ROC}=1\\Y_{ROC}=1\end{bmatrix} przechodzi w \begin{bmatrix}X_{CR}=1\\Y_{CR}=1\end{bmatrix}

Zatem macierz przekształcenia liniowego przyjmuje postać (potrzeba rozwiązać prościutki układ równań):

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

Finalne przekształcenie ROC w Capture Response to:

\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}

Wynik bardzo ciekawy - faktycznie wystarczy a-priori 🙂 Jednak to nie jest dowód, wyprowadzenie bazowało na intuicji ...

Wzór na bazie proporcji - jedynie poglądowo

Uwaga: Ponownie - poniższe wyprowadzenie jest jedynie pomocnicze, nie stanowi wystarczającej argumentacji uzasadniającej "identyczność" krzywych Captured Response i ROC!!! Formalna argumentacja znajduje się w kolejnej sekcji.

Oznaczmy punkty (wykres powyżej):

B_{cr}=\Big(X_{cr}, Y_{cr}\Big) - punkt na krzywej Captured Response

B_{roc}=\Big(X_{roc}, Y_{roc}\Big) - punkt na krzywej ROC

Podążając za "głosem wewnętrznym" 🙂 napiszemy równość

Y_{cr}=Y_{roc}

oraz równość proporcji długości odcinków

{\Large\frac{a_{cr}}{a_{cr}+b_{cr}}=\frac{a_{roc}}{a_{roc}+b_{roc}}}

To pozwoli wyprowadzić formułę dla wartość X_{cr} w zależności od współrzędnych \Big(X_{roc}, Y_{roc}\Big).

Długość odcinka: a_{roc}=X_{roc}

Długość odcinka: a_{roc}+b_{roc}=Y_{roc} (wynika z pozycji punktu C_{roc}=C_{cr}).

Przechodzimy od wyznaczenia współrzędnych punktu A_{cr} leżącego na krzywej idealnej wykresu Capture Response.

Prosta "idealna" jest opisana równaniem: y={\Large\frac{x}{apriori}} dla x mniejszych od a-priori, zatem

x=y\times apriori

I dalej współrzędne

A_{cr}=\Big(Y_{cr}\times apriori, Y_{cr}\Big)=\Big(Y_{roc}\times apriori, Y_{roc}\Big)

Zaś współrzędne

B_{cr}=\Big(X_{cr}, Y_{cr}\Big)=\Big(X_{cr}, Y_{roc}\Big)

C_{cr}=\Big(Y_{cr}, Y_{cr}\Big)=\Big(Y_{roc}, Y_{roc}\Big)

W tej chwili przystępujemy do wyznaczenia długości odcinków

Długość odcinka: a_{cr}=X_{cr}-Y_{roc}\times apriori

Długość odcinka: a_{cr}+b_{cr}=Y_{roc}-Y_{roc}\times apriori=Y_{roc}\Big(1-apriori\Big)

Kilka ostatnich kroków

{\Large\frac{a_{cr}}{a_{cr}+b_{cr}}=\frac{a_{roc}}{a_{roc}+b_{roc}}}

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

Mnożymy przez Y_{roc}

{\Large\frac{X_{cr}-Y_{roc}\times apriori}{1-aprior}}=X_{roc}

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

I finalnie

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

Y_{cr}=Y_{roc}

Wynik identyczny - jednak to nadal nie dowód ...

Pełny dowód na bazie macierzy błędu i prawdopodobieństw

Oś "Y" w przypadku ROC to True-Positive Rate, czyli

TPR={\Large\frac{TP}{TP+FN}}={\Large\frac{TP}{Faktyczne.P}}=P(1|1)

Macierz błędu

Z powyższego bezpośrednio wynika, że

Y_{cr}=Y_{roc}

Współrzędna "X" krzywej Captured Response to kwantyl bazy, tzn. gdyby założyć, że X% bazy klasyfikujemy pozytywnie, to dotrzemy do Y% frakcji targetu - zatem X_{cr} jest rozmiarem frakcji przewidywania pozytywnego. Rozważmy poniższy rozkład oceny modelem.

True-Positive, False-Positive, True-Negative, False-Negative vs ocena modelem

Przewidywanie pozytywne składa się z frakcji TP+FP, ale

Klasyf.P=TP+FP=...

...=TPR\times Faktyczne.P+FPR\times Faktyczne.N

P(klasyf=P)=...

...=TPR\times apriori+FPR\times (1-apriori)=...

...=P(1|1)P(1)+P(1|0)P(0)

Finalnie

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

Y_{cr}=Y_{roc}

Co z tego wynika?

  • Rozumiejąc relację pomiędzy krzywą ROC a krzywą Captured Response analiza modelu jest znacznie prostsza, szczególnie jeśli korzystamy z narzędzia, które prezentuje tylko jeden wariant krzywej (często ROC). Przy małych apriori oś "X" krzywej ROC można praktycznie uznać za oś "X" krzywej Captured Response. Przy większych apriori należy intuicyjnie przesuwać "X" w prawo aby z ROC uzyskać Captured Response.
  • Gini policzone na ROC oraz na CR (pamiętając o przestrzeni pomiędzy modelem losowym i modelem idealnym) bedą sobie równe.

Przykład działania wzoru

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Captured Response

Pozdrowienia,

Mariusz Gromada

Skumulowane miary siły modelu predykcyjnego - czyli ocena jakości klasyfikacji (część 6)

W części 4 cyklu "ocena jakości klasyfikacji" opisałem podstawowe statystyki w wariancie nieskumulowanym służące inspekcji modelu predykcyjnego. Nieskumulowane prawdopodobieństwo i nieskumulowany lift, choć bardzo przydatne na etapie budowy modelu (praca analityka), sprawdzają się nieco gorzej w kontaktach analityk - odbiorca biznesowy. Odbiorcę biznesowego zazwyczaj interesują informacje takie jak "do jakiej części zainteresowanych produktem dotrę?" lub "o ile skuteczniejsze jest targetowanie na bazie modelu?" (tu uwaga dla bardziej zaawansowanego czytelnika - celowo pomijam kwestie wpływu inkrementalnego - tzw. uplift będzie tematem przyszłych wpisów).

Założenia - przypomnienie

Podobnie do poprzednich część cyklu załóżmy, że rozważamy przypadek klasyfikacji binarnej (dwie klasy: "Pozytywna - 1" nazywana targetem oraz "Negatywna  - 0"). Załóżmy ponadto, że dysponujemy modelem predykcyjnym p zwracającym prawdopodobieństwo p(1|x) przynależności obserwacji x do klasy "Pozytywnej - 1" (inaczej "P od 1 pod warunkiem, że x"). I jeszcze ostatnie założenie, wyłącznie dla uproszczenia wizualizacji - dotyczy rozmiaru klasy pozytywnej - tym razem ustalmy, że jest to 5%, inaczej, że prawdopodobieństwo a-priori P(1)=0.05.

Skumulowane prawdopodobieństwo i skumulowany lift - czyli o ile skuteczniejsze jest targetowanie na bazie modelu?

Pojęcie liftu dobrze jest utożsamiać z krotnością rozumianą jako "o ile razy częściej zaobserwuję target w grupie wybranej modelem w stosunku do wyboru losowego". Interpretacja "krotnościowa" ma zastosowaniu zarówno do liftu skumulowanego i nieskumulowanego. Lift nieskumulowany powstaje na bazie obserwacji targetu w określonym przedziale estymowanego prawdopodobieństwa (np. pojedynczy centyl, pojedynczy decyl), natomiast lift skumulowany odnosi się do targetu analizowanego we wszystkich przedziałach estymowanego prawdopodobieństwa, które leżą "na lewo" od ustalonego puntu (czyli np. 20 pierwszych centyli, 2 pierwsze decyle).

Ideę liftu najlepiej obrazuje wykres prawdopodobieństwa i liftu:

  • Oś pozioma - frakcja bazy względem oceny modelem - czyli baza posortowana względem estymowanego prawdopodobieństwa (czasami mówimy również względem score) w porządku od wartości największej do najmniejszej.
  • Lewa oś pionowa - prawdopodobieństwo / target rate - częstość obserwacji targetu w określonym przedziale / przedziałach.
  • Prawa oś pionowa - lift - normalizacja do średniego target rate (dzielenie przez a-priori).

Model predykcyjny - Lift skumulowany

I tak - dla powyższego przykładu - mamy lift ponad 3 przy decyzji, że "cut-off point" umieszczamy dokładnie w 20 centylu. Ale zaraz - przecież na 10 centylu mamy lift ponad 4 - czyli lepiej? ...

Krzywa zysku aka Gain Curve lub Captured Response - czyli do jakiej części zainteresowanych produktem dotrę?

... Rozwiązaniem powyższego dylematu jest analiza krzywej zysku. Krzywa zysku łączy w sobie ideę liftu wraz z "zasięgiem" grupy. Przykładowo: z bazy 100 tys. klientów, w której 5 tys. zainteresowanych jest produktem, do kampanii wybrano 10 tys. Po realizacji komunikacji okazało się, że spośród 10 tys. zakupu dokonało 3 tys. klientów. I dochodzimy łatwo do definicji zasięgu jako pokrycia 3 tys. z 5 tys, czyli dotarcie do targetu na poziomie 3/5 = 60%.

Ideę zasięgu bardzo dobrze obrazuje wykres krzywej zysku:

  • Oś pozioma - tak jak dla liftu - frakcja bazy względem oceny modelem.
  • Oś pionowa - zasięg

Model predykcyjny - Krzywa zysku

Analizując powyższy przykład - zasięg na 10% to około 45%, na 20% to już około 65% - czyli "chyba warto się pochylić" 🙂 ... cdn ...

Pozdrowienia,

Mariusz Gromada