Algoritmi neurali per il lotto

di il
90 risposte

Algoritmi neurali per il lotto

Un saluto a tutti.
Sto lavorando ad una applicazione basata sulle reti neurali per i giochi come il lotto. Purtroppo ho solo il database delle estrazioni del superenalotto, ma sono un pò poche; inoltre il superenalotto non ha le stesse caratteristiche del lotto, che, a mio avviso, potrebbe sfruttare meglio la rete.

Quindi, per farla breve, sarei lieto se qualcuno postasse un link ad un database (access, excel, script sql, o qualunque altro formato trattabile in modo automatico) o potesse comunque procurarmelo, per poter andare avanti con gli esperimenti di struttura e taratura della rete.

Per la cronaca: al primo test (senza reti comparative), ho ottenuto un rendimento % superiore del 50% rispetto ad un metodo puramente casuale (test sui 25 numeri), un 4 alla prima estrazione, cinque o sei 3 nelle prime 30 estrazioni (non ho salvato l'excel di verifica, ed il programma ancora è privo di qualunque funzione) ed un 6 alla 23° estrazione. Peccato che era un test sulle estrazioni passate e non l'ho giocato...

90 Risposte

  • Re: Algoritmi neurali per il lotto

    Ciao Psycho,
    sono molto interessato al tuo studio di reti neurali applicati al gioco del lotto/superenalotto. Che tipo di rete hai usato?
    In che linguaggio di programmazione hai scritto la rete?
    Hai ancora bisogno di archivi per addestrare la rete?
    Aspetto tue news.
    ALEX
  • Re: Algoritmi neurali per il lotto

    Ho usato una banale rete EBP con funzione di attivazione a sigmoide e neuroni binari con bias; tanto per usare un linguaggio nuovo ho sperimentato il VC# 2005 Express, e per gli archivi ho quello del superenalotto completo, mi manca quello del lotto (intendo quello storico dal 1500ca).

    Non ho fatto esperimenti sul lotto, ma solo sul superenalotto. Ho sperimentato risultati piuttosto scarsi utilizzando come input le estrazioni precedenti, mentre risultati migliori li ho avuti con indici statistici quali frequenze e ritardi.

    Con lo sviluppo e i test sono fermo da un pò (periodo senza tempo libero!!!)...
  • Re: Algoritmi neurali per il lotto

    Anche io ho provato a usare una rete neurale per prevedere i risultati del lotto e superenalotto.
    ho usato una rete back-propagtion scritta in VB a 2 livelli di unità nascoste scritta in VB (forse la riscriverò in Java alla quale ho fatto una rete neurale quickProp con un livello nascosto) ,
    ho provato con il lotto una volta(le ultime 100 estrazioni) ed e andata male, poi ho provato con il superenalotto 3 volte ed è andata meglio che senza (ho fatto un 3 e le altre volte che giocavo facevo sepre 0-1)
    mi sto concentrando al superenalotto anche perche posso spendere solo un euro .
    io ho trovato i file sia del lotto,sia del superenalotto completi(4000 estrazioni del lotto e (1500 circa del superlotto)
    se vuio te li posso mandare

    Ciao
  • Re: Algoritmi neurali per il lotto

    Con la mia configurazione, dai primi test la due livelli hidden non ha dato indicazioni incoraggianti, mentre la classica rete a tre layer I-H-O ha dato indicazioni maggiori. Ho provato sia a generare la combinazione che la probabilità del singolo numero, e la combinazione è andata decisamente meglio. Per le estrazioni, ho trovato il superenalotto (1120 al concorso 86, che credevo essere tutte...) se puoi mandarmi il tutto cmq sarebbe meglio.

    Grazie.

    P.S.: che parametri di input stai sperimentando?
  • Re: Algoritmi neurali per il lotto

    Compliemnti. MA che genere di imput avete assegnato alla rete?
    Quante estrazioni avete usato per l'addestramento della rete?
    E quale output?
    Per quanto riguarda il lotto vorrei usare una rete con in input le 5 estrazioni, mentre come output vorrei parametrizzarli da 5 a 10 (se ne possono meettere fino a 10 numeri su di una schedina).
    Invece per quanto riguarda ilsuperenalotto, vorrei usare una rete con in input le 6 estrazioni, mentre come output vorrei parametrizzarli da 6 a 7 (sei con 5+1).
    Voi cosa ne dite?
    Io uso Mac, e sto scrivendo il tutto in objective-c, ma dovrebbe essere poi compilabile con gcc sotto linux o windows sotto cygwin.
    A presto.
    ALEX
  • Re: Algoritmi neurali per il lotto

    Ritengo che le sole estrazioni passate abbiano un contenuto informativo statistico relativamente basso. Sto tentando varie combinazioni per delineare la struttura più indicata, passo decisamente più complesso (l'algoritmo, qualunque sia la struttura ce l'ho). Finora mi sono dedicato a statistiche di ritardi e frequenze (normalizzati) e ultimamente sto mettendo in gioco anche le estrazioni precedenti; l'output è ovviamente la sestina...
  • Re: Algoritmi neurali per il lotto

    CIao
    vorrei avere piu' notizie circa la rete che hai usato.
    Che struttura dati hai usato come input per la rete?
    Sto cercando di codificare una Back Propagation, ma non ho ben chiaro la struttura dati della rete neurale a livello di input.
    Ci ho pensato a lungo questa settimana che ero in spiaggia (tra la visione di un bichini e un altro ma ho ancora dei problemi.
    Hai dei semplici algoritmi o source in C da mostrarmi?
    A presto.
    ALEX
  • Re: Algoritmi neurali per il lotto

    Spero che i problemi non siano con i bikini ... Non hai dei bikini da postare per il bene di tutti??? ...

    Scherzi a parte, il mio source (che non ho qui a lavoro) è in c# e non è procedurale ma abbastanza object-oriented; tra l'altro il mio programma non implementa la rete ma solo il concetto di neurone e l'algoritmo di back propagation; la rete può essere una qualunque rete su file di testo (creato dallo stesso programma, ma solo intervenendo sul codice, l'interfaccia è praticamente assente )così come l'input, che viene generato sulla base di un db access (a casa non ho installato un sqlserver per pigrizia)...

    Il mio dubbio è sul numero di layer (io sto lavorando con 3, I-H-O), sul numero di neuroni per layer (se non ricordo male mi sto mantenendo sugli 1:1.5 tra input e hidden, e con un numero di hidden inferiore a 10 volte il numero di output). Tuttavia non ho ancora trovato una struttura dal rendimento costante.

    Ancora qualche dubbio sul tipo di input, mentre sono ormai convinto che l'output debbano essere i 90 numeri. Ho potuto sperimentare che usare le sole estrazioni non risulta così vantaggioso, mentre usare le statistiche porta a risultati mediamente migliori; ultimamente sto sperimentando reti ibride. Tuttavia ritengo che sia importante anche la funzione di attivazione dei neuroni (al momento una sigmoide, si accettano suggerimenti) e, perchè no, l'inizializzazione di neuroni (bias) e pesi (attualmente random su valori bassi per non saturare la risposta dei neuroni). Come ciclo di addestramento sto sperimentando la ripetizione ciclica di un insieme di 150 input/output calcolati sulle 150 estrazioni precedenti quella di training della rete. Nei concorsi successivi non aggiorno la rete ma solo l'input.

    Allora, chi ha qualche suggerimento differente??
  • Re: Algoritmi neurali per il lotto

    Ciao,
    i problemi non sono i bikini, ma il fatto che non li vedro' piu' in tale quantita' fino all'anno prossimo
    Complimenti per il lavoro. Non conosco c# (io uso Mac) ma non dovrebbe essere difficile convertire quel codice in objective-C.
    Non capisco perche' l'output debbano essere i 90 numeri!! A cosa ti servirebbe la rete neurale se come output mi da' i 90 numeri?
    La statistica e' una cosa importante, ma la ciclicita' di alcune estrazioni non te la prende bene!!! Ovviamente posso sbagliarmi.
    Anche io ero orientato a usare pesi random uniformi, ma vorrei provare anche altre distribuzioni random. 150 estrazioni possono essere forse un po' pochine (un anno di estrazioni), magari raddoppiarle potrebbe essere piu' vantaggioso in termini di apprendimento, (forse non in termini di cpu).
    Per il resto (unzione di attivazione dei neuroni, aggiornamento della rete, inizializzazione dei neuroni, devo pensarci).
    Funziona il tuo programma con Mono?
    Mono esiste anche per Mac!!
    Ora torno al lavoro.
    A presto.
    ALEX
  • Re: Algoritmi neurali per il lotto

    Quasi quasi la discussione sui bikini mi interessa più di quella sulla rete... Forse perchè ho fatto troppo poco mare??? ...

    La rete è binaria, quindi sui 90 numeri ottengo per ordinamento quanti numeri desiderto da giocare... ho pensato pure io che ci sono certe "figure" nelle estrazioni, sebbene la letteratura sul superenalotto non è ricca come quella sul lotto (il lotto inoltre presenta ciclicità incrociate tra le varie ruote, portando ad uno sproposito di numeri)... infatti ho unito un set di estrazioni (tipo le ultime 15) e un insieme di dati statistici di frequenze e ritardi... però ancora non ci siamo... tu dici di aumentare le estrazioni di training?? Uhm... per ora faccio 10K cicli di addestramento in circa 3 ore... se raddoppio (300 concorsi) e passo a 20K cicli dovrei farcela in 12 ore... raddoppio anche i cicli perchè altrimenti l'errore della rete resta alta... Mi domandavo, se era il caso di usare addestramenti non canonici, cioè ad esempio addestrare la rete su x-mila cicli del training set e poi shockarla con qualche centinaia di cicli su un validation set... Tu che metodi di training utilizzi?
  • Re: Algoritmi neurali per il lotto

    CIao,
    Complimenti per la rete che hai costruito. Sei ad un livello molto elevato. Io ho usato semplici reti neurali per la previsione di reti finanziarie, e vorrei applicarle al gioco del lotto/superenalotto.
    Sei sicuro che raddoppiando le estrazioni il tempo CPU sia proporzionale?
    Io sto studiando sources per vedere come applicarli alla serie storica del lotto.
    Per essere piu' preciso, sto cercando di convertire il BPN che si trova su http://www.neural-networks-at-your-fingertips.com in objective-c e applicarlo al lotto. Una volta che ho un source che funziona, mi dedichero' alla sua ottimizzazione delle sue routines.
    Sto leggendo anche vari articoli, solo che loro predicono usando NN su serie storiche monovalori, mentre le estrazioni sono di cinque valori e io posso vincere facendo ambo su N numeri. Cercavo, quindi, una rete neurale che prendesse come input le 5 estrazioni e come output mi desse N numeri (da 5 a 10). Infatti ambo su 10 nmeri quintuplica la puntata.
    Da quello che ho letto e visto finora, il problema e' la ricerca dell'output giusto. In input 5 e in output 5 valori, non si riesce a averli (sono valori quasi random), ma input 5 e output 10 potrebbe essere una cosa piu' interessante, ma questo dovrebbe aumentare il tempo computazionale.
    Tu che ne dici?
    PEr quanto riguarda la questione dei bikini, sono oramai un ricordo (un gran bel ricordo, pero'. devo ammetterlo ).
    A presto e alla prossima.
    ALEX

    P.S. Se hai una rete semplice, proviamo ad ottimizzarla in base alle nostre diverse conoscenze e poi vediamo cosa ne viene fuori.
  • Re: Algoritmi neurali per il lotto

    La discussione inizia a farsi interessante. Innanzitutto ti rispondo sul tempo CPU: poichè non ho avuto tempo di progettare un algoritmo di learning parallelo, sono abbastanza convinto che la natura iterativa dell'algoritmo faccia conseguire una linearità nella complessità computazionale; in fin dei conti l'addestramento è dato da un doppio for innestato sulla coppia numero di eventi/numero di cicli.

    Per quanto riguarda le tue modalità di input/output, queste mi incuriosiscono molto... Io sto lavorando su una rete binaria ("obbligatoria" con attivazione a sigmoide), e l'idea di campionare il valore binario per ottenere un numero tra 1 e 90 la vedo quasi randomatica (sebbene non abbia effettuato sperimentazioni a proposito).

    Ho dato una rapida occhiata al link, e si avvicina molto al mio (ovviamente, essendo due algoritmi EBP); purtroppo non ho con me (qui in ufficio, ndr) il mio sorgente per un rapido matching... Vedo però che utilizza un training stop method che ritengo molto interessante, soprattutto se provassi a combinarlo con tecniche ricorsive di selezione del training set (ideina che mi viene in mente proprio adesso)...

    Se l'NN fosse valido, potrebbe essere usato per l'estratto determinato, anche se tutta questa fatica per un misero 55:1!!! Voglio supporre di abbandonare la mia rete binaria (ma non è vero, attacchiamo su due lati, tanto ti ricorderai di me se vinci, vero??? ): mi dici come fai a farti dare in output i valori da giocare? Usi una rete intera o altro?

    In ogni caso, una rete non nasce per un problema, ma deve essere solo dimensionata su di esso. La rete funziona con un solo output perchè è più facile da addestrare e perchè la funzione che apprende è decisamente più semplice: nulla ti vieterebbe di aumentare il numero di input e di output, trattandosi di una feedforward senza niente di particolare...
  • Re: Algoritmi neurali per il lotto

    CIao,
    come dici tu, la discussione sta diventando interessante.
    E' bello parlare con gente competente e cercare di capire i diversi modi di intendere una probabile soluzione (giusta o sbagliata che sia) al problema dell'uso di AI applicata al gioco del lotto.
    Il mio problema attuale e', come ho avuto modo di dirti, creare una struttura dati che prenda in input i 5 (o 6 per il superenalotto) estratti e in outputgli N numeri. Tutte le serie storiche a cui sono applicate a serie monovalore per un output monovalore. Si potrebbe usare una matrice 5*5 come input per ciascuna estrazione (ma per 100 estrazioni che tempo macchina ci vuole?), oppure prendere i cinque valori singolarmente, e poi prndere il sesto come primo della seconda estrazione. E' un problema non marginale che pregiudica tutta la struttura di una NN. Non ho trovato letteratura su NN su serie storiche multivalori. E' un problema che mi sta attanagliando da un po' di tempo.
    Una volta fissato questo problema, posso dedicarmi alla ottimizzazione dei pesi (che vorrei essere automatica e non statica come nel source BP del link che ti ho dato), e alla miglioria dell'algoritmo totale o nelle sue componenti di base.
    Tu cosa ne dici?
    A presto.
    ALEX
  • Re: Algoritmi neurali per il lotto

    Per quanto riguarda il problema dei pesi, normalmente sarebbe opportuno valorizzarli con valori random piccoli per poi procedere all'addestramento. Non ho avuto modo di validare tutto il software, ho approfittato solo per verificare il training stop method sulla mia rete, ma con risultati per niente edificanti... per l'input, ti ricordo (come sono sicuro sai già) che la rete ignora il significato dei neuroni, per cui tu puoi avere 20-30 neuroni in ingresso anche a significato posizionale senza dover per questo ricorrere a strutture particolari; la rete, se valida, saprà trovare da sola le funzioni che governano il problema (in fondo, se volessimo imporgli la nostra "visione" di gioco, che rete sarebbe?). Io continuo ad avere risultati positivi, ma sempre bassi... un miglioramento che è sempre intorno al 20%, ma che è troppo poco per puntare a qualche vincita. L'ultima rete che ho costruito presenta una media di 2 valori correttamente pronosticati su circa 20 numeri; solo che il numero 20 non è fisso in questa statistica e 2 valori non fanno vincita. Certo, potrei provare ad incrociare i risultati di più reti, ma a questo punto non converrebbe usare una rete con più input e hidden (e magari layer)? Per ora l'unica cosa che mi convince è l'output, che somiglia ad una funzione di distribuzione di probabilità non normalizzata, però credo che l'input utilizzato (statistiche di lungo e medio periodo ed estrazioni recenti) non sia capace di conferire alla rete elementi sufficienti. Eppure sono salito a circa 350 neuroni di input (ero arrivato a circa 600, ma creando una rete incapace di adattarsi al problema)... Ti ripeto, sul fronte dell'input con le sole estrazioni non ho avuto grossi riscontri, e anche la rete "mononumero" (cioè che cerca di apprendere le condizioni di uscita di un singolo numero) è risultata infruttuosa... La domanda è semplice: cosa diamine devo dare in pasto a questa rete? E che rapporto devo prevedere tra neuroni I:H e H:O??? (posto che l'output a 90 neuroni mi convince)... 2 layer vanno bene, o la natura del problema suggerisce altro? La sigmoide come funzione di attivazione si presta o sarebbe meglio una funzione più lineare o addirittura sublineare??? Domande da 100milioni di euro (non basterebbe un sei per rispondere a queste!!! )
Devi accedere o registrarti per scrivere nel forum
90 risposte