Teoria della probabilità, Intelligenza Artificiale e Python.
Lo studio dell’intelligenza artificiale non può prescindere dalla conoscenza dallo studio della probabilità. Se si tiene in considerazione, infatti che tutti i nostri pensieri, ragionamenti e decisioni si basano su condizioni di incertezza e che le nostre conclusioni spesso sono frutto di un’analisi della migliore probabilità, si comprende quanto sia importante comprendere i meccanismi che si nascondono dietro questa affascinante area della matematica. In questa serie di articoli non mi soffermerò a discutere se in ambito IA un approccio statistico/ probabilistico sia migliore rispetto ad altri ma ritengo utile riprendere la teoria della probabilità quale utile strumento matematico per modellare eventi incerti. Detto ciò passiamo subito alle definizioni formali ed alla teoria della probabilità.
Che cosa si intende per probabilità?
In prima istanza dobbiamo definire il contesto in cui si può parlare di probabilità, ovvero il metodo con cui introdurre il calcolo probabilistico. In tal senso ha senso parlare di probabilità ogni qualvolta si può condurre una “procedura o esperimento” che produrrà un risultato. Ad esempio il classico lancio dei dadi spiega bene il concetto di esecuzione di una procedura e di risultato e dunque di evento probabilistico. L’evento è il risultato di una procedura, ad esempio ottenere il 3 al lancio di un dado. Si definisce evento semplice quello prodotto da una procedura non scomponibile in ulteriori procedure. Ad esempio se avessi due dadi potrei scomporre il lancio dei due dadi in due procedure in tal caso l’evento risultante dal lancio di due dadi potrà essere scomposto in due eventi semplici. A questo punto possiamo introdurre il concetto di spazio campione come l’insieme di tutti i possibili eventi semplici di una procedura.
Che cosa è dunque la probabilità?
La probabilità che un evento si verifichi, rappresenta la frequenza con cui l’evento si verifica, ovvero posto un evento A la probabilità che esso si verifichi è uguale:
Riprendo l’esempio del dado potremmo dire che la probabilità, ad esempio, che si verifichi l’evento di “ottenere 2”, in formule P(2) è uguale ad 1/6 perché il numero di modi per ottenere il risultato 2 lanciando il dado è sempre 1 deve mentre il numero dei possibili risultati dello spazio campione è 6.
Se P(A)=1 significa che A è un evento certo. Ad esempio lanciando una moneta la probabilità di ottenere Testa o Croce è 1 perché non sono previste altre possibilità. A meno che la moneta non decida di cadere in piedi ma questo è un caso che non prenderemo in considerazione come evento possibile.
Cercare di studiare la probabilità facendo lo studio dell’evento per calcolare il numero dei possibili modi con cui l’evento potrebbe verificarsi non è sempre un compito facile, per cui questo motivo si preferisce usare per il calcolo della probabilità un approccio a frequenza e più sperimentale.
Cerchiamo di capire meglio questo concetto partendo dalla formalizzazione della probabilità di un evento A -> P(A) .
Con l’approccio sperimentale si contano il numero di volte in cui l’evento A si è verificato e si divide per il numero di volte che si è tentato in generale la procedura o esperimento. nel caso del lancio di un dado supponiamo di lanciare il dado 60 volte e di aver ottenuto 8 volte il risultato 2. in tal caso la
La divisione ci restituisce un’approssimazione della probabilità reale, ovvero della frequenza relativa con cui si verifica l’evento, definita come il rapporto tra la frequenza con cui si verifica l’evento ed il numero totale delle osservazioni.
La legge dei grandi numeri
L’approccio a frequenza ha senso solo se si considera un numero di esperimenti sufficientemente elevato, per ottenere un’approssimazione ottimale della probabilità dell’evento in osservazione. Riprendendo ancora una volta l’esempio del dado si intuisce che se ripetessimo all’infinito l’esperimento del lancio del dado alla fine la probabilità che si verifichi ad esempio l’evento 2 sarà perfettamente 1/6 ed uguale alla probabilità degli altri 5 eventi uscita del (1,3,4,5,6,).
La legge dei grandi numeri stabilisce, pertanto, che la probabilità della frequenza relativa si avvicinerà alla probabilità effettiva all’aumentare del numero degli esperimenti.
Esperimento del dado in python
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
%matplotlib inline from __future__ import division
numero_di_esperimenti=100000 numero_estrazioni_1=0 numero_estrazioni_2=0 numero_estrazioni_3=0 numero_estrazioni_4=0 numero_estrazioni_5=0 numero_estrazioni_6=0
for n in range(1,numero_di_esperimenti): numero_estratto=np.random.randint(low=1,high=7,size=1) if (numero_estratto == 1): numero_estrazioni_1 = numero_estrazioni_1 + 1 elif (numero_estratto == 2): numero_estrazioni_2 = numero_estrazioni_2 + 1 elif (numero_estratto == 3): numero_estrazioni_3 = numero_estrazioni_3 + 1 elif (numero_estratto == 4): numero_estrazioni_4 = numero_estrazioni_4 + 1 elif (numero_estratto == 5): numero_estrazioni_5 = numero_estrazioni_5 + 1 elif (numero_estratto == 6): numero_estrazioni_6 = numero_estrazioni_6 + 1 print("numero estrazioni del numero 1: " + str(numero_estrazioni_1)) print("numero estrazioni del numero 2: " + str(numero_estrazioni_2)) print("numero estrazioni del numero 3: " + str(numero_estrazioni_3)) print("numero estrazioni del numero 4: " + str(numero_estrazioni_4)) print("numero estrazioni del numero 5: " + str(numero_estrazioni_5)) print("numero estrazioni del numero 6: " + str(numero_estrazioni_6))
numero estrazioni del numero 1: 16598 numero estrazioni del numero 2: 16766 numero estrazioni del numero 3: 16630 numero estrazioni del numero 4: 16508 numero estrazioni del numero 5: 16819 numero estrazioni del numero 6: 16678
P1=numero_estrazioni_1/numero_di_esperimenti P2=numero_estrazioni_2/numero_di_esperimenti P3=numero_estrazioni_3/numero_di_esperimenti P4=numero_estrazioni_4/numero_di_esperimenti P5=numero_estrazioni_5/numero_di_esperimenti P6=numero_estrazioni_6/numero_di_esperimenti
La probabilità che si verifichi ad esempio l’estrazione del numero 1 sappiano essere 1/6 : 0.166666666667 confrontando il dato con il valore ottenuto sperimentalmente si ha già un buona approssimazione
print("P(1) = " + str(P1)) print("P(2) = " + str(P2)) print("P(3) = " + str(P3)) print("P(4) = " + str(P4)) print("P(5) = " + str(P5)) print("P(6) = " + str(P6))
Come si può vedere con 100000 il valore della probabilità relativa tende ad approssimare il valore della probabilità reale.
P(1) = 0.16716 P(2) = 0.16604 P(3) = 0.16727 P(4) = 0.1674 P(5) = 0.16473 P(6) = 0.16739
Rifacendo 10000000 esperimenti si può notare un ulteriore miglioramento del dato atteso ed una conferma della legge dei grandi numeri :
P(1) = 0.1664698 P(2) = 0.1667475 P(3) = 0.1665987 P(4) = 0.1669888 P(5) = 0.1666978 P(6) = 0.1664973
Se invece facessimo solo 10 esperimenti il risultato sarebbe assolutamente non attendibile:
P(1) = 0.0 P(2) = 0.0 P(3) = 0.2 P(4) = 0.3 P(5) = 0.2 P(6) = 0.2
in questa ultima ipotesi sperimentale risulterebbe ad esempio che il numero 1 ed il 2 non avrebbero possibilità di essere estratti mentre il 4 risulterebbe il numero fortunato e sappiamo benissimo che questo non è possibile a meno di avere una dado truccato.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments