Algoritmi neurali per il lotto

di il
90 risposte

90 Risposte - Pagina 4

  • Re: Algoritmi neurali per il lotto

    Buongiorno, letto con molto interesse i vari post, essendo un'anta con la pssione e studio del lotto, metodi ecc, mi permetto di segnalarvi quanto segue, per una attenta analisi per un eventuale trasferimento in input del programma :

    i grandi studiosi del passato, ivi compresi gli egiziani ( l'origine dei numeri ) e la teoria di Fibonacci, applicata al PC, la base per le ricerche è sempre stata " le figure dei numeri, e i numeri radicali " mi spiego meglio

    figure : esempio n° 86 appartiene alla figura 5 ( 8+6 = 14; 1+4 = 5 figura )

    le figure sono nove - 1 -2-3-4-5-6-7-8-9- suddivise in terzine figurali distanza 3, ovvero 1--4--7 // 2--5--8 -// 3--6--9--
    numeri radicali sono otto quartine --- 1-10--11--19 -- 2--20--22--29----- 3 --30---33---39--- fino alla 8--80--88--89---

    Per le mie ricerche uso queste analisi in excel o vba su una ricerca storica dell'archivio dal 1939 -
    Quindi la sestina del super enalotto deve essere analizzata partendo dai numeri estratti in prima posizione, alle figure di appartenza e/o le terzine figurali ( esem 1-4-7- 3-6-9 )
    Se vi serve materiale nessun problema, buon lavoro e scusate per l'introduzione

    Salu-Tino

    http://www.iouppo.com/lite/pics/1bf5f5dfb176e646feaa60ced63380eb.gif
  • Re: Algoritmi neurali per il lotto

    Ri-ciao a tutti,
    ci sono aggiornamenti da parte vostra? dopo tanto leggere e studiare queste benedette reti sono arrivato ad una e credo risaputa conclusione:
    -1 qualsivoglia rete non sarà mai in grado di di essere addestrata sulla base di eventi puramente casuali (lotto , superenalotto ecc)
    quindi è impensabile che poter dare in pasto alla rete i 5 numeri e chiedere alla stessa i 5 che saranno estratti.. io non ho avuto risultati in tal senso che non siano gli stessi di soluzioni random
    ho provato di tutto, in diversi livelli di hidden layer e numero di neuroni per hidden layer, con differenti funzioni di attivazione.. nada de nada
    anche matemeticamente è come se la rete dovrebbe riconescere il pattern giusto sulla base dei 5 numeri dati, ma dato che ogni cinquina è differente da un altra quindi tali pattern sono tanti quante le cinquine.. impossibile percorrere questa strada.

    ho cambiato strategia
    al posto di addestrare la rete con 5 numeri e chiedere 5 numeri , voglio chiedere alla rete la decina entro la quale si verifica almeno l'evento ambo. con 10 numeri abbiamo ancora che per 1euro giocati, 5euro sono lìipotetico guadagno e quindi una rete in grado di fornire un decina vincente anche 1 ogni 4 sarebbe produttiva quindi un efficenza del 25%

    ora la comlpessita della rete diminuisce drasticamente visto che le decine possibili sono solo 9. si passa da 43milioni di possibili differenti output a 9...
    per semplicità le decine sono organizzate in modo semplice ossia da 1-9,10-19,..,80-90 pertanto se consideriamo una cinquina tipo 1-12-21-40-89 l'evento ambo non è presente sebbene 12 e 21 siano compresi una decina.

    dopo un po di lavoro con exel sono riuscito a a "sgrezzare" tutte le estrazioni in modo da avere la seguente situazione :

    A)1,14,74,80,89 output 1,3 queste sono le decina/e che sono sortite con l'estrazione successiva
    B)11,13,37,38,39 output 0 nella estrazione C infatti la decina 1-9 è sortita
    C)3,6,11,74,80 output x e cosi via dove X è la decina che è presente nella estrazione D e cosi via
    D) ......

    quindi ho elaborato tutte le estrazioni dal 2000 ad oggi in questo modo .
    sono ancora all'inizio che con questo approccio che spero vi possa dare delle idee per migliorarlo.

    problemi:
    i tempi di elaborazione sono davvero lunghi quindi le prove tengono impegnato il pc troppo a lungo per testare riprovare ecc almeno di rifare la script in linguaggio che non sia php
    ci sono delle estrazioni dove non si verifica alcun evento di tipo ambo in una decina, che fare? quale output dare alla rete ? esempio

    A)14-27-34-89-90 output 3
    B)1,19,39,50,60 questa cinquina non ha alcuna decina valida che output dargli ?
    per aiutare la rete, questi casi li ho trattati come fossero jolly, ossia qualsiasi valore calcolato dalla rete va bene, ma non so se sia la soluzione migliore

    stato dell' arte: al momento sono riuscito ad addestrare la rete con un numero di estrazioni ancora troppo piccolo per essere significativo circa 40, ma è un passo avanti , considerando che rete è riuscita a trovare una qualche "logicita" nella sortita delle decine.

    al prossimo aggiornamento
  • Re: Algoritmi neurali per il lotto

    Ciao Sgraffo... Prima una considerazione alla tua "conclusione", poi una domanda, infine un "abbozzo di risposta" alla tua domanda...

    CONSIDERAZIONE
    Gli eventi sono puramente causali e scorrelati, è vero. Ma la statistica ci insegna che se lancio una monetina in aria 1000 volte, 500 volte (o giù di lì) sarà testa, 500 volte (o giù di li) sarà croce. Anche in questo caso gli eventi sono scorrelati e casuali, perchè il lancio precedente non influenza il successivo. Ma l'equiprobabilità degli eventi dice che c'è una correlazione implicita, altrimenti gli eventi, per definizione, non sarebbero equiprobabili. Questa è la correlazione, dunque, nelle estrazioni, e cioè l'equiprobabilitàd egli eventi, che si manifesta sui grandi numeri. La "fregatura" sta nel fatto che:
    1. non siamo in presenza di grandi numeri (2000 estrazioni in un dominio di 622 milioni di combinazioni)
    2. il metodo di estrazione è cambiato da poche estrazioni (giugno), e per i "puristi" questo dovrebbe rappresentare un restart

    Ciò non toglie il fascino della rete neurale e nemmeno il fatto che ci sono reti che dimostrano un aumento di rendimento, seppur troppo piccolo da poter essere preso in considerazione. Miglioramento di rendimento dovuto al fatto di individuare eventi "più probabili" di altri, ovvero di individuare combinazioni tali da "ribilanciare" l'equiprobabilità nel fantastico mondo dei grandi numeri. Cosa che non avviene scientificamente, ma che "deve" avvenire per non avere sbilanciamenti.

    Non mi dilungo con considerazioni e calcoli sui ritardatari, ma potrebbe essere motivo di studio teorico.

    DOMANDA
    Come la maggior parte (se non tutti) qui, lavoro con reti binarie, in cui ogni nodo è acceso o spento. Non ho esperienza (nè cultura) circa reti a "valore", cioè reti in grado di fornire un numero come risultato. Ad esempio, in cui un nodo di output possa indicare un numero tra 1 e 90. Avevo letto tempo fa di una rete con un input e un output in grado di prevedere serie numeriche. Se qualcuno avesse info più dettagliate, mi farebbero enorme comodo, perchè ho in mente una applicazione per reti ma mi manca una simile infrastruttura

    RISPOSTA
    Nel tuo caso, se le decine sono 9, puoi prevedere 10 nodi in uscita, in cui il decimo rappresenta "nessuna decina". Inoltre, io proverei a fare una rete anche per altre figure, per poi incrociare i dati, anche se la mia esperienza mi dice che mescolando molti dati statistici e previsionali in modo caotico, si torna al randomatico puro. Sul fronte del php, credo che il linguaggio non sia affatto azzeccato per una rete neurale, e ti consiglio di andare su un C++ o similari (Visual C#, ad esempio). Inoltre, se ben lavori con l'ottimizzazione delle classi, puoi ottenere reti estremamente veloci, anche con molti nodi in ingresso, uscita e hidden, con durata dell'addestramento di pochi minuti...
  • Re: Algoritmi neurali per il lotto

    Salve,
    innanzi tutto bel post.

    Dunque, ho scritto un programma per Mac (X-Code, Objective-C) che fa statistiche e riduzioni per super-enalotto.
    Le statistiche sono del tipo ritardi, frequenze, somme, pesi per colonna.
    Le riduzioni sono invece possibili attraverso le scelte di: numeri di pari, somma, range per colonna, decine, consecutivi, inversi ecc.

    Il programma mi permette di scegliere quanti numeri voglio (ovviamente) e quindi applicare le riduzioni generando "solo" qualche migliaio di colonne.

    Inizialmente avevo creato un metodo che mi permetteva di mettere in relazione i ritardi e le frequenze e quindi di generare una specie di previsione basata su questi due parametri "storici".
    Ci andava spesso vicino ma per vicino intendo che mi veniva consigliato il 13 ed usciva il 10 o il 16.

    Così ieri sera ho deciso di integrare una rete neurale per la previsione dei numeri che... se vogliamo funziona perché mi genera come output 0.5 per ogni singolo valore (da 0 a 89, ovvero i numeri da 1 a 90).
    Ovviamente credo di aver commesso diversi errori nel creare questa sotto-specie di rete neurale e quindi chiedo consiglio a Voi esperti perché non so dove andare a parare.

    Il codice nasce da un programma scritto per Pascal che ho trovato in rete e convertito in Obj-C, più che altro C.
    In ingresso arriva un vettore (lungo 90) con 1 se quel determinato numero è uscito e 0 se no.
    In pratica prendo tutto il mio archivio (poche centinaia di estrazioni) e lo do in pasto al metodo (void)apprendimento fornendogli l'entrata e quello che è uscito all'estrazione successiva.
    Quindi mi fermo alla penultima estrazione (che gli fornisco in in ingresso) e vorrei come output qualunque dato da confrontare con l'ultima che ho già ma che la rete non conosce.
    Grazie per l'aiuto!
    Ecco il codice:
    
    #import "reteNeurale.h"
    @implementation reteNeurale
    - (id)init {
    	[super init];
    	//Calcola strato H 
    	for (k=0; k<neuroniNascosti; k++)
    	{
    		A=0.0; 
    		for (i=0; i< neuroniDiEntrata; i++)
    		{
    			wh[k][i]=0.2;  //X[i] rappresenta l'ingresso, wh il peso dello strato hidden
    			//wy[k][i]=0.2; //peso dello strato di uscita
    			H[k]=1.0;
    		} //for annidato
    	} //for	NSLog(@"Creata Rete Neurale");
    	return self;
    } //init
    
    - (void)apprendimento {
    	float Eps = 0.3;
    	float Err; 
    	float D[neuroniDiUscita]; 
    	float DeltaY[neuroniDiUscita]; 
    	float DeltaH[neuroniNascosti];
    	
    	//Calcolo errore strato Y 
    	for (j=0; j<90; j++)
    	{
    		entrata[j]=0;
    		uscita[j]=0;
    	}
    	for (j=0; j<6; j++)
    	{
    		entrata[EstrazioneDiApprendimento[j]]=1;
    		uscita[EstrazioneDiUscitaDesiderata[j]]=1;
    	}
    	for (j=0; j<90; j++)
    	{
    		D[j] = entrata[j];
    		Y[j] = uscita[j];
    		Err = D[j]-Y[j]; //D[j] ingresso, Y[j] uscita
    		DeltaY[j] = Err*Y[j]*(1-Y[j]); 
    	}
    	
    	//Calcolo errore strato H 
    	for (k=0; k<neuroniNascosti; k++)
    	{
    		Err=0.0; 
    		for (j=0; j < neuroniDiUscita; j++)
    		{
    			Err+=(DeltaY[j]*wy[j][k]); 
    			DeltaH[k] = Err*H[k]*(1-H[k]); 
    		} //for annidato
    	} //for
    	
    	//Modifica pesi strato Y 
    	for (j=0; j<neuroniDiUscita; j++)
    	{
    		for (k=0; k < neuroniNascosti; k++) {
    			wy[j ][k] = wy[j][k]+(Eps*DeltaY[j]*H[k]); 
    			wy[j][neuroniNascosti] = wy[j][neuroniNascosti]+(Eps*DeltaY[j]); 
    		}  
    	} 
    	//Modifica pesi strato H 
    	for (k=0; k < neuroniNascosti; k++) 
    	{
    		for (i=0; i<neuroniDiEntrata; i++) 
    		{
    			wh[k][i] = wh[k][i]+(Eps*DeltaH[k]*X[i]); 
    			wh[k][neuroniDiEntrata] = wh[k][neuroniDiEntrata]+(Eps*DeltaH[k]); 	
    		} 
    	} 
    	NSLog(@"Appresa una estrazione e la sua uscita successiva");
    } //apprendimento
    
    - (void)predizione {
    	
    	for (j=0; j<90; j++)
    	{
    		X[j] = 0;
    	}
    	for (j=0; j<6; j++)
    	{
    		X[EstrazioneDiEntrata[j]]=1;
    	}
    	
    	//Calcola strato H 
    	for (k=0; k<neuroniNascosti; k++)
    	{
    		A=0.0; 
    		for (i=0; i< neuroniDiEntrata; i++)
    		{
    			A+= wh[k][i]*X[i];  //X[i] rappresenta l'ingresso
    			A+= wh[k][neuroniDiEntrata]; 
    			H[k]=1.0/(1.0+exp(-A)); 
    		} //for annidato
    	} //for
    
    	//Calcola strato Y 
    	for (j=0; j < neuroniDiUscita; j++)
    	{
    	A=0.0; 
    		for (k=0; k<neuroniNascosti; k++)
    		{
    			A+= wy[j][k]*H[k]; 
    			A+= wy[j][neuroniNascosti]; 
    			Y[j]=1.0/(1.0+exp(-A)); 	//Questo è il vettore di uscita
    		} //for annidato
    	} //for
    	
    	NSLog(@"Estrazione di entrata: %d - %d - %d - %d - %d -%d",EstrazioneDiEntrata[0],EstrazioneDiEntrata[1],EstrazioneDiEntrata[2],EstrazioneDiEntrata[3],EstrazioneDiEntrata[4],EstrazioneDiEntrata[5]);
    	for (j=0; j< neuroniDiUscita; j++)
    	{
    		NSLog(@"Valore di Uscita della Rete Neurale per numero %d = %f",j, Y[j]);
    	}
    } //predizione
    	@end
    
    
  • Re: Algoritmi neurali per il lotto

    Ho dato una rapida occhiata al codice, ma non credo basti per individuare l'errore. Se ti escono tutti 0.5, allora il problema potrebbe essere banalemente un indice o un nome variabile errato che ti crea una convergenza (o meglio ti setta tutte le variabili a 0.5 e poi non cambia più nulla)... Ti consiglio un pò di sano e classico debug.

    Una sola osservazione: in una previsione basata su frequenza e ritardo, pronosticare il 13 e poi esce un numero tipo 10 o 16 non è "andare vicino". "Andare vicino" deve essere sempre relazionato alla misura della prestazione, ovvero in questo caso sulla funzione di ritardo e frequenza e non sul valore del numero (un pò come per le reti neurali).
  • Re: Algoritmi neurali per il lotto

    Salve a tutti sono nuovo di questo forum e vorrei dare un piccolo contributo alla discussione.

    Concordo con Psyco che la statistica piu' utile si quella dei grandi numeri.... e trovo l'approccio delle reti neurali intriganti.

    Secondo voi è possibile applicare tale metodo di analisi alle seguenti domande ?

    Premessa teorica:
    Le sestine sono ovviamente casuali ed indipendenti, tuttavia i numeri che compongono la sestina non hanno tutti questa proprietà
    dato che sono casuali ma dipendenti dell'estrazione del primo numero che compone la sestina. (Se esce il 3 come primo numero estratto della sestina gli altri 5 saranno una funzione di questo
    dato che sono condizionati dalla precedente estrazione).

    Cosa succederebbe se invece di analizzare i singoli estratti di ogni sestina, fosse la loro frequenza ? Ed in particolare la frequenza del primo estratto di ogni sestina ?
    Ovvero calcolare qual'è il margine di errore con cui possiamo aspettarci che entro un n (stimato) di estrazioni esca proprio quel dato valore come primo estratto della sestina?

    In questo modo potremmo trattare ogni sestina come appartenente alla classe dei 90 numeri (primi estratti)
    Si potrebbe replicare tale processo di analisi per il secondo estratto (condizionato al verificarsi del primo ) , poi per il terzo etc... ?

    In questo modo sarebbe possibile stimare i famosi pesi necessari per le reti neurali ?

    Spero di non aver scritto troppe cavolate

    ciao bitforbit
  • Re: Algoritmi neurali per il lotto

    Personalmente non ci ho capito molto... Non credo si possa studiare una dipendenza dal primo numero, altrimenti sarebbe come avere un generatore random con 90 seed e quindi 90 combinazioni plausibili con solo un "margine" di errore.

    Invece, da canto mio, ho fatto una simulazione di estrazioni per studiare il fenomeno dei ritardi, e la curva dei ritardi parla chiaro. Gli eventi non sono indipendenti come si vorrebbe pensare, tant'è che la deviazione standard di frequenze e ritardi dei 90 numeri diminuisce all'aumentare del numero di estrazioni.

    Quindi, resta una correlazione tra le varie estrazioni che è proprio la legge dei grandi numeri applicata all'equiprobabilità dei 90 numeri.
  • Re: Algoritmi neurali per il lotto

    Vediamo se riesco a chiarire alcuni punti:

    Il fatto che gli eventi siano indipendenti probabilisticamente parlando è un dato di fatto perchè i numeri vengono messi dentro dopo ogni estrazione, quindi la successiva estrazione non dipende
    dalle precedenti.

    Cosa diversa invece parlare della statistica della distribuzione di probabilità delle medie per ogni singolo estratto, in tal caso questa assume una distribuzione normale ed al crescere del
    numero delle estrazioni i singoli numeri estratti tendono ad uscire con una frequenza che tende al valore medio.

    Questo per il teorema dei grandi numeri. (ecco la correlazione) ma questo non significa che gli eventi sono dipendenti. Soltanto che la loro frequenza converge ad un valore finito

    Tutto ciò significa che è matematicamente impossibile stimare l'uscita della sestina nella prossima estrazione (evento indipendenti ) anche attraverso una rete neurale !!!

    Però è possibile stimare con una margine di errore (leggi numero di estrazioni) la frequenza di un dato valore .
    Ipotesi: potremmo dire che entro le prossime 15 estrazioni ( Valore da stimare !!!) il primo estratto della sestina sarà il 90.

    Conoscendo il parametro iniziale della sestina, gli altri 5 numeri avranno una probabilità condizionata
    Ovvero saranno parte di un sottoinsieme di tutte le sestine possibili... solo di quelle inerenti il 90 e seguiranno una particolare distribuzione di probabilità
    quella appunto del 90 . Quindi applicando la rete neurale che ha stimato la frequenza media del 90 a quel sottoinsieme di estrazioni che avevano il 90 come primo numero
    dovremmo poter ottenere una stima del secondo valore , riducendo nuovamente il sottoinsieme avremo la stima del terzo etc... il problema di fondo

    è che per il primo valore il numero di osservazioni è numeroso se consideriamo i seguenti sottoinsiemi ... aihmè il numero di osservazioni disponibili si riduce drasticamente

    Infatti se andiamo a vedere il lotto considerando tutte le ruote come nuove estrazioni... abbiamo che le osservazioni per il II estratto sono 115 per ogni ambo
    ma si riducono a 4 osservazioni per il III estratto

    ed ecco la difficoltà per ottenere una stima efficace della sestina (ecco perchè hanno cambiato il modo di estrazione del superenalotto) ed ecco perchè la frequenza con cui viene azzeccato si è ridotta drasticamente.....

    Ciao spero di essere stato piu' chiaro
  • Re: Algoritmi neurali per il lotto

    Dunque... La discussione si fa interessante.

    Condivido la prima parte, sebbene io sono "booleano" sulla correlazione: o c'è, o non c'è. Io ritengo ci sia, come c'è ad esempio nel lancio di una monetina. E' vero che ad ogni estrazione la probabilità di testa o croce è del 50% nell'ipotesi di eventi equiprobabili, ma è anche vero che se su 1000 lanci esce 900 volte testa, allora c'è la seria possibilità che la moneta sia "difettosa", ovvero non rispetti l'equiprobabilità degli eventi e quindi le ipotesi iniziali di 50% testa e 50% croce siano errate. Questo vuol dire che se io ho una moneta perfettamente funzionante, che rispetti cioè l'equiprobabilità delle sortite di testa o croce, se dopo 10 lanci mi esce sempre testa, l'ultimo lancio non ha una probabilità del 50% di vedere testa, ma una probabilità minore. Questo non vuol dire che l'evento diventa impari, ma semplicemente che l'equiprobabilità deve sottostare alla "legge dei grandi numeri" che è "superiore", al fine di non smentire le premesse.

    Tradotto in parole semplici, ogni estrazione è una istanza nuova dell'evento di estrazione stessa, ma "ricomincia da tre", parafrasando Troisi: reca cioè implicitamente un legame con leggi statistiche che provocano un leggero ma significativo "override" delle leggi probabilistiche, con una naturale forzatura di istanze che tendano a ristabilire l'equilibrio.

    La rete neurale, pertanto, non cerca la funzione di correlazione tra una estrazione e la precedente, ma cerca di eleggere la combinazione che ristabilisce l'equilibrio, o tende ad esso, e pertanto fornisce una "funzione di equilibrio statistico". E infatti, rispetto al random puro, la mia prima versione di rete neurale aveva (su grandi numeri, cioè su simulazioni di circa 100.000 eventi), una risposta migliore del 30% circa. Cioè, se con numeri random si realizza circa 0.4 punti ad estrazione, con i numeri della rete se ne indovinavano 0.52, cioè con 30 numeri random puoi fare 2, con 30 numeri "neurali" 2.6. Non è un grande risultato in termini di gioco, ma è un grande risultato in termini di algoritmi previsionali e anche come "prova" della teoria.

    Sulla tua teoria, se ogni estrazione è independente, anche ogni numero dopo il primo lo è, nel senso che se esce 90, qualunque numero oltre il 90 può uscire per secondo. E se ci fosse un numero più probabile, sarebbe violata l'equiprobabilità (e le estrazioni convergerebbero a 90 sestine più probabili delle altre). Cioè non si può pensare di avere, secondo me, 90 classi di numeri all'interno delle quali ci sia una sestina "migliore". E infatti il motivo del cambio di metodo, anzi i motivi, a mio avviso sono solo due:
    1. possibilità teorica di avere 11 cinquine identiche al lotto e quindi che il gioco non fornisca un vincitore (motivo che se ben ricordo non venne contemplato nel regolamento creando non pochi problemi in fase di approvazione del gioco)
    2. evidente volontà della Sisal di staccarsi da un gioco di una società concorrente, Lottomatica, sia come orari che come frequenza di estrazioni, al fine di avere il pieno controllo del gioco.

    Sicuramente la tua osservazione diventa però interessante se unita con gli altri metodi previsionali, come il mio stesso, agendo quindi sulla presentazione di nuovi parametri.
  • Re: Algoritmi neurali per il lotto

    La discussione si fa molto interessante.....

    Prima di proseguire vorrei precisare la mia impostazione teorica dal quale potrai meglio comprendere il mio approccio di analisi :

    Il teororema del limite centrale considera il limite al tendere dell’infinito del numero di estrazioni. Nell’infinito possiamo considerare ogni sorta di combinazione e sequenze di combinazioni possibili. Mi spiego meglio; nelle infinite sequenze delle 622.614.630 sestine possibili vi sono comprese anche quelle che presentano un ordine di uscita crescente/decrescente (1,2,3,4,5,6 – 1,2,3,4,5,7 …. Etc) . Tuttavia per nostro limite fisico stiamo assistendo allo sviluppo di una (ed una soltanto) delle infinite sequenze possibili.
    Dato che possiamo definire delle sequenze, con quella che definisco “regola interna /implicita” (ordine crescente – decrescente etc), dovremmo poter desumere con opportuni metodi di analisi anche una eventuale “regola interna/implicita” alla sequenza a cui stiamo assistendo.

    Il tuo metodo di analisi tramite le reti neurali è a mio avviso la strada giusta perché “adattiva”.

    Tutti gli altri metodi statistici che ho applicato si basano su definire a priori qual’e il modello o
    “regola interna/implicita” e poi tramite il metodo di analisi verificare la correttezza del modello. E questo è a mio avviso piu’ difficile ed esula dalle mie competenze matematiche .

    Al contrario trovo intrigante l’idea di poter integrare diversi metodi di analisi, per giungere ad uno strumento efficace, che a mio avviso permetta entro un certo margine di errore poter
    trovare lo sviluppo possibile di questa sequenza….

    A mio avviso e’ un po’ come cercare lo sviluppo della sequenza del DNA (soltanto che loro non si occupano di sestine e di combinazioni, ma di permutazioni ad 8 cifre) .

    Cosa ne dici di passare dalla teoria alla pratica ?

    Ps bella la parafrasi su Troisi
  • Re: Algoritmi neurali per il lotto

    Hai colpito nel segno!! Infatti, ultimamente stavo approcciando gli algoritmi genetici ma anche qui avevo notato delle carenze e volevo sopperire con le reti neurali. Anche se il discorso si complica e parecchio... Certo avere un algoritmo neurale/genetico sarebbe secondo me una soluzione davvero di avanguardia...
  • Re: Algoritmi neurali per il lotto

    Complimenti

    se prima pensavo di studiare un argomento complesso.... adesso mi trovo l'oggetto della discussione complicata ulteriormente.

    Per ora il mio contributo può essere limitato alla parte di variabili casuali e di stima di parametri delle distribuzioni di probabilità etc.... per il resto
    per proseguire la discussione in maniera pratica vorrei prima leggere qualcosa in merito.
    A tal fine vado alla ricerca di link che mi aiutino a capire qualcosa sia di programmazione genetica che di reti neurali ..... hai/avete qualche link
    intrigante in merito ?


    Tuttavia a mio avviso occorre definire correttamente il problema e contemporaneamente cercare un modello di analisi ottimale.
    Prendendo spunto dalla genetica ......

    "Ad ogni generazione, un nuovo insieme di soluzioni è creato dal processo di selezione che, basandosi sul livello di adeguatezza (Fitness), seleziona i migliori membri della popolazione e li fa evolvere utilizzando una serie di operatori genetici mutuati dalla genetica naturale. Questo processo porta all’insieme di soluzioni che meglio rispondono al problema posto in principio"
  • Re: Algoritmi neurali per il lotto

    Ecco, vedi che sei arrivato al punto in cui sto approfondendo i miei studi... Fitness neurale... Solo che: vai a trovare una formulazione del problema di fitness!!!

    Sento che ancora manca qualcosa a questo approccio, ed è per questo che non vado avanti... Se non sono convinto, preferisco fermarmi a riflettere...

    Algoritmo genetico si, e l'algoritmo genetico ha molte "variabili" su cui intervenire, come i "difetti", le evoluzioni, i geni dominanti e similari. Ma come intervenire su queste variabili? E come calcolare il fitness in modo "elastico"?

    Per quanto concerne i disturbi, c'è un mio vecchio algoritmo che consente di generare random secondo una qualunque distribuzione, che potrebbe essere utile per modellare disturbi differenti e lasciare cmq una componente casuale... E se il fitness fosse lasciato ad una "mente", ovvero alla rete neurale, si avrebbe una sorta di cervellone che simula la legge dei grandi numeri, con il caos che si intromette nei processi sotto forma di rumore, mentre la specie si "evolve" selezionando i caratteri migliori, ovvero le combinazioni maggiormente probabili.

    E dopo una grande simulazione si potrà capire se l'approccio è funzionale e valido o se, al contrario, l'eccesso di vincoli (le regole) e di processi (il caos) fornirà una risposta completamente random...

    Ben inteso: esiste sempre l'approccio duale, ovvero l'algoritmo "pessimo": se avessimo un algoritmo con un rendimento peggiore del random, paradossalmente avremmo un "buon" algoritmo predittivo, perchè consentirebbe, per negazione, la costruzione di un insieme di risposta. E anche questo potrebbe quindi entrare in un processo di fitness.
  • Re: Algoritmi neurali per il lotto

    In rete ho trovato questa sintesi che mi sembra un buon punto di partenza per far procedere la discussione...


    " Ogni soluzione, possiede una Fitness, ovvero una misura di quanto la soluzione è in grado di rispondere al problema posto.

    Schematizzando, gli elementi costitutivi di un algoritmo genetico sono:

    Popolazione?Costituita da un numero n di individui. Ogni individuo rappresenta una possibile soluzione al problema. (nel nostro caso 90 individui)

    Funzione Fitness?La funzione di Fitness è una funzione in grado di valutare quanto una soluzione è adatta a risolvere il problema dato. Ad ogni soluzione corrisponde quindi un valore di fitness.

    Principio di selezione?Il principio di selezione ha il compito di selezionare gli individui della popolazione (le soluzioni) che meglio rispondono al problema da risolvere. La selezione si basa sulla fitness degli individui; le soluzioni con fitness maggiore (rispetto alla media della popolazione) avranno maggiori possibilità di partecipare alla riproduzione e quindi di trasmettere alle future generazioni i propri geni.

    Operatori genetici?Prendendo spunto dalla biologia, gli operatori genetici combinano i geni delle diverse soluzioni al fine di esplorare nuove soluzioni. Una volta che un gruppo di soluzioni viene individuato come idoneo alla riproduzione, l’operatore genetico di cross over, emulando la riproduzione sessuata degli esseri viventi, combina i geni dei genitori e formula una nuova generazione di soluzioni. Un altro operatore genetico largamente utilizzato è la Mutazione puntuale. La mutazione puntuale agisce direttamente sui figli, andando a modificare un gene a caso. "

    http://www.cash-cow.it/appunti-universita/algoritmi-genetici

    Definire un modello di fitness per tutte le combinazioni possibili di ogni sestina, la vedo ardua....

    Semplificare il problema, rendendolo scalabile (replicabile)... ????

    cerco di spiegarmi partendo dalla prima riflessione che avevo inserito nel forum....
    Dato per scontato quello di cui abbiamo discusso sulla sequenza si queste sestine etc.. invece di formulare il fitness per le sestine, andiamo a vedere come possono interagire le leggi probabilistiche all'interno di ogni sestina !!!

    Il primo estratto di ogni sestina è un risultato dei possibili 90 numeri ancora da estrarre. Da cosa dipende il risultato finale di questa estrazione ? Ovvero qual è il miglior risultato possibile considerando che questa estrazione non è una delle infinite estrazioni che si possono eseguire, ma fa parte di una sequenza ben precisa che si sta sviluppando nel tempo…. Possiamo ritenere utili le informazioni
    Contenute nella sequenza ? Quali informazioni ?

    Posto di aver trovato il fitness per il risultato migliore del primo estratto della sestina, andiamo a vederne il secondo estratto. Questo dovrebbe sottostare al medesimo ragionamento del primo estratto, con un vincolo aggiunto:
    il secondo estratto non è indipendente in senso probabilistico, perché la sua probabilità è condizionata al verificarsi del primo evento (teorema di Bayes).
    Possiamo vedere quindi il secondo estratto come il risultato di una funzione del primo estratto ?
    Procedendo nel ragionamento possiamo esprimere la sestina non come si penserebbe per 6 eventi indipendenti fra loro
    F (6) = f 1, f 2, f 3, f 4, f 5 , f 6 eventi indipendenti

    Ma secondo la seguente funzione:
    F(6) = f6( ( f4 ( ( f2 ( ) ) )))) sestina dipendenti da (primo estratto)

    Quindi se quanto esposto sopra è vero, definire il modello fitness per il primo estratto considerando tutte le informazioni utili della sequenza di sestine (il problema è quali informazioni) , questo modello di fitness varrà in misura ridotta per gli opportuni vincoli anche per gli altri 5 estratti ?


    Ti torna il ragionamento ?
  • Re: Algoritmi neurali per il lotto

    Ciò che non mi torna p l'applicazione del teorema di Bayes, che sinceramente non trovo applicabile in modo significativo in questo problema.

    Personalmente andrei verso altre valutazioni, anche perchè se ci limitiamo a pensare ogni estrazione a se stante, allora ci ridurrremmo a cercare 90 "privilegiati". E' anche vero che si potrebbe applicare la tua considerazione di sviluppare tutto attorno al primo numero, ma occorrerebbe sempre valutare il tutto in funzione delle precedenti estrazioni.

    Purtroppo, le estrazioni sono un insieme ordinato di numeri (almeno in tal modo sono presentate), quindi in realtà noi non avremo mai il "primo" numero (almeno con il nuovo metodo) ma solo il "minore" dei numeri.

    Detto questo, pur volendo procedere in questa direzione, resta il dilemma maggiore: come definiamo il fitness?
Devi accedere o registrarti per scrivere nel forum
90 risposte