مقدمة في تعلم الآلة – شرح مبسط (الجزء الثالث)

813

في المقالين السابقين 1، 2  تحدثنا عن تعلم الآلة وعن بعض المفاهيم الأساسية به مثل الRegression، Linear Regression ، Gradient descent ، Over fitting و ال Bias-Variance Trade-off ، وهنا سنكمل رحلتنا في تعلم المفاهيم الأساسية للMachine learning ومحاولة استيعابها بشكل مبسط…

التصنيف باستخدام ال (Logistic Regression and support vector machines (SVMs

التصنيف Classification :

هل هذا الإيميل spam أي مؤذي  أو لا؟ هل هذا الشخص المقترض سيقوم بسداد القرض أم لا؟ هل سيقوم المستخدمون بالضغط على الإعلان؟ من هو هذا الشخص المتواجد في صورة الفيس بوك التي نشرتها مؤخرا؟

يقوم التصنيف classification بالتنبؤ بهدف discrete _راجع المقال السابق _. ويعرف التصنيف على أنه مشكلة وضع البيانات في الClass التي من المرجح أكثر أنها تنتمي إليها بناء على نموذج التصنيف الذي تم بناؤه من البيانات المستخدمة في عملية التدريب Training Data.

أما دقة التصنيف الناتجة في النهاية فهي تعتمد على مدى كفاءة الألجوريزم المستخدم، كيفية تطبيقه، وهل كانت بيانات التدريب ذات جودة كافية أو لا.

ولتوضيح الأمر أكثر دعنا نر مثالا في الصورة التالية مجموعة من بيانات التدريب وبجوار كل منها تصنيفها فالصورة الأولى مدخل وتصنيفها كلب والثانية قطة وهكذا والجدول الثاني هو جدول لاختبار صحة النموذج المستخدم في التصنيف فهل سيصنف الصورة الأولى في بيانات الاختبار كقطة أم لا؟ وما نسبة الخطأ؟

Logistic Regression 0 or 1: 

ربما توضح ال0 و 1 الكثير فهو وسيلة للتصنيف تعتمد على اتخاذ قرار من اثنين True or false , 0 or 1 ، وهو ما يعرف أيضا باسم ال Binary Classification، حيث يتواجد فقط تصنيفين محتملين، هنا ربما علينا التنويه بأن التصنيف بشكل عام لا يقتصر على نوعين فقط بل يمكن أن يحتوي على عدة أنواع وأننا نتحدث عن جزء محدد من التصنيف ليس إلا.

إذا هل نستطيع استخدام (Ordinary Least squares (OLS؟

في الحقيقة لا، فقد تبين أنه لو دربت نموذج Linear regression بمجموعة من البيانات ناتجها 0 أو 1، فقد ينتهي بك الحال باستنتاج بعض الاحتمالات التي هي أقل من الصفر أو أكبر من الواحد وهو أمر غير منطقي. بدلا من ذلك نستخدم نموذج Logistic Regression ، ويسمي أيضا بال Logit model وهو مصمم خصيصا للتأكد من حصولك على احتمالات أن تكون Y تنتمي لتصنيف class معين محصورة فقط بين الصفر والواحد، 0% و 100%.

ما هي العمليات الرياضية المستخدمة في هذا النموذج ؟

الLogit model هو ببساطة تعديل لل linear regression model ، هذا التعديل يهدف بشكل رئيسي للتأكد من أن الاحتمالات الخارجة ستكون دائما بين الصفر والواحد بواسطة تطبيق الSigmoid function ،وهي دالة على شكل S تبدو كالتالي:

بإعادة تذكر المعادلة المستخدمة سابقا في الLinear Regression   

وللتأكد من أن الخرج سيكون دائما بين الصفر والواحد كما هو مطلوب نأخذ خرج دالة الLinear Regression  ونقوم بإدخاله في دالة سيجوميد بمعني أننا نقوم بالتعويض عن الz بقيمة  فيصبح لدينا الآتي :

بمعنى آخر إننا الآن نقوم بحساب احتمالية أن يكون هذا البيان منتمي إلى تصنيف معين (P(Y=1.

هنا لدينا P معزولة في الجانب الأيسر وهي احتمالية أن Y=1، أما إذا أردنا الحل ل   مباشرة؛ بوضعها في الجانب الأيمن كي نتمكن من إيجاد قيمة ل المعامل بيتا بسهولة بطريقة سنقوم بتعلمها في وقت لاحق، فسينتهي بنا المطاف نتعامل مع اللوغاريتم الطبيعي

برأيك ما هي احتمالات موت Tyrion Lannister في الموسم الجديد من Game of thrones ?

في الحقيقة من المرجح أن يموت بمقدار مرتين مقدار ألا يموت بمعنى 2x، حيث يبدو الأمر أن قتله شيء في غاية الأهمية لكن .. حسنا، جميعنا رأينا ما فعله ب Ned Stark.

حيث تمثل احتمالية موت Tyrion    في حين تمثل احتمالية عدم موته   ، وبالتالي يكون مرجحا بأنه سيموت بالنسبة التالية :

 أي أنه من المرجح أن يموت ضعفي ترجيحه ألا يموت، وبالتالي يكون حساب نسبة الLog-odds :

لاحظ أن قيمة ال حاليا تمثل نسبة التغير في الlog- odds بتغير قيمة الx، وبعبارة أخرى فهي ميل الlog- odds ،وليست ميل الاحتمال نفسه.

ربما تكون الLog-odds غير حدسية بعض الشيء ولكنها تستحق الفهم حيث سيتم ذكرها مرة أخرى في الشبكات العصبية المستخدمة في عملية التصنيف.

أما ناتج الLogistic Regression فيبدو كالتالي :

لتوقع قيمة الY، إذا كان الإيميل مؤذي أو لا، نتيجة اختبار الكانسر إيجابية أو سلبية إلخ علينا وضع ما يسمي بال Threshold وهي قيمة قبلها تكون النتيجة 0 وبعدها تكون النتيجة واحد، فعلى سبيل المثال إذا كانت احتمالية أن يكون الإيميل مؤذي أكثر من 70% إذا ضعه في الSpam إذا كانت أقل من ذلك ضعه في الصندوق الوارد.

ويعتمد وضع الthreshold على مدى سماحية الخطأ الإيجابي والخطأ السلبي؛ بمعنى من الأقل خطورة أن تعطي اختبار كانسر لشخص سليم على أنه إيجابي فيعيد الاختبار للتأكد من صحته على أن تعطيه لشخص لديه كانسر بالفعل على أنه سلبي وبالتالي يخرج، ولا يعيد الاختبار، وفي ذلك خطر على حياته.

بالتالي حتى لو هناك احتمالية صغيرة بأن الشخص لديه كانسر، فسوف تأخذ تلك الاحتمالية بمحمل الجد، وبالرياضيات نقول أنك ستقلل الthreshold فيصبح كل ما هو أعلى من 30% مثلا + والباقي -.

Minimizing loss in logistic Regression 

كما ذكرنا سابقا في الLinear Regression؛، فسوف نستخدم الGradient descent لمعرفة قيم البيتا التي تقلل معدل الloss أو الخسائر.

في الLogistic Regression تعني الCost function ببساطة : عدد المرات التي توقعت فيها النتيجة ب 1 عندما كانت الإجابة الحقيقية هي 0.

وهنا سنقدم الصيغة الرياضية للCost function في الlinear Regression

لا تفزع عندما ترى معادلة طويلة كهذه! فقط، قسمها لأجزاء وفكر في المضمون الذي يقدمه كل جزء، عندها ستبدأ الأمور تبدو أكثر منطقية.

الجزء الأول هو Data loss مقدار الخسارة في البيانات، أو بتعبير آخر مقدار التناقض بين توقعات النموذج والحقيقة.

الجزء الثاني هو Regularization loss تنظيم أو تسوية الخسارة، مقدار وجود معاملات كبيرة لمميزاتFeatures معينة ومدى تأثير ذلك في الخسارة حيث لا يحب تكبير المعامل أكثر من اللازم (إذا كنت تذكر من آخر مقال فهذا يمنع الover fitting).

من ثم نكون قد قمنا بتقليل الcost function بال Gradient descent، وبنينا Logistic model يقوم بجعل التوقعات دقيقة لأكبر قدر ممكن.

(Support vector machines (SVMs

SVM هو آخر نموذج لتحديد المعاملات سنقوم بمناقشته، ويقوم بحل نفس نوع المشاكل التي يحلها الLogistic Regression أي مشكلة قرار بين خيارين فقط.، وأداؤهما متشابه أيضا، ولكنه يستحق الفهم ببساطة لأنه موجود بشكل طبيعي، ولا تضطر فيه للتفكير بالاحتمالات.

على سبيل المثال : هل النقط الموجودة بالرسم حمراء أم زرقاء؟

هذا النوع من المشاكل يسمى Toy problem لأنه غالبا لا يتواجد بهذه البساطة في العالم الحقيقي ولكن تقنيا لا يتواجد أي نموذج تعمل عليه في العالم الحقيقي بالتالي ستسير أمورنا هنا على ما يرام.

في هذا المثال لدينا نقط في مستوى ثنائي الأبعاد بإمكانها أن تكون إما حمراء أو زرقاء ولا خيار آخر، ونريد تصنيف هذه النقط لمجموعتين.

بيانات التدريب قامت بوضع هذا الgraph،  ونريد تصنيف النقط الجديدة والغير مصنفة في هذا المستوى، لفعل هذا يستخدم ال SVM خط للفصل بينهم، وإن كنا نتحدث عن أكثر من بعدين فيستخدم مستوى فائق للفصل بينهم Hyper-plane. أعتقد أنك تستطيع بالفعل تخيل الخط اللازم للفصل في المثال السابق.

فقد يبدو هكذا :

أو هكذا :

أتمنى أن تكون أنت أيضا قد استنتجت بشكل فطريّ أن الخط الأول أفضل بكثير من الخط الثاني، لكن لماذا؟!

تسمى المسافة لأقرب نقطة للخط margin أو حافة، ويحاول SVM زيادة هذه المسافة قدر الإمكان. يمكنك التفكير بذلك كمسافة آمنة مثل تلك التي تبقيها بينك وبين السيارة التي أمامك أثناء القيادة. كلما زادت هذه المسافة قلت احتمالية أن تصنف النقط القريبة من الخط بشكل خاطئ.

وطبعا الشرح القصير يولد أسئلة عظيمة!

  • كيف تعمل الرياضيات هنا بالضبط؟

نحتاج إيجاد المستوى الفائق هذا المستوى له خصائص هي :

1 – يفصل بين البيانات فصلا تاما بحيث تكون جميع النقط الحمراء على جانب من الخط، وجميع النقط الزرقاء على الجانب الآخر من الخط.

2 – تكبير منطقة الmargin وهي مهمة الOptimization.

على الحل احترام الشرط الأول أثناء تنفيذ الثاني لمحاولة تحسينه.

أحد الطرق البشرية لحل الأمر هو أن ترسم عددا من الخطوط التي تفصل النقط حتى تجد الخط الذي يجعل منطقة الmargin أكبر ما يمكن، توجد طريقة حسابية للقيام بهذا الأمر ولكن سنتطرق لها في وقت لاحق بإمكانك إيجادها هنا. الحل الذي ستتوصل إليه هو مستوى معرف نسبة إلى موضعه المنسوب إلى محاور معينةوتسمى هذه المحاور بال Support vectors وتكون عادة قريبة من المستوى الفائق.

  • ماذا يحدث إن لم تتمكن من فصل البيانات بشكل كامل ؟ 

1 – نجعل معنى الفصل أقل صرامة

بمعني نسمح بتواجد عدد قليل من النقاط الحمراء في المنطقة الزرقاء والعكس.

2 -جعل البيانات في عدد أكبر من الأبعاد

بإمكاننا إنشاء مصنف classifier غير خطي عن طريق زيادة عدد الأبعاد، وإدخال ال. من ثم تحصل على حدود يمكنها أن تبدو أكثر تعرجا عند إعادتها للأبعاد الأقل المتواجدة بها البيانات الأصلية.

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

والذي يمثل مجموعة من البيانات لا يمكن فصلها بخط في فضاء ثنائي البعد ولكن برفعها في فضاء ثلاثي البعد أمكن الفصل بينها بمستوي ثم إعادتها مرة أخرى للفضاء ثنائي البعد مع معلومات عن مناطق أماكن النقط الزرقاء والحمراء.

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

بعض المصادر التي ستساعدك للاستفادة من هذا المقال :

في المقال القادم سنتحدث عن الNon parametric supervised learning.

يتبع..

 

مصدر مصدر1 مصدر2 مصدر3
تعليقات