paint-brush
Zbulimi i jashtëzakonshëm: Çfarë duhet të dininga@nataliaogneva
54,575 lexime
54,575 lexime

Zbulimi i jashtëzakonshëm: Çfarë duhet të dini

nga Natalia Ogneva4m2024/04/23
Read on Terminal Reader
Read this story w/o Javascript

Shume gjate; Te lexosh

Analistët shpesh ndeshen me të dhëna të jashtme gjatë punës së tyre. Vendimet zakonisht bazohen në mesataren e mostrës, e cila është shumë e ndjeshme ndaj vlerave të jashtme. Është thelbësore të menaxhohen të dhënat e jashtme për të marrë vendimin e duhur. Le të shqyrtojmë disa qasje të thjeshta dhe të shpejta për të punuar me vlera të pazakonta.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Zbulimi i jashtëzakonshëm: Çfarë duhet të dini
Natalia Ogneva HackerNoon profile picture

Analistët shpesh ndeshen me të dhëna të jashtme gjatë punës së tyre, të tilla si gjatë analizës së testit AB, krijimit të modeleve parashikuese ose ndjekjes së tendencave. Vendimet zakonisht bazohen në mesataren e mostrës, e cila është shumë e ndjeshme ndaj vlerave të jashtme dhe mund të ndryshojë në mënyrë dramatike vlerën. Pra, është thelbësore të menaxhohen të dhënat e jashtme për të marrë vendimin e duhur.


Le të shqyrtojmë disa qasje të thjeshta dhe të shpejta për të punuar me vlera të pazakonta.

Formulimi i problemit

Imagjinoni që ju duhet të kryeni një analizë eksperimenti duke përdorur një vlerë mesatare të rendit si metrikë parësore. Le të themi se metrika jonë zakonisht ka një shpërndarje normale. Gjithashtu, ne e dimë se shpërndarja metrike në grupin e testimit është e ndryshme nga ajo në kontroll. Me fjalë të tjera, mesatarja e shpërndarjes në kontroll është 10, dhe në test është 12. Devijimi standard në të dy grupet është 3.


Megjithatë, të dy mostrat kanë vlera të jashtme që anojnë mesataren e mostrës dhe devijimin standard të mostrës.

 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))

Vërejtje se marrja në konsideratë e metrikës mund të ketë vlera të jashtme nga të dyja anët. Nëse metrika juaj mund të ketë dallime të jashtme vetëm nga njëra anë, metodat mund të transformohen lehtësisht për këtë qëllim.

Cut Off Tails

Metoda më e lehtë është ndërprerja e të gjitha vëzhgimeve përpara përqindjes 5% dhe pas përqindjes 95% . Në këtë rast, ne humbëm 10% të informacionit si mashtrim. Sidoqoftë, shpërndarjet duken më të formuara dhe momentet e mostrës janë më afër momenteve të shpërndarjes.

 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]


Një mënyrë tjetër është të përjashtohen vëzhgimet jashtë gamës specifike . Brezi i ulët është i barabartë me përqindjen 25% minus gjysmën e diapazonit ndërkuartilor dhe brezi i lartë është i barabartë me përqindjen 75% plus gjysmën. Këtu do të humbasim vetëm 0.7% të informacionit. Shpërndarjet duken më të formuara se ato fillestare. Momentet e mostrës janë edhe më të barabarta me momentet e shpërndarjes.

 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

Metoda e dytë që kemi shqyrtuar këtu është një bootstrap. Në këtë qasje, mesatarja është ndërtuar si një mesatare e nën-mostrave. Në shembullin tonë, mesatarja në grupin e kontrollit është 10.35, dhe grupi i testit është 11.78. Është ende një rezultat më i mirë në krahasim me përpunimin e të dhënave shtesë.

 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())

konkluzioni

Zbulimi dhe përpunimi i pjesëve të jashtme janë të rëndësishme për marrjen e vendimit të duhur. Tani, të paktën tre qasje të shpejta dhe të drejtpërdrejta mund t'ju ndihmojnë të kontrolloni të dhënat përpara analizës.


Megjithatë, është thelbësore të mbani mend se vlerat e zbuluara mund të jenë vlera të pazakonta dhe një veçori për efektin e risive. Por kjo është një histori tjetër :)