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

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

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

اگرچه پیش‌بینی امتیاز نهایی سخت است، اما در مورد پیش‌بینی برنده یک مسابقه اینطور نیست. در طول ۵ سال گذشته، بایرن مونیخ تمام بوندسلیگاها را برده است، در حالی که منچسترسیتی ۴ لیگ برتر را برده است! در واقع، در اواسط فصل ۲۰-۲۱، مدلی برای پیش‌بینی برنده لیگ برتر، لالیگا، سری آ و بوندسلیگا ایجاد شد و پیش‌بینی برنده همه آن‌ها با موفقیت بود. البته این پیش‌بینی چندان هم سخت نبود، زیرا در آن مقطع ۱۹ مسابقه برگزار شده بود. اکنون قرار است همین مدل برای پیش‌بینی جام‌جهانی ۲۰۲۲ اجرا شود که نحوه پیش‌بینی جام‌جهانی با استفاده از پایتون است.

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

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

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

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

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

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

بدون شک فرضیات ۱ و ۴ برآورده می‌شوند، اما ۲ و ۳ تا حدی درست هستند. با این حال، اجازه دهید فرض کنیم که مفروضات ۲ و ۳ همیشه درست هستند. اکنون می‌توان گفت که می‌توان از توزیع پواسون برای محاسبه احتمال تعداد گل‌هایی که در یک مسابقه به ثمر می‌رسد، استفاده کرد. در اینجا فرمول توزیع پواسون آمده است.

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

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

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

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

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

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

پس از جمع‌آوری اطلاعات از تمام بازی‌های جام‌جهانی از سال ۱۹۳۰ تا ۲۰۱۸، میانگین گل‌های زده و خورده هر تیم ملی محاسبه شد. با گل‌های زده/خورده هر تیم ملی، تابعی ایجاد شد که تعداد امتیازهای هر تیم در مرحله گروهی را پیش‌بینی می‌کرد.

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

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

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 محاسبه شد.

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

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

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) 

این به این معنی است که انگلیس ۲.۲۳ امتیاز و ایالات متحده ۰.۵۹ امتیاز می‌گیرند.

اگر این تابع 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 استفاده کنیم، می‌توانیم برنده جام‌جهانی را پیش‌بینی کنیم. با اجرای یک بار دیگر تابع، متوجه می‌شویم که برنده برزیل است!

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

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

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

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

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