البيانات الضخمة

تحليل الدوري السعودي لكرة القدم

 


في هذا التقرير نقوم بتحليل نتائج مباريات الدوري السعودي للمحترفين وذلك بعد استخراج و جمع كل بيانات الفرق المشاركة في الدوري منذ 2000 إلى 2021 من الموقعين FlashScore و XSocores فقمنا بجمع, تنظيم, تحليل وتطبيق بعض الخوارزميات (نماذج) التعلم الآلي (Machine Learning) للتنبؤ بالنتائج وذلك بعد تعلمه من البيانات.

  • استخراج البيانات:

استخرجنا البيانات بعدة طرق كالتالي:

  1. بيانات مستخرجة سابقا متواجدة في الموقع Saudi-Professional-League-Datasets) Github)
  2. بيانات استخرجت من الموقع (Slstat (SS و (FlashScore(FS التي تتمثل في نتائج مباريات الدوري,

واستعملنا في التحليل بيانات FS لأنها تشمل السنوات من 2000 إلى 2018 و أضفنا بيانات التي قمنا بإستخراجها من الموقع XSocores من 2018 الى 2021.


  • تنظيم وتحويل البيانات:

في مرحلة تنظيم البيانات استخدمنا برنامج البايثون لتحميل البيانات ودمجها مع بعض و ذلك كالآتي:

تحميل FS:

الصورة (1): تحميل بيانات FS

ثم نقوم باكتشاف البيانات نوع البيانات و عددها و البيانات الناقصة… كما هو موضح في الصورة ادناه:

الصورة (2): معلومات حول البيانات

قمنا بإضافة عمودين جديدين و هما (FTHG(Full Time Home Goal و (FTAG (Full Time Away Goal و تم استخراجهم من العمود Score (اظهار 10 أسطر الأولى).

الصورة (3):إضافة العمودين FTHG و FTAG

ثم إضافة عمود جديد (FTR (Full Time Result الذي يأخد 3 قيم التي تتمثل في (H: فوز خارج الارض, A: فوز داخلي و D: تعادل الفريقين.

الصورة (4):إضافة العمود FTR

بعد إضافة الأعمدة الثلاثة عملنا selection للأعمدة الخمسة Home, Away, FTHG ,FTAG, FTR التي نريد إستعمالها لتحليل.

الصورة (5):اطار البيانات الجديدة

تحويل محتويات FTR إلى أرقام بحيث: 0 ترمز إلى H فوز خارج الارض,1 ترمز إلى D تعادل و 3 إلى َA فوز داخلي التي سوف نستعملها لاحقا في تطبيق نماذج تعليم الآلة.

الصورة(6): اطار البيانات بعد تحويل عمود FTR

بعدها تحول Type FTHG و FTAG من Object إلى integer لقيام بعمليات رياضية لتحليل النتائج ومن ثم نقوم بنفس الشيء مع البيانات المستخرجة من XSocores لنقوم بدمجهم مع بعض ويصبح لدينا ننتائج من 2000 إلى 2021.

الصورة(7): البيانات مندمجة 3521 سطر و 5 اعمدة


تحليل البيانات:

  • تحليل الأهداف المسجلة والمستقبلة:

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

الصورة(8): اطار البيانات للاندية و الأهداف المسجلة والمستقبلة

 

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

الصورة(9):  مخطط بياني شريطي للأهداف المسجلة والمستقبلة

 

  • تحليل الأهداف المسجلة و الفارق التهديفي:

لتوضيح أكثر قمنا بحساب فرق بين الأهداف المسجلة والمستقبلة و ذلك بحساب الفارق بينهما (المسجلة – المستقبلة) و رسمها

الصورة(10):  مخطط بياني شريطي للأهداف المسجلة والفرق

من مخطط بياني شريطي نلاحظ ان هناك فقط 6 اندية لديها فوارق ايجابية و التي هي (الهلال, الاهلي, الاتحاد, النصر, الشباب و التعاون).


تحليل الأهداف المسجلة و نسبة الفوز: 

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

الصورة(11):  مخطط بياني شريطي للأهداف المسجلة ونسبة الفوز

 

مع العلم ان عدد التتويجات الدوري السعودي للمحترفين حسب wikipedia منذ سنة 2000 إلى يومنا هذا لدينا:

  1. الهلال 9 القاب
  2. الإتحاد 4 ألقاب
  3. النصر و الشباب 3 القاب
  4. الأهلي لقب واحد

إلا ان الاهلي يحتل المركز الثالث قبل النصر و الشباب رغم ان الاهلي لديه لقب وحيد عكس النصر و الشباب الذي بحوزتهم ثلاث القاب و هذا ما دفعنا إلى بحث حول مراكز الأندية المذكورة أعلاه حسب wikipedia من 2000 الى 2021 مع الافتراض أن الإتحاد فاز باللقب و الأهلي احتل المركز الرابع لان wikipedia تعطي تناقض بحيث تشير إلى أن الاتحاد فاز بالدوري لكن في ترتيب الاهلي يحتل المركز الأول و الاتحاد الرابع وهذا متناقض لهذا قمنا بتغيير المراكز بين الأهلي والاتحاد.

الصورة(12):  جدول مراكز الأندية مع عدد الألقاب

 

من الصورة 11و 12 نلاحظ ان الفوز بالألقاب ليس هو العامل الذي يؤثر على نسبة الفوز بل تمركز الاندية في الدوري و هذا طبيعي بما ان كلما فزت كلما ترتقي في الترتيب وتكون لك نسبة فوز كبيرة.


  • إستعمال التعلم الآلة Machine Learning:

  • Preprocessing:

تحويل البيانات أحد أهم الخطوات التي يجب الاهتمام بها في بداية النمذجة (تعلم الاله) لان خوارزميات تعلم الالة تتعامل فقط مع الارقام وهذه المرحلة تسمى بPreprocessing و في هذه المرحلة تحول البيانات إلى أرقام ,في مشروعنا لدينا أسماء أندية سوف نحولها إلى أرقام التي هي عبارة عن عدد 0 و عددين 1 بحيث كل 1 يرمز الى فريق المستقبل والذي يلعب خارج ارضه و هذا التحويل يسمى one hot encoding كما قمنا مسبقا بتحويل FTR إلى 0,1 و 2 هنا مثال مصغر لفهم ما ذكر.

الصورة(13): مثال عن One hot encoding

في هذا المثال لدينا مباريات بين الأهلي و هجر بحيث الاهلي هو المستضيف ففي العمود Home_Al-Ahli 1 و Away_Hajer 1 والآخرين 0 (هذا مجرد مثال لفهم التحويل البيانات لأن هناك 72 عمود 36 للمستضيف و 36 للضيف, بعد ذلك نضيف FTR المحولة إلى أرقام لاطار البيانات Data frame  لتطبيق عليها النماذج بحيث نحن نريد التنبؤ بنتيجة مباراة وذلك بإدخال فريق المستضيف و الضيف. ثم نستعمل  StandardScaler (التحديث المستمر) التي تستخدم في تحويل البيانات و ايضا عندما يكون لدينا الكثير من البيانات الشاذة وذلك من خلال حساب المعلومات الإحصائية ذات الصلة للعينات في مجموعة التدريب ، يتم توسيط كل ميزة ومعايرتها بشكل منفصل. ثم يتم تخزين المتوسط ​​Mean والانحراف المعياري standard deviation واستخدامهما للبيانات المستقبلية من خلال التحويل.

 

الصورة(14): معادلة حساب StandardScaler

 

  • عمل النموذج

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

الصورة(15): نتائج خوارزميات (النماذج) المستعملة

 

النتائج المتحصل عليها تشير بأن LogisticRegression هي من لديها أعلى ِScore في تنبأ نتائج المباريات بقيمة 0.5252 آي 52.52% ثم سوف نحاول رفع من مستوى دقة وأداء النموذج وذلك بإيجاد أفضل قيم تعطى لخوارزميات تعلم الآلة قبل البدء بالتدريب، التي تعرف باسم Hyperparameter Tuning, طريقة الاختيار بتنقسم لطريقتين:

  1. بشكل يدوي عن طريق التجربة والخطأ, فممكن الشخص يختار مجموعة قيم من اختياره ويدرس النتائج ويرجع يكرر العملية بقيم مختلفة لحين الوصول لأعلى دقة.
  2. عن طريق functions بتوفرها مكاتب البايثون sklearn, هناك العديد من الfunctions الجاهزة لتساعدنا بعملية الاختيار، لكن سوف نستعمل Random Search .

في عملية الRandom Search  اختبار القيم تتم بشكل عشوائي حتى نحصل على القيم الأفضل، تتميز الطريقة بأنها أسرع بشكل كبير من الطريقة السابقة ولكن تبقى النقطة السلبية فيها أنه لن يتم اختبار كل الاحتمالات الممكنة كما هو موضح في الصورة ادناه.

الصورة(15): إستعمال Random Search لرفع مستوى دقة الأداء

 

ختاما افضل الparameters كنتيجة  يساوي 0.5338 (53.38%) اي زيادة 0.86 عن نتيجة سابقة لكن وقت التدريب اخذ وقت كبيركونه يجرب كل القيم المعطاة اي 5*4*50*3*5 أي 18750 قيمة وهذا يستغرق على الاقل ساعة من التدريب, والنتيجة النهائية هو أنه بإمكاننا رفع من مستوى دقة وأداء النموذج لكن بنسبة قليلة و ان اردنا رفعها أكثر يجب إضافة بيانات هذا طبيعي لأنه يتعلم من البيانات المعطاة إليه فكلما كانت البيانات كثيرة كلما كان التعلم جيد أي دقة وأداء كبيرة.

كما هو موضح في الصورة لقد وضعنا أهمية لاربعة parameters التي تتمثل في: solvers, penalty, c_values, multi_class مثلا لـ solvers وضعنا أهمية لخمسة parameters : newton-cg,lbfgs,liblinear, sag, saga

لمزيد من المعلومات يرجى زيارة موقع الرسمي لـ sklearn.


حاولت ترجمة أغلب المصطلحات حسب رغبة القراء فنعتذر عن أي مصطلح غير مفهوم

اترك تعليقاً

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