قراية
وضع الحكايات

الـ linear regression (الانحدار الخطي)

~15 دقيقة قراية الدرس 1 في الوحدة 2

أساس الـ Machine Learning

الـ linear regression (الانحدار الخطي) هو أبسط models الـ Machine Learning (التعلم الآلي) وأكترهم استخدامًا. بيلاقي أحسن خط مستقيم يناسب نقط البيانات — تدّيله مجموعة inputs، يتنبأ بـ output مستمر. ومع إنه بسيط، الأفكار الأساسية اللي هتتعلّمها هنا — الـ cost functions (دوال التكلفة)، والـ gradient descent (النزول التدرجي)، والـ optimization — بتنطبق على طول على الـ neural networks اللي فيها ملايين الـ parameters.

لو فهمت الـ linear regression كويس، تبقى فهمت المحرك اللي بيسوق كل الـ supervised learning.

الـ linear model

في الأساس، الـ linear regression خط مستقيم: تدّيله input x، يتنبأ بـ output ŷ. والـ model ليه parameterين بيتعلّمهم — weight (وزن) (الميل، بيتحكم x بيأثّر على الـ prediction قد إيه) وbias (انحياز) (نقطة التقاطع مع محور y، يعني الـ prediction لما x يبقى صفر).

الـ linear model
\hat{y} = w_1 x + w_0
w₁ هو الـ weight (الميل) اللي بيتحكم x بيأثّر على الـ prediction قد إيه. وw₀ هو الـ bias (التقاطع مع محور y) — وهو نفس المقدار اللي اتكتب b في الدرس 1.3، وسمّيناه w₀ هنا عشان الـ bias يدخل جوه vector الـ weights w عشان الـ normal equation اللي تحت.

الـ multiple linear regression

نادرًا ما المسائل الحقيقية بتعتمد على input واحد. أسعار البيوت بتعتمد على المساحة وعدد أوض النوم والمكان والعمر وغيرهم. الـ multiple linear regression (الانحدار الخطي المتعدد) بيوسّع الـ model عشان يتعامل مع أي عدد من الـ features (الميزات) — كل feature ليها الـ weight بتاعها، والـ model بيتعلّم كل feature مهمة قد إيه.

الـ multiple regression
\hat{y} = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n
كل feature xᵢ ليها الـ weight بتاعها wᵢ. الـ model بيتعلّم كل feature بتساهم في الـ prediction قد إيه.
الشكل الـ matrix

بكتابة الـ matrices، الـ multiple regression بيبقى ŷ = Xw، وX هي matrix البيانات وw هو vector الـ weights. الشكل المختصر ده بيخلّي التنفيذ سريع، وهو الطريقة اللي libraries زي NumPy بتحسبه بيها فعلًا.

الـ cost function: متوسط مربع الخطأ

نعرف إزاي إن الخط بتاعنا كويس؟ محتاجين طريقة نقيس بيها الـ predictions بتاعتنا غلط قد إيه. أشهر مقياس هو متوسط مربع الخطأ (MSE) — بياخد متوسط مربعات الفروق بين القيم المتوقعة والقيم الحقيقية.

ليه التربيع؟ بيخلّي كل الأخطاء موجبة (مفيش إلغاء بين التوقع الزيادة والناقص)، وينفع نفاضله (ودي لازمة للـ optimization)، وبيعاقب الأخطاء الكبيرة أكتر من الصغيرة.

الـ cost function
J(\mathbf{w}) = \frac{1}{n}\sum_{i=1}^{n}(\hat{y}_i - y_i)^2
متوسط مربعات الفروق بين القيم المتوقعة ŷᵢ والقيم الحقيقية yᵢ. هدف التدريب: نقلّل J.

سطح الـ loss

لو رسمت الـ MSE كـ function في قيم الـ weights، هيطلعلك سطح شكله طاسة (رياضيًا، paraboloid محدّب). قاع الطاسة هو مجموعة الـ weights اللي بتقلّل الغلط — الحل الأمثل. وفي الـ linear regression، الطاسة دي ليها global minimum واحد بس. مفيش local minima تحبسك، ولا saddle points — بس نزول ناعم ونضيف لأحسن إجابة.

نلاقي أحسن weights: الـ gradient descent

الـ gradient descent هو المحرك الأساسي للـ optimization في الـ Machine Learning. تخيّل إنك واقف على جنب الطاسة دي وسط ضباب. مش شايف القاع، بس حاسس بالاتجاه اللي نازل. خد خطوة في الاتجاه ده. حس بالميل تاني. خد خطوة تاني. وعيد لحد ما توصل للقاع.

