COMPANY

PAGE TOP

BLOG

あなたの前処理を早くする!前処理の三種の神器【if編】

みなさんこんにちは。
KSKアナリティクスの北野です。

今日はこれを身につければあなたの前処理は早くなる!第二弾!
ということで、皆様に使っていただきたい「前処理の三種の神器」その2をお伝えいたします。

なお、これはシリーズものとし、マクロ編、if編(今回)、Loop編のように進めております。

それでは、if編を進めて行きましょう!

  

そもそもifって?

"if"は英語で「もし~なら…」という意味です。
これはデータ分析でも同じく、「もし~なら…の処理をする」と解釈します。

そして、「もし~なら」の部分を条件と言い、条件に合う合わないかで処理を2通りに分けます。

  
例えば、「朝起きるのが苦手ですか?」と聞かれたとしましょう。

そのとき、あなたが朝に起きるのが苦手だとすると、「はい」と答え目覚ましをセットなどするでしょう。
一方、もし苦手でなければ「いいえ、目覚ましは特に必要ありません」のように答えるのではないでしょうか。

  
このように何か条件を設定し、条件に合う合わないかで分かれ、その後の処理を変えていきます。

データ分析やプログラミングでは必ず行う処理ですので、初めての方は覚えておきましょう!

  

Branchオペレータについて

RapidMinerでif文を作成するにはBranchオペレータを用います。

  
Branchオペレータにはcon(condition)とinp(input)の二種類のポートがあります。
conポートに入ってきたデータで条件を確かめ、inpポートに入ったデータセットを処理します。

また、Branchオペレータをダブルクリックするとサブプロセスに入ります。

Branchのサブプロセスは”Then”と”Else”の二つに分かれており、
条件に合った場合は”Then”側が、条件に合わなかった場合は”Else”側のプロセスが実行されます。

また、サブプロセスのconとinpポートは、親プロセスでBranchオペレータに接続されたままの順でデータが入ってきます。

実際の操作

※RapidMiner ver9.3で実施しています。

データ分析の中でif文を行う場面は多々ありますが、今回は交差検証した結果に応じて処理を変える場面を想定しています。
具体的には「パフォーマンスが95%を超えたか」で条件を設定し、データに加える列をそれぞれ変えることにします。

上図のように、リポジトリからIrisデータセットを取り出し、Cross Validation、Branchオペレータを配置してください。
  
 

また、Cross Validationの中には、Decision TreeとApply Model、Performanceオペレータをそれぞれ配置してください。

こうして、Irisデータセットに決定木を用いた交差検証を行います。

  

Branchオペレータのパラメータを変更します。
Condition typeを”min_performance_value”に、condition valueを”0.95”に設定してください。

こうして、パフォーマンスが95%を超えたか否かの条件を作成します。

条件を作成できれば、その後の処理の設定に入っていきしょう。
  

Branchオペレータの中にGenerate Attributesを二つ配置してください。

  

左側は条件に合った場合ですので「95%以上!」と表示させる列を作成します
パラメータのEdit Listをクリックし、
Attribute nameに「結果」を、function expressionsには「”95%以上!”」と入力してください。

  
次に、右側は条件に合わなかった場合ですので、「95%行かなかった…」と表示させる列を作成します。
パラメータのEdit Listをクリックし、
Attribute nameに「結果」を、function expressionsには「”95%行かなかった…”」と入力してください。
  
 

設定できれば、元の画面に戻り、Cross Validationに「ブレークポイント(後)」を付けてください。
実行した際に交差検証の結果を見ることができます。

設定できればプロセスを実行しましょう!
  

実行するとaccuracyが95.33%と、パフォーマンスが95%を超えたことがわかります。
もう一度実行ボタンを押してください。
  

結果の右側に行くと、Irisデータに「結果」という属性が追加され、
「95%以上!」と入力されているのがわかります。

きちんと、条件で処理が分かれているのがわかりますね。

一方、もしパフォーマンスが95%行かなかった場合を見たい際は、
Irisデータセットの代わりにTitanic Trainingデータセットを利用してみてください。

プロセスを実行すると、Titanic Trainingデータの交差検証の結果は80.35%であることがわかります。

これでは、95%を超えられていません。

そのため、結果属性にも「95%行かなかった…」列が作成されています。

  
 
今回は簡単な例を用いましたが、Branchオペレータはデータを自動で処理したい場合などによく使われます。
特にマクロやLoopと一緒に用いると非常に有効です!

  
また、Branchオペレータは「はい」「いいえ」の2通りですが、
もっと多く処理したい場合はSelect Subprocessオペレータも非常に便利です。

Branchがif文なら、Select SubprocessはSwitch文と喩えられるでしょう。

それでは、またお会いしましょう。
  
 
↓↓他のページも見ていってください!!↓↓
\/\/\/\/\/\/\/\/\/\/
▼みんなで書いているRapidMiner ブログ
https://www.ksk-anl.com/blog/rapidminer/

▼1日で機械学習の基礎が学べる!無償ハンズオンセミナー随時開催中▼
https://www.ksk-anl.com/event/

▼RapidMinerをもっと知りたい方はこちら▼
https://www.rapidminer.jp/

▼早速使ってみたい!RapidMinerの体験版の無償DL▼
https://www.rapidminer.jp/download/

▼導入を検討中!わかりやすい詳細なQ&A▼
https://www.rapidminer.jp/faq/
\/\/\/\/\/\/\/\/\/\/

$$ \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