標準偏差がゼロの場合、配列を標準化する方法は?


8

線形回帰のためにデータセット列を標準化しようとしています。

列の1つに標準偏差= 0があります。

def standardize(X):
    return (X - mean(X)) / std(X) 

したがって、このコードは機能しません。

この問題を解決するためのトリックはありますか?2つのことを試しました

  1. それは役に立たないパラメーターなので、標準偏差0の列を破棄します。
  2. 関数が機能するように、ような非常に小さなノイズを列の要素の1つに追加します。1010standardize

ありがとうございました!


あなたは正しいことをしています。2番目のオプションとして、標準偏差が小さいランダムな正規分布ノイズを列のすべての値に追加することをお勧めします。ただし、最初のオプションの方が簡単なので、こちらをお勧めします。
O_Devinyak 2012

16
標準偏差がゼロの場合、列には1つの値が入力されます。したがって、回帰のためにデータを準備することが目標である場合、回帰には何も寄与しないため、列を破棄できます。小さなノイズを追加しても、問題が増えるだけです。
mpiktas 2012

4
(@mpiktasは、回帰が定数項を含むことを暗黙的に想定しているという警告があります。これは通常の場合です)小さなノイズを追加すると、この列と定数が非常に平行になり、数値にあらゆる種類の混乱が生じる可能性があることに注意してください。高い多重共線性によるソリューション。しかし、そもそもなぜ列を標準化するのでしょうか?これは、ほとんどすべての優れたソリューションメソッドを使用して、自動的に行われます。
whuber

5
@Pratik、分散がゼロの変数を平均が0で分散が1の変数に変換する方法はないと思います。上記のオプション(2)を実行すると、変数を標準化された乱数に効果的に置き換えることができます。
マクロ

回答:


7

説明する状況は、次の2つのシナリオのいずれかの結果として発生します。

  1. 参照している列は、共変量の行列に追加される1の列であり、線形回帰に切片項があります。
  2. この列は、前述の1列とは異なる列であり、2列の定数[****]を提供します。

以下のためにシナリオ1:、その列をスキップする他のすべての列を標準化し、その後、通常どおりに回帰を実行します。

以下のためにシナリオ2、しかし、あなたは完全にその追加の定数列を取り除く必要があります。実際、標準化の問題に関係なく、2つの定数列を使用して回帰を実行することはできません。これにより、完全な共線性が実現します。結果は、回帰を実行しようとした場合でも、コンピュータープログラムがエラーメッセージを吐き出して途中で終了します[注:これは、OLS回帰では、行列X'X非特異である必要があるためです正しく]。

とにかく、あなたの、えーと、頑張って頑張ってください!

[****]明確にするために:「定数の2つの列」とは、すべての要素が「1」である1つの列と、すべての要素が定数「k」である2番目の列があるということです。 。


1

正しい方法は、データから特徴列を削除することです。しかし、一時的なハックとして-

その機能の0 stdを1に置き換えるだけです。これは基本的に、そのフィーチャのすべてのデータポイントでスケーリングされた値がゼロになることを意味します。これは、特徴値が平均から少しでも逸脱しないことを意味するため、理にかなっています(値が一定であるため、定数は平均です)。

FYI-これはsklearnが行うことです!https://github.com/scikit-learn/scikit-learn/blob/7389dbac82d362f296dc2746f10e43ffa1615660/sklearn/preprocessing/data.py#L70


標準偏差が0の場合、フィーチャは一定であるため、予測には役立ちません。定数の標準偏差を変更しても意味がありません。
マイケルR.チェリック

はい、モデリングの観点からは意味がありません。データセットに一定のフィーチャが含まれるたびに列を削除するという問題を回避するためのハックとして提案しました。
PankajKabra

0

分散がゼロの機能は役に立たないため、削除してください。

これを考慮してください。これが唯一の機能である場合、データからこの機能への応答について何も学ぶことはありません。多変量の場合、線形代数が同じ結論に達するのにかかりますが、考え方は同じです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.