paint-brush
اكتشاف القيم الشاذة: ما تحتاج إلى معرفتهبواسطة@nataliaogneva
54,619 قراءة٪ s
54,619 قراءة٪ s

اكتشاف القيم الشاذة: ما تحتاج إلى معرفته

بواسطة Natalia Ogneva4m2024/04/23
Read on Terminal Reader
Read this story w/o Javascript

طويل جدا؛ ليقرأ

غالبًا ما يواجه المحللون قيمًا شاذة في البيانات أثناء عملهم. وعادةً ما تستند القرارات إلى متوسط العينة، الذي يكون حساسًا للغاية للقيم الشاذة. ومن الأهمية بمكان إدارة القيم الشاذة لاتخاذ القرار الصحيح. دعنا نفكر في عدة طرق بسيطة وسريعة للتعامل مع القيم غير المعتادة.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - اكتشاف القيم الشاذة: ما تحتاج إلى معرفته
Natalia Ogneva HackerNoon profile picture

غالبًا ما يواجه المحللون القيم المتطرفة في البيانات أثناء عملهم، مثل أثناء تحليل اختبار AB، أو إنشاء نماذج تنبؤية، أو تتبع الاتجاهات. وعادةً ما تستند القرارات إلى متوسط العينة، الذي يكون حساسًا للغاية للقيم المتطرفة ويمكن أن يغير القيمة بشكل كبير. لذا، من الأهمية بمكان إدارة القيم المتطرفة لاتخاذ القرار الصحيح.


دعونا نفكر في عدة طرق بسيطة وسريعة للعمل مع القيم غير المعتادة.

صياغة المشكلة

تخيل أنك بحاجة إلى إجراء تحليل تجريبي باستخدام قيمة ترتيب متوسط كمقياس أساسي. لنفترض أن المقياس لدينا عادةً ما يكون له توزيع طبيعي. كما نعلم أن توزيع المقياس في مجموعة الاختبار يختلف عن توزيعه في المجموعة الضابطة. بعبارة أخرى، متوسط التوزيع في المجموعة الضابطة هو 10، وفي الاختبار هو 12. الانحراف المعياري في كلتا المجموعتين هو 3.


ومع ذلك، تحتوي كلتا العينتين على قيم متطرفة تؤدي إلى انحراف متوسطات العينة والانحراف المعياري للعينة.

 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% من المعلومات كنتيجة للخطأ. ومع ذلك، تبدو التوزيعات أكثر تشكلًا، وتكون لحظات العينة أقرب إلى لحظات التوزيع.

 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٪ فقط من المعلومات. تبدو التوزيعات أكثر تشكلًا من التوزيعات الأولية. لحظات العينة أكثر مساواة مع لحظات التوزيع.

 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]

التمهيد

الطريقة الثانية التي درسناها هنا هي إعادة بناء البيانات. في هذه الطريقة، يتم إنشاء المتوسط مثل متوسط العينات الفرعية. في مثالنا، المتوسط في مجموعة التحكم يساوي 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())

خاتمة

يعد اكتشاف القيم المتطرفة ومعالجتها أمرًا مهمًا لاتخاذ القرار الصحيح. الآن، هناك ثلاثة أساليب سريعة ومباشرة على الأقل يمكنها مساعدتك في التحقق من البيانات قبل التحليل.


ومع ذلك، من الضروري أن نتذكر أن القيم المتطرفة التي تم اكتشافها قد تكون قيمًا غير عادية وميزة لتأثير الحداثة. ولكن هذه قصة أخرى :)