Alteryxで多重代入法を使った欠損値補完ツールを公開しました

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

こんにちは、小澤です。

2019/07/07でクラスメソッドは15周年を迎えます。 15年の月日を振り返ると数々の思い出がよみがえってくることでしょう。

一方、歴史の中には忘れ去られた過去というものも必ず存在するものです。 一度失ってしまったものはあとから取り戻すことはできません。 そんな失ってしまったものは、データとして確認した時に欠損値としてそこに登場します。

人は出会いと別れを繰り返しながら生きていきますが、思い出せない過去があるというのは悲しいことですね...

そこで、Alteryxを使って欠損値となってしまった情報を予測するためのツールを作成しました。

使い方

インストール

ツールはAlteryx Galleryにて公開しています。

yxiでの公開となっていますので、「DOWNLOAD」ボタンではなくリンク先からファイルをダウンロードしてください。

ダウンロードしたファイルを実行するとAlteryx Designerが起動して、以下のようなウインドウが表示されます。

「Install」をクリックするとツールがインストールされて、Predictiveタブ内に表示されるようになります。

ワークフローでの利用

以下のワークフローを例に見てみましょう。

データは以下のようになっています。

このデータ自体はあまり意味のあるものではありません。

  • a列 : 一様分布から生成した1~5の整数
  • b列 : 平均10, 標準偏差3で生成した乱数
  • c列 : b列に標準積分布から生成した乱数を足したもの

このデータはCSVファイルなので、Selectツールでそれぞれ適切な型へと変換しています。

続いてのFormulaツールではb列, c列の値の一部を欠損値にしています。

  • b列 : a列の値に基づいて欠損値を発生させる
iif([a] == 2 || [a] == 5, Null(), [b])
  • c列 : ランダムに3/10の確率で欠損値を発生させる
iif(RandInt(10) <= 3, Null(), )

ここで発生させた欠損値を今回作成したMultiple Imputationツールで補完してみます。 ツールの設定内容および設定値は以下のようにしています。

各値の詳細は多重代入法の解説が必要となるため割愛しますが、MやMax Iterationを必要に応じて変更してみながら調整するといいでしょう。

これでNullになっている部分の値が補完されます。 この後の処理は、補完された後の値がどうなったかを確認するために見やすくするためのものとなっています。

補完された値を確認してみましょう。 まずb列は以下のようになります。

出力は欠損値となっているものに絞っています。 2列目が元の値、3列目が補完した値となります。

同様にc列に対する補完は以下のようになりました。

正確性がものすごく高い!というほどではないですが、ある程度それっぽく補完できている気がします。

おわりに

欠損値をそれっぽく補完するAlteryxのツールを作成しました。 実際のデータでは、欠損値はそもそも観測されていない状態なので真の値との比較はできません。

欠損値がある行を抜いたり(リストワイズ削除)、適当な値で埋めるなどするとバイアスがかかってしまうことが実際のデータではあり得ます。

そんな時にはぜひ利用してみてください。

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

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

alteryx_960x400