COMPANY

PAGE TOP

BLOG

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

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

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

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

シリーズも大詰めとなり、前処理が格段に早くなるときも近づいています。
最後のLoopも習得し、前処理を早く終わらせてしまいましょう!

  

Loopとは?

Loopは繰り返しのことを指し、同じ処理を何度も行いたいときに使われます。
プログラミングに親しみがある方なら、for文と言ったほうがわかりやすいでしょうか。

前処理では、例えば複数の属性について同じ処理を行いたいときや、
フォルダに入っているデータを読み込みたい時などに使われます。

Loopについては実際に触っていただいた方がわかりやすいと思うので、早速RapidMinerでの操作に入ります!

  

実際にRapidMinerで行ってみよう

※操作はRapidMiner ver9.3で実施しています

今回の例では、複数の属性を同じ値で割りたい場面を想定しています。
具体的には、Irisデータセットの中の数値を全て10で割る操作を行います。

Irisデータセットの中の属性を全て10で割りたい場合、実はLoopを使わなくとも同じ結果を得ることは可能です。
それは、Generate Attributesを何度も使う方法です。

実際に少し試してみましょう。
  

まずIrisデータセットとGenerate Attributesを設置します。

次に、Edit Listをクリックし各ボックスに以下の式を入力します。
a1: a1/10
a2: a2/10
a3: a3/10
a4: a4/10

この状態でプロセスを実行すると、確かに全ての属性を10で割ることができています。

しかし、今は4属性のため一つ一つ式を設定することができましたが、100属性、1000属性あればどうでしょうか。
不可能ではないですが非常に手間のかかる作業です。

同じ作業を繰り返すなら、当然自動化したいと思います。
そこで使用するのがLoop Attributesオペレータです。

上図のように、IrisデータセットとLoop Attributesオペレータを配置してください。
また、Loop Attributesをダブルクリックして中に入り、Generate Attributesオペレータを配置します。

Loop Attributesオペレータのreuse resultsにチェックを入れます。
こうして、繰り返すごとに結果を更新するようにします。

また、このとき、attribute name macroにある”loop_attribute”をコピーしておいてください。
この後のGenerate Attributesで用います。

Generate AttributesのEdit Listをクリックすると、ダイアログが開きます。
それぞれのボックスに以下を入力してください。
(Loop Attributesでコピーした”loop_attribute”はここで用います。)

%{loop_attribute}: eval(%{loop_attribute}) / 10

“%{loop_attribute}”と見て、見覚えがある人もいらっしゃるかもしれません。
これはマクロ編で扱ったマクロの使用方法です。

「マクロって何?」となった方はマクロ編をご覧ください。

マクロを設定したことで、%{loop_attribute}は属性名に、eval(%{loop_attribute})はに変わります。

つまり、ループの一回目%{loop_attribute}a1に、eval(%{loop_attribute})5.1などの中の値に変わります。

ループの二回目%{loop_attribute}a2に、eval(%{loop_attribute})3.5などの中の値に変わります。

マクロの値が変わっていく様子を詳しく見たい方は、Generate Attributesにブレークポイントを挿入し、マクロパネルを表示させてください。
(マクロパネルについても詳しくはマクロ編をご覧ください。)

順番にマクロの値が変わっていく様子を見ることができます。


  
プロセスを実行します。

結果を見ると、Irisデータセットの数値属性を全て10で割ることができました!

ループで行っていることは単なる繰り返しですので、同様の処理を手作業で行うことも可能です。

しかし、膨大な量のデータを扱う場合、一つ一つを手で行う訳にはいきません。
面倒なことはRapidMinerにしてもらえばいいのです。

まとめ

マクロ編if編、Loop編と前処理で大変便利なツールをご紹介しました。
しかし、これらは単体で使うのではなく、組み合わせて使ってこそ意味があります。

組み合わせればどんな処理だってRapidMinerで行うことができるでしょう。

  
今回ご紹介したのはRapidMinerに多々ある機能のほんの一部です。
今後も機能をご紹介するブログを書いていきますので、ぜひご覧ください。

お読みいただきありがとうございました。

↓↓他のページも見ていってください!!↓↓
\/\/\/\/\/\/\/\/\/\/
▼みんなで書いている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