2014-04-14 8 views
5

Uso il pacchetto di retto di R per eseguire alcune ricerche di rete e la valutazione del modello. Ho una metrica di valutazione personalizzata che è una media ponderata dell'errore assoluto. I pesi sono assegnati al livello di osservazione.R valutazione del modello di caret con metrica alternata delle prestazioni

X <- c(1,1,2,0,1) #feature 1 
w <- c(1,2,2,1,1) #weights 
Y <- 1:5 #target, continuous 

#assume I run a model using X as features and Y as target and get a vector of predictions 

mymetric <- function(predictions, target, weights){ 

v <- sum(abs(target-predictions)*weights)/sum(weights) 
return(v) 
} 

Un esempio è dato su come utilizzare summaryFunction per definire una metrica di valutazione personalizzata per il treno di accento circonflesso(). Per quotare:

La funzione trainControl ha un argomento chiamato summaryFunction che specifica una funzione per il calcolo delle prestazioni. La funzione dovrebbe avere questi argomenti

dati è un riferimento per un frame di dati o matrice con colonne denominate obs e pred per i valori di outcome osservati e predetti (sia numerici dati per i valori di regressione o caratteri di classificazione) . Attualmente, le probabilità di classe non vengono passate alla funzione. I valori nei dati sono le previsioni tenute (e i relativi valori di riferimento associati) per una singola combinazione di parametri di ottimizzazione. Se l'argomento classProbs dell'oggetto trainControl è impostato su TRUE, saranno presenti colonne aggiuntive nei dati che contengono le probabilità della classe . I nomi di queste colonne sono gli stessi dei livelli della classe . lev è una stringa di caratteri che ha i livelli del fattore di risultato presi dai dati di allenamento. Per la regressione, un valore di NULL è passato nella funzione. model è una stringa di caratteri per il modello utilizzato (ovvero il valore passato all'argomento metodo del treno).

Non riesco a capire come passare i pesi di osservazione a summaryFunction.

risposta

3

Non è possibile passare in pesi direttamente alla funzione di riepilogo, che è una svista poiché è possibile passarli alla funzione di modellazione. Se il modello sottostante ospita pesi, vengono utilizzati per produrre i valori previsti.

Lo aggiungerò alla prossima versione.

Max

+0

Hi .. Solo per confermare se questo cambiamento è fatto nella nuova versione di Caret? Sto usando caret-6.0-58 e i suoi argomenti non hanno pesi – myloginid

+0

Confermato - Il codice fallisce con pesi aggiunti alla funzione di riepilogo con errore - "Errore in FUN (a sinistra, a destra): argomento non numerico per operatore binario" – myloginid