Algoritmo AI Fantacalcio

Algoritmo AI Fantacalcio

Con l’inizio della nuova stagione della dei campionati di calcio, riprende anche il famoso gioco che riunisce tutti gli anni centinaia di appassionati: il Fantacalcio. Non spiegheremo qui cosa è il Fantacalcio perchè sicuramente chi è atterrato su questa pagina già conosce il funzionamento del gioco e cercava un Algoritmo AI Fantacalcio . Di seguito spiegheremo come utilizzare l’intelligenza artificiale ed i migliori algoritmi per realizzare la migliore squadra possibile all’asta del Fantacalcio. Tuttavia gli esempi che andremo a fare saranno rivolti al campionato inglese ossia alla Premier League.

Acquisizione dei datiAlgoritmo AI Fantacalcio

Prima di imbattervi nella ricerca e pulizia di migliaia e migliaia di righe di dati, potete visionare Vaastav Anand su GitHub , che aveva già svolto un lavoro incredibile sulla pulizia e lo scraping web dei dati. Il suo set di dati consiste in statistiche per ogni singolo giocatore e le partite di Premier League giocate dal 2016 in poi. Sebbene mancassero alcune partite, c’erano ancora oltre 100.000 righe di dati e oltre 30 colonne con cui lavorare.

Pulizia dei datiAlgoritmo AI Fantacalcio

Il dataset principale era composto da due dataset separati che ho unito insieme. Il primo dataset conteneva dati dal 2016 fino al 2022, mentre il secondo conteneva dati solo per la stagione 2022-2023. Il problema era che, a differenza del secondo dataset, il primo non aveva dati attesi, che considerano il probabile risultato di un evento in base alle informazioni disponibili. Ad esempio, xG, o goal attesi, che è una metrica ampiamente utilizzata al giorno d’oggi, quantifica la probabilità che un tiro particolare si trasformi in un goal in base a fattori come la distanza del tiro, l’angolazione e varie azioni del giocatore che hanno portato al tiro. Poiché non era presente nei dati precedenti, purtroppo abbiamo dovuto escludere tutte le colonne attese dal dataset combinato. Inoltre, abbiamo dovuto riassegnare il prezzo di ciascun giocatore in base ai nuovi prezzi stabiliti per la prossima stagione 2024-25, nonché cambiare le squadre per i giocatori che si sono trasferiti tra club di Premier League (ad esempio: Mason Mount dal Chelsea al Manchester United).

Dato che i modelli di apprendimento automatico non possono gestire direttamente i valori stringa, abbiamo dovuto preelaborare i dati. Per prima cosa, abbiamo assegnato in modo univoco un numero ID a ciascun giocatore, consentendo al modello di differenziare facilmente gli individui. Dopo aver sezionato l’orario del calcio d’inizio in componenti discrete: “Anno”, “Mese”, “Giorno del mese”, “Giorno della settimana” e “Ora”, abbiamo trasformato le posizioni dei giocatori in equivalenti numerici, in cui i portieri erano etichettati come 0, i difensori come 1, i centrocampisti come 2 e gli attaccanti come 3. Allo stesso modo, abbiamo assegnati codici univoci anche a ciascuna squadra della Premier League.

Creazione e valutazione del modello MLAlgoritmo AI Fantacalcio

Per prevedere i punti totali, ho estratto diverse caratteristiche dal set di dati, che comprendono attributi come la posizione del giocatore, gli assist, i gol segnati e altro ancora. Quindi, utilizzando la libreria ‘Scikit-learn’ di Python, abbiamo suddiviso il set di dati in due parti: un set di addestramento per insegnare i pattern del modello nei dati e un set di test per valutarne l’accuratezza. Per fare previsioni, abbiamo utilizzato un modello di regressione Random Forest, che è adatto per prevedere risultati numerici, come i punti totali che un giocatore potrebbe segnare. Abbiamo addestrato questo modello utilizzando i dati di addestramento, consentendogli di apprendere le relazioni tra gli attributi del giocatore e i suoi punti totali. Infine, ho distribuito il modello addestrato per prevedere i punti totali sul set di test e le previsioni sono state confrontate con i valori effettivi per valutare le capacità predittive del modello.

L’errore quadratico medio (MSE) è una metrica statistica utilizzata per misurare l’accuratezza di un modello predittivo, come il modello di regressione Random Forest da noi impiegato. Quantifica la differenza media al quadrato tra i valori previsti e i valori effettivi in ​​un set di dati. Elevando al quadrato le differenze, l’MSE enfatizza gli errori più grandi e li penalizza più pesantemente, fornendo una valutazione completa delle prestazioni del modello. Il modello ha raggiunto un impressionante MSE di 0,055, il che significa che la differenza al quadrato tra i nostri punti totali previsti e quelli effettivi è costantemente minima. Questo risultato indica che le previsioni del modello sono strettamente allineate con i punti effettivi segnati dai giocatori nel set di dati di prova, riflettendo la sua accuratezza ragionevolmente elevata nel fare previsioni.

