Comment mettre à l'échelle de nouvelles observations pour faire des prédictions lorsque le modèle a été équipé de données à l'échelle?


13

Je comprends le concept de mise à l'échelle de la matrice de données à utiliser dans un modèle de régression linéaire. Par exemple, dans R, vous pouvez utiliser:

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

Ma seule question est, pour les nouvelles observations pour lesquelles je veux prédire les valeurs de sortie, comment sont-elles correctement mises à l'échelle? Serait-ce scaled.new <- (new - mean(data)) / std(data)?


1
Pour récupérer les valeurs y = y_esc * sd(y) + mean(y), faites-le , mais cela dérangerait les propriétés du modèle, je suppose, alors j'attends aussi une réponse plus technique!
— Fernando

Je ne veux pas que les valeurs reviennent, je veux savoir comment les nouvelles instances peuvent être correctement mises à l'échelle de la même manière. J'ai modifié ma question en fonction de votre commentaire.
— SamuelNLP

Réponses:


13

La réponse courte à votre question est oui - cette expression pour scaled.new est correcte (sauf que vous vouliez sdau lieu de std).

Il peut être utile de noter que l'échelle a des arguments facultatifs que vous pouvez utiliser:

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

De plus, l'objet renvoyé par scale (scaled.data) possède des attributs contenant le centrage numérique et les échelles utilisées (le cas échéant), que vous pouvez utiliser:

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

L'avantage de cela apparaît lorsque les données d'origine ont plus d'une colonne, donc il y a plusieurs moyennes et / ou écarts-types à considérer.


J'aimerais qu'il y ait un moyen un peu plus simple de le faire, commescaled.new <- scale(new, use.attrs = scaled.data)
— mots pour

@wordsforthewise Il ne serait pas difficile d'écrire un wrapper pour scale.default pour y parvenir. Je doute que R-core lui accorde une haute priorité.
— user20637

Ouais. Si je peux comprendre comment contribuer à R-core et trouver le temps de le faire, je pourrais le faire.
— wordsforhewise
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.