تخطَّ إلى المحتوى

Logistic Regression

الانحدار اللوجستي (Logistic Regression) Logistic Regression

الانحدار اللوجستي خوارزمية تصنيف لا انحدار — يستخدم الدالة Sigmoid لاحتمال y∈{0,1}، رغم اسم "regression" في اسمه.

رغم اسم "regression"، الانحدار اللوجستي خوارزمية تصنيف ثنائي (binary classification) وليست انحدارًا. الفكرة: تطبّق دالة Sigmoid على ناتج خطي فتحوّل أي رقم لاحتمال بين 0 و1. لو الاحتمال ≥ threshold (افتراضي 0.5)، صنّف إيجابيًا.

تدرّبه عبر تقليل binary cross-entropy (log loss) لا مجموع مربعات. الحل التحليلي غير موجود، لكنه يتقارب بسرعة عبر طرق التحسين التكرارية (lbfgs, saga, liblinear في scikit-learn).

أشكاله: L2 regularization (افتراضي)، L1 regularization (يفرض ميزات أقل أهمية = صفر)، Elastic-Net. يدعم Multinomial و OvR لأكثر من فئتين. سهل التفسير (كل معامل يبيّن أثر الميزة على log-odds)، ممتاز لـ baseline قبل تجريب نماذج أعقد.

الصياغة

P(y=1 | X) = 1 / (1 + exp(−(w·X + b)))

# التدريب بأقل log loss:
min −Σ [y·log(p) + (1−y)·log(1−p)]

📄 مثال

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, stratify=y)

model = LogisticRegression(max_iter=1000, C=1.0)
model.fit(X_train, y_train)

print(f"دقة الاختبار: {model.score(X_test, y_test):.3f}")
proba = model.predict_proba(X_test[:3])
print("احتمالات أول 3 عيّنات:")
print(proba.round(2))

أهم النقاط

النقطةالوظيفة
predict_probaاحتمالات كل فئة بدل تصنيف نهائي فقط
Cمعامل التنظيم — عكس قوة الـ regularization. كلما صغر، زادت العقوبة
penaltyنوع التنظيم: 'l1', 'l2', 'elasticnet'
multi_class'ovr' للتصنيف الثنائي/متعدد، 'multinomial' لأكثر من فئتين

💡 نصائح عملية

  • StandardScaler قبل Logistic Regression مهم حين التنظيم قوي — وإلا تختلف تأثيرات الميزات بسبب مقاساتها
  • ابدا بـ LogisticRegression كـ baseline قبل الانتقال لنماذج أعقد — كثير من المشاكل الحقيقية لها حدود خطية كفاية

⚠️ أخطاء شائعة

  • تفسير الاسم "regression" على أنه لمشاكل الانحدار — للوغستيك تصنيف فقط، انحدارًا استخدم LinearRegression أو غيره
  • عدم التحقق من convergence warning — max_iter كبير جدًا أو مقاسات غير موحّدة قد يجعل التقارب بطيئًا أو غير مكتمل

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: scikit-learn Documentation