機械学習

3σ法で(正規分布に従う)入力データから外れ値を削除してみた

入力データが正規分布に従うと仮定した場合の外れ値の検出方法の1つに「3σ法」がある。

3σ法は、σを標準偏差として、(平均)-3σ~(平均)+3σの範囲(全体の約99.7%)から外れたデータを外れ値とする方法で、製造業等でよく使われている。

今回は、3σ法で外れ値を除去してみたので、そのサンプルプログラムを共有する。

なお、3σ法の詳細は、以下のサイトを参照のこと。
https://www.env.go.jp/chemi/rhm/r1kisoshiryo/r1kiso-02-04-04.html

また、正規分布については、以下のサイトを参照のこと。

正規分布の計算を行いグラフを描いてみた 正規分布は連続型の確率分布(=確率密度関数)の1つで、世の中の多くの分布が正規分布に従うといわれている。 平均\(μ\)、分散...

Numpyのnumpy.randomモジュールのnormalメソッドを利用すると、指定した数だけ、正規分布に従う乱数を作成できる。

標準正規分布に従う乱数を10,000個作成しグラフ化した結果は、以下の通り。

標準正規分布に従う乱数の作成



次に、3σ法で外れ値となるデータを追加する。データ追加前/追加後のデータを表示した結果は、以下の通り。

3σ法で外れ値となるデータ追加前

3σ法で外れ値となるデータ追加後



さらに、Pandasを利用して、3σ法で外れ値となるデータを削除する。その結果は、以下の通り。

3σ法で外れ値となるデータを削除

要点まとめ

  • 入力データが正規分布に従うと仮定した場合の外れ値の検出方法の1つに「3σ法」があり、3σ法では、σを標準偏差として、(平均)-3σ~(平均)+3σの範囲(全体の約99.7%)から外れたデータを外れ値とする。