New Donorで学ぶAlteryxの実践的なサンプル

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

こんにちは、小澤です。

Alteryxには豊富なサンプルがあります。 今回はその中でも実践的な例を扱っているNew Donorの紹介をしたいと思います。

なお、今回は一連の流れの紹介をメインとするとため、個々のツールの使い方や出力に対する詳細な解説は割愛させていただきます。

New Donorとは

Alteryxを開き、 Help > Sample Workflows > Predictive Analysis > 11 New Donor を選択します。 すると、非常に長いWorkflowが開きます。全体像は下の図のようになっています。

スクリーンショット 2017-04-11 10.00.38

左端にあるデータの入力から直でつながっているBrowse Toolの出力結果を見ると、以下のようなデータが入力として与えられています。

スクリーンショット 2017-04-11 10.25.21

このサンプルが何をおこなっているかというと、大学の卒業生が寄付を行ったことがあるかという情報になります。 他のカラムの情報を元に、DonateのYes/Noを予測することが目的となります。 これによって、寄付を行ってもらうためのキャンペーンを実施する対象を決定するのに役立てることができます。

データの確認

では、順を追ってこのWorkflowを見ていきましょう。 まずはデータの性質の確認となります。 データ分析を行う際はいきなり手法に突っ込むのではなく、まずはデータの性質を確認することが大事です。

複雑なWorkflowのためコネクタが入り組んでいてどこで何をしているか少々わかりづらくなっていますが、データの確認は以下の部分でしています。

スクリーンショット 2017-04-11 10.46.40

相関係数

左側上部の2つのは相関係数を求めています。 これには、Association Analysis Toolを利用しています。

スクリーンショット 2017-04-11 13.29.22

相関係数は以下のように表示されます。

スクリーンショット 2017-04-11 13.30.23

Targetで指定した変数と、Fieldsで指定した変数それぞれとの相関係数や各組み合わせの相関行列が表示されます。 これによって目的変数(今回はDonate)と相関のある説明変数の確認や、説明変数同士での相関を確認してマルチコを回避するために次元削減を行う必要があるなどがわかります。

今回のサンプルでは2種類の手法での相関を求めています。

各変数のサマリ

左下の部分ではField Summary Toolを利用して各変数単体でのサマリを出力しています。

スクリーンショット 2017-04-11 13.43.06

Field Summary Toolの結果はBrowse ToolとRender Toolへとつながっています。 Browse Toolの出力では、左側のグラフ出力と下側のテーブル形式での出力が分かれているため、今回はRender Toolによって出力されたPDFの方をベースに内容を確認します。

スクリーンショット 2017-04-11 13.46.38

スクリーンショット 2017-04-11 13.47.27

数値のカラムと文字列のカラムで出力されるものが異なりますが、基本的な統計量などが表示されているのがわかると思います。 スケールの調整や欠損値への対応、ダミー変数などを考える際に役立つ情報となっています。

散布図

右側の縦5つは散布図を描画しています。 Scatterplot Toolを利用して散布図を描画しています。

スクリーンショット 2017-04-11 13.15.31

Scatterplot ToolからつながるBrowse Toolの結果を確認すると以下のような図が描画されているのがわかります。

スクリーンショット 2017-04-11 13.16.54

この図では、予測対象となるDonateのYes/Noを1と0の二値に変換したものをy軸に、Last_Yearsの値をx軸に配置しています。 以下の5つの値とDonateの散布図を描画しています。

  • Telephone
  • Degrees
  • Last_Years
  • First_Years
  • Mail

これで、予測の目的となるDonateに対して相関のある値を視覚的に確認することができます。 散布図での確認と前述の相関係数の確認とでは、それぞれにメリット・デメリットがあるので、両方確認するとより効果的です。

データの加工

次にデータに対する加工を行います。 これには例えば以下のようなプロセスが含まれます。

  • データがこの後の分析にかけれるよう前処理を行う
  • 計算によって必要となる情報を生成する(日時から期間を抽出、カテゴリカル変数をダミー変数に展開、など)
  • 各説明変数のスケールの調整(参考:Feature scaling - Wikipedia)
  • 次元削減や特徴選択

