Come ridimensionare nuove osservazioni per fare previsioni quando il modello è stato dotato di dati ridimensionati?


13

Comprendo il concetto di ridimensionamento della matrice di dati da utilizzare in un modello di regressione lineare. Ad esempio, in R potresti usare:

scaled.data <- scale(data, scale=TRUE)

La mia unica domanda è, per le nuove osservazioni per le quali voglio prevedere i valori di output, come vengono ridimensionati correttamente? Sarebbe scaled.new <- (new - mean(data)) / std(data)?


1
Per recuperare i valori basta y = y_esc * sd(y) + mean(y), ma immagino che farebbe confusione con le proprietà del modello, quindi aspetto anche una risposta più tecnica!
Fernando,

Non rivoglio indietro i valori, voglio sapere come le nuove istanze possono essere ridimensionate correttamente allo stesso modo. Ho modificato la mia domanda in base al tuo commento.
SamuelNLP

Risposte:


13

La risposta breve alla tua domanda è sì: quell'espressione per scaled.new è corretta (tranne che volevi sdinvece di std).

Vale la pena notare che la scala ha argomenti opzionali che è possibile utilizzare:

scaled.new <- scale(new, center = mean(data), scale = sd(data))

Inoltre, l'oggetto restituito da scale (scaled.data) ha attributi che contengono il centraggio numerico e i ridimensionamenti utilizzati (se presenti), che è possibile utilizzare:

scaled.new <- scale(new, attr(scaled.data, "scaled:center"), attr(scaled.data, "scaled:scale"))

Il vantaggio di ciò appare quando i dati originali hanno più di una colonna, quindi ci sono più mezzi e / o deviazioni standard da considerare.


Vorrei che ci fosse un modo leggermente più semplice per fare questo, comescaled.new <- scale(new, use.attrs = scaled.data)
wordsforthewise

@wordsforthewise Non sarebbe difficile scrivere un wrapper per scale.default per farlo. Dubito che R-core gli darebbe la massima priorità.
user20637

Si. Se riesco a capire come contribuire a R-core e trovare il tempo per farlo, potrei farlo.
parole per il
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.