Memprediksi pemenang pertandingan sepak bola hanya berdasarkan hasil pertandingan sebelumnya antara kedua tim

8

Saya penggemar berat sepakbola dan tertarik pada pembelajaran mesin juga. Sebagai proyek untuk kursus ML saya, saya mencoba membangun model yang akan memprediksi peluang menang untuk tim tuan rumah, mengingat nama-nama tim tuan rumah dan tandang. (Saya menanyakan dataset saya dan karenanya membuat titik data berdasarkan pertandingan sebelumnya antara kedua tim)

Saya memiliki data untuk beberapa musim untuk semua tim, tetapi saya memiliki masalah berikut yang saya ingin saran. EPL (Liga Premier Inggris) memiliki 20 tim yang bermain satu sama lain di kandang dan tandang (380 total pertandingan dalam satu musim). Jadi, setiap musim, dua tim bermain satu sama lain hanya dua kali.

Saya memiliki data selama 10+ tahun terakhir, menghasilkan 2 * 10 = 20 titik data untuk kedua tim. Namun saya tidak ingin melewati 3 tahun terakhir karena saya percaya tim berubah cukup banyak dari waktu ke waktu (ManCity, Liverpool) dan ini hanya akan memperkenalkan lebih banyak kesalahan ke dalam sistem.

Jadi ini menghasilkan hanya sekitar 6-8 poin data untuk setiap pasangan tim. Namun, saya memiliki beberapa fitur (hingga 20+) untuk setiap titik data seperti gol penuh waktu, gol setengah waktu, umpan, tembakan, kuning, merah, dll. Untuk kedua tim sehingga saya dapat memasukkan fitur seperti formulir terbaru, baru-baru ini formulir rumah, formulir tandang terakhir dll.

Namun gagasan hanya memiliki 6-8 datapoints untuk dilatih sepertinya tidak benar bagi saya. Adakah pemikiran tentang bagaimana saya bisa mengatasi masalah ini? (jika ini adalah masalah di tempat pertama)

keithxm23
sumber
Keuntungan bidang rumah tampaknya cukup penting bagi saya berdasarkan studi yang telah saya baca (saya seorang insinyur / ekonom dan penggemar BVB). Anda mungkin juga mempertimbangkan PK; mereka tidak mengubah hasil pertandingan jangka panjang rata-rata (baca Soccernomics ), tetapi mungkin sangat memengaruhi pertandingan individu.
gregmacfarlane
Jika Anda benar-benar hanya ingin menggunakan nama-nama tim, Anda dapat menggunakan jenis sistem peringkat yang digunakan untuk catur atau permainan dua pemain lainnya, misalnya [Elo] [1] atau [Trueskill] [2]. Ada juga [kontes Kaggle] [3] tentang ini. Anda mungkin bisa mulai dengan salah satu sistem ini dan kemudian meningkatkannya dengan menggunakan kovariat lainnya. [1]: en.wikipedia.org/wiki/Elo_rating_system [2]: en.wikipedia.org/wiki/TrueSkill [3]: kaggle.com/c/chess
Flounderer
Satu-satunya pemikiran yang akan Anda ketahui sebelum pertandingan adalah hasil dan peringkat sebelumnya. Anda tidak akan memiliki info tentang tunas, sudut, jadi Anda perlu membuat fitur yang masuk akal dan diberikan.
Fierce82

Jawaban:

2

Bagaimana dengan meningkatkan dataset Anda dengan mempertimbangkan juga beberapa data tentang pertandingan vs lawan yang sama?

Contoh:

TeamA vs TeamC: 1-0
TeamB vs TeamC: 2-0
=> "infer" the fake outcome: TeamA vs TeamB: 1-2

Selain itu, menurut saya tanggal seperti ini lebih baik daripada data yang Anda usulkan, karena tim tahun lalu sering tim yang sangat berbeda.

Aslan986
sumber
Saran yang sangat baik! Terima kasih Aslan986 .. Namun, saya percaya ini akan berkontribusi pada daftar fitur. Saya tidak melihat bagaimana kita bisa menggunakan data ini sebagai 'titik data'. Namun demikian, terima kasih, saya pasti akan mencobanya.
keithxm23