この他にも分析で利用したい手法によって事前にやっておかなければならないことがあります。

また、前処理に関してはこのプロセスにみならず、入力として扱うデータがそもそも正しく読み込めていると言える状況になるまでの整形や、 前述のデータ確認の際に求められる形式にするために必要になる場合もあります。 場合によってはETL(Extract/Transform/Load)やELTと呼ばれる処理によってAlteryxの入力となるデータそのものが既に加工済みでRDBやDWHなどに入れられていることもあります。

今回のサンプルでデータの加工を行っているのは以下の部分になります。

スクリーンショット 2017-04-11 14.23.02

このサンプルでは、計算によって、いくつかの変数の追加を行っています。 左から順に、

  • Degrees, Last_Yearsの対数をとった値
  • Telephone, Mailを+1して対数をとった値(ゼロが含まれる変数のため+1してる)
  • 上記4つの変数を2乗した値
  • Last_Yearsが4以上であれば、"4 or more"、以下であればそのままの値

となります。 生成する値がどのような意味を持つかはここでは割愛しますが、このようにFomula Toolなどを利用することで必要な値の計算が行えます。 その他にもPreparationに属するツールが主に役立つ領域となります。

最後に一番右にあるCreate Samples Toolではこの後の分析で機械学習を使うため、データを学習用と評価用に分割しています。

スクリーンショット 2017-04-11 14.37.18

機械学習による分析

ここまでで、データを分析できるようになりましたので、次に機械学習のアルゴリズムを実行するツールを使って分析を行っています。

スクリーンショット 2017-04-11 14.44.33

ここで分析に使っている手法は多岐に渡るため、個々の手法の詳細については解説しません。 一部のアルゴリズムに関しては、当ブログでも解説しているため、気になる方はそちらを参照してください。

基本的には、目的変数(今回の場合はDonate)と説明変数(Donate以外から必要なものを選択)を設定します。 また、必要に応じてアルゴリズム個別のパラメータの設定や場合によってそのチューニングを行います。

結果の比較

最後に各アルゴリズムで生成されたモデルの性能を検証します。

スクリーンショット 2017-04-11 14.47.50

まずUnion Toolで各手法のモデルを1つにまとめています。 次に、Lift Chart Toolを使って性能を比較します。

スクリーンショット 2017-04-11 14.55.50

Lift Chart Toolでは2つのデータを利用します。

  • 学習した結果のモデル
  • モデルを利用して予測を行うデータ

これによってモデル構築時とは別なデータを利用して予測を行い、その結果を予測性能として利用することができます。 今回の場合ですと、

  • モデル : Union Toolによって各アルゴリズムのモデルを1つにまとめたものが
  • 予測を行うデータ : 「データ加工」の際に用意しておいた検証用データ

予測の結果は次のBrowse Toolから確認できます。

スクリーンショット 2017-04-11 15.01.09

上部の方のBrowse Toolの結果の一番下にある「Area Under the Lift Chart Curve and the Gini Coefficient」の「Area」という項目を確認すると、Random Forestが一番高いことがわかります。

スクリーンショット 2017-04-11 15.02.582

この結果を受けて、Workflow全体での左上にある、最終的なモデルとしてはRandom Forestを利用したものを生成しています。

スクリーンショット 2017-04-11 15.06.24

終わりに

今回はサンプルのNew Donorを例により実践的な内容のWorkflowの例を紹介しました。 New Donorは一見すると複雑ですが、Alteryxを使ったデータ分析の流れを知るための例としてはいいものであると私は思っています。

また、実際には「データ分析は前処理が8割」と言われることがあるように、手元にあるのはそのままでは扱うのが難しいデータであることが多くあります。 このサンプルではデータを加工する部分がややあっさりしていましたが、そういったデータに対する複雑な前処理に関してもAlteryxは十分に威力を発揮しますので、今後そういった例もお見せできればと思っております。