Filter by دسته‌ها
chatGTP
ابزارهای هوش مصنوعی
اخبار
گزارش
تیتر یک
چندرسانه ای
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
دانش روز
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
رویدادها
جیتکس
کاربردهای هوش مصنوعی
کتابخانه
اشخاص
شرکت‌های هوش مصنوعی
محصولات و مدل‌های هوش مصنوعی
مفاهیم
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
مقاله
 پیش‌بینی جام‌جهانی فوتبال 2022 با استفاده از پایتون

پیش‌بینی جام‌جهانی فوتبال 2022 با استفاده از پایتون

زمان مطالعه: 3 دقیقه

بسیاری از مردم فوتبال را «بازی غیرقابل پیش‌بینی» می‌نامند، زیرا معتقدند یک مسابقه فوتبال به عوامل مختلفی برای تغییر دادن امتیاز نهایی بستگی دارد!

اگرچه پیش‌بینی امتیاز نهایی سخت است، اما در مورد پیش‌بینی برنده یک مسابقه اینطور نیست. در طول 5 سال گذشته، بایرن مونیخ تمام بوندسلیگاها را برده است، در حالی که منچسترسیتی 4 لیگ برتر را برده است! در واقع، در اواسط فصل 20-21، مدلی برای پیش‌بینی برنده لیگ برتر، لالیگا، سری آ و بوندسلیگا ایجاد شد و پیش‌بینی برنده همه آن‌ها با موفقیت بود. البته این پیش‌بینی چندان هم سخت نبود، زیرا در آن مقطع 19 مسابقه برگزار شده بود. اکنون قرار است همین مدل برای پیش‌بینی جام‌جهانی 2022 اجرا شود که نحوه پیش‌بینی جام‌جهانی با استفاده از پایتون است.

چگونه مسابقات را پیش‌بینی کنیم؟

روش‌های مختلفی برای پیش‌بینی مسابقه وجود دارد که در اینجا با توزیع پواسون شروع می‌کنیم. توزیع پواسون یک توزیع احتمال گسسته است که تعداد رویدادهای رخ‌داده در یک بازه زمانی ثابت یا منطقه فرصت را توصیف می‌کند. اگر گل را به عنوان رویدادی در نظر بگیریم که ممکن است در 90 دقیقه یک مسابقه فوتبال اتفاق بیفتد، می‌توانیم احتمال تعداد گل‌هایی را که در یک مسابقه توسط تیم A و B به ثمر می‌رسد، محاسبه نماییم. برای این کار باید مفروضات توزیع پواسون را برآورد کنیم:

۱- تعداد رویدادها (گل‌ها) را می‌توان شمارش کرد.

۲- وقوع رویدادها (گل‌ها) مستقل است.

۳- سرعت رخ دادن رویدادها (گل‌ها) ثابت است.

۴- دو رویداد (گل) نمی‌توانند دقیقاً در یک لحظه در زمان رخ دهند.

بدون شک فرضیات 1 و 4 برآورده می‌شوند، اما 2 و 3 تا حدی درست هستند. با این حال، اجازه دهید فرض کنیم که مفروضات 2 و 3 همیشه درست هستند. اکنون می‌توان گفت که می‌توان از توزیع پواسون برای محاسبه احتمال تعداد گل‌هایی که در یک مسابقه به ثمر می‌رسد، استفاده کرد. در اینجا فرمول توزیع پواسون آمده است.

برای انجام پیش‌بینی‌ها:

لامبدا: میانگین گل در 90 دقیقه (تیم A و تیم B)

x: تعداد گل‌هایی که در یک مسابقه می‌تواند توسط تیم A و تیم B به ثمر برسد.

حال برای محاسبه لامبدا به میانگین گل‌های زده/خورده هر تیم ملی نیاز داریم. این ما را به نقطه بعدی هدایت می‌کند.

پیش بینی جام جهانی

گل‌های زده/خورده توسط هر تیم ملی

پس از جمع‌آوری اطلاعات از تمام بازی‌های جام‌جهانی از سال 1930 تا 2018، میانگین گل‌های زده و خورده هر تیم ملی محاسبه شد. با گل‌های زده/خورده هر تیم ملی، تابعی ایجاد شد که تعداد امتیازهای هر تیم در مرحله گروهی را پیش‌بینی می‌کرد.

