#13 : Alteryxサンプルワークフロー「顧客反応モデリング(後編)」- Alteryx & Tableau 連携 Advent Calendar 2018

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

当エントリは『Alteryx&Tableau連携 Advent Calendar 2018』シリーズの13本目のエントリです。

  • Alteryx & Tableau 連携 Advent Calendar 2018 - Qiita
  • Alteryx & Tableau 連携 Advent Calendar 2018 | シリーズ | DevelopersIO
  • 当エントリでは、Alteryx Designerの実行ワークフローサンプル「Customer Response Modeling(顧客反応モデリング)」の内容を紹介します。(前日のエントリで紹介し切れなかった、もう1つのワークフローについて見ていきます。)

    目次

     

    「本日のテーマ」概要紹介

    AlteryxとTableauはそのツール特性から非常に相性が良く、製品間それぞれにパートナー企業としての(特集)ページが設けられています。

    本日は、Alteryx Designerの「Sample Workflows」にて展開されている「Tableau Starter Kit」の中で、「Predictive Analytics」配下の「Customer Response Modeling(顧客反応モデリング)」というサンプルワークフローについて見ていきたいと思います。

    先日投稿したエントリでは、2つあるうちのワークフローの1つ目、『ロジスティック回帰のためのデータ準備』を行うところまでの処理内容を見てきました。当エントリではそのワークフローで作成されたデータを入力として、『ロジスティック回帰モデルの作成と評価』を行う2つ目のワークフローの処理内容を、順を追って見ていきます。

     

    ワークフローの全体像

    サンプルワークフローの全体像は以下となります。

    後編となる当エントリでは、以下のワークフローが実行される形となります。

     

    ワークフローを読み解く

    前日のエントリで見てきた処理でデータが準備・整理されました。当エントリの内容では、それらのデータを使いつつ、ロジスティック回帰(Logistic Regression/複数の変数から分析を行う「多変量解析」の一種であり、質的確率を予測する)ツールとスコア(Score)ツールを使ってモデルを作成・評価し、顧客がグルメソーダを販売するかどうかを予測します。データは最終的にTableauに出力されます。ロジスティック回帰の詳細については以下の情報をご参照ください。

    入力データについて

    入力データは2つ。前述のワークフローで生成されたデータと新規顧客データです。

    • 事前に作成されたデータのサンプル:
    • 新しい顧客データのサンプル:

    ここでは、オーバーフィッティング(過学習:学習データには適合するけど、新たなデータを予測することができないモデルが出来てしまうこと)を防ぐために、データを2つの小さなグループに分割しています。オーバーフィッティング(過学習)の詳細については以下の情報をご参照ください。

    大きなグループのデータはトレーニング(または推定)データと呼ばれ、モデルをトレーニングするために使用されます。そして小さなグループのデータはテスト(または検証)データと呼ばれ、モデルを評価するために使用されます。

    Create Sample Toolでランダムにサンプル分割を実施

    この状況に適した処理を行うのがCreate Sample Toolです。このツールは入力レコードを2つまたは3つのランダムサンプルに分割します。 このツールでは、推定サンプルと検証サンプルに含まれるレコードのパーセンテージを指定します。 合計が100%未満の場合、残りのレコードは保留サンプルになります。

    推定パーセントの一般的な値の範囲は66〜90%とされています。この例では、データの80%がトレーニング(推定)サンプルとして使用され、残り20%は検証用に使用されます。トレーニング(推定)サンプルの80%という値は、サンプルデータとして適切な範囲(66〜90%)のほぼ中央にあります。

    また、Random Seedは、各カテゴリごとにどのデータが選択されるかを制御します。 トレーニングとテストのデータをさまざまな選択肢でワークフローに戻したい場合は、ランダムシードを別の番号に変更することができます。 この例では、デフォルトのままにします。

    ロジスティック回帰ツール(Logistic Regression Tool)

    推定サンプルデータセットは、ロジスティック回帰ツールの入力として使用されます。Create Sample Toolで得られたE Output(推定出力ストリーム)が該当します。

    ロジスティック回帰ツール(Logistic Regression Tool)は、ターゲットバイナリ変数(はい/いいえ、通過/失敗など)を1つ以上の予測変数に関連付けるモデルを作成し、ターゲット変数、共通ロジスティック回帰モデルに対する2つの可能な応答の推定確率を取得します。

    ターゲット変数はPurchased_sale_sodaを選択。データ準備ワークフローで説明されている理由より、Mosaic_groupの代わりにMosaic_likelihoodを使用して、初期モデルの予測変数として使用します。 しかし、初期モデルの性能に満足できない場合は、代わりにMosaic_groupを使用してモデルを作成し、2つのモデルの結果を比較することができます。

    Mosaic_groupとターゲット変数(Purchased_sale_soda)以外のすべてのプレディクタ変数を選択します。 私たちはすでに多重共線性(multicollinearity)をテストしており、すべての変数が顧客が販売するグルメソーダを購入するかどうかを予測するのに適切であることを確信しています。 ただし、各変数の関連性を確定するには、ワークフローを実行する必要があります。

    まず、モデルタイプにロジット(logit)を選択します。 しかし、このモデルの性能に満足できない場合は、他の2つのモデルタイプ(プロビット(probit)と補完ログ-ログ(complementary log-log))と比較することができます。 ロジスティック回帰の技術的定義はロジットモデルを指すが、プロビットおよび補完的なログ-ログモデルは、一般的な使用法でロジスティック回帰モデルと呼ばれることが多いです。そして最後に、サンプリングウェイトは使用されず、グラフィックオプションはデフォルトとして残されます。

    ロジスティック回帰ツールの出力を見る前に、予測変数の有意水準を決定する必要があります。 これは、関連する変数を決定する最初の部分です。.05のレベルを選択します。これは、変数が顧客が販売時にソーダを購入するかどうかを決定する確率が95%を超える場合にのみ、変数をモデルに保持することを意味します。 この有意水準は、使用される最も一般的な水準です。

    ロジスティック回帰ツールには2つの出力があります。 O Outputはモデルオブジェクト用です。 このモデルを評価するために使用される将来のツールにこの出力を使用します。 R Outputはレポートを生成します。 Browseツールを使用して、R Outputの結果を確認する必要があります。

    ワークフローを実行して、ロジスティック回帰の結果を確認します。係数はすべて、選択したレベルで重要です。

    Deviance Residualsセクションでは、モデルがトレーニングデータに対してどれだけうまく実行されたかについての情報を提供します。 一般に、Deviance Residualが2より大きくても-2よりも小さい場合は、適合しないモデルを示す可能性があります。 しかし、我々は大きなデータセットを有しており、逸脱残差の大部分は非常に小さいです。 (それらの半分は-2.11 * 10 ^ -82.11 ^ 10-8の間です)。

    nullモデルは、インターセプト項だけのモデルです。 つまり、nullモデルは、すべてのレコードに対して同じ値を予測します。これは、予測変数を使用しないためです。 ヌル偏差を残差偏差と比較すると、モデルがヌルモデルよりどれだけ優れているかに関する情報が得られます。 McFadden R二乗値は、これらの2つの逸脱の相対的な値をまとめたものです。一般に、McFaddenのR二乗値が高いほど、現在のモデルがnullモデルより優れています。 .2と.4の間のMcFadden R二乗値は、比較的良好なモデルを示す。 したがって、当社のMcFadden R-squared値の.9607は優れています。

    スコアツール(Score Tool)

    トレーニングデータを使用して作成されたモデルでは、スコアツール(Score Tool)を使用してテストデータの確率を予測できます。 次に、Scoreツールによって与えられた予測と実際のデータ値を比較します。指定された予測変数のセットに R モデルを適用することによって、ターゲット変数の推定値を作成します。 ターゲット変数がカテゴリである場合は、(予測変数に基づく) レコードが各カテゴリに属する確率を提供します。 ターゲット変数が連続している場合は、ターゲット変数の値が推定されます。 モデルのパフォーマンスを評価するために使用できますが、それ自体では実行されません。

    スコアツール設定オプションはデフォルトのままにします。そして、ロジスティック回帰ツールのO OutputをスコアツールのTop Inputとして使用します。 次に、サンプル作成ツールのV Outputをもう一方の入力として使用します。

    参照ツールをスコアツールに追加し、ワークフローを実行。[参照]ツールをクリックして結果を確認します。 テストセットの11番目のレコードの予測は、0.999997の確率が偽であり、3*10^-6の確率が真となっています。 このレコードのPurchased_sale_sodaの値はfalseなので、モデルの予測は正しいです。

    モデルによって行われた予測が正しいかどうかを示すフィールドが必要です。数式ツールを使用して、Correct_predictionという名前のV_WStringフィールドを作成します。

    表現の背後にある論理は、アイテムが購入され、Score_1(つまりScore True)からの値が.5より大きい場合、予測が正しいことです。 (ロジスティック回帰ツールがレコードの真実の確率が0.5以上であると予測する場合、ツールはそのレコードの真の予測を生成します)。アイテムが購入され、Score_1が.5以下である場合、モデル 誤った予測をした アイテムが購入されなかった場合のロジックが切り替わります。

    レコードは集計ツールで集計され、モデルが正しく予測したレコードの数が決定されます。Correct_predictionでグループ化し、Correct_predictionの各カテゴリに含まれるレコード数を数えます。

    ワークフローを実行して結果を入力します。 結果のウィンドウで、テストレコードの983が正しく予測され、17が正しく予測されていないことを確認するには、SummarizeツールのOutput Anchorをクリックします。 このモデルは、テストデータに対して98.3%の精度を有し、良好と判断出来るでしょう。

    ここまでの手順で、どの顧客がグルメソーダを販売するのかを予測するというモデルに自信を持つことが出来ました。新しい顧客データセットをScore Toolの入力として使用し、実行しています。(設定値はデフォルトです)

    そして、出力結果をTableauワークブックに連携しています。

     

    ワークフローの実行・Tableauワークブックの内容確認

    画面右上の「Run」ボタン、または「Control」+「R」のショートカットでワークフローを実行。抽出ファイル(*.tde)を用いたTableauワークブック(*.twb)が出力されました。

    出力されたTableauワークブックを開いてみます。以下の様に予測結果を可視化したVizを確認する事が出来ました。

    まとめ

    という訳で、『Alteryx & Tableau 連携 Advent Calendar 2018 』13本目、「Customer Response Modeling(顧客反応モデリング)/後編」のご紹介でした。

    引き続き、明日もお楽しみに!

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

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

    alteryx_960x400