تحديث الـ gradient descent
w \leftarrow w - \alpha \frac{\partial J}{\partial w}
كل weight w بيتحدّث بإننا نطرح الـ learning rate α مضروب في الـ gradient. وده بيحرّك w في الاتجاه اللي بيقلّل الـ loss.

الـ learning rate (معدل التعلم) α بيتحكم في حجم الخطوة. لو كبير أوي هتعدّي الـ minimum، وتفضل تتهز رايح جاي أو حتى تبعد خالص. ولو صغير أوي التدريب هيفضل للأبد، بيزحف ناحية الحل ببطء شديد. وإنك تلاقي الـ learning rate المناسب من أهم المهارات العملية في الـ Machine Learning.

الـ normal equation: حل مباشر

في الـ linear regression بالذات، فيه طريق مختصر. بدل ما نكرّر، نقدر نحسب الـ weights المثلى بالظبط في خطوة واحدة بالتفاضل — نخلّي الـ gradient يساوي صفر ونحل.

الـ normal equation
\mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}
بتدّي الـ weights المثلى بالظبط في حساب واحد. مش محتاج تظبط learning rate ولا iterations.
تستخدم أنهي إمتى

استخدم الـ normal equation (المعادلة العادية) لما يبقى عندك أقل من ~10,000 feature — دقيقة ومش محتاجة تظبط hyperparameters. واستخدم الـ gradient descent مع مجموعات الـ features الأكبر — عكس الـ matrix تعقيده O(n³)، وده مكلّف جدًا للبيانات اللي أبعادها كتير.

الـ feature scaling

لما الـ features تبقى على مقاييس مختلفة خالص — زي المساحة (0–5,000) وعدد أوض النوم (0–10) — سطح الـ loss بيبقى ellipse ممطوط بدل طاسة مدوّرة. والـ gradient descent بيفضل يتعرّج من غير فايدة على طول الاتجاه الضيق.

والحل بسيط: نعمل normalization للـ features لنطاقات قريبة من بعض. أشهر الطرق الـ min-max scaling (تحويل لـ [0,1]) والـ standardization (نطرح المتوسط، ونقسم على الـ standard deviation). وبعد الـ scaling (تحجيم الميزات)، الـ gradient descent بيتقارب أسرع بشكل واضح — غالبًا بعدد iterations أقل 20 مرة.

الـ polynomial regression

طب لو العلاقة مش خطية؟ الخط المستقيم مش هيقدر يمسك pattern على شكل U أو pattern أُسّي. الحيلة: اعمل polynomial features — زوّد x²، x³، إلخ. — وطبّق الـ linear regression على مجموعة الـ features الأوسع.

الـ polynomial model
\hat{y} = w_0 + w_1 x + w_2 x^2 + w_3 x^3
لما نزوّد حدود polynomial نقدر نناسب منحنيات. والـ regression لسه "خطي" في الـ weights — إحنا بس بنحوّل الـ inputs.

بس خد بالك: الـ polynomials اللي درجتها عالية بتناسب بيانات التدريب بالظبط بس بتعمّم وحش على البيانات الجديدة. ده الـ overfitting (الإفراط في التخصيص) — وده بيمهّد للموضوع الجاي: الـ regularization، اللي بيتحكم في تعقيد الـ model عشان يمنعه.

في الدرس الجاي، هننتقل من التنبؤ بقيم مستمرة لأخد قرارات — الـ logistic regression بيحوّل الـ linear regression لأداة classification قوية.

أهم النقط
  • الـ linear regression بيناسب خط (أو hyperplane) عن طريق إنه يقلّل متوسط مربع الخطأ — متوسط مربعات أخطاء الـ prediction.
  • الـ gradient descent بيعدّل الـ weights مرة ورا مرة وهو ماشي في أشد اتجاه نازل على سطح الـ loss.
  • الـ normal equation بتدّي الـ weights المثلى على طول — بس مبتكبرش مع مجموعات الـ features الكبيرة جدًا بسبب عكس الـ matrix اللي تعقيده O(n³).
  • الـ feature scaling بيعمل normalization للـ inputs لنطاقات قريبة من بعض، وده بيسرّع تقارب الـ gradient descent بشكل واضح.
  • الـ polynomial regression بيناسب منحنيات بإنه يزوّد polynomial features لنفس الإطار الخطي — بس خد بالك من الـ overfitting.
الدرس اللي فاتتقييم الـ models (النماذج) نظرة عامة على الموديول الدرس اللي بعدهالـ logistic regression (الانحدار اللوجستي)