TESTUL KOLMOGOROV-SMIRNOV

În ultimul timp, la locul de muncă, a trebuit să facem o mulțime de clasificări nesupravegheate. Practic, a trebuit să distingem N clase dintr-o populație eșantionată. Aveam o idee aproximativă despre câte clase erau prezente, dar nimic nu era sigur, am descoperit testul Kolmogorov-Smirnov o modalitate foarte eficientă de a determina dacă două eșantioane sunt semnificativ diferite unul de celălalt.

Voi oferi un pic de context cu privire la testul Kolmogorov-Smirnov și vă voi prezenta o problemă pe care am rezolvat-o cu acesta.

Post original pe coffeeanddata.ca

Respingerea ipotezei de nul. Asta sună ca o amintire dureroasă de la cursul de statistică de la universitate, dar de fapt este exact ceea ce vrem să facem aici. Vrem să respingem posibilitatea ca cele două eșantioane să provină exact din aceeași distribuție. Să ne uităm la o prezentare generală de nivel foarte înalt, nematematic, a unor teste disponibile. Dacă doriți să înțelegeți bine matematica din spatele tuturor acestor teste, folosiți linkul Wikipedia furnizat în toate secțiunile.

STUDENT’S T-TEST

Testul T al lui Student este probabil cel mai bine cunoscut mod de respingere a ipotezei nule. Acest test calculează valoarea P a unui eșantion față de o populație normală sau față de un alt eșantion. Rezultatul, valoarea P, vă spune cât de probabil este ca aceste eșantioane să provină din exact aceeași distribuție.

Când se obține, valoarea P poate fi comparată cu un prag numit semnificație statistică (de exemplu, 0,05), dacă valoarea P este mai mică, putem respinge ipoteza nulă.

Există o problemă cu testul T al lui Student, eșantioanele trebuie să fie normale (să aibă forma unei distribuții normale). Aceasta este o problemă pentru noi, deoarece lucrăm foarte mult cu distribuții Poisson.

TESTUL KOLMOGOROV-SMIRNOV

Testul Kolmogorov-Smirnov (Testul KS) este un pic mai complex și vă permite să detectați modele pe care nu le puteți detecta cu testul T al lui Student.

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. Cu alte cuvinte:

  • Testul T al lui Student spune că există 79,3% șanse ca cele două eșantioane să provină din aceeași distribuție.
  • Testul KS spune că există 1,6% șanse ca cele două eșantioane să provină din aceeași distribuție.

ALTE TESTE

Există multe alte Teste și algoritmi pentru a face acest tip de lucru. Testul Shapiro-Wilk și testul Anderson-Darling sunt două teste considerate mai puternice decât testul KS. Există un dezavantaj major cu aceste două teste, ele nu vă permit să comparați două eșantioane, ele compară întotdeauna un eșantion cu o distribuție standard.

Edit: Un coleg mi-a arătat că Anderson-Darling ar putea fi, de asemenea, utilizat pentru testarea în două direcții (Compararea eșantioanelor).

„Testul K-S cu două eșantioane este una dintre cele mai utile și generale metode neparametrice pentru compararea a două eșantioane” – Wikipedia.” – Wikipedia.

DETECTAREA UTILIZATORULUI DE DISPOZITIV

Pentru această temă specifică a trebuit să detectăm ce utilizator folosește un anumit dispozitiv. Fiecare dispozitiv a fost folosit de unul sau mai mulți utilizatori diferiți și a trebuit să găsim o tehnică pentru a identifica dacă există unul sau mai mulți utilizatori. În cazul utilizatorilor multipli, am vrut să identificăm ce utilizare a fost făcută de către ce utilizator.

STRATEGIA NOASTRĂ

Am decis să folosim un amestec de rețea grafică și KS Test pentru a identifica potențialele clustere. Ideea din spatele acestui demo este să ne imaginăm o rețea grafică în care fiecare nod (eșantion) a fost conectat la fiecare alt nod (eșantion). Verticile sau legătura dintre aceste noduri ar me KS Test, cu alte cuvinte, cât de apropiate sunt aceste două noduri. Astfel, două noduri cu o valoare P KS scăzută ar fi apropiate, iar două noduri cu o valoare P ridicată ar fi departe. Sperăm că acest lucru ar crea clustere distincte.

DATA SET

Iată cum arată datele noastre:

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.O vizualizare rapidă a hărții termice a matricei KS nu dezvăluie rezultate evidente (După cum puteți vedea în figura din dreapta).

După o grupare ierarhică atât de ierarhică, obținem deja niște rezultate mai bune. (După cum puteți vedea în figura următoare.)

În aceste două vizualizări de dendrograme, putem vedea câteva clustere potențiale (3). După revizuire, aceste clustere s-au dovedit a fi nesemnificative.

GRAFIC DE REȚEAUA

După clusterizarea prin dendrogramă nereușită, am încercat abordarea grafică propusă. Scopul aici, așa cum am explicat mai devreme, este de a reprezenta grafic toate nodurile și vârfurile posibile. Lungimea vârfurilor fiind valoarea testului KS. A trebuit să eliminăm autoreferința (care a fost întotdeauna 0 (evident că ești perfect similar cu tine însuți).

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. Cu alte cuvinte, nu a rezolvat problema noastră, ci a găsit de fapt un alt model, care ar putea fi util într-un alt context.

CONCLUZIE

În urma acestei lucrări, am concluzionat că testul KS este o modalitate foarte puternică de a diferenția automat eșantioanele din distribuții diferite. Nu a rezolvat exact problema noastră, dar a arătat că poate fi folosit cu ușurință într-un context Data Science.

Astăzi v-am prezentat una dintre problemele pe care le-am rezolvat cu KS Test, dar l-am folosit și pentru alte probleme. KS Test devine într-adevăr un test bun în cuțitul nostru elvețian pentru știința datelor.

Vreți să citiți mai mult

Să mă urmăriți pe blogul meu: coffeeanddata.ca

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *