Prediksi Bola Dalam Piala Dunia FIFA 2022 Menggunakan Python

Prediksi Bola Dalam Piala Dunia FIFA 2022 Menggunakan Python

Banyak orang (termasuk saya) menyebut sepak bola sebagai “permainan yang tidak terduga” karena pertandingan sepak bola memiliki berbagai faktor yang dapat mengubah skor akhir. Sulit untuk memprediksi skor akhir atau pemenang pertandingan, tetapi tidak demikian halnya dengan memprediksi pemenang kompetisi. Selama 5 tahun terakhir, Bayern Munich telah memenangkan semua Bundesliga, sementara Manchester City telah memenangkan 4 Liga Premier.

Bahkan, di pertengahan musim 20–21, saya membuat model untuk memprediksi pemenang Liga Premier, La Liga, Serie A, dan Bundesliga, dan berhasil memprediksi pemenang semuanya. Prediksi itu tidak begitu sulit dibuat karena 19 pertandingan sudah dimainkan pada saat itu. Sekarang saya menjalankan model yang sama untuk memprediksi Piala Dunia 2022.

Inilah cara saya memprediksi Piala Dunia menggunakan Python (untuk detail lebih lanjut tentang kode, periksa tutorial video 1 jam saya)

Bagaimana kita akan memprediksi pertandingan?

Ada berbagai cara untuk membuat prediksi. Saya bisa membangun model pembelajaran mesin yang bagus dan memberinya banyak variabel, tetapi setelah membaca beberapa makalah saya memutuskan untuk memberikan kesempatan pada distribusi Poisson.

Mengapa? Baiklah, mari kita lihat definisi dari distribusi Poisson.

Jika kita menganggap gol sebagai peristiwa yang mungkin terjadi dalam 90 menit pertandingan sepak bola, kita dapat menghitung probabilitas jumlah gol yang dapat dicetak dalam pertandingan oleh Tim A dan Tim B.

Tapi itu tidak cukup. Kita masih perlu memenuhi asumsi distribusi Poisson. Jumlah acara dapat dihitung (pertandingan dapat memiliki 1, 2, 3 atau lebih gol) Terjadinya peristiwa adalah independen (terjadinya satu tujuan tidak boleh mempengaruhi kemungkinan tujuan lain).

Tingkat di mana peristiwa terjadi adalah konstan (probabilitas terjadinya gol dalam interval waktu tertentu harus persis sama untuk setiap interval waktu lain dengan panjang yang sama)
Dua peristiwa tidak dapat terjadi pada waktu yang sama persis (dua tujuan tidak dapat terjadi pada waktu yang sama). Tanpa ragu asumsi 1 dan 4 terpenuhi, tetapi 2 dan 3 sebagian benar. Yang mengatakan, mari kita asumsikan bahwa asumsi 2 dan 3 selalu benar.

Ketika saya memprediksi pemenang liga top Eropa, saya memplot histogram jumlah gol di setiap pertandingan selama 5 tahun terakhir untuk 4 liga teratas.

Jika Anda melihat kurva fit dari liga mana pun, sepertinya distribusi Poisson. Sekarang kita dapat mengatakan bahwa distribusi Poisson dapat digunakan untuk menghitung probabilitas jumlah gol yang dapat dicetak dalam suatu pertandingan.

Berikut rumus distribusi Poisson

Berikut rumus distribusi Poisson

Untuk membuat prediksi saya mempertimbangkan: lambda: median gol dalam 90 menit (Tim A dan Tim B) x: jumlah gol dalam pertandingan yang bisa dicetak oleh Tim A dan Tim B

Untuk menghitung lambda, kita membutuhkan rata-rata gol yang dicetak/kebobolan oleh masing-masing tim nasional. Ini membawa kita ke poin berikutnya.

Dalam prediksi yang saya buat untuk 4 liga top Eropa, saya mempertimbangkan faktor kandang/tandang, tetapi karena di Piala Dunia hampir semua tim bermain di stadion netral, saya tidak mempertimbangkan faktor itu untuk analisis ini.

Setelah saya mencetak gol/kebobolan oleh setiap tim nasional, saya membuat fungsi yang memprediksi jumlah poin yang akan didapat setiap tim di babak penyisihan grup.

Memprediksi babak penyisihan grup

Di bawah ini adalah kode yang saya gunakan untuk memprediksi jumlah poin yang akan diperoleh setiap tim nasional di babak penyisihan grup. Kelihatannya menakutkan, tetapi hanya memiliki banyak hal yang saya sebutkan sampai saat ini diterjemahkan ke dalam kode.

Dalam bahasa Inggris sederhana, predict_points menghitung berapa banyak poin yang akan didapat tim tuan rumah dan tandang. Untuk melakukannya, saya menghitung lambda untuk setiap tim menggunakan rumus average_goals_scored * average_goals_conceded .

Kemudian saya mensimulasikan semua kemungkinan skor pertandingan dari 0-0 hingga 10-10 (skor terakhir itu hanyalah batas jangkauan gol saya). Setelah saya memiliki lambda dan x, saya menggunakan rumus distribusi Poisson untuk menghitung p. Prob_home, prob_draw, dan prob_away mengakumulasi nilai p jika, katakanlah, pertandingan berakhir dengan skor 1-0 (kandang menang), 1-1 (imbang), atau 0-1 (tandang menang). Akhirnya, poin dihitung dengan rumus di bawah ini. Untuk simulasi lebih tepat kalian bisa temui di situs judi http://139.99.80.41/ dimana mereka mempunyai analisa sendiri selain menggunakan python.

Jika kita menggunakan predict_points untuk memprediksi pertandingan Inggris vs Amerika Serikat, kita akan mendapatkan ini. Ini berarti Inggris akan mendapatkan 2,23 poin, sedangkan Amerika Serikat akan mendapatkan 0,59. Saya mendapatkan desimal karena saya menggunakan probabilitas.

Jika kami menerapkan fungsi predict_points ini ke semua pertandingan di babak penyisihan grup, kami akan mendapatkan posisi 1 dan 2 dari setiap grup, dengan demikian pertandingan berikut di sistem gugur.

Memprediksi KO

Untuk KO, saya tidak perlu memprediksi poin, tetapi pemenang dari setiap braket. Inilah mengapa saya membuat fungsi get_winner baru berdasarkan fungsi predict_points sebelumnya. Sederhananya, jika poin_rumah lebih besar dari poin_tandang, pemenangnya adalah tim tuan rumah, jika tidak, pemenangnya adalah tim tamu.

Baca juga : 6 Strategi Taruhan Olahraga Yang Harus Anda Coba Agar Menang Besar