Newsgroup: it.comp.ia
Titolo: Analisi qualitativa

Salve,
vi propongo il seguente questito:
attualmente sto lavorando ad un progetto circa il riconoscimento di
particolari pattern all'interno di sequenze di dati piuttosto lunghe, ed ho
l'esigenza di poterne definire il livello di precisione, per modulare i
tempi di risposta. L'idea che ho e' di trasformare i dati numerici in valori
qualitativi (es. molto piccolo, piccolo, medio, grande,...); la cardinalita'
dell'insieme dovrebbe permettere di aggiustare di volta in volta la
profondita' dell'analisi, producendo risultati via via migliori, al costo di
tempi di elaborazione piu' lunghi. La mappa valore numerico -> valore
qualitativo per ora e' ottenuto partizionando banalmente l'intervallo
numerico in segmenti di lunghezza uguale, ed associando ad ogni numero il
rappresentante qualitativo del segmento di appartenenza. Ora pero' mi sorge
un dubbio: dovendo calcolare anche alcune statistiche (per iniziare anche
solo la media), e' possibile (e se si, come?) definire le operazioni
nell'insieme dei valori qualitativi in modo da ottenere risultati sensati,
ovvero allineati con cio' che succede nell'insieme numerico (che ricordo
essere limitato)? Mi sono cimentato con l'operatore somma, nel tentativo di
definire un isomorfismo tra i due gruppi, dopo aver modificato l'operatore
somma dell'insieme numerico: n1+n2 = min(n1+n2, MAX). Non ce l'ho fatta...
Qualche suggerimento?
Grazie per l'attenzione.
Ciao,
Gianfranco

essere limitato)? 
Questo ricorda molto da vicino quello che succede in logica fuzzy, in cui la 
mappa tra valori numerico e qualificatore linguistico e' data in genere in 
termini di funzioni triangolari o comunque derivabili a pezzi, e si possono 
definire degli *operatori* lingustici (ad es, 'very', 'some less', etc).
Il passaggio a statistiche c'e' ed e' parte della teoria associata alla LF. 
Io usai a suo tempo [B. Kosko, Fuzzy Logic, Addison Wesley] - ma probabilmente 
esiste anche molto materiale online.
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun/

 solo la media), e' possibile (e se si, come?) definire le operazioni
Premetto che suppongo che gli intervalli siano sempre uguali e che la
mappatura non cambi per ogni vettore.
Mi spiego: se ho una sequenza con valori tra 0 e 100, potrei mapparli:
0-33 : piccoli
34-66: medi
67-100: grandi
Ora io suppongo che alla prossima sequenza userò sempre questa mappatura.
Ovvero: la mappatura dipende dalla natura del problema e non dalla
particolare sequenza di dati.
A questo punto, poichè gli intervalli della mappatura sono uguali, puoi
semplicemente contare gli intervalli classificati come "piccoli", "medi" e
"grandi", e fare una media usando il loro valore di mezzo. Ovvero:
supponendo di avere:
2 piccoli
3 medi
4 grandi
ottengo che:
(2 piccoli + 3 medi + 4 grandi)/ (2+3+4) =
(2*16 + 3*40 + 4*83)/9 =
54
E questo valore puoi prenderlo come media *molto* approssimata del tuo
insieme.
Se ne hai voglia, puoi calcolarti il margine d'errore che hai: per ogni
intervallo hai un errore massimo di 16 (17 in qualche caso), che va
moltiplicato per il numero di insiemi che maneggi. In questo caso, usi 9
insiemi, il che dà una approssimazione di 9*16=144!!!
D'altro canto però puoi contare sul fatto che, in media, l'errore su ogni
insieme non è quello massimo, ma più o meno la metà:
9*8=72.
Inoltre, a meno di essere molto sfortunato, alcuni errori saranno in
eccesso, ma altri in difetto, riducendo quindi l'errore medio, in mancanza
di altre informazioni, della metà:
4,5*8=36.
(che ricade nel caso "medi")
In generale, supponendo gli intervalli della mappatura che usi uguali, puoi
calcolare l'errore medio con la formula:
D/C * I/4
Dove:
D: Dominio del problema, nell'esempio i numeri da 0 a 100 (nota: devi
contare il numero di elementi)
C: Numero di classi che usi
I: numero di insiemi che usi (dipende dalla lunghezza della sequenza)
Dalla formula puoi notare che all'aumentare del numero di classi qualitative
che usi, cresce la precisione della media, mentre sale all'aumentare del
numero di insiemi.
Mi è poi parso di capire che tu vorresti ridurre la sequenza "accorpando"
delle sotto-sequenze. Ciò non cambia molto la questione, ma dipende molto
dal metodo che usi per farlo: se usi la somma o il valore medio (esatto,
stavolta) dei numeri che compongono la sotto-sequenza, non introduci nuovi
errori.
A questo punto, se ti serve solo la media della sequenza, sei a posto. Se
invece, come credo, devi anche confrontare i valori medi di varie sequenze
usando la classe ("medi", nell'esempio) della media, devi usare per forza
sempre la stessa mappatura.
Se invece puoi, almeno nell'elaborazione delle medie, usare i valori esatti,
puoi anche usare mappature diverse per ogni sequenza, magari però
aggiungendo l'informazione relativa all'errore.
Tutto questa discussione, però, segue da un'altra premessa: che il lavoro
che devi fare su questi valori "qualitativi" sia computazionalmente molto
più complesso dei calcoli che invece devi fare per prepararli. Intendo dire
che il calcolo del valore medio della sotto-sequenza, degli intervalli della
mappatura, e il calcolo della media sulle informazioni qualitative sia molto
meno oneroso delle operazioni che invece devi fare successivamente.
Inoltre penso anche che sia difficile fare la media su tutta la sequenza
nella sua interezza, cosa che mi è parsa sottintesa nel tuo problema, anche
se non ne capisco la ragione. Potrebbe essere una campionatura di una
funzione continua e non analitica? Una rilevazione continua da qualche
macchinario?
Spero di essere stato d'aiuto
--
Alessandro Monti

Spero di essere stato d'aiuto
Indubbiamente, grazie!
Ciao,
Gianfranco

 sulla distribuzione dei valori... ci penso un po' su!
Io penserei ai primi 2 mometi: media e varianza, ma forse un'occhiatina al
grafico dice molto di più di mille calcoli.
Se è possibile, una tantum, effettuare un conteggio completo o almeno usare
un gran numero di classi qualitative, forse è la soluzione migliore: avuta
un'idea della distribuzione in gioco (propenderei per una normale, mancando
altre info), può darsi che il problema diventi poi banale, magari
addirittura risolvibile con un campionamento.
Quante probabilità ci sono, prelevando K campioni ogni N valori, provenienti
dalla distribuzione F(x), che diano una distribuzione diversa? (Un po'
modificato, ma è quasi uno degli esercizi di chi studia statistica).
Mi pare proprio di capire che devi proprio effettuare delle rilevazioni di
qualcosa...
--
Alessandro Monti