Як масштабувати нові спостереження для прогнозування, коли модель оснащувалася масштабованими даними?


13

Я розумію поняття масштабування матриці даних для використання в лінійній регресійній моделі. Наприклад, в R ви можете використовувати:

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

Єдине моє запитання - як правильно оцінювати нові спостереження, для яких я хочу передбачити вихідні значення? Було б scaled.new <- (new - mean(data)) / std(data),?


1
Щоб повернути ці значення, просто зробіть y = y_esc * sd(y) + mean(y), але це зіпсується з властивостями моделі, я думаю, тому я також чекаю більш технічної відповіді!
Фернандо

Я не хочу повертати значення, я хочу знати, як нові екземпляри можна правильно змінити масштабом таким же чином. Я редагував своє запитання, грунтуючись на вашому коментарі.
SamuelNLP

Відповіді:


13

Коротка відповідь на ваше запитання - так - вираз для scaled.new правильний (за винятком того, що ви хотіли sdзамість std).

Можливо, варто відзначити, що у шкалі є необов'язкові аргументи, які ви можете використовувати:

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

Також об'єкт, повернутий у масштабі (масштабовані дані), має атрибути, що містять числове центрування та масштабування, що використовуються (якщо такі є), які ви могли використовувати:

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

Перевага цього з’являється, коли вихідні дані містять більше одного стовпця, тому для розгляду потрібно кілька засобів та / або стандартних відхилень.


Я хотів було трохи більше простий спосіб зробити це, якscaled.new <- scale(new, use.attrs = scaled.data)
wordsforthewise

@wordsforthewise Не важко буде написати обгортку для scale.default, щоб досягти цього. Я сумніваюся, що R-core дав би йому пріоритет.
користувач20637

Так. Якщо я можу зрозуміти, як зробити свій внесок у R-core та знайти час для цього, я можу це зробити.
слова тому
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.