Creazione del problema di ottimizzazioneAlgoritmo AI Fantacalcio

Per suggerire la squadra “ideale”, abbiamo utilizzato un metodo di ottimizzazione. Ciò comporta la creazione di un modello matematico che cerca di massimizzare un obiettivo specifico seguendo determinate regole. Integrando i punti previsti dal modello ML, questo modello matematico seleziona i giocatori migliori per massimizzare i punti della squadra entro i limiti di budget e posizione. Abbiamo utilizzato la libreria Python “PuLP” per creare e risolvere questo modello, poiché è ottima per affrontare problemi di programmazione lineare come questo. Prima di menzionare i vincoli, ecco una breve panoramica delle regole del gioco del Fantacalcio:

  • L’obiettivo del gioco è ottenere il maggior numero di punti.
    I punti vengono segnati tramite gol, assist, reti inviolate e parate.
    I punti vengono detratti quando un giocatore riceve un cartellino giallo, un cartellino rosso o segna un autogol.
    I giocatori sono valutati in base al loro potenziale di punti. Logicamente, più alto è il prezzo, più alto è il potenziale di punti percepito. Ad esempio, Erling Haaland è valutato 90 fantamilioni, mentre qualcuno come Elliot Anderson è valutato 40 fantamilioni. Se vi state chiedendo chi sia Elliot Anderson, è esattamente quello che intendo.
    Hai un budget di
  • 300 fantamilioni per scegliere una squadra composta esattamente da 15 giocatori (2 portieri, 5 difensori, 5 centrocampisti e 3 attaccanti).
    Dalla tua squadra di 15 giocatori, devi scegliere 11 giocatori in gioco e 4 da mettere in panchina. Di questi 11 giocatori in gioco, ci deve essere esattamente 1 portiere, almeno 3 difensori, almeno 2 centrocampisti e almeno 1 attaccante. I punti segnati dai giocatori in panchina non contano nel totale della tua squadra.
    Non si può scegliere lo stesso giocatore più di una volta e non puoi avere più di 3 giocatori della stessa squadra.
    Ogni settimana, devi scegliere un capitano, il che ti fa guadagnare il doppio dei punti per quel giocatore per quella settimana. Hai anche diritto a un trasferimento gratuito all’interno della tua squadra ogni settimana, con ogni trasferimento aggiuntivo che ti fa perdere 4 punti.
    Ci sono altre regole su sostituzioni, ordine di panchina, ecc., ma non complicherò ulteriormente le cose. Utilizzando le regole del gioco menzionate sopra, ecco i vincoli per il modello di ottimizzazione:
  • Scegli i giocatori che massimizzano i punti totali previsti
    Escludere i giocatori che non giocano più nella Premier League, quelli infortunati o sospesi e qualsiasi giocatore che potrebbe rappresentare un rischio elevato per la rotazione.
    Scegli esattamente 11 giocatori. Il motivo per cui voglio che il modello suggerisca 11 giocatori è perché diventa complicato quando viene introdotto il concetto di panchina.
    Scegli esattamente 1 portiere, un minimo di 3 e un massimo di 5 difensori, un minimo di 2 e un massimo di 5 centrocampisti e un minimo di 1 e un massimo di 3 attaccanti.
    Scegli un massimo di 3 giocatori da qualsiasi squadra
    Non superare un budget di 83 milioni di sterline (dato che sceglieremo 11 giocatori e non 15, e preferirei avere una panchina che non superi i 17 milioni di sterline).
    Spendi almeno £82,0m (dato che non mi piace avere molti soldi in banca. Questo vale solo per FPL e non per la vita reale. Se vuoi inviarmi denaro, sentiti libero).


Il team ‘ottimale’Algoritmo AI Fantacalcio

Con questi vincoli, ecco il team (squadra da 11 titolari) suggerito dal modello:

  1. Pickford
  2. Alexander-Alrnold
  3. James
  4. Chilwell
  5. Stones
  6. Shar
  7. Salah
  8. Son
  9. Grealish
  10. Mount
  11. Kane

Il modello ha sostenuto la doppietta difensiva del Chelsea formata da James e Chilwell, un difensore e un attaccante ciascuno del Manchester City e del Liverpool, il duo degli Spurs Kane e Son. Con l’aiuto dello strumento gratuito di Fantasy Football Hub che valuta la tua squadra usando l’IA , ecco come si è comportata la squadra : 78/100 .

