سؤال

في مكتبنا، نستمتع بانتظام ببعض جولات كرة القدم / كرة قدم الطاولة بعد العمل.لقد قمت بتجميع برنامج جافا صغير يقوم بإنشاء تشكيلات عشوائية 2vs2 من اللاعبين المتاحين ويخزن نتائج المباراة في قاعدة بيانات بعد ذلك.

يستخدم التنبؤ الحالي للنتيجة متوسطًا بسيطًا لجميع نتائج المباريات السابقة من اللاعبين الأربعة المشاركين.يعطي هذا تقديرًا تقريبيًا للغاية، ولكنني أرغب في استبداله بشيء أكثر تعقيدًا، مع الأخذ في الاعتبار أشياء مثل:

  • قد يكون اللاعبون جيدين في اللعب كمهاجم ولكنهم سيئين كمدافع (أو العكس)
  • يقوم اللاعبون بعمل جيد ضد خصم معين / سيئ ضد الآخرين
  • تعمل بعض الفرق معًا بشكل جيد، والبعض الآخر لا يفعل ذلك
  • المهارات تتغير مع مرور الوقت

ما هي أفضل خوارزمية للتنبؤ بنتيجة اللعبة بأكبر قدر ممكن من الدقة؟

اقترح أحدهم استخدام الشبكة العصبية لهذا الغرض، وهو ما يبدو مثيرًا للاهتمام...ولكن ليس لدي ما يكفي من المعرفة حول هذا الموضوع لأقول ما إذا كان ذلك يمكن أن ينجح، وأظن أيضًا أن الأمر قد يستغرق الكثير من الألعاب ليتم التدريب عليها بشكل معقول.

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

بالنظر إلى جدول MySQL التالي الذي يحتوي على جميع المباريات التي تم لعبها حتى الآن:

table match_result

match_id      int pk
match_start   datetime
duration      int (match length in seconds)
blue_defense  int fk to table player
blue_attack   int fk to table player
red_defense   int fk to table player
red_attack    int fk to table player
score_blue    int
score_red     int

كيف تكتب دالة تتنبأ بالنتيجة (blueDef, blueAtk, redDef, redAtk) {...}
لتقدير النتيجة بأكبر قدر ممكن، أو تنفيذ أي SQL، أو إجراء العمليات الحسابية، أو استخدام المكتبات الخارجية؟

هل كانت مفيدة؟

المحلول

استخدم خوارزمية TrueSkill، فهي جيدة جدًا في هذا الأمر.لقد قمت بتطبيقه على لعبة كرة القدم والشطرنج وهو يعمل بشكل جيد للغاية.أخبرني زملائي في العمل أن هذا تقريبًا أيضاً جيدة في هذا.

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

نصائح أخرى

لماذا نستخدم الشبكة العصبية؟استخدم الإحصائيات، ربما يكون الارتباط بين كل لاعب أمرًا جيدًا.

فقط للبدء، دعونا نجمع بعض المعلومات:للاعب معين نحتاج:

  1. الموقف الذي لعبوه
  2. النتيجة النهائية

المهاجم الجيد سوف يجمع النقاط.المدافع الجيد سيمنع تسجيل النقاط.

المعلومات الحقيقية ستكون من مهاجم جيد يلعب ضد مدافع جيد.

حاول تطبيق مصنف Naive Bayes.

إن التعلم البايزي هو نهج احتمالي يعتمد على افتراض أن كميات الاهتمام تحكمها توزيعات الاحتمالات وأنه يمكن اتخاذ القرارات المثلى من خلال التفكير في هذه الاحتمالات مع البيانات المرصودة.[ ميتشل، ت.(1997)، التعلم الآلي]

نفس التوزيع الدقيق للاعبين قد يؤدي إلى نتائج مباراة مختلفة.إذا كانت بياناتك تحتوي على نمط، وهو نمط يعتمد على متغيراتك، فقد يؤدي مصنف Naive Bayes إلى نتائج جيدة.

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

وفي أنظمة كشف التسلل، يتم استخدامه لتحديد الحالات الشاذة في الشبكة، من خلال النظر في معلمات الشبكة المختلفة.قد يكون النهج البايزي ناجحًا جدًا في أنواع معينة من البيانات وينتج معدلات TP عالية ومعدلات FP منخفضة.ولكنه قد يؤدي أيضًا إلى ارتفاع معدلات FP، اعتمادًا على بياناتك.ستحدد بياناتك النهج الأفضل.

يمكنك استخدام ويكا (http://www.cs.waikato.ac.nz/~ml/weka/)، مكتبة برامج استخراج البيانات، وتجربة خوارزميات مختلفة.أنه يحتوي على المصنف Naive Bayes.فقط حاول وانظر.

أحد الخيارات هو محاولة تخمين انتشار النقطة نوع من النموذج الخطي.إذا كان لديك مباريات أكثر من عدد اللاعبين لديك، فيمكنك عمل مربعات صغرى من النقاط لكل لاعب عن طريق إنشاء مصفوفة ألعاب (+1 للاعب في فريق واحد، -1 للآخر، 0 للمتفرج) لجميع الألعاب والنتيجة ناقلات للفروق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top