Jak skalować nowe obserwacje w celu dokonywania prognoz, gdy model został wyposażony w skalowane dane?


13

Rozumiem pojęcie skalowania macierzy danych do zastosowania w modelu regresji liniowej. Na przykład w R możesz użyć:

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

Moje jedyne pytanie brzmi: w przypadku nowych obserwacji, dla których chcę przewidzieć wartości wyjściowe, w jaki sposób są one odpowiednio skalowane? Czy to by było scaled.new <- (new - mean(data)) / std(data)?


1
Aby odzyskać wartości, po prostu zrób y = y_esc * sd(y) + mean(y), ale myślę, że to zepsułoby właściwości modelu, więc czekam też na bardziej techniczną odpowiedź!
Fernando

Nie chcę wartości z powrotem, chcę wiedzieć, jak nowe wystąpienia mogą być poprawnie skalowane w ten sam sposób. Zredagowałem swoje pytanie na podstawie Twojego komentarza.
SamuelNLP

Odpowiedzi:


13

Krótka odpowiedź na twoje pytanie brzmi: tak - wyrażenie na skalowane. Nowe jest poprawne (z wyjątkiem tego, że chciałeś sdzamiast std).

Warto zauważyć, że skala ma opcjonalne argumenty, których można użyć:

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

Ponadto obiekt zwrócony przez skalę (scaled.data) ma atrybuty przechowujące zastosowane centrowanie numeryczne i zastosowane skalowania (jeśli istnieją), których można użyć:

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

Zaletą tego jest sytuacja, gdy oryginalne dane mają więcej niż jedną kolumnę, więc należy wziąć pod uwagę wiele średnich i / lub standardowych odchyleń.


Szkoda, że nie było nieco prostszy sposób to zrobić, jakscaled.new <- scale(new, use.attrs = scaled.data)
wordsforthewise

@wordsforthewise Nie byłoby trudno napisać opakowanie dla scale.default, aby to osiągnąć. Wątpię, czy R-core dałby mu wysoki priorytet.
user20637,

Tak. Jeśli mogę wymyślić, jak przyczynić się do R-core i znaleźć czas, aby to zrobić, mógłbym to zrobić.
wordsforthewise
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.