Il 78% non è il risultato che ci aspettavamo, che è al massimo una sufficienza. Ma ecco cosa manca: il modello soppesa l’importanza di ogni partita in modo equo, il che significa che indipendentemente dal fatto che la partita sia stata giocata nel 2016 o nel 2024, ha lo stesso significato per il modello. Pertanto, un giocatore come Erling Haaland, che ha battuto innumerevoli record la scorsa stagione ed è probabilmente una scelta ovvia, viene ingiustamente punito dal modello per la sua mancanza di longevità in campionato. Allo stesso modo, nonostante una squadra dell’Arsenal ringiovanita che ha concluso un impressionante 2° posto in campionato la scorsa stagione, nessuno dei suoi giocatori arriva agli ultimi 11. Il modello non tiene conto nemmeno delle partite, che sono una parte essenziale del processo decisionale della FPL. Ad esempio, è più probabile che un giocatore abbia prestazioni migliori quando gioca contro il Luton in casa che contro il Man City in trasferta.

Regolazione del peso dei valoriAlgoritmo AI Fantacalcio

Per far sì che il modello di ottimizzazione desse priorità alle corrispondenze più recenti rispetto a quelle più vecchie, abbiamo dovuto creare un vincolo aggiuntivo, in cui le corrispondenze più recenti hanno un peso maggiore e il peso diminuisce man mano che ci spostiamo più indietro nel tempo. Ecco la formula che abbiamo usato per calcolare il peso temporale:

Peso temporale = e^(-tasso di decadimento * giorni fa)

Dove:

Il peso temporale è l’importanza calcolata di una partita.


La costante di velocità di decadimento (che ho mantenuto a 0,001) è un parametro che determina la rapidità con cui il peso di un fiammifero diminuisce con il passare del tempo.
‘Days ago’ rappresenta il numero di giorni trascorsi tra l’orario di inizio della partita e il giorno della partita più recente. Pertanto, il giorno più recente avrebbe un peso di 1.
Ad esempio, diciamo che una partita è stata giocata esattamente un anno prima della partita più recente. Utilizzando la nostra costante di velocità di decadimento di 0,001 e la formula del peso:

Peso del tempo = e^(-0,001 * 365) = 0,6942

Pertanto, il peso della partita giocata un anno prima della partita più recente è approssimativamente 0,6942, ovvero ha circa il 69,42% di importanza rispetto alla partita più recente. E il motivo per cui abbiamo scelto 0,001 come costante di decadimento è perché, a mio parere, rientra in quella zona di Riccioli d’oro in cui dà priorità alle partite più recenti pur continuando a porre una sorta di enfasi sulle partite più vecchie. Ad esempio, se avessimo aumentato o diminuito il tasso di decadimento di un fattore 10 in entrambe le direzioni (0,01 e 0,0001), lo stesso lasso di tempo di un anno tra due partite avrebbe comportato un peso rispettivamente del 2,60% e del 96,42%.

Per tenere conto delle partite, abbiamo utilizzato l’analizzatore gratuito di partite di Fantasy Football Hub , che è una valutazione molto più dettagliata delle partite rispetto a quella sul sito Web ufficiale della Premier League. Abbiamo preso i dati sulla difficoltà delle partite per le prime 5 settimane di partite della prossima stagione 2024-25 e li abbiamo ponderati in base a quanto sono recenti le partite, con maggiore enfasi sulle settimane più recenti per tenere conto dei trasferimenti all’interno della squadra. Con un trasferimento gratuito a settimana, potremo scambiare essenzialmente metà della squadra entro 5 settimane. Moltiplicando la ponderazione di ogni partita rispetto al periodo e alla difficoltà, avremmo la difficoltà media ponderata delle partite per ogni squadra. In parole povere, supponiamo che la squadra A giochi 2 partite, con difficoltà delle partite pari a 1,5 e 0,5 (più alta è la difficoltà, più facile è la partita e viceversa) e una ponderazione di 0,7 per la prima settimana di partite e di 0,3 per la seconda settimana di partite. La squadra A avrebbe una difficoltà media ponderata delle partite pari a (0,7 * 1,5) + (0,3 * 0,5) = 1,2.

Utilizzando un rapporto di 0,24: 0,22: 0,20: 0,18: 0,16 (questo rapporto è stato utilizzato perché ogni trasferimento gratuito settimanale mantiene 10/11 o circa 0,91 della tua squadra, che è più o meno uguale al rapporto tra pesi adiacenti).

