¿Cómo escalar nuevas observaciones para hacer predicciones cuando el modelo se ajustó con datos escalados?


13

Entiendo el concepto de escalar la matriz de datos para usar en un modelo de regresión lineal. Por ejemplo, en R podrías usar:

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

Mi única pregunta es, para nuevas observaciones para las que quiero predecir los valores de salida, ¿cómo se escalan correctamente? ¿Sería scaled.new <- (new - mean(data)) / std(data)?


1
Para recuperar los valores y = y_esc * sd(y) + mean(y), hazlo , pero supongo que eso alteraría las propiedades del modelo, ¡así que también estoy esperando una respuesta más técnica!
Fernando

No quiero recuperar los valores, quiero saber cómo las nuevas instancias se pueden escalar correctamente de la misma manera. He editado mi pregunta en función de tu comentario.
SamuelNLP

Respuestas:


13

La respuesta corta a su pregunta es sí, esa expresión para scaled.new es correcta (excepto que quería en sdlugar de std).

Vale la pena señalar que la escala tiene argumentos opcionales que podría usar:

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

Además, el objeto devuelto por scale (scaled.data) tiene atributos que contienen el centrado numérico y las escalas utilizadas (si las hay), que podría usar:

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

La ventaja de esto aparece cuando los datos originales tienen más de una columna, por lo que hay que considerar múltiples medios y / o desviaciones estándar.


Me gustaría que hubiera una manera un poco más fácil de hacer esto, comoscaled.new <- scale(new, use.attrs = scaled.data)
wordsforthewise

@wordsforthewise No sería difícil escribir un contenedor para scale.default para lograrlo. Dudo que R-core le dé alta prioridad.
user20637

Si. Si puedo descubrir cómo contribuir a R-core y encontrar tiempo para hacerlo, podría hacerlo.
wordsforthewise
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.