Scopri come sono stati elaborati i dati

2

Beh, questa è una domanda che mi ha lasciato perplesso da molto tempo:

Supponiamo che io abbia un dizionario di input:output come:

  1. Questo

    {2: 6,
     5: 15,
     20: 60,
     26: 78,
     ...
     982: 2946,
     997: 2991}
    

    dove output = input*3 .

  2. o This

    {0: 5,
     3: 8,
     17: 22,
     19: 24,
     ...
     991: 996,
     996: 1001}
    

    dove output = input+5

o qualcos'altro.
In breve, dove c'è una relazione definita tra input e output .
Come può un programma trovare la relazione tra l'input e l'output , in modo tale che, dato un altro input, l'output possa essere calcolato ??

È possibile fare lo stesso con calcoli più complessi come output = 5*((input*5)+3)

    
posta pradyunsg 27.04.2013 - 10:42
fonte

4 risposte

10

Matematicamente, il problema che descrivi è trovare una funzione sconosciuta f con

  y_i= f(x_i)   (i=1,...n)

per un determinato insieme di valori di input x_1 , x_2 , ... e valori di uscita corrispondenti y_1 , y_2 , ...

Per rispondere a tali domande, in genere devi fare alcune ipotesi sulla tua funzione f . Ad esempio, supponendo che f sia una funzione lineare del modulo

  f(x) =  a * x + b

(che è vero per tutti e 3 gli esempi che hai fornito sopra), quindi puoi trovare f usando due valori di input, risolvere il relativo sistema di equazioni lineari di grado 2 per a e b (e verificare se gli altri valori di input corrispondono altra uscita).

Se si presume che f sia un polinomio di un certo grado, ciò significa,

  f(x) =  a_n * x^n  + a_(n-1) * x^(n-1) + ... + a_1 * x + a_0

devi applicare la teoria dell'interpolazione polinomiale . Un polinomio è ciò che ottieni quando consenti la somma, la sottrazione e la moltiplicazione arbitrarie, ma nessuna divisione. Questo problema è ben noto e se scegli un grado n sufficiente, puoi sempre costruire un polinomio f che corrisponda a tutti i tuoi valori di input e output.

Si può estendere questo problema per consentire la divisione, che porta alla modellazione della funzione razionale . Se vuoi saperne di più, google per "interpolazione razionale".

    
risposta data 27.04.2013 - 11:29
fonte
1

Sembra che il problema sia trovare la funzione "più semplice" che si adatti ai dati. Ad esempio, dato 1- > 2, 2- > 4, 3- > 8, 4- > 16 si può adattare un polinomio cubico, ma la risposta più semplice è f (x) = 2 ^ x. Questo problema può essere risolto semplicemente cercando tutte le possibili funzioni a partire dal più semplice: f (x) = 0 e passando a funzioni più complesse. Nel peggiore dei casi troverai una funzione polinomiale di grado n-1. Tuttavia, una tale ricerca di forza bruta potrebbe richiedere del tempo e la risposta corretta non è chiara. Supponiamo di avere:

f (1) = 2, f (2) = 6, f (3) = 11. È un polinomio quadratico più o meno complesso di 2 ^ x + x?

    
risposta data 28.04.2013 - 01:08
fonte
0

Penso che l'unico modo per fare ciò sia prendere 2 coppie di numeri e fare alcune operazioni matematiche di base su di loro e vedere se danno lo stesso risultato previsto.

Verifica la differenza tra i due, dividi i due, ecc. Quindi fai lo stesso per la coppia successiva e vedi se è una corrispondenza.

Ad esempio (3,8) e (10,15). La differenza è 5, quindi aggiungi 5 al 10 e vedi se è o meno una corrispondenza. Se non lo è, trova un'altra relazione da verificare.

    
risposta data 27.04.2013 - 10:58
fonte
0

La strategia ovvia sarebbe quella di utilizzare uno schema di regressione lineare come suggerito da @DocBrown. Se conosci la forma funzionale, ad es. una semplice relazione lineare, ottenere la risposta è piuttosto semplice. Una grande complicazione arriva quando anche la forma funzionale è sconosciuta. Qui è necessario un qualche tipo di ottimizzazione per adattarsi anche alla forma funzionale. Questa ottimizzazione può essere eseguita utilizzando tutti i tipi di ottimizzatori, ad es. discesa del gradiente, algoritmi genetici.

Ho lavorato insieme ad alcune persone di Lubljana (Slovenia) il cui principale interesse di ricerca è Equation Discovery. Fanno esattamente il tipo di cose che stai cercando, trovano le equazioni per i dati che hai a disposizione. Trovano la forma funzionale e i coefficienti adattati usando tecniche di apprendimento automatico. Una tecnica aggiuntiva che usano non è adatta a un solo modello potenziale, ma a un insieme di possibili modelli. Vedi questo link per alcuni dettagli.

    
risposta data 28.04.2013 - 11:04
fonte

Leggi altre domande sui tag