Chelsea, Arsenal e Brighton hanno un inizio di stagione molto più facile rispetto a squadre come Burnley, Newcastle e Wolves. Con l’aiuto di queste informazioni, questa è stata la semplice formula utilizzata per calcolare i punti previsti ponderati:

Punti previsti ponderati = Punti previsti * Peso del tempo * Peso della ponderazione

Utilizzando questo, abbiamo aggiornato il vincolo per massimizzare i punti previsti ponderati anziché i punti previsti.

Il team “ottimale” aggiornato – Algoritmo AI Fantacalcio:

  1. Pickford
  2. Alexander-Alrnold
  3. James
  4. Saliba
  5. Gabriel
  6. Rashford
  7. Ødegaard
  8. Foden
  9. Maddison
  10. Haaland
  11. Wilson

Considerando la recente apparizione del gioco e la difficoltà delle partite, questo è l’11 suggerito dal modello. La differenza più grande tra le due squadre è che ora il modello raccomanda un raddoppio difensivo dell’Arsenal, così come il duo norvegese di Martin Ødegaard e, naturalmente, Erling Haaland. Nonostante abbiano avuto stagioni 2022-23 relativamente scarse per i loro standard elevati, Alexander-Arnold e Reece James hanno comunque avuto il sostegno del modello, considerando quanto possono essere esplosivi. Anche Jordan Pickford ha mantenuto il suo posto tra i pali, con Rashford, Foden e Maddison che hanno sostituito rispettivamente i loro compagni di squadra Mount, Grealish e Son. Per concludere la squadra, Callum Wilson ha ottenuto il cenno nonostante le partite difficili del Newcastle. Ecco come si è comportata la squadra: 93/100.

93%! È un’ ottima valutazione, che è un enorme miglioramento! Tuttavia, tieniamo presente che un punteggio di valutazione del team più alto non garantisce automaticamente più punti FPL, significa solo che stiamo dando una maggiore probabilità di segnare più punti. Quindi, se non funziona bene, possiamo sempre dare la colpa alla fortuna.

Miglioramenti futuriAlgoritmo AI Fantacalcio

Sebbene siamo soddisfatto del fatto che il modello abbia ottenuto un punteggio del 93%, ecco cosa penso si possa fare per migliorarlo:

  • Incorporare i dati dei nuovi giocatori: incorporando i dati sui giocatori in arrivo dai campionati esteri e assegnando pesi appropriati, il modello potrebbe effettuare selezioni dei giocatori più complete.
  • Utilizzare parametri avanzati: integrando parametri avanzati come i gol previsti (xG), gli assist previsti (xA) e il coinvolgimento dei giocatori in eventi critici, il modello otterrebbe informazioni più approfondite sulle prestazioni dei giocatori.
  • Gestione infortuni e squalifiche: tenere conto degli infortuni e delle squalifiche dei giocatori sarebbe il modello per evitare che alcuni giocatori saltino le prossime partite e migliorare così le prestazioni complessive della squadra.
  • Integrazione dinamica dei dati: consentire al modello di adattarsi alle circostanze mutevoli incorporando caratteristiche dinamiche come i prezzi dei giocatori e i risultati recenti migliorerebbe le capacità decisionali sia a breve che a lungo termine.
  • Ottimizzazione della capitaneria e della strategia di trasferimento: estendere le capacità di ottimizzazione del modello per consigliare scelte ottimali in termini di capitaneria, strategie di trasferimento e utilizzo dei chip comporterebbe guadagni immediati e a lungo termine.
  • Considerare le intuizioni contestuali: probabilmente la cosa più importante, il modello potrebbe migliorare il processo decisionale incorporando fattori contestuali come cambiamenti nelle formazioni di squadra e nei ruoli dei giocatori. Ad esempio, se c’è un cambio di formazione all’interno di una squadra e un certo giocatore ha un ruolo più offensivo, il modello dovrebbe saperlo. Incorporare una funzionalità che consideri le intuizioni della comunità sarebbe di notevole aiuto.


Nel complesso, il modello Algoritmo AI Fantacalcio funziona bene nel produrre un team FPL competitivo. Ora, siamo curioso di scoprire come se la cava questo team nella vita reale. Solo il tempo ce lo dirà.

Il codice e i dati per questo progetto possono essere trovati qui .

(fonte)

Innovaformazione, scuola informatica specialistica promuove la cultura dell’AI Generativa, degli algoritmi e del Data Science. Trovate l’offerta formativa su queste tematiche con i corsi rivolti alle aziende sul nostro sito QUI.

INFO: info@innovaformazione.net – Tel. 3471012275 (Dario Carrassi)

Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:

    Ti potrebbe interessare

    Articoli correlati