Un modello dovrebbe essere riqualificato se sono disponibili nuove osservazioni?


28

Quindi, non sono stato in grado di trovare alcuna letteratura su questo argomento, ma sembra qualcosa che valga la pena di pensare:

  • Quali sono le migliori pratiche nella formazione e ottimizzazione dei modelli se sono disponibili nuove osservazioni?

  • Esiste un modo per determinare il periodo / la frequenza della riqualificazione di un modello prima che le previsioni inizino a degradare?

  • È troppo adatto se i parametri sono ri-ottimizzati per i dati aggregati?

Si noti che l'apprendimento potrebbe non essere necessariamente online. Si potrebbe desiderare di aggiornare un modello esistente dopo aver osservato una varianza significativa nelle previsioni più recenti.


La risposta dipende fortemente dal dominio aziendale e dall'applicazione del modello particolare.
Pete il

Risposte:


16
  1. Una volta che un modello è stato addestrato e si ottengono nuovi dati che possono essere utilizzati per l'allenamento, è possibile caricare il modello precedente e allenarsi su di esso. Ad esempio, è possibile salvare il modello come .picklefile e caricarlo e addestrarlo ulteriormente quando sono disponibili nuovi dati. Fare nota che per il modello di prevedere correttamente, the new training data should have a similar distribution as the past data.
  2. Le previsioni tendono a peggiorare in base al set di dati che si sta utilizzando. Ad esempio, se stai cercando di addestrare utilizzando i dati di Twitter e hai raccolto dati relativi a un prodotto che è ampiamente twittato quel giorno. Ma se usi i tweet dopo alcuni giorni in cui quel prodotto non è nemmeno discusso, potrebbe essere distorto. The frequency will be dependent on datasete non esiste un tempo specifico per dichiarare come tale. If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model.
  3. L'ottimizzazione dei parametri sui dati aggregati non è eccessiva. Dati di grandi dimensioni non implicano un overfitting. Utilizzare la convalida incrociata per verificare l'eccessivo adattamento.

Quindi, se la natura del set di dati in entrata rimane costante, non c'è nulla di nuovo che il modello possa imparare?
user140323,

Se i dati non cambiano e se si è soddisfatti dell'accuratezza del modello corrente, non vedo il punto di riqualificarli.
Hima Varsha,

@ Bene, forse puoi usare i dati in arrivo come set di validazione e controllare il tuo modello attuale.
Hima Varsha,

Ancora troppo presto per accettarlo, ma lo farò. Grazie!
user140323,

Ciao @ tktktk0711, al momento non ho un codice per mostrarti. Ma basta passare attraverso questo che indica un altro collegamento con il codice. github.com/tflearn/tflearn/issues/39
Hima Varsha,

20

Quando sono disponibili nuove osservazioni, ci sono tre modi per riqualificare il modello:

  1. Online: ogni volta che è disponibile una nuova osservazione, si utilizza questo singolo punto dati per addestrare ulteriormente il modello (ad esempio caricare il modello corrente e allenarlo ulteriormente eseguendo la backpropagation con quella singola osservazione). Con questo metodo, il tuo modello apprende in modo sequenziale e si adatta in modo locale ai tuoi dati in quanto sarà più influenzato dalle osservazioni recenti che dalle osservazioni precedenti. Ciò potrebbe essere utile nelle situazioni in cui il modello deve adattarsi dinamicamente ai nuovi modelli nei dati. È utile anche quando si ha a che fare con set di dati estremamente grandi per i quali è impossibile eseguire la formazione su tutti contemporaneamente.
  2. Offline: aggiungi le nuove osservazioni al tuo set di dati già esistente e riqualifichi completamente il tuo modello su questo nuovo set di dati più grande. Questo generalmente porta a una migliore approssimazione globale della funzione target ed è molto popolare se si dispone di un set di dati fisso o se non si hanno nuove osservazioni spesso. Tuttavia non è pratico per set di dati di grandi dimensioni.
  3. nn

La maggior parte dei modelli oggi utilizzerà batch / mini batch e la scelta della dimensione del batch dipende dall'applicazione e dal modello. Scegliere il lotto di dimensioni giuste equivale a scegliere la frequenza corretta con cui riqualificare il modello. Se la tua nuova osservazione ha una bassa varianza con i tuoi dati esistenti, suggerirei lotti più grandi (256-512 forse) e se al contrario nuove osservazioni tendono a variare notevolmente con i tuoi dati esistenti, usa piccoli lotti (8-256). Alla fine della giornata, la dimensione del batch è un po 'come un altro iperparametro che devi sintonizzare e che è specifico per i tuoi dati


Ciao, voglio chiederti online: come online per nuovi dati. Questo metodo limita alcuni modelli ML, intendo non l'intero apprendimento automatico.
tktktk0711,

Conosci qualche esempio di tensorflow che utilizza batch ?
massimo

1

Il tuo problema rientra nell'ambito dei metodi di apprendimento online. Supponendo un flusso di dati in arrivo, è possibile utilizzare il metodo di discesa gradiente stocastico per aggiornare i parametri del modello usando quel singolo esempio.

Se la tua funzione di costo è:

minθJ(X,y,θ)

θXio,yio

θt=θt-1-θJ(Xio,yio)

Questo è essenzialmente SGD con dimensione del lotto 1.

C'è un altro trucco, è possibile adottare un metodo basato su finestra / buffer, in cui è possibile bufferizzare alcuni esempi dal flusso e trattarlo come batch e utilizzare batch SGD. In tal caso l'equazione di aggiornamento diventerà:

θt=θt-1-ΣioθJ(Xio,yio)

Questo è essenzialmente SGD mini-batch.


0

La domanda: DOVREBBE riqualificarti?

La risposta dipende da ciò che il modello tenta di fare e in quale ambiente viene applicato.

Lasciatemi spiegare con un paio di esempi:

Supponiamo che il tuo modello tenti di prevedere il comportamento dei clienti, ad esempio la probabilità che un cliente acquisti il ​​tuo prodotto in base a un'offerta su misura per lui. Chiaramente, il mercato cambia nel tempo, le preferenze dei clienti cambiano e la concorrenza si adegua. Dovresti anche adattarti, quindi devi riqualificarti periodicamente. In tal caso, consiglierei di aggiungere nuovi dati, ma ometto anche i vecchi dati che non sono più rilevanti. Se il mercato sta cambiando rapidamente, dovresti anche considerare la riqualificazione periodica basata solo su nuovi dati.

D'altra parte, se il modello classifica alcune immagini (ad es. Radiografia o risonanza magnetica) in condizioni mediche e il modello funziona bene, non è necessario riqualificarsi se non vi sono cambiamenti nella tecnologia o nel know-how medico . L'aggiunta di più dati non migliorerà molto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.