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