پیش‌بینی مرحله گروهی

در زیر کدی که برای پیش‌بینی تعداد امتیازات هر تیم ملی در مرحله گروهی استفاده شده، آمده است. ترسناک به نظر می‌رسد، اما بسیاری از موارد در نظر گرفته شده، تا این مرحله به کد تبدیل شده است.

def predict_points(home, away):     if home in df_team_strength.index and away in df_team_strength.index:         lamb_home = df_team_strength.at[home,'GoalsScored'] * df_team_strength.at[away,'GoalsConceded']         lamb_away = df_team_strength.at[away,'GoalsScored'] * df_team_strength.at[home,'GoalsConceded']         prob_home, prob_away, prob_draw = 0, 0, 0         for x in range(0,11): #number of goals home team             for y in range(0, 11): #number of goals away team                 p = poisson.pmf(x, lamb_home) * poisson.pmf(y, lamb_away)                 if x == y:                     prob_draw += p                 elif x > y:                     prob_home += p                 else:                     prob_away += p                  points_home = 3 * prob_home + prob_draw         points_away = 3 * prob_away + prob_draw         return (points_home, points_away)     else:         return (0, 0) 

به زبان انگلیسی ساده، predict_points محاسبه می‌کند که تیم‌های میزبان و میهمان چند امتیاز کسب خواهند کرد. برای انجام این کار، لامبدا برای هر تیم با استفاده از فرمول average_goals_scored * average_goals_conceded محاسبه شد.

سپس تمام امتیازهای ممکن یک مسابقه از 0–0 تا 10–10 شبیه‌سازی شد. هنگامی که لامبدا و x وجود داشته باشد، از فرمول توزیع پواسون برای محاسبه p استفاده می‌شود.

prob_home ، prob_draw و prob_away مقدار p را جمع می‌کنند. اگر مثلاً مسابقه به ترتیب با 1–0 (برنده‌های خانگی)، 1–1 (تساوی) یا 0–1 (بردهای خارج از خانه) به پایان برسد، در نهایت، امتیازها با فرمول زیر محاسبه می‌شوند:

points_home = 3 * prob_home + prob_draw
points_away = 3 * prob_away + prob_draw

اگر از predict_points برای پیش‌بینی بازی انگلستان و ایالات متحده استفاده کنیم، این را دریافت خواهیم کرد:

>>> predict_points('England', 'United States') (2.2356147635326007, 0.5922397535606193) 

این به این معنی است که انگلیس 2.23 امتیاز و ایالات متحده 0.59 امتیاز می‌گیرند.

اگر این تابع predict_points را برای همه مسابقات مرحله گروهی اعمال کنیم، جایگاه اول و دوم هر گروه را به دست می‌آوریم، بنابراین مسابقات بعدی در ناک‌اوت می‌شوند.

پیش‌بینی ناک‌اوت‌ها

برای ناک‌اوت‌ها، نیازی به پیش‌بینی امتیاز نیست، بلکه برنده هر براکت است. به همین دلیل است که یک تابع get_winner جدید بر اساس تابع predict_points قبلی ایجاد شد.

def get_winner(df_fixture_updated):     for index, row in df_fixture_updated.iterrows():         home, away = row['home'], row['away']         points_home, points_away = predict_points(home, away)         if points_home > points_away:             winner = home         else:             winner = away         df_fixture_updated.loc[index, 'winner'] = winner     return df_fixture_updated 

به بیان ساده، اگر امتیاز  points_homeخارج باشد، برنده، تیم میزبان است، در غیر این صورت، برنده، تیم میهمان است. در واقع، به لطف تابع get_winner می‌شود نتایج براکت‌های قبلی را دریافت کرد.

پیش‌بینی مرحله یک‌چهارم نهایی، نیمه‌نهایی و فینال

اگر دوباره از get_winner استفاده کنیم، می‌توانیم برنده جام‌جهانی را پیش‌بینی کنیم. با اجرای یک بار دیگر تابع، متوجه می‌شویم که برنده برزیل است!

بدین ترتیب، ما جام‌جهانی 2022 را با استفاده از پایتون و توزیع پواسون پیش‌بینی کردیم.

جدیدترین اخبار هوش مصنوعی ایران و جهان را با هوشیو دنبال کنید

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]