paint-brush
Outlier-észlelés: amit tudnod kelláltal@nataliaogneva
54,626 olvasmányok
54,626 olvasmányok

Outlier-észlelés: amit tudnod kell

által Natalia Ogneva
Natalia Ogneva HackerNoon profile picture

Natalia Ogneva

@nataliaogneva

Statistics lover

4 min read2024/04/23
Read on Terminal Reader
Read this story in a terminal
Print this story
Read this story w/o Javascript
Read this story w/o Javascript
tldt arrow
hu-flagHU
Olvasd el ezt a történetet magyarul!
en-flagEN
Read this story in the original language, English!
ln-flagLN
Tanga lisolo oyo na lingala!
lo-flagLO
ອ່ານເລື່ອງນີ້ເປັນພາສາລາວ!
ps-flagPS
دا کیسه په پښتو ژبه ولولئ!
lt-flagLT
Skaitykite šią istoriją lietuvių kalba!
hr-flagHR
Pročitajte ovu priču na hrvatskom!
lv-flagLV
Izlasi šo stāstu latviešu valodā!
ht-flagHT
Li istwa sa a an kreyòl ayisyen!
hy-flagHY
Կարդացեք այս պատմությունը հայերեն։
uk-flagUK
Читайте цю історію українською!
mg-flagMG
Vakio amin'ny teny malagasy ity tantara ity!
id-flagID
Baca cerita ini dalam bahasa Indonesia!
More
HU

Túl hosszú; Olvasni

Az elemzők munkájuk során gyakran találkoznak kiugró adatokkal. A döntések általában a minta átlagán alapulnak, ami nagyon érzékeny a kiugró értékekre. A helyes döntés meghozatalához elengedhetetlen a kiugró értékek kezelése. Nézzünk meg néhány egyszerű és gyors megközelítést a szokatlan értékekkel való munkavégzéshez.

Companies Mentioned

Mention Thumbnail
effect
Mention Thumbnail
Series
featured image - Outlier-észlelés: amit tudnod kell
Natalia Ogneva HackerNoon profile picture
Natalia Ogneva

Natalia Ogneva

@nataliaogneva

Statistics lover

Az elemzők gyakran találkoznak kiugró adatokkal munkájuk során, például AB-teszt elemzés, prediktív modellek készítése vagy trendek követése során. A döntések általában a minta átlagán alapulnak, amely nagyon érzékeny a kiugró értékekre, és drámai módon megváltoztathatja az értéket. Ezért kulcsfontosságú a kiugró értékek kezelése a helyes döntés meghozatalához.


Nézzünk meg néhány egyszerű és gyors megközelítést a szokatlan értékekkel való munkavégzéshez.

Probléma megfogalmazása

Képzelje el, hogy egy kísérletelemzést kell végrehajtania, elsődleges mérőszámként egy átlagos rendelési értéket használva. Tegyük fel, hogy a metrikánk általában normális eloszlású. Azt is tudjuk, hogy a tesztcsoportban a metrika eloszlása eltér a kontrollétól. Vagyis az eloszlás átlaga a kontrollban 10, a tesztben pedig 12. A szórása mindkét csoportban 3.


Mindazonáltal mindkét mintában vannak kiugró értékek, amelyek torzítják a minta átlagát és a minta szórását.

image

 import numpy as np N = 1000 mean_1 = 10 std_1 = 3 mean_2 = 12 std_2 = 3 x1 = np.concatenate((np.random.normal(mean_1, std_1, N), 10 * np.random.random_sample(50) + 20)) x2 = np.concatenate((np.random.normal(mean_2, std_2, N), 4 * np.random.random_sample(50) + 1))

Megjegyzendő , hogy a metrika figyelembevételével mindkét oldalról lehetnek kiugró értékek. Ha a metrikájának csak az egyik oldalról lehet kiugró értéke, a metódusok könnyen átalakíthatók erre a célra.

Levágott farok

A legegyszerűbb módszer az 5%-os percentilis előtti és a 95%-os percentilis utáni megfigyelések levágása. Ebben az esetben az információ 10%-át veszítettük el. Az eloszlások azonban formáltabbnak tűnnek, és a mintamomentumok közelebb állnak az eloszlási momentumokhoz.

image

 import numpy as np x1_5pct = np.percentile(x1, 5) x1_95pct = np.percentile(x1, 95) x1_cutted = [i for i in x1 if i > x1_5pct and i < x1_95pct] x2_5pct = np.percentile(x2, 5) x2_95pct = np.percentile(x2, 95) x2_cutted = [i for i in x2 if i > x2_5pct and i < x2_95pct]


Egy másik módszer az adott tartományon kívüli megfigyelések kizárása. Az alsó sáv egyenlő a 25% percentilis mínusz az interkvartilis tartomány felével, a felső sáv pedig a 75% százalékos plusz fele. Itt csak az információ 0,7%-át veszítjük el. Az eloszlások formáltabbnak tűnnek, mint a kezdeti. A mintamomentumok még jobban megegyeznek az eloszlási nyomatékokkal.

image

 import numpy as np low_band_1 = np.percentile(x1, 25) - 1.5 * np.std(x1) high_band_1 = np.percentile(x1, 75) + 1.5 * np.std(x1) x1_cutted = [i for i in x1 if i > low_band_1 and i < high_band_1] low_band_2 = np.percentile(x2, 25) - 1.5 * np.std(x2) high_band_2 = np.percentile(x2, 75) + 1.5 * np.std(x2) x2_cutted = [i for i in x2 if i > low_band_2 and i < high_band_2]

Bootstrap

A második módszer, amelyet itt megvizsgáltunk, a bootstrap. Ebben a megközelítésben az átlagot részminták átlagaként állítják elő. Példánkban a kontrollcsoport átlaga 10,35, a tesztcsoporté pedig 11,78. Ez még mindig jobb eredmény a további adatfeldolgozáshoz képest.

 import pandas as pd def create_bootstrap_samples( sample_list: np.array, sample_size: int, n_samples: int ): # create a list for sample means sample_means = [] # loop n_samples times for i in range(n_samples): # create a bootstrap sample of sample_size with replacement bootstrap_sample = pd.Series(sample_list).sample(n = sample_size, replace = True) # calculate the bootstrap sample mean sample_mean = bootstrap_sample.mean() # add this sample mean to the sample means list sample_means.append(sample_mean) return pd.Series(sample_means) (create_bootstrap_samples(x1, len(x1), 1000).mean(), create_bootstrap_samples(x2, len(x2), 1000).mean())

Következtetés

A kiugró értékek észlelése és feldolgozása fontos a helyes döntés meghozatalához. Most legalább három gyors és egyszerű megközelítés segíthet az adatok ellenőrzésében az elemzés előtt.


Fontos azonban emlékezni arra, hogy az észlelt kiugró értékek szokatlan értékek és az újdonság hatás jellemzői lehetnek. De ez egy másik történet :)

L O A D I N G
. . . comments & more!

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

HANG TAGOK

EZT A CIKKET BEMUTATTA...

Permanent on Arweave
Read on Terminal Reader
Read this story in a terminal
 Terminal
Read this story w/o Javascript
Read this story w/o Javascript
 Lite

Mentioned in this story

companies