تعلم الآلة

الانحدار الخطي (Linear Regression)

في اعتقادي، الانحدار الخطي (Linear Regression) (وكذلك يطلق عليه الارتباط الخطي)* من المداخل المناسبة لفهم كيف تعمل خوارزميات تعلم الآلة لسهولة شرحه وفهمه. الانحدار الخطي تجدونه في أغلب كتب الإحصاء وتعلم الآلة، قد يكون هناك تفاوت بسيط في شرح المفهوم بين المجالين، ولكن في النهاية هو نفسه. الانحدار الخطي يستخدم لتوقع قيمة مستمرة (continuous number)، مثل درجات الحرارة، أو الأسعار، بخلاف القيم المتقطعة (discrete) أو الفئات (categories). أحد الأمثلة الشائعة الاستخدام عند شرح الانحدار الخطي هي أسعار المنازل، وهي ما سأستخدمه هنا.

يستخدم الانحدار لتقدير العلاقة بين المتغيرات، فمثلاً ما هي العلاقة بين حجم المنزل وقيمته؟ أسهل طرق التوقع هي الانحدار الخطي، بحيث يتم تقدير العلاقة بين المتغيرات بمعادلة خطية (مثل الخط المستقيم لمتغيرين، أو مستوي لثلاثة). في هذا الدرس سيقتصر حديثي على الانحدار الخطي فقط.

معادلة الخط المستقيم

قد تكون نسيت، ولكنك بالتأكيد أخذت معادلة الخط المستقيم في الرياضيات، وهي معادلة بسيطة سأشرحها هنا تنشيطاً للذاكرة. تأخذ معادلة الخط المستقيم الشكل التالي:

y=b+ax

حيث a هي الميل (slope) و b نقطة التقاطع (intercept) مع المحور y. الشكل التالي يوضح شكل الخط المستقيم بميل = 1، وتقاطع = 0:

y=x

وهذا الشكل لخط بميل = 1، وتقاطع = 2:

y=2+x

وهذا لخط بميل = 2، وتقاطع = 0:

y=2x

وهذا لخط بميل = 0.5، وتقاطع = 0:

y=0.5x

الانحدار الخطي

سأستخدم أحد الأمثلة المشهورة لتسهيل شرح مفهوم الانحدار الخطي، وهو مثال تسعير المنازل. لنفترض أن لدينا بيانات العديد من المنازل وأسعارها، هذه البيانات تشتمل على مواصفات المنزل، مثل مساحته، عدد الغرف، الحي والمدينة، عدد دورات المياه، وغيرها من المواصفات. كيف يمكن توقع السعر المناسب للمنزل بناء على مواصفاته؟ لنجيب على هذا السؤال نحتاج أن نعرف ارتباط أسعار المنازل ببعض المواصفات، ودرجة تأثيرها على السعر. للتبسيط سنأخذ فقط المساحة وارتباطها بالسعر كما هو موضح بهذا الشكل (ملاحظة: المثال تخيلي لتسهيل المفهوم، البيانات الحقيقية قد لا تكون بهذا التنظيم):

في هذا المثال، هناك تناسب طردي بين المساحة والسعر، بحيث إذا ازدادت المساحة فالغالب أن السعر يزداد.

في الانحدار الخطي، السؤال الذي نريد الإجابة عليه هو: ما هو أنسب خط يصف العلاقة بين المساحة والسعر؟ يطلق على المساحة المتغير المستقل (independent variable)، والسعر المتغير التابع (dependent variable) لأننا نحتاج للمساحة كي نحسب السعر. كيف نعرف أفضل خط؟ هناك العديد من الخطوط التي قد تصف العلاقة بين المتغيرين، مثل ما هو موضح في هذا الشكل:

في تعلم الآلة، يطلق على ناتج التعلم نموذج (model) -والبعض يطلق عليه hypothesis، وغالباً ما يكون معادلة رياضية. في مثالنا هذا للارتباط الخطي النموذج الناتج سيكون معادلة الخط المستقيم التي شرحتها سابقاً. فمثلاً في هذا الشكل:

معادلة الخط كالتالي:

\hat{y}=w_0+w_1x

حيث w_1 الميل (slope) و w_0 نقطة التقاطع (intercept) مع المحور y. لنفترض أن w_0=50 و w_1=1.8، إذا كان لدينا بيت مساحته 500 متر مربع (x=500)، فإن السعر المتوقع للبيت هو:

\hat{y}=50+1.8*500 = 950 (ألف)

لنحصل على أفضل نموذج (هنا النموذج عبارة عن خط فقط)، نحتاج أن نعرف الميل ونقطة التقاطع للخط. ومهمة تعلم الآلة هي البحث عن هذه القيم عن طريق البيانات المتاحة كما سأشرح بعد قليل. يتم معرفة أفضل نموذج عن طريق البحث عن أقل النماذج خطأ. وهنا مفهوم مهم، كيف نحسب الخطأ؟ كما مر علينا، فإن القيمة التي تم توقعها عن طريق النموذج هي \hat{y}، بينما القيمة الحقيقية للمنزل (التي لدينا فعلياً) هي y. نستطيع حساب الخطأ بحساب الفرق بين القيمتين. هذا الشكل يوضح الفروق بين القيم الحقيقية والمتوقعة:

أحد الطرق المشهورة لحساب الخطأ يطلق عليها Residual Sum of Squares أو RSS اختصاراً (ولها اسم آخر وهو Sum of Squared Errors SSE) وتحسب بالمعادلة:

RSS(w_0, w_1) = \sum^N_{i=1} (\hat{y}-y)^2

حيث كما مر علينا سابقاً أن:

\hat{y}=w_0+w_1x

يطلق على RSS دالة التكلفة (Cost function)، وهذه الدالة مهمة جداً لاختيار أفضل نموذج. نستطيع حساب أفضل نموذج عن طريق اختيار w_0 و w_1 اللذين يعطياننا أقل قيمة لـ RSS. ويمكن اختيار هاتين القيمتين عن طريق ما يطلق عليه التحسين (optimization).

التحسين (Optimization)

التحسين (optimization) مجال ضخم يستخدم في عدة تخصصات كعلوم الحاسب، وبحوث العمليات. وبشكل مبسط يهدف التحسين إلى البحث عن أفضل الاختيارات وفقاً للقيود الموجودة (constraints) للحصول على أفضل النتائج. حسب المطلوب والمشكلة، قد يكون الهدف الحصول على الأعلى (maximization) أو الأقل (minimization). هناك الكثير من طرق التحسين، وسأشرح هنا واحدة من أكثرها استخداماً في تعلم الآلة وهي خوارزمية Gradient Descent.

في البداية لنتصور الهدف من التحسين، لنرسم شكل المعادلة التالية f(x_1, x_2) من متغيرين: x_1 و x_2

مصدر الصورة

كما ذكرت، فإن الهدف من التحسين هو البحث عن أفضل الاختيارات (وهي هنا المتغيرين x_1 و x_2) التي نستطيع الحصول بها على أعلى أو أقل قيمة للدالة f(x_1, x_2). وكما هو واضح في الشكل فإن بعض الدوال تحتوي على مرتفعات ومنخفضات، الهدف أن نحاول الوصول إلى الأعلى أو الأقل حسب المشكلة. هدفنا في الانحدار الخطي أن نبحث عن المتغيرات التي تعطينا أقل قيمة للخطأ، وبهذا فنحن نحاول أن نبحث عن المنخفض بتقليل الخطأ (minimization). هناك بعض المعادلات التي تعطيك شكل مقعر مما يسهل كثيراً عملية التحسين، ولحسن الحظ فإن RSS التي تم شرحها من هذه المعادلات، وشكلها عموما يشبه هذه الرسمة:

مصدر الصورة

حسناً، بعد أن عرفنا شكل المعادلة، كيف يمكننا الوصول إلى القاع؟ هنا يأتي دور خورزمية التحسين Gradient Descent. الفكرة الأساسية لخوارزمية Gradient Descent هي البحث في الاتجاه الأكثر تغيراً في المعادلة، ورياضياً يمكن حساب سرعة التغير عند أي نقطة في المعادلة عن طريق حساب التفاضل (derivative) -تعريف gradient هو التفاضل للمتجهات. الشكل التالي يبين معدل التغير عند أكثر من نقطة:

في خوارزمية Gradient Descent سيتم الاتجاه إلى القاع، فإذا كانت قيمة التفاضل موجبة فسيتم الاتجاه إلى اليسار (كما في الشكل)، وإذا كانت سالبة يتم الاتجاه لليمين، وتتوقف عند الوصول إلى الصفر مما يعني الوصول للقاع لعدم وجود تغير. هذا الشكل يبين كيف يتم البحث عن أفضل نقطة:

مصدر الصورة

بعد حساب التفاضل للدالة RSS سنحصل على:

\nabla RSS(w_0, w_1) = \bigg[ \begin{array}{c l} -2\sum_{i=1}^N [\hat{y^{(i)}}-y^{(i)}]\\ -2\sum_{i=1}^N [\hat{y^{(i)}}-y^{(i)}]x^{(i)} \end{array} \bigg]

ملاحظة: لا يحتاج أن تعرف الآن كيف تم حساب التفاضل حتى تفهم طريقة عمل الخوارزمية. المجال لا يتسع لشرح كيفية حساب التفاضل.

يتم في خوارزمية Gradient Descent البحث خلال تكرار برمجي (loop) عن أفضل قيمة للمتغيرين x_0 و x_1، وذلك عن طريق تحديث القيمتين من خلال المعادلة التالية:

\bigg[ \begin{array}{c l} w_0^{t+1} \\ w_1^{t+1} \end{array} \bigg] = \bigg[ \begin{array}{c l} w_0^t \\ w_1^t \end{array} \bigg] -\eta\bigg[ \begin{array}{c l} -2\sum_{i=1}^N [\hat{y^{(i)}}-y^{(i)}]\\ -2\sum_{i=1}^N [\hat{y^{(i)}}-y^{(i)}]x^{(i)} \end{array} \bigg]

حيث t تدل على القيمة عبر الزمن (أي خلال التكرار البرمجي)، و \eta هي قيمة تحدد مقياس الخطوات (step size) عند البحث، وهي قيمة مهمة وقد يتأثر أداء التعلم على اختيارها بطريقة مناسبة. يمكن كتابة نفس المعادلة بطريقة أفضل باستخدام المتجهات:

 \mathbf{w}^{t+1} = \mathbf{w}^t - \eta \nabla RSS

بعد أن ننتهي نكون قد أنهينا تدريب نموذج بسيط لتعلم الآلة، ونستطيع أن نستخدمه إذا كان عندنا مساحة أرض (x) ونود معرفة سعرها عن طريق المعادلة التالية:

\hat{y}=w_0+w_1x

هذا باختصار كيف تعمل خوارزمية الانحدار الخطي. في البداية عرّفنا Cost Function ثم استخدمنا التحسين Optimization للحصول على أفضل نموذج Model. والنموذج هو الناتج النهائي لخورازمية تعلم الآلة، الذي نستطيع استخدامه للتوقع المستقبلي في مثالنا هذا.

غالباً لن نستطيع أن نحل المشاكل الحقيقية بهذه البساطة، فمثال البيت يحتاج للكثير من الخصائص غير مساحة الأرض حتى نعرف أفضل سعر، فحينها نحتاج أن ندخل عدة متغيرات في الدالة (multiple regression). وكذلك بعض الأحيان لا تكون البيانات مرتبة بطريقة خطية فلا يمكن تمثيلها بخط مستقيم، حينها نحتاج أن نبحث عن نموذج غير خطي مناسب للبيانات (non-linear regression). كما يمكن بتغيير بسيط لهذه الخوارزمية استخدامها للتصنيف (classification) بدلاً من التوقع، وتسمى هذه بخوارزمية logistic regression. سنشرح هذه المفاهيم في دروس لاحقة على الموقع إن شاء الله.

لا تترد بالسؤال في التعليقات عن ما أشكل عليك فهمه، وأتمنى لمن لديه إضافة أو تعليق أن يشارك لزيادة الفائدة.


*تم اختيار الانحدار الخطي ترجمة لـ Linear Regression حيث أنها الأكثر انتشاراً واعتماداً لدى الكثير، كان هذا الدرس يستخدم “الارتباط الخطي” ترجمة للمصطلح، ولكن تم تغييره.

اظهر المزيد

فارس القنيعير

‏‏‏‏‏‏‏‏‏‏‏‏‏مختص بالذكاء الاصطناعي، تعلم الآلة ورؤية الحاسب. مهتم بتحليل ومعالجة البيانات بشكل عام. ضمن خبراء جووجل في تعلم الآلة (ML GDE).

‫22 تعليقات

  1. اللغه و طريقة الشرح قد تكون عوائق دون تعلم بعض الطرق. ولكن في هذا المقال شرح وافي و مبسط

    شكر الله سعيك يادكتور

  2. ماشاء الله شرح كافي
    جزاك الله خير دكتور فارس

    سؤالي كيف يتم اختيار “eta” في المعادله قبل الاخيره؟

    1. وإياك. كنت أفكر أكتب موضوع مستقل بخصوص اختيار hyperparameters، مثل eta. بشكل مختصر يمكنك اختيارها تجريبياً، الغالب يتم تقسيم البيانات الموجودة إلى التدريب (training)، التحقق (validation)، والاختبار (testing). بيانات التدريب لتدريب الخوارزمية، وبيانات التحقق لاختيار أفضل قيم ل hyperparameters كـ eta، والاختبار لاختبار النموذج النهائي والتحقق من النتائج. الطريقة: يتم اختيار مجموعة، مثلاً من 5 إلى 20 قيمة مقترحة، ويتم التدريب باستخدامها، ثم الاختبار ولكن على بيانات التحقق. يتم عمل ذلك بعدد القيم المقترحة، ثم نختار القيمة التي تعطينا أعلى نتيجة.

      1. جزاك الله خير دكتور فارس
        وايضا قريت انه ممكن اختياراها باستخدام ال cross validation

        ومتشوق جدا للموضوع المستقل والمواضيع الاخرى

        الله يعطيك العافيه
        وبارك الله في علمك

        1. الله يعافيك ويبارك فيك. cross validation تقسم البيانات لعدة أقسام، ثم تقوم بالتدريب والاختبار عدة مرات، كل مرة تختلف بيانات التدريب والاختبار. الهدف التأكد من عمل الخوارزمية بشكل صحيح وأنه لا يوجد overfitting، خاصة إذا كانت البيانات قليلة، أو هناك اختلاف كبير في عدد العينات. يمكن داخل corss validation استخدام validation set مثل ما شرحت.

  3. جهد تشكر عليه يادكتور
    بخصوص التحسين هل هي افضل طريقة لاختيار اجود نموذج
    ام يتم الاكتفاء بالطرق الاخرى Adjusted R او Akike او غيرها

    برنامج gretl مجاني وممتاز في بناء النماذج الخطية

    1. Adjusted R تستخدم لمعرفة جودة النموذج النهائي ومقدار تمثيله للبيانات.
      Akiki ليس عندي خلفية عنه، ولكن بعد بحث سريع أعتقد أنه لقياس جودة النموذج أيضاً، ولكن بطريقة أخرى.
      التحسين ليس لاختيار أفضل نموذج، ولكن لبناء النموذج. بعد الانتهاء من بناء النموذج تقيس جودته بأحد الطرق الموجودة، مثل المذكورة في الأعلى.

      شكراً على gretl، وهناك الكثير جداً من البرامج والمكتبات البرمجية لبناء النماذج الخطية.

  4. جزاكم الله خيرا على المقال و الجهد..
    و جزى الله خيرا القائمين على الموقع، عمل يسر الخاطر..
    و إن كنت شخصيا ليس لدي قاموس عربي في البحوث العملية وهي الرائدة في مجال التحسين ، لكن لعلي أضيف أن الاختيار المثالي في مثل الحالة التي ذكرتم و ما شابهها قد يخضع أيضا لمجال آخر هو مجال : المساعدة على اتخاذ القرار ،و الذي لديه آلياته الخاصة و اخص بالذكر decision multi_criteria
    والله أعلم

  5. شرح جميل و سلس و سهولة في توصيل المعلومة , نفتقد صراحةً للمحتوى العربي فيما يخص هذه المواضيع و ألف شكر لك لأن بدأت بهذه الخطوة. جزاك الله خير على ما تقدمه

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى