Alteryxで外れ値を見つける

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

外れ値、なんとも嫌なひびきですね... どんなに注意していてもデータに紛れ込んでしまう招かざる客、それが外れ値です。

今回はそんな外れ値をどう発見して、どう取り除いていくかを考えていきます。 なお、今回は"外れ値"と"異常値"などの言葉の違いは考慮せず「本来入ってきてほしくない値」を総称して外れ値と呼んでいます。

外れ値について考える

さて、Alteryxでどのように外れ値を見つけて除外していくか考える前に一言で「外れ値」といってもそれがどういったものなのか今一度考えてみましょう。

以下のような分布のデータがあるとします。

ほとんどのデータは0付近に存在していますが、10のあたりにぴょこっと飛び出しているものがあります。 これは、わかりやすく外れ値と呼べる存在でしょう。

では、続いてデータがどのようなプロセスで生成されたものかも含めるとどうなるか考える例を出してみたいと思います。 以下のようなデータがあるとします。

ちょっとわかりづらいですが、データ内容としては、1,2,3の他にわずかながら4があるようなものになっています。

この4はごく少数のデータとなっていますが、値として極端に外れている訳ではありません。 こういった場合、この4は外れ値となりうるでしょうか?

これは、このデータがどうどういった経緯で生成されたか?によるところが大きいです。 たとえば、「悪い」, 「普通」, 「良い」の3段階のアンケート行なっていてそれぞれに数値として1,2,3を割り振ったようなデータであれば、 4は本来入ってくるはずのない値となります。 そのため、これは除外すべき対象となるでしょう。 一方で、ソーシャルゲームのガチャで各レア度ごとの引く確率だったとすると、一番レアな4を引く確率が極端に低いというは正常な結果となっているかもしれません。

また、一見すると外れ値のように見えるけど、実は正常なデータという場合も考えられます。 このパターンの例としては、センター試験の数学の得点分布などが挙げられます。 この得点分布では、平均値を中心とした正規分布に近い形になりますが、100点のところにもう1つ峰ができます。 100点の部分は外れ値という訳ではなく、満点をとる人側の人が一定数いることを表しています。

この他にもデータの性質に応じて様々なパターンが考えられます。

Alteryxで外れ値を取り除くには?

さて、外れ値といっても色々あることがわかりましたが、今回は最初の例に出したような他と比較して極端に高い(あるいは低い)値は外れ値という状況で考えていきましょう。

データを可視化して確認する

まずは、データを可視化して確認してみます。 最初例では、画像にあるような可視化を行なったからこそ、外れ値の存在が確認できたものとなっています。

ワークフローは以下のようになっています。

とは言っても、このワークフローのほとんどは外れ値を仕込むためのものですw Input Dataツールでは、平均0, 標準偏差1となるような乱数を読み込んでいます。 Text Inputで外れ値なる極端に大きい値(ここでは10としている)を作成して、それらをUnionで結合することで外れ値を含んだデータを作成しています。

ここで重要になるのはその次に登場するHistgramツールです。

このツールは文字通りヒストグラムを作成するツールとなっています。 ツールの設定は以下のようになります。

Select the field to use in the histogramで対象となる列を選択します。 その下の項目でビン幅を指定できますが、今回はデフォルトで設定している'auto'をそのまま使っています。

Browseツールを接続してグラフを確認すると以下のようになります(最初に掲載したものと同じです)。

あとはこのグラフをみて外れ値となっている値をFilterツールで取り除いてあげればいいでしょう。

標準偏差をもとに取り除く

先ほどの例ではわかりやすく外れ値が出ていましたが、場合によってはどこからを外れ値とするかがデータを見る人の判断に委ねられる場合があります。 続いては統計値を元にして外れ値を検出して取り除いてみましょう。

今回はよくある基準の1つとして、データの標準偏差σに対して絶対値が3σより大きいデータを外れ値として除外したいと思います。 ワークフローは以下のようになります。

Unionツールまでは、先ほどと同様外れ値を含むデータの生成となっています。

続いてのSummarizeツールで標準偏差を求めています。 対象となる列に対して Numeric > Standard Diveationを選択することで標準偏差を求められます。

求めた値をAppend Fieldツールで元のデータにくっつけています。 その結果以下のようなデータが生成されます。

最後にFilterツールで絶対値が3σより大きい値を除外しています。

おわりに

今回は、Alteryxで外れ値を確認したり取り除いたりする方法を紹介しました。 実際の外れ値は、必ずしも全てがこのパターンで取り除けるもの(取り除いていいもの)であるとは限らなかったり、 外れ値であってもそのレコードを丸々取り除いていいとは限りませんが、1つのテクニックとして参考にしていただければと思います。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400