±3標準偏差を外れ値と定義して削除/抽出(外れ値の処理)
1.想定される利用目的
・予測モデルの精度安定化のための前処理
・異常検知のためのデータ理解
2.サンプルストリームのダウンロード
3.サンプルストリームの説明
a.入力するデータは以下の通りです。平均50、標準偏差10、サンプル数10,000レコードで正規分布するようにデータを発生させています。
シミュレーションノードを利用して正規分布を作成する方法は以下で解説しています。
[データ検査]ノードを利用する方法
b.[データ検査]ノードを編集します。[外れ値]が3標準偏差、極値は5標準偏差で初期設定されています。
[データ検査]ノードを編集します。[欠損値検査]タブで外れ値が28レコード確認できました。[アクション]を[破棄]にします。
[生成]メニューから[外れ値および欠損値スーパーノード]を選択します。ストリーム上のcと同じノードが自動生成されます。
c.[スーパーノード]を編集します。生成した10,000レコードから正確に±3σ(シグマ)を求め、外れ値を破棄するように式が埋め込まれています。
[プレビュー]をします。10,000レコードから外れ値を破棄した9,972レコードが表示されます。
[プレビュー]をします。[外れ値]に該当する28レコードが抽出されました。
[グローバルの設定]ノードを利用する方法
e.[グローバルの設定]ノードを編集します。平均と標準偏差を求めて、セッション中にメモリ上にキャッシュさせます。
[実行]をします。2つの統計量をグローバル値としてキャッシュしました。
f.[フィールド作成]ノードを編集します。[派生]を[フラグ型]にして条件が合致するとフラグフィールドを作成します。(直接条件抽出)@GLOBAL_MEAN(フィールド)がキャッシュした平均を@GLOBAL_SDEV(フィールド)が標準偏差を呼び出します。
*同じ式を[条件抽出]ノードに記述するのが本来の進め方ですが、後続でヒストグラムを求めるために[フィールド作成]ノードを使用しました。
g.[グラフボード]ノードを編集してヒストグラムを設定します。
[グラフボード]ノードを実行します。外れ値は外側の赤い部分です。
h.gで[プレビュー]して、[3標準偏差の外] フィールドが [0]をひとつ選んでメニューから以下のように[条件抽出ノード(AND)]を選択するとhが自動生成されます。
3標準偏差の外 = 0 が抽出条件に自動記述されています。cと同じく外れ値を破棄して9,972レコードが抽出されます。
[レコード集計]ノードと[レコード結合]ノードを利用する方法
k.[レコード結合]で元のテーブルに[Field_Mean]と[Field_SDev]を追加します。[レコード結合方法]を[キー]にしますが、[キー]をブランクにすることでテーブル通しをN対N(総当たり)で結合します。
m.l.個々のレコードの値が±3標準偏差内であれば抽出します。
注意点
[シミュレーションの生成」ノード1000レコードに生成するデータを限定しているため、パラーメーターから誤差(平均は50ではなく49.977、標準偏差は10ではなく9.995)が生じています。
4.参考情報
正規分布やワイブル分布を生成する
[データの自動準備]内で外れ値を処理する
SPSS Modeler ノードリファレンス目次
SPSS Modeler 逆引きストリーム集(データ加工)