ML Learning Hub
الانحدارمبتدئ

الانحدار الخطي واللوجستي

إيجاد أفضل خط في سحابة من البيانات المتشعثة

غوص بصري عميق من MCO إلى الانحدار التدرجي وR² والبواقي والتعددية الخطية، ثم اللوجستي: sigmoid وخسارة log وتنظيم L1/L2 وحدود القرار.

45 min
15 مخططات
8 المفاهيم المغطاة

المتطلبات الأساسية

Linear Algebra
Probability & Statistics

المفاهيم المغطاة

Least SquaresGradient DescentSigmoidL1/LassoL2/RidgeDecision BoundaryOverfitting

الصيغ الرئيسية

حل MCO

الحل بصيغة مغلقة الذي يُقلل البواقي المربعة — يُطبَّق عندما تكون XᵀX قابلة للعكس

خسارة MSE

متوسط الخطأ التربيعي — الهدف المُقلَّل؛ يعاقب البواقي الكبيرة تربيعياً

تحديث التدرج

قاعدة تحديث الانحدار التدرجي — α هو معدل التعلم الذي يتحكم في حجم الخطوة

السيغمويد

تضغط أي رقم حقيقي إلى (0,1) للتفسير الاحتمالي في الانحدار اللوجستي

محاكاة تفاعلية

Loading visualization…

هندسة النموذج

Loading visualization…
🎯

لماذا يهم هذا؟

motivation

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

فاز الانحدار الخطي بجائزة نوبل (الاقتصاد، 1978). يسبق الحواسيب بـ200 عام — استخدمه غاوس للتنبؤ بمدارات الكواكب.

💡

الحدس الهندسي

intuition

تخيل رمي السهام على حائط. كل سهم يهبط في موضع (x, y). تريد إيجاد الخط الذي يمر بأقرب ما يمكن من جميع السهام في آنٍ واحد. 'الأقرب' يعني تقليل المسافات الرأسية (البواقي) من كل سهم إلى خطك. البواقي المربعة تحول هذا إلى منظر على شكل وعاء — وقاع الوعاء هو حل المربعات الصغرى.

رياضيات المربعات الصغرى

math

نصمم العلاقة كـ ŷ = Xβ + ε حيث ε ~ N(0, σ²). تقليل مجموع البواقي المربعة له حل جميل بصيغة مغلقة يسمى المعادلة الطبيعية. يعمل هذا لأن سطح الخسارة مكافئ مكافئ — وعاء مثالي بحد أدنى واحد بالضبط.

المعادلة الطبيعية (MCO)
🔬

لماذا تعظيم الاحتمالية = تصغير الأخطاء المربعة

deepdive

هذا الترابط عميق. إذا افترضنا ضوضاء غاوسية ε ~ N(0, σ²)، فاحتمال مشاهدة y بمعلومية x يتناسب مع exp(-(y - Xβ)²/2σ²). أخذ اللوغاريتم والنفي يعطينا بالضبط مجموع البواقي المربعة. MCO وMLE نفس الشيء تحت الضوضاء الغاوسية.

افتراض الضوضاء الغاوسية هو سبب تأثير القيم الشاذة بشدة — الأخطاء المربعة تعاقب البواقي الكبيرة تربيعياً. استخدم خسارة هوبر للمتانة.

⚙️

الانحدار التدرجي: التعلم خطوة بخطوة

algorithm

عندما لا تكون XᵀX قابلة للعكس (التعددية الخطية) أو كان مجموعة البيانات كبيرة جداً للمعادلة الطبيعية، نستخدم الانحدار التدرجي. ابدأ في أي مكان على سطح الخسارة، قس الميل، اخطُ خطوة صغيرة للأسفل. كرر حتى التقارب.

1

تهيئة الأوزان β = 0 (أو قيم عشوائية صغيرة)

2

حساب التنبؤ: ŷ = Xβ

3

حساب البواقي: ε = y - ŷ

4

حساب التدرج: ∇L = -(2/n) Xᵀε

5

التحديث: β ← β - α · ∇L

6

التكرار حتى ||∇L|| < التسامح

الانحدار اللوجستي: القفزة الثنائية

math

للنتائج الثنائية نحتاج مخرجات في النطاق (0,1). نمرر التركيبة الخطية عبر دالة السيغمويد σ(z) = 1/(1+e⁻ᶻ) التي تضع ℝ → (0,1). تتغير دالة الخسارة من MSE إلى الإنتروبيا التقاطعية الثنائية (خسارة اللوغاريتم).

خسارة الإنتروبيا التقاطعية الثنائية
</>

من الصفر مع NumPy

code

The full gradient descent implementation in 12 lines:

python36 lines
import numpy as np
from sklearn.datasets import make_regression

class="tok-comment"># ── Sample data ────────────────────────────────────────────────────────
X_raw, y = make_regression(n_samples=class="tok-num">200, n_features=class="tok-num">5, noise=class="tok-num">10, random_state=class="tok-num">42)
X = np.c_[np.ones(len(X_raw)), X_raw]   class="tok-comment"># prepend bias column
lam = class="tok-num">0.1                                 class="tok-comment"># Ridge regularisation strength

class LinearRegression:
    def __init__(self, lr=class="tok-num">0.01, n_iter=class="tok-num">1000):
        self.lr, self.n_iter = lr, n_iter

    def fit(self, X, y):
        n, p = X.shape
        self.beta = np.zeros(p)
        for _ in range(self.n_iter):
            y_hat = X @ self.beta
            residuals = y - y_hat
            grad = -(class="tok-num">2/n) * X.T @ residuals
            self.beta -= self.lr * grad
        return self

    def predict(self, X):
        return X @ self.beta

class="tok-comment"># Demo
model = LinearRegression(lr=class="tok-num">0.01, n_iter=class="tok-num">1000).fit(X, y)
print(class="tok-str">"GD beta:", model.beta[:class="tok-num">3].round(class="tok-num">2))

class="tok-comment"># Closed-form (Normal Equation):
beta_ols = np.linalg.solve(X.T @ X, X.T @ y)
class="tok-comment"># Ridge (L2 regularization):
p = X.shape[class="tok-num">1]
beta_ridge = np.linalg.solve(X.T @ X + lam * np.eye(p), X.T @ y)
print(class="tok-str">"OLS beta:  ", beta_ols[:class="tok-num">3].round(class="tok-num">2))
print(class="tok-str">"Ridge beta:", beta_ridge[:class="tok-num">3].round(class="tok-num">2))
⚠️

المزالق الحرجة

pitfall

أربعة أخطاء تُدمّر نماذج الانحدار في الإنتاج:

1

التعددية الخطية — الميزات المرتبطة تجعل (XᵀX) شبه منفردة. VIF > 10 إنذار. الحل: تنظيم Ridge أو ACP.

2

الميزات غير الموسّعة — الانحدار التدرجي يتقارب أبطأ 100× إذا كانت الميزات بمقاييس مختلفة. طبّق دائماً StandardScaler أولاً.

3

عدم تجانس التباين — تباين البواقي غير ثابت. تخيّل البواقي مقابل القيم المجهّزة.

4

الاستقراء — النماذج الخطية واثقة بشكل خطير خارج نطاق التدريب. لا تستقرئ أبداً بدون معرفة النطاق.

?اختبار المعرفة

يتم حفظ التقدم في متصفحك — لا حاجة لحساب.

تحتاج مهندس ذكاء اصطناعي أو عالم بيانات؟

أبني نماذج تعلم آلي مخصصة، ووكلاء ذكاء اصطناعي، ورؤية حاسوب، وأتمتة — من الفكرة إلى الإنتاج.