paint-brush
การตรวจจับค่าผิดปกติ: สิ่งที่คุณจำเป็นต้องรู้โดย@nataliaogneva
54,626 การอ่าน
54,626 การอ่าน

การตรวจจับค่าผิดปกติ: สิ่งที่คุณจำเป็นต้องรู้

โดย Natalia Ogneva
Natalia Ogneva HackerNoon profile picture

Natalia Ogneva

@nataliaogneva

Statistics lover

4 นาที 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
th-flagTH
อ่านเรื่องนี้เป็นภาษาไทย!
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!
hu-flagHU
Olvasd el ezt a történetet magyarul!
hy-flagHY
Կարդացեք այս պատմությունը հայերեն։
uk-flagUK
Читайте цю історію українською!
mg-flagMG
Vakio amin'ny teny malagasy ity tantara ity!
More
TH

นานเกินไป; อ่าน

นักวิเคราะห์มักพบค่าผิดปกติในข้อมูลระหว่างทำงาน การตัดสินใจมักขึ้นอยู่กับค่าเฉลี่ยของกลุ่มตัวอย่าง ซึ่งมีความอ่อนไหวต่อค่าผิดปกติมาก การจัดการค่าผิดปกติจึงมีความสำคัญอย่างยิ่งเพื่อให้สามารถตัดสินใจได้ถูกต้อง ลองพิจารณาแนวทางง่ายๆ และรวดเร็วหลายวิธีในการทำงานกับค่าที่ผิดปกติ

Companies Mentioned

Mention Thumbnail
effect
Mention Thumbnail
Series
featured image - การตรวจจับค่าผิดปกติ: สิ่งที่คุณจำเป็นต้องรู้
Natalia Ogneva HackerNoon profile picture
Natalia Ogneva

Natalia Ogneva

@nataliaogneva

Statistics lover

นักวิเคราะห์มักพบค่าผิดปกติในข้อมูลระหว่างการทำงาน เช่น ในระหว่างการวิเคราะห์ AB-test การสร้างโมเดลเชิงทำนาย หรือการติดตามแนวโน้ม การตัดสินใจมักอิงตามค่าเฉลี่ยของกลุ่มตัวอย่าง ซึ่งมีความอ่อนไหวต่อค่าผิดปกติมาก และอาจเปลี่ยนแปลงค่าได้อย่างมาก ดังนั้น การจัดการค่าผิดปกติจึงมีความสำคัญเพื่อให้สามารถตัดสินใจได้ถูกต้อง


มาพิจารณาแนวทางง่ายๆ และรวดเร็วหลายวิธีในการทำงานกับค่าที่ผิดปกติ

การกำหนดปัญหา

ลองนึกภาพว่าคุณต้องดำเนินการวิเคราะห์การทดลองโดยใช้ค่าลำดับเฉลี่ยเป็นตัวชี้วัดหลัก สมมติว่าตัวชี้วัดของเรามักจะมีการแจกแจงแบบปกติ นอกจากนี้ เรายังทราบด้วยว่าการแจกแจงตัวชี้วัดในกลุ่มทดสอบนั้นแตกต่างจากการแจกแจงในกลุ่มควบคุม กล่าวอีกนัยหนึ่ง ค่าเฉลี่ยของการแจกแจงในกลุ่มควบคุมคือ 10 และในกลุ่มทดสอบคือ 12 ส่วนเบี่ยงเบนมาตรฐานในทั้งสองกลุ่มคือ 3


อย่างไรก็ตาม ทั้งสองตัวอย่างมีค่าผิดปกติที่ทำให้ค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของตัวอย่างเบี่ยงเบนไป

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

หมายเหตุ ว่าการพิจารณาเมตริกอาจมีค่าผิดปกติจากทั้งสองด้าน หากเมตริกของคุณมีค่าผิดปกติจากด้านเดียวเท่านั้น วิธีการต่างๆ สามารถเปลี่ยนแปลงได้อย่างง่ายดายเพื่อจุดประสงค์นั้น

ตัดหางออก

วิธีที่ง่ายที่สุดคือตัดการสังเกตทั้งหมดออก ก่อนถึงเปอร์เซ็นไทล์ 5% และ หลังเปอร์เซ็นไทล์ 95% ในกรณีนี้ เราสูญเสียข้อมูลไป 10% เนื่องจากข้อมูลไม่สอดคล้องกัน อย่างไรก็ตาม การแจกแจงดูมีรูปแบบมากขึ้น และโมเมนต์ของตัวอย่างก็ใกล้เคียงกับโมเมนต์ของการแจกแจงมากกว่า

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]


อีกวิธีหนึ่งคือการยกเว้นการสังเกต นอกช่วงที่ระบุ แถบต่ำเท่ากับเปอร์เซ็นไทล์ 25% ลบครึ่งหนึ่งของช่วงควอร์ไทล์ และแถบสูงเท่ากับเปอร์เซ็นไทล์ 75% บวกครึ่งหนึ่ง ที่นี่ เราจะสูญเสียข้อมูลเพียง 0.7% การแจกแจงดูมีรูปแบบมากกว่าแบบเริ่มต้น โมเมนต์ตัวอย่างมีความเท่าเทียมกันมากกว่าโมเมนต์การแจกแจง

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 ในแนวทางนี้ ค่าเฉลี่ยจะถูกสร้างขึ้นเหมือนค่าเฉลี่ยของกลุ่มตัวอย่างย่อย ในตัวอย่างของเรา ค่าเฉลี่ยในกลุ่มควบคุมเท่ากับ 10.35 และกลุ่มทดสอบเท่ากับ 11.78 ซึ่งยังคงเป็นผลลัพธ์ที่ดีกว่าเมื่อเทียบกับการประมวลผลข้อมูลเพิ่มเติม

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

บทสรุป

การตรวจจับและประมวลผลค่าผิดปกติมีความสำคัญต่อการตัดสินใจที่ถูกต้อง ปัจจุบัน มีแนวทางที่รวดเร็วและตรงไปตรงมาอย่างน้อย 3 แนวทางที่จะช่วยให้คุณตรวจสอบข้อมูลก่อนวิเคราะห์ได้


อย่างไรก็ตาม สิ่งสำคัญคือต้องจำไว้ว่าค่าผิดปกติที่ตรวจพบอาจเป็นค่าที่ผิดปกติและเป็นคุณลักษณะที่ทำให้เกิดผลแปลกใหม่ แต่นั่นเป็นอีกเรื่องหนึ่ง :)

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

About Author

Natalia Ogneva HackerNoon profile picture
Natalia Ogneva@nataliaogneva
Statistics lover

แขวนแท็ก

บทความนี้ถูกนำเสนอใน...

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