TEST KOLMOGOROV-SMIRNOV

Ostatnio, w pracy, musieliśmy wykonać wiele klasyfikacji bez nadzoru. Zasadniczo musieliśmy wyróżnić N klas z przykładowej populacji. Mieliśmy przybliżone pojęcie o tym, ile klas było obecnych, ale nic nie było pewne, odkryliśmy test Kołmogorowa-Smirnowa bardzo skuteczny sposób na określenie, czy dwie próbki są znacząco różne od siebie.

Podam ci trochę kontekstu na temat testu Kołmogorowa-Smirnowa i przeprowadzę cię przez jeden problem, który rozwiązaliśmy za jego pomocą.

Oryginalny post na coffeeanddata.ca

Odrzucenie hipotezy zerowej. Brzmi to jak bolesne wspomnienie z uniwersyteckiej klasy statystycznej, ale w rzeczywistości jest to dokładnie to, co chcemy tutaj zrobić. Chcemy odrzucić możliwość, że te dwie próbki pochodzą z dokładnie tej samej dystrybucji. Spójrzmy na bardzo wysoki poziom, nie-matematyczny, przegląd niektórych dostępnych testów. Jeśli chcesz dobrze zrozumieć matematykę stojącą za tymi testami, skorzystaj z linku do Wikipedii podanego we wszystkich sekcjach.

STUDENT’S T-TEST

Test T-Studenta jest prawdopodobnie najbardziej znanym sposobem odrzucania hipotezy zerowej. Test ten oblicza wartość P dla próbki w stosunku do normalnej populacji lub w stosunku do innej próbki. Wynik, P-value, mówi jak bardzo prawdopodobne jest, że te próbki pochodzą z dokładnie tego samego rozkładu.

Po uzyskaniu, P-Value może być porównana z progiem wywołującym istotność statystyczną (np. .05), jeśli P-Value jest mniejsza, możemy odrzucić hipotezę zerową.

Jest pewien problem z testem T-Studenta, próbki muszą być normalne (ukształtowane w rozkładzie normalnym). Jest to problem dla nas, ponieważ pracujemy dużo z rozkładami Poissona.

TEST KOŁMOGOROWA-SMIRNOWA

Test Kołmogorowa-Smirnowa (test KS) jest nieco bardziej złożony i pozwala na wykrycie wzorców, których nie można wykryć za pomocą testu T-Studenta.

From Wikipedia:

„The Kolmogorov–Smirnov statistic quantifies a distance between the empirical distribution function of the sample and the cumulative distribution function of the reference distribution, or between the empirical distribution functions of two samples.”

Here is an example that shows the difference between Student’s T-Test and KS Test.

stackexchange.com

Because the sample mean and standard deviation are highly similar the Student’s T-Test gives a very high p-value. KS Test can detect the variance. In this case the red distribution has a slightly binomial distribution which KS detect. Innymi słowy:

  • Test T-Studenta mówi, że istnieje 79.3% szans, że dwie próbki pochodzą z tego samego rozkładu.
  • Test KS mówi, że istnieje 1.6% szans, że dwie próbki pochodzą z tego samego rozkładu.

INNE TESTY

Istnieje wiele innych testów i algorytmów do wykonania tego typu pracy. Test Shapiro-Wilka i test Andersona-Darlinga są dwoma testami uważanymi za bardziej wydajne niż test KS. Jest jedna poważna wada tych dwóch testów, nie pozwalają one na porównanie dwóch próbek, zawsze porównują próbkę z rozkładem standardowym.

Edit: Mój kolega pokazał mi, że Anderson-Darling może być również używany do testowania dwukierunkowego (porównywanie próbek).

„Dwupróbkowy test K-S jest jedną z najbardziej użytecznych i ogólnych nieparametrycznych metod porównywania dwóch próbek” – Wikipedia.

DETECT DEVICE USER

W tym konkretnym zadaniu musieliśmy wykryć, który użytkownik korzystał z konkretnego urządzenia. Każde urządzenie było używane przez jednego lub wielu różnych użytkowników i musieliśmy wymyślić technikę, która pozwoli nam zidentyfikować, czy był jeden czy wielu użytkowników. W przypadku wielu użytkowników chcieliśmy zidentyfikować, który użytkownik korzysta z którego urządzenia.

NASZA STRATEGIA

Postanowiliśmy wykorzystać połączenie sieci grafów i testu KS do zidentyfikowania potencjalnych klastrów. Ideą tego demo jest wyobrażenie sobie sieci grafowej, w której każdy węzeł (próbka) jest połączony z każdym innym węzłem (próbką). Wierzchołki lub połączenie pomiędzy tymi węzłami oznaczałyby KS Test, innymi słowy, jak blisko siebie znajdują się te dwa węzły. Tak więc dwa węzły z niską wartością KS P byłyby blisko, a dwa z wysoką wartością P byłyby daleko. To, miejmy nadzieję, stworzyłoby rozróżnialne klastry.

ZESTAW DANYCH

A oto jak wyglądają nasze dane:

As you can see, all our sample looks like a normal distribution with a very low standard deviation. We have sampled all the 82 different usage sessions of this device.

Strait from this picture we can see that there are different patterns. All the sample does not have the same histogram distribution. That is a very good start. After this we looked at the obvious cluster of distribution.

To do so, we did the KS matrix, which consists of a KS Two way test of every sample distribution vs every other sample.Szybkie spojrzenie na mapę ciepła macierzy KS nie ujawnia oczywistych wyników (jak widać na rysunku po prawej).

Po klasteryzacji hierarchicznej, otrzymujemy już lepsze wyniki (Jak widać na poniższym rysunku).)

W tych dwóch wizualizacjach dendrogramów, możemy zobaczyć kilka potencjalnych (3) klastrów. Po przeglądzie te klastry okazały się nieistotne.

NETWORK GRAPH

Po nieudanym klasteryzowaniu dendrogramu, spróbowaliśmy zaproponować podejście Graph. Celem, jak wyjaśniono wcześniej, jest stworzenie grafu wszystkich możliwych węzłów i wierzchołków. Długość wierzchołków jest wartością testu KS. Musieliśmy usunąć autoreferencję (która zawsze wynosiła 0 (oczywiście jesteś doskonale podobny do samego siebie).

We then ended up with a network graph where everybody was connected with everybody else which is not particularly useful.

The next step is to only keep the significant link (lower than a certain threshold)

As we can see on this picture, we got a very exciting result. We can clearly see two distinct clusters and three outliers.

This would perfectly fit our model, the big cluster must be the main user and the second cluster could be the alternative user.

After a validity verification, we did find out that the cluster identified some difference between the usage of clusters 1 and 2 but not the one we were looking for. Innymi słowy, nie rozwiązał on naszego problemu, ale znalazł inny wzorzec, który może być przydatny w innym kontekście.

Podsumowanie

Po tej pracy doszliśmy do wniosku, że test KS jest bardzo skutecznym sposobem na automatyczne rozróżnienie próbek o różnej dystrybucji. Nie rozwiązał on dokładnie naszego problemu, ale pokazał, że może być łatwo wykorzystany w Data Science.

Dzisiaj przedstawiłem jeden z problemów, który rozwiązaliśmy za pomocą KS Test, ale użyliśmy go również do innych problemów. KS Test staje się naprawdę dobrym testem w naszym szwajcarskim scyzoryku do nauki o danych.

Chcesz przeczytać więcej

Śledź mnie na moim blogu: coffeeanddata.ca

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *