COMPANY

PAGE TOP

BLOG

【連載】RapidMinerで始める簡単データ分析!!~Part3:予測モデルの生成~


前回の記事では、読み込んだ顧客離反データを可視化する方法を学びました。
今回は読み込んだデータから、
顧客が離反するか継続するかを予測するモデルを作成する方法を学んでいきましょう!

ようやく「予測モデル」を作成する時が来ました!
データ間の関連性を見つけ、結果を予測するためのモデルを作成します。

後のPart4で、そのモデルを使用し、顧客が離反しそうか予測します。
そのために、ここではまず、次のことを行っていきましょう。

・データを読み込みます。
・分析プロセス(以下、プロセス)用に、オペレータ(ブロック形状の物体)を配置します。
・欠損値データを取り除くために、「Filter Examples」オペレータを追加します。
・「Decision Tree」オペレータを追加します。
・プロセスを保存します。

1.データの読み込み
  まず、データをプロセスに読み込ませます。

  1-1.「結果」画面から「デザイン」画面へ切り替えます。

  1-2.前回までに取り込んだ「customer-churn-data」をドラッグして、「Process」パネルへ配置します。
     自動的に「Retrieve」オペレータとして配置されます。

  1-3.下図の「Retrieve」オペレータ右側のout(出力)ポート(半円で表示されているもの)に
     カーソルを当てると、「customer-churn-data」データの概要を確認することが可能です。


2.欠損値データの除外
  予測モデルを構築するためには、データセットのそれぞれのレコード(今回の場合は顧客単位)に
  不備がないかチェックする必要があります。言い換えると、予測(モデルの)ルールを作るために、
  欠損値を持つデータを除外しなければなりません。

  2-1.RapidMiner画面左下の「Operators」パネルで、検索ボックスにオペレータ名を入力して、
    「Filter Examples」オペレータを探します。入力文字に関連するオペレータの一覧が表示されます。
    
  2-2.次の例の「FiltEx」ように、オペレータ名の省略形を入力しても、一覧に表示されます。
    
  2-3.「Filter Examples」をドラッグし、「Process」パネルへ設置します。
    
  2-4.「Retrieve」オペレータの出力(out)ポートから、
    「Filter Examples」のデータセット(exa)ポートへ線をつなぎます。
    出力(out)ポートをクリックして、データセット(exa)ポートへ接続すればOKです。

  2-5.フィルタを設定するために、「Filter Examples」オペレータを選択してクリックします。
    すると、RapidMiner画面右側に、「Parameters」パネルが表示されます。
    「Parameters」パネルの「Add Filters」をクリックします。
    
  2-6.下図の一番左のプルダウンから、除外したい変数「Churn」を選択します。
  2-7.下図の中間のプルダウンから、「is not missing」を選択します。
    
  2-8.「OK」ボタンをクリックします。

  2-9.「Filter Examples」オペレータのデータセット(exa)ポートと、
     「プロセス」画面右側の結果(res)ポートを接続します。
    
  2-10.RapidMiner画面上部の「プロセス実行」ボタンをクリックします。
  2-11.結果画面に表示されるレコード数(exampels)と、Part2で表示されたレコード数を比較してみましょう。
     Part2(欠損値を除外する前)では996レコードありましたが、今は900レコードになっています。


3.決定木(Decision Tree)オペレータの追加
  今回は決定木(Decision Tree)を使用します。
  連続した顧客データから、決定木は、説明変数と目的変数間の関係を表わすルールを見つけます。
  決定木(Decision Tree)オペレータを追加するためには次の作業が必要です。

  3-1.「デザイン」画面に戻ります。

  3-2.「Decision Tree」オペレータを検索し、ドラッグし、「Filter Examples」の右へ設置します。
     そして、「Filter Examples」右側のデータセット(exa)ポートと、
    「Decision Tree」左側の予測モデル生成用データセット(tra)ポートを線で繋ぎます。
     さらに、「Decision Tree」右側のモデル(mod)ポートと、結果(res)ポートを線で繋ぎます。
    

  3-3.全てのパラメータをデフォルト設定のまま、プロセス実行ボタンをクリックします。
    

4.木の解釈
  これで決定木を生成できました!
  決定木は木の根(root、木の一番上のノード)から始まり、
  途中各ノードで枝分かれしながら最終の葉(leaf、木の末端のノード)まで伸びています。

  4-1.木の上部から下部を読み解いてみましょう。各「分岐点」の枝ごとに値を持ち、
     その先の葉では離反(churn)と継続(loyal)の割合が表示されます。
    以下は、離反するかどうかを決定木アルゴリズムによりデータから生成したルールです。

    ・男性は離反しない。
    ・女性かつ89.5歳を超える場合は離反しない。
    ・女性かつ89.5歳以下かつ30.5歳を超える場合は離反しそう。
    ・女性かつ30.5歳以下かつ最後の購入が179.5週より前の場合は離反する。

  4-2.さらに掘り下げると様々なルールを発見できますので、ご自身で確認してみましょう。

    全体として、木は9つの葉を生成しました。
    性別の次に影響力のある変数は年齢、
    その次は最後の購入、最後は支払方法の順です。
    枝は、1つの変数から複数本生成されます。

    赤と青の比率は、結果を可視化して確認する時に役立ちます。
    赤と青は、どれくらいの数の顧客が離反か継続かを示しています。
    赤か青のどちらか一方だけで構成されている葉は、より純粋な予測結果と言えます。

  4-3.また、「詳細(Description)」画面では、結果を数値で確認できます。
    

5.プロセスの保存
  ついに、モデル生成プロセスを保存する時がきました!
  5-1.「デザイン」画面に戻ります。

  5-2.「Repository」画面で、「プロセス(processes)」フォルダを右クリックします。
    (Part1で作成した「Getting Started」フォルダの中です)。

  5-3.「Store Process Here」をクリックし、
     結果ダイアログにプロセス名を「Creating training data」のように入力し、
    「OK」をクリックします。
    
  5-4.「プロセス(processes)」フォルダに、
     新しいプロセス(歯車のアイコン)が追加されていることを確認してみましょう。

おめでとうございます!これであなたは、RapidMinerのデータサイエンティストへ近づきました。
次のPart4へ進み、モデルを適用してみましょう!

$$ \begin{aligned} \newcommand\argmin{\mathop{\rm arg~min}\limits} \boldsymbol{\beta}_{\text{ridge}} & = \argmin_{\boldsymbol{\beta} \in \mathcal{R^p}} \biggl[ ||\boldsymbol{y}-\boldsymbol{X\beta}||^2 + \lambda ||\boldsymbol{\beta}||^2 \biggr] \\ & = (\boldsymbol{X}^T\boldsymbol{X} + \lambda\boldsymbol{I_{p+1}})^{-1}\boldsymbol{X}^T\boldsymbol{y} \end{aligned} $$
PAGE TOP