Anteprima
Vedrai una selezione di 3 pagine su 6
Matlab - Data model Pag. 1 Matlab - Data model Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
Matlab - Data model Pag. 6
1 su 6
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

In questo caso dobbiamo caricare i dati eser4, che sono nel file.mat, e vediamo il caso con data2. Questi dataset

si differenziano tra di loro perché hanno una varianza dell’errore crescente. Innanzittutto specifico che il

numero di training data è 300, mentre quello di validazione sarà 500 – 300, quindi 200 dati di validazione.

Successivamente vado a definire l’ordine massimo. Andrò a ciclare da 1 a 30 per trovare quelle è l’n che è

l’ordine ottimo del mio sistema. L’ARX e l’ARMAX hanno 3 parametri che devo andare a definire, na, nb ed

nk. Poniamo nk = 1che è l’ordine del ritardo (delay).

Ma na ed nb come faccio a sceglierli? Come capisco qual è il miglior na ed nb?

È quello che facciamo proprio nel ciclo for seguente, sto considerando na ed nb che variano da 1 ad ordine

massimo, quindi 30. A questo punto vado a creare il mio modello, a simulare e mi definisco l’errore di

simulazione e l’errore di predizione. I due indici JPT e JPV sono INDICI DI ADERENZA che si basano

sull’errore di predizione. 86

Cosa succede con questi indici?

Nel piano io ho una corrispondenza tra n (numero dell’ordine) e J (indici), JT si basa sull’errore di predizione

calcolato sui dati di training, sarà una funzione monotona decrescente perché nei dati di training ho

un’incertezza, questa incertezza al crescere del numero dei dati verrà sempre più assimilata

dall’identificazione, perché crescendo il numero dei dati sto aumentando i gradi di libertà con cui il mio

modello identifica il sistema, la mia JT tenderà a 0.

Cosa succede all’indice che si riferisce all’errore di predizione calcolato sui dati di validazione?

In questo caso la mia funzione JV inizierà a decrescere ma poi, toccato un minimo, inizierà a crescere, questo

perché i miei dati di validazione non contengono l’incertezza che invece è contenuta nei dati di training. Mentre

i dati di training contengono questa incertezza e la danno nell’identificazione, i dati di validazione non la

contengono.

In questa esercitazione andiamo a trovare un intorno dove abbiamo il minimo di JV a cui corrisponderà un n*,

che è appunto l’ORDINE OTTIMO del mio modello. Se io faccio un’identificazione con un n > n* mi troverò

in una situazione di OVERTRAINING, sto abituando nell’identificazione più il mio modello ai dati di training

che ai dati di validazione, non ci sarà un buon fit. È importantissimo scegliere l’ordine ottimo del mio sistema

proprio perché in questa maniera capisco dove il fit è maggiore. In generale non abbiamo un n* preciso, avremo

un intorno di n*, un piccolo intervallo di n in cui sarà contenuto n* che ci porterà ad avere delle prestazioni

migliori.

Ritornando allo script, dopo aver calcolato gli indici JPT (k) e JPV (k), che si basano sull’errore di predizione,

e si calcolano come la covarianza dell’errore di predizione, vado a vedere gli indici di aderenza basati

sull’errore di simulazione. L’errore di simulazione differisce dall’errore di predizione. Quando abbiamo il

nostro sistema S che avrà in ingresso u(t -1) e ci calcola l’uscita y. Quando utilizzo il predittore, il mio predittore

87

prende in ingresso sia u(t -1), ma prende in ingresso anche l’uscita del sistema ma ritardata. Quindi l’uscita dal

predittore poi sarà y cappello che sarà data dagli ingressi u(t -1) e dall’uscita del mio sistema ma ritardata.

Vado a sottrarre queste due uscite e così ottengo l’errore di predizione che non è altro che la differenza tra y e

y cappello.

Vediamo invece come si calcoal l’errore di simulazione, abbiamo sempre il nostro sistema, in questo caso

avremo in ingresso u(t -1) e avrà uscita y. Invece il mio modello avrà come ingresso sia u(t -1) e produrrà

un’uscita che chiameremo y tilde. Il secondo ingresso del modello sarà la stessa uscita del modello ma ritardata

di un passo. Anche in questo caso la sottrazione dei due termini mi darà l’errore del sistema che sarà uguale a

y meno y tilde.

Quindi JST e JSV si basano sull’errore di simulazione.

Vediamo cosa succede a JPT e JPV, JPT dovrà convergere verso lo 0, JPV avrà un minimo e poi ritornerà a

crescere. Nell’immagine non è proprio evidente ma se si allarga si riesce a vedere che più o meno nell’intorno

di 20 JPV ha un minimo e poi torna a crescere. In questo caso posso dire che il mio intervallo dove si troverà

n*, quindi l’ordine ottimo sarà un intorno attorno a 20.

Per quanto riguarda JS per validazione e training, qui sarà un po’ più evidente dove sarà il minimo perché

entrambi decrescono e quindi già da un po’ prima di 20 la situazione si stabilizza. Quando vado a considerare

gli indici sulla simulazione non vado a considerare il minimo ma vado a considerare entro quale n i miei due

indici si vanno a stabilizzare. Quindi dopo 20 la situazione non cambia più di tanto, quindi posso dire che il

mio ordine ottimo si troverà nell’intorno di 20. 88

Nello script abbiamo altri 3 INDICI SURROGATI. Qui andiamo a calcolare i nostri indici surrogati sul set

di validazione, però al posto di usare JPV usiamo JPV perché utilizziamo l’indice sui dati di training. Questi

tre indici sono il final prediction error (FPE), l’information criterion (AIC) e il model description length

(MDL). Questi 3 parametri si basano proprio sull’indice di training solo che ci aggiungono delle

moltiplicazioni con delle funzioni che includono sia l’ordine n che stiamo trovando come ordine ottimo e sia

il numero di dati utilizzati N. per il primo e il secondo indice ci sono proprio delle funzioni Matlab che

calcolano questo indice. Per l’ultimo dobbiamo utilizzare la formula: Jmdl(k) = log(N1)*n/N1 + log(JPT(k))

C’è una dimostrazione matematica che ci dice che l’MDL è il miglior indice da considerare tra gli indici

surrogati perché visivamente ci dà un’informazione più diretta rispetto agli altri. In generale l’MDL utilizza i

BIT abbiamo quindi un’informazione più dettagliata e più precisa.

Infatti, nei tre grafici si capisce nell’MDL che nell’intorno di 20 c’è il minimo, anzi si vede che sta a 22. 89

Dettagli
Publisher
A.A. 2024-2025
6 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/04 Automatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher e.laudadio1 di informazioni apprese con la frequenza delle lezioni di Data model e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Bari o del prof Naso David.