Determinazione di parametri per minimizzare errore su più punti
Buongiorno,
sto lavorando con una funzione che dipende da 7 parametri. Questi parametri definiscono diverse zone di applicazione e i relativi fattori associati. Prima dell’esecuzione imposto tali parametri, insieme a una distanza e ad alcune condizioni.
Il risultato della funzione può discostarsi dalla realtà di una certa quantità. Per correggere questo errore, ho utilizzato il metodo di bisezione per determinare il fattore della zona interessata, come suggerito in questa discussione:
Bisezione
Il problema è che:
* se considero un’altra distanza, può rimanere un errore residuo;
* applicando nuovamente la bisezione rischio però di compromettere la condizione precedentemente soddisfatta;
* inoltre, potrebbe essere necessario modificare anche i parametri che definiscono le zone, non solo i fattori.
La mia domanda è: esiste un metodo sistematico per determinare questi parametri in modo da minimizzare l’errore su più distanze contemporaneamente?
In altre parole, è possibile affrontare questo problema in modo globale invece che correggere caso per caso con la bisezione?
Grazie in anticipo.
sto lavorando con una funzione che dipende da 7 parametri. Questi parametri definiscono diverse zone di applicazione e i relativi fattori associati. Prima dell’esecuzione imposto tali parametri, insieme a una distanza e ad alcune condizioni.
Il risultato della funzione può discostarsi dalla realtà di una certa quantità. Per correggere questo errore, ho utilizzato il metodo di bisezione per determinare il fattore della zona interessata, come suggerito in questa discussione:
Bisezione
Il problema è che:
* se considero un’altra distanza, può rimanere un errore residuo;
* applicando nuovamente la bisezione rischio però di compromettere la condizione precedentemente soddisfatta;
* inoltre, potrebbe essere necessario modificare anche i parametri che definiscono le zone, non solo i fattori.
La mia domanda è: esiste un metodo sistematico per determinare questi parametri in modo da minimizzare l’errore su più distanze contemporaneamente?
In altre parole, è possibile affrontare questo problema in modo globale invece che correggere caso per caso con la bisezione?
Grazie in anticipo.
Risposte
Se capisco bene si tratta di determinare una serie di 7 parametri a,b,c,d,e,f,g relativi ad una funzione y=F(x,a,b,c,d,e,f,g) e tali da rendere minima la "distanza" dai punti (x1,y1), (x2,y2), ...(xn,yn) assegnati, e dove la distanza è, ad esempio, la somma delle differenze quadratiche (F(xi,a,b,c,d,e,f,g)-yi)^2 oppure la somma dei valori assoluti di tali differenze.
Se è corretto quanto sopra, se la funzione F è lineare nei parametri (ad es. è un polinomio di sesto grado in x in cui i parametri sono i coefficienti), e la distanza è la somma quadratica, allora basta usare la formula estesa dei minimi quadrati.
Se invece F è non lineare nei parametri, allora il problema in generale si complica parecchio perchè si tratta di un problema di minimizzazione non lineare.
Ora vedo che nel post preso a riferimento si fa vedere all'ultimo anche l'uso del Solver (Risolutore) di Excel, che potrebbe essere effettivamente utilizzato anche in questo caso avendo cura di:
1) mettere i parametri in 7 celle che andranno inserite nelle "celle variabili" e che saranno inizializzate con dei valori a caso
2) calcolare le distanze in funzione delle celle definite sopra e inserire nella cella "obiettivo" la somma dei quadrati delle differenze
3) selezionare "minimo"
4) inserire eventuali vincoli sulle celle dei parametri se esistono
Una volta lanciato il risolutore questo, se converge, sostituisce nelle celle dei parametri i valori cercati.
Il problema è che spesso la soluzione, se si parte da troppo lontano, non converge.
Se è corretto quanto sopra, se la funzione F è lineare nei parametri (ad es. è un polinomio di sesto grado in x in cui i parametri sono i coefficienti), e la distanza è la somma quadratica, allora basta usare la formula estesa dei minimi quadrati.
Se invece F è non lineare nei parametri, allora il problema in generale si complica parecchio perchè si tratta di un problema di minimizzazione non lineare.
Ora vedo che nel post preso a riferimento si fa vedere all'ultimo anche l'uso del Solver (Risolutore) di Excel, che potrebbe essere effettivamente utilizzato anche in questo caso avendo cura di:
1) mettere i parametri in 7 celle che andranno inserite nelle "celle variabili" e che saranno inizializzate con dei valori a caso
2) calcolare le distanze in funzione delle celle definite sopra e inserire nella cella "obiettivo" la somma dei quadrati delle differenze
3) selezionare "minimo"
4) inserire eventuali vincoli sulle celle dei parametri se esistono
Una volta lanciato il risolutore questo, se converge, sostituisce nelle celle dei parametri i valori cercati.
Il problema è che spesso la soluzione, se si parte da troppo lontano, non converge.
Sarebbe utile sapere un po' di più sul tuo problema, perché esistono tantissimi metodi di ottimizzazione e il metodo migliore dipende fortemente dalla funzione che stai cercando di minimizzare (la distanza usata e il modo in cui la tua funzione dipende dai parametri).
Nel resto assumerò che la tua funzione sia quella descritta nell'altra discussione e che i parametri siano quindi A, B, C, D, K, X e S. Siccome parli tuttavia di distanza, e hai chiamato X l'incognita, immagino tu abbia in realtà una funzione S(X) e vuoi trovare i valori di A, B, C, D e K per cui la distanza
sia minimizzata. L'uso della somma delle differenze al quadrato consente di considerare tutte le distanze allo stesso modo (non è l'unico modo, ma è il più comune).
Nonostante rimangano 5 parametri, in realtà possiamo ridurci a 2. Infatti, ogni valore dei tuoi parametri che fornisce lo stesso valore di α e β (definiti qui sotto) porterà allo stesso risultato.
La funzione continua a essere molto complicata, ma dipende da soli due parametri. Il dominio della funzione è
Questa condizione limita i valori possibili del parametro nel tuo caso specifico. Hai infatti che
per ogni valore di i. Trovare il dominio dell'altro parametro è un po' più complicato.
A questo punto devi inserire i valori in un qualche programma capace di risolvere questo problema di ottimizzazione (probabilmente Excel può farlo ma non lo uso da due decenni per cui non credo di poterti aiutare).
[math]\sum_i (S_i - S(X_i))^2[/math]
sia minimizzata. L'uso della somma delle differenze al quadrato consente di considerare tutte le distanze allo stesso modo (non è l'unico modo, ma è il più comune).
Nonostante rimangano 5 parametri, in realtà possiamo ridurci a 2. Infatti, ogni valore dei tuoi parametri che fornisce lo stesso valore di α e β (definiti qui sotto) porterà allo stesso risultato.
[math]\alpha = \frac{KA(B - C)}{D^2}, \quad \beta = \frac{3C}{A}[/math]
La funzione continua a essere molto complicata, ma dipende da soli due parametri. Il dominio della funzione è
[math]0 < x < 1/\beta[/math]
Questa condizione limita i valori possibili del parametro nel tuo caso specifico. Hai infatti che
[math]X_i < 1/\beta \implies \beta < 1/X_i[/math]
per ogni valore di i. Trovare il dominio dell'altro parametro è un po' più complicato.
A questo punto devi inserire i valori in un qualche programma capace di risolvere questo problema di ottimizzazione (probabilmente Excel può farlo ma non lo uso da due decenni per cui non credo di poterti aiutare).