الإحصاء يمنحك الأدوات اللازمة لـ فهم بياناتك و تقييم نماذجك بشكل صحيح. هذه الصفحة تركّز على الحد الأدنى العملي — لا تعريفات أكاديمية مُثقلَة.
مقاييس الموقع (Central Tendency)
المتوسط (Mean)
مجموع القيم مقسومًا على عددها:
import numpy as np
prices = np.array([100, 200, 300, 400, 500])
print(prices.mean()) # 300.0
حسّاس للقيم المتطرّفة (outliers): لو عندك رواتب 9 موظفين = 5000$ ومدير = 50000$، المتوسط = 9500$ لكن هذا لا يعكس الواقع.
الوسيط (Median)
القيمة الوسطى بعد ترتيب القيم:
print(np.median(prices)) # 300.0 — مماثل هنا لأن التوزيع متماثل
أكثر متانة (robust): الوسيط لا يتأثر كثيرًا بالقيم المتطرّفة.
المنوال (Mode)
القيمة الأكثر تكرارًا:
from scipy import stats
data = np.array([1, 2, 2, 3, 4, 4, 4, 5])
print(stats.mode(data).mode) # 4 — تكرّرت 3 مرات
مقاييس التشتّت (Dispersion)
الانحراف المعياري (Standard Deviation)
مدى بُعد القيم عن المتوسط. رقم صغير = القيم متقاربة. رقم كبير = القيم متفرّقة.
print(prices.std()) # 141.42 — تشتّت معتدل
low_spread = np.array([290, 295, 300, 305, 310])
print(low_spread.std()) # 7.07 — تشتّت قليل
في تعلّم الآلة، الانحراف المعياري مهم لـ:
- تطبيع البيانات (Standardization):
(x - mean) / std. - اكتشاف outliers: قيم بعيدة بأكثر من 3 انحرافات معيارية عن المتوسط.
التباين (Variance)
مربع الانحراف المعياري:
print(prices.var()) # 20000.0 = std ** 2
المدى (Range)
الفرق بين أكبر وأصغر قيمة:
print(prices.max() - prices.min()) # 400
الربعيّات (Quartiles) و IQR
- Q1 = القيمة عند 25% من البيانات.
- Q2 = الوسيط (50%).
- Q3 = القيمة عند 75% من البيانات.
- IQR = Q3 - Q1.
q1, q2, q3 = np.percentile(prices, [25, 50, 75])
print(f"Q1={q1}, Q2={q2}, Q3={q3}, IQR={q3 - q1}")
IQR مفيد لـ:
- Box plots.
- اكتشاف outliers: أي قيمة خارج [Q1 - 1.5IQR, Q3 + 1.5IQR] تُعتبر متطرّفة.
الارتباط (Correlation)
هل ميزتان تتحرّكان معًا؟ معامل الارتباط Pearson:
+1= ارتباط طردي مثالي.0= لا ارتباط خطّي.-1= ارتباط عكسي مثالي.
import numpy as np
# 5 منازل: المساحة والسعر
area = np.array([50, 70, 90, 110, 130])
price = np.array([100, 140, 180, 220, 260])
# معامل الارتباط
correlation = np.corrcoef(area, price)[0, 1]
print(round(correlation, 2)) # 1.0 — ارتباط مثالي هنا
لماذا يهمّ في تعلّم الآلة؟
- Multicollinearity: ميزتان مترابطتان بشكل كبير تربكان نموذج الانحدار الخطي.
- اختيار الميزات: إذا كانت ميزتان مترابطتين بشدة، يكفي الاحتفاظ بواحدة.
- لكن: الارتباط ≠ سببية. لا تقل "المساحة تسبّب السعر" — فقط "تتحرّكان معًا".
اختبار الفرضيات (Hypothesis Testing)
الفكرة
تبدأ بـ فرضية صفرية (Null Hypothesis - H0)، وتحاول دحضها ببياناتك.
مثال: "متوسط سعرك للمنتج لا يختلف عن 100$".
الخطوات
- صياغة H0 و H1 (الفرضية البديلة).
- حساب إحصاءة الاختبار من البيانات.
- حساب p-value (احتمال الحصول على بيانات كهذه إذا كانت H0 صحيحة).
- قرار: إذا p < 0.05 → نرفض H0.
مثال في بايثون
from scipy import stats
# هل متوسط عيّنة = 100 فعلًا؟
samples = np.array([102, 98, 101, 99, 100, 103, 97, 99, 102, 100])
t_stat, p_value = stats.ttest_1samp(samples, 100)
print(f"t = {t_stat:.2f}")
print(f"p-value = {p_value:.3f}")
# p ≈ 0.82 → لا نرفض H0 (المتوسط قد يكون فعلًا 100)
تحذيرات مهمة
- p-value ليس احتمال أن H0 صحيحة — هذا سوء فهم شائع جدًا.
- "p < 0.05" ليس حدود سحرية — اختيار العتبة (0.05، 0.01، ...) قرار تجريبي.
- p صغير ≠ تأثير كبير — يمكن أن يكون لديك p=0.001 على فرق تافه مع بيانات ضخمة.
فترات الثقة (Confidence Intervals)
فترة الثقة = نطاق يحتمل أن يحتوي على القيمة الحقيقية باحتمال معيّن.
مثال: متوسط السعر = 150$, فترة الثقة 95% = [142$, 158$].
هذا يعني: لو كرّرت التجربة مرّات كثيرة، 95% من الفترات ستحتوي على المتوسط الحقيقي.
from scipy import stats
samples = np.random.normal(loc=100, scale=10, size=100)
mean = samples.mean()
ci = stats.t.interval(confidence=0.95, df=len(samples)-1,
loc=mean, scale=stats.sem(samples))
print(f"Mean: {mean:.2f}")
print(f"95% CI: [{ci[0]:.2f}, {ci[1]:.2f}]")
كيف تظهر الإحصاء في مشاريع AI؟
- استكشاف البيانات (EDA): تبدأ دائمًا بمقاييس إحصائية قبل أي نموذج.
- تطبيع البيانات: StandardScaler يحول كل ميزة إلى متوسط 0 وانحراف معياري 1.
- اكتشاف outliers: IQR أو z-score.
- اختيار النماذج: t-test للمقارنة بين نموذجين.
- تقارير النتائج: فترة ثقة للدقّة، p-value لفروق الأداء.
أخطاء شائعة
- "المتوسط دائمًا أفضل من الوسيط": لا. في توزيعات منحرفة (مثل الرواتب)، الوسيط أصدق.
- "الارتباط = سببية": من أقدم الأخطاء المنطقية. لا تستنتج السببية من الارتباط أبدًا.
- "p < 0.05 يعني أن النتيجة حقيقية": p-value يخبرك باحتمال بياناتك تحت H0 — لا يخبرك بالحقيقة.
- "فترة الثقة 95% تعني 95% احتمال أن القيمة في الفترة": خطأ شائع. الفترة إما تحتوي أو لا تحتوي — لا يوجد احتمال.
الخطوات التالية
- نظرة على أنواع التعلّم — كيف تدخل الإحصاء في ML.
- الاحتمالات — الأساس الذي بنيت عليه هذه الصفحة.
- Overfitting و Bias-Variance — كيف ترتبط الإحصاء بمشاكل النماذج.
- Pandas لتحضير البيانات — كيف تستكشف بياناتك إحصائيًا قبل النمذجة.