モデルがスケーリングされたデータに適合したときに予測を行うために、新しい観測をスケーリングする方法は?


13

データ行列をスケーリングして線形回帰モデルで使用する概念を理解しています。たとえば、Rでは次を使用できます。

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

私の唯一の質問は、出力値を予測する新しい観測値について、それらをどのように正しくスケーリングするかです。そうでしょうscaled.new <- (new - mean(data)) / std(data)か?


1
値を元に戻すにはdoしますy = y_esc * sd(y) + mean(y)が、それは私が推測するモデルのプロパティを混乱させるので、より技術的な答えも待っています!
フェルナンド14年

値を元に戻したくないので、同じ方法で新しいインスタンスを正しくスケーリングする方法を知りたいです。あなたのコメントに基づいて質問を編集しました。
SamuelNLP

回答:


13

あなたの質問への短い答えは、はい、scaled.newの表現は正しいです(あなたがsd代わりに望んでいたことを除いてstd)。

scaleには、使用できるオプションの引数があることに注意してください。

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

また、scaleによって返されるオブジェクト(scaled.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が高い優先度を与えるとは思わない。
user20637

うん。R-coreに貢献する方法を見つけ出し、それを行う時間を見つけられるなら、それをするかもしれません。
言葉forthewise
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.