Assegnare più peso alle osservazioni più recenti in regressione


9

Come posso assegnare più peso alle osservazioni più recenti in R?

Presumo che sia una domanda o un desiderio comune, ma ho difficoltà a capire esattamente come implementarlo. Ho provato a cercare molto per questo, ma non riesco a trovare un buon esempio pratico.

Nel mio esempio avrei un set di dati di grandi dimensioni nel tempo. Voglio dire applicare una sorta di ponderazione esponenziale delle file di dati più recenti. Quindi avrei una sorta di funzione esponenziale dicendo che le osservazioni nel 2015 sono più importanti per la formazione del modello rispetto alle osservazioni nel 2012.

Le variabili del mio set di dati contengono un mix di valori categorici e numerici e il mio target è un valore numerico, se questo è importante.

Vorrei testare / provare questo usando modelli come GBM / Random Forest, idealmente nel pacchetto CARET.

update-domanda

Apprezzo la risposta fornita di seguito su come ridurre in modo esponenziale il peso in base alla distanza della data tra due punti.

Tuttavia, quando si tratta di allenare questo modello con il cursore, in che modo influiscono esattamente i pesi? Il valore del peso in ciascuna delle file di allenamento è la distanza tra un punto in futuro e quando quel punto si è verificato storicamente.

I pesi entrano in gioco solo durante la previsione? Perché se entrassero in gioco durante l'allenamento, ciò non causerebbe tutti i tipi di problemi in quanto le varie pieghe trasversali avrebbero pesi variabili, cercando di prevedere qualcosa che potrebbe effettivamente avere in un momento prima di esso?


3
Closevote perché l'interrogante deve chiarire le questioni statistiche. Non è chiaro per me che GBN o RF siano appropriati qui. Suggerendo di migrare su CV.com
DWin

ok. Aggiungerò presto un esempio. Vedo solo questo tipo di domanda su Internet, ma nessun esempio concreto di come applicarlo / risolverlo.
user3788557,

Risposte:


5

Come posso assegnare più peso alle osservazioni più recenti in R?

Immagino che tu abbia un timestamp associato ad ogni osservazione. È possibile calcolare una variabile timeElapsed = modelingTime - observationTime. Ora applichi una semplice funzione esponenziale come W=K*exp(-timeElapsed/T), dove Kè una costante di ridimensionamento ed Tè la costante di tempo per la funzione di decadimento. Wfunziona come peso della cassa.

Per quanto ne sappia , molte funzioni caretpermettono weightcome parametro, che è una colonna di pesi case da fornire all'osservazione corrispondente (avendo quindi la stessa lunghezza di #rows).


1
La funzione in caret::trainè weights.
timcdlucas,

Grazie Ujjwal - ma qual è la metodologia per determinare "K" nella tua equazione? eventuali linee guida o migliori pratiche? Inoltre, cosa intendi per "periodo di tempo" per la funzione di decadimento?
user3788557,

K è solo una costante di ridimensionamento e non influirà molto sui risultati del modello. È possibile impostare un valore in modo tale che l'intervallo dei valori di ponderazione del caso sia vicino all'intervallo 0-1. Per quanto riguarda il "periodo di tempo", viene anche chiamata la costante di tempo per una funzione di decadimento esponenziale del 1 ° ordine O durata media. Puoi cercarlo su Wikipedia.
Ujjwal Kumar,

Si prega di consultare il mio aggiornamento al mio post. Funzionerà correttamente durante l'allenamento? Il modello di allenamento avrà distorsioni poiché i pesi possono essere applicati solo se utilizzati contro il set di test? Quando il set di allenamento viene mischiato casualmente, potrebbe essere negativo se vengono utilizzati pesi più alti per prevedere i prezzi in passato o rispetto a un periodo che non è vicino nel tempo.
user3788557,

Senza ponderazioni di casi, la formazione del modello darebbe la stessa importanza sia ai dati vecchi che a quelli nuovi, ma con ponderazioni di casi proposti, darebbe maggiore importanza ai dati più recenti, quindi in tal senso è distorta verso osservazioni più recenti, ma questo è cosa volevi. Non capisco perché "i pesi possono essere ammessi solo per casi di test" . Inoltre, quanto pesi più alti verrebbero utilizzati per valori più vecchi quando il set di allenamento viene mischiato casualmente? quando il modelingTime viene mantenuto uguale per tutti i casi di allenamento. I pesi delle custodie PS non si applicano solo quando si utilizza un modello, è applicabile solo per il periodo di allenamento.
Ujjwal Kumar,

0

I dati (non l'analista che fa ipotesi - ipotesi) possono spesso suggerire la forma dello schema di ponderazione. Questo viene fatto tramite GLS dove i pesi appropriati per il modello dei minimi quadrati ponderati sono ottenuti dalle differenze statisticamente significative riscontrate nella varianza dell'errore. Dai un'occhiata al rilevamento di modifiche e valori anomali tramite ARIMA (procedura Tsay) e qui http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html . Se desideri pubblicare dati, ti preghiamo di farlo qui e cercherò di aiutarti ulteriormente poiché ho accesso di routine al software che potrebbe illuminarti.

Esiste una versione R del software che sto usando.

Potresti guardare Come includere le variabili di controllo in un'analisi di intervento con ARIMA? poiché ha un esempio di come i pesi vengono identificati e utilizzati per stabilizzare la varianza dell'errore credendo / sconsiderando / attualizzando / ponderando / fidandosi in modo efficace di alcuni valori precedenti.

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.