0Pricing
Learn AI with Python · درس

تحليل توزيع السمات والهدف

تحليل العلاقات بين السمات والهدف، واكتشاف عدم توازن الفئات، والمعلومات المتبادلة.

تحليل توزيع السمات والهدف درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا نحلّل السمات مقارنةً بالهدف؟

‏الهدف هو المتغير الذي تريد التنبؤ به. ويتمثل الهدف من التحليل الاستكشافي للبيانات (EDA) في النمذجة في معرفة السمات التي ترتبط فعليًا بذلك الهدف.

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

السمة مقابل الهدف — هدف رقمي

عندما يكون الهدف رقميًا، يوضّح المخطط المبعثر لـ feature مقابل target ما إذا كانت السمة تحمل إشارة تنبؤية.

يعني وجود اتجاه واضح أن السمة تنبؤية، بينما تعني سحابة النقاط عديمة الشكل أنها على الأرجح ليست كذلك.

import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()

السمة مقابل الهدف — هدف فئوي

عندما يكون الهدف تسمية فئة، قارن توزيع السمة ضمن كل فئة. ويعني تداخل منحنيات KDE أن السمة لا تفصل بين الفئات جيدًا، بينما تعني المنحنيات المنفصلة بوضوح أنها مفيدة.

sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()

مقارنة توزيعات الفئات باستخدام مخططات الصندوق

تُعد مخططات الصندوق المجمّعة طريقة أخرى لرؤية العلاقات بين السمة والفئة: ضع فئة الهدف على المحور x والسمة على المحور y.

تشير الوسيطات المختلفة بين الفئات إلى أن السمة تساعد في التمييز بينها.

sns.boxplot(x="churned", y="tenure", data=df)
plt.show()

اكتشاف اختلال توازن الفئات

يحدث اختلال توازن الفئات عندما يفوق عدد إحدى فئات الهدف عدد فئة أخرى بكثير (مثلًا: 95% غير احتيال و5% احتيال). ويجعل ذلك مقياس الدقة مضللًا، كما يحيّز النماذج نحو الفئة الأكبر.

تحقّق من ذلك باستخدام عدّ بسيط للقيم في الهدف.

print(df["churned"].value_counts())
# 0    9200
# 1     800

value_counts(normalize=True) للنسب

قد تخفي الأعداد الخام مدى شدة اختلال التوازن. يحوّل normalize=True الأعداد إلى نسب، بحيث يمكنك قراءتها مباشرةً كنسبة مئوية.

print(df["churned"].value_counts(normalize=True))
# 0    0.92
# 1    0.08   -> only 8% positive class

لماذا يهم اختلال التوازن؟

عندما تمثل القيم السالبة 92% من البيانات، يحقق نموذج يتنبأ دائمًا بـ "لا" دقةً تبلغ 92% مع أنه عديم الفائدة. لذلك تراقب اختلال التوازن في مرحلة مبكرة.

تشمل المعالجات إعادة أخذ العينات (زيادة عينات الفئة الأقلية أو تقليل عينات الفئة الأكبر)، وأوزان الفئات، أو استخدام مقاييس مثل precision وrecall وF1 بدلًا من الدقة.

المعلومات المتبادلة — قياس مدى الإفادة

تقيس المعلومات المتبادلة مقدار ما تؤدي معرفته بالسمة إلى تقليل عدم اليقين بشأن الهدف. وعلى خلاف الارتباط، تلتقط هذه المعلومات العلاقات غير الخطية أيضًا.

بالنسبة إلى أهداف التصنيف، توفر scikit-learn الدالة mutual_info_classif.

from sklearn.feature_selection import mutual_info_classif

X = df[["balance", "tenure", "rooms"]]
y = df["churned"]
mi = mutual_info_classif(X, y, random_state=42)
print(dict(zip(X.columns, mi)))

ترتيب السمات حسب المعلومات المتبادلة

يتيح وضع درجات المعلومات المتبادلة في Series مرتبة الحصول سريعًا على ترتيب لأهمية السمات. وتعني القيمة الأعلى للمعلومات المتبادلة أن السمة تقدم معلومات أكثر عن الهدف.

يُعد هذا مرشحًا أوليًا ممتازًا قبل تدريب أي نموذج.

import pandas as pd
from sklearn.feature_selection import mutual_info_classif

mi = mutual_info_classif(X, y, random_state=42)
scores = pd.Series(mi, index=X.columns).sort_values(ascending=False)
print(scores)

تحويل لوغاريتمي للسمات ذات الالتواء

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

استخدم np.log1p (لوغاريتم 1 + x) لكي يتعامل بأمان مع القيم الصفرية.

import numpy as np

df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())

قبل التحويل وبعده: تصوّر التحويل

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

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 2)
df["income"].hist(ax=ax[0]); ax[0].set_title("Raw")
np.log1p(df["income"]).hist(ax=ax[1]); ax[1].set_title("log1p")
plt.show()

فحص سريع: معالجة سمة ملتوية

إحدى السمات ذات التواء قوي إلى اليمين وتحتوي على بعض القيم الصفرية.

مراجعة: تحليل السمة والهدف

لقد تعلمت كيفية ربط السمات بهدف التنبؤ:

  • استخدام المخططات المبعثرة ومخططات KDE ومخططات الصندوق لرؤية الإشارة في العلاقة بين السمة والهدف
  • استخدام value_counts(normalize=True) لاكتشاف اختلال توازن الفئات وقياسه
  • استخدام mutual_info_classif لترتيب السمات حسب مدى إفادتها، بما في ذلك العلاقات غير الخطية
  • استخدام np.log1p للحد من الالتواء إلى اليمين في السمات

وبذلك يكتمل التحليل الاستكشافي للبيانات. التالي: جمع البيانات من واجهات Web API.

الأسئلة الشائعة

هل درس «تحليل توزيع السمات والهدف» مجاني؟

نعم — نص درس «تحليل توزيع السمات والهدف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «تحليل توزيع السمات والهدف»؟

تحليل العلاقات بين السمات والهدف، واكتشاف عدم توازن الفئات، والمعلومات المتبادلة. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تحليل توزيع السمات والهدف»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. سير عمل EDA وتحليل مواصفات البيانات
  2. التحليل أحادي المتغير
  3. التحليل ثنائي ومتعدد المتغيرات
  4. تحليل توزيع السمات والهدف
← العودة إلى Learn AI with Python