既に多くの方が取り上げられておりますが、自分用にメモをしておきます・・・といいつつ教えるのが面倒なので記事にしちゃいます。
ポチポチフローを作成すれば前処理~モデリングまで一気にできるとは・・・便利な時代になったものです・・・
尚、操作環境はWindows10(64bit)+Alteryx Designerとなります。
※2020年現在他MacOSに対応するアナウンスは出ておりません(涙)
データの準備
[機械学習]練習に使えるサンプルデータSETまとめのまとめに記載のTitanicのデータを用います。
Alteryxの初期設定
ETL系のツールによくある設定ですが、まずやる事はメモリの設定です。Alteryx側で使用するシステムメモリの割り当てを定義します。
上部メニュー >> ユーザー設定 >> ユーザー設定の編集 >> システム設定 から操作します。
私はPC自体に32GBのメモリを積んでいますので、Alteryxには16GBを割り当てる事にしました。ツールが結構重いので8GBしか積んでいないPCだと辛いかも知れません。CPUも4コア8スレッド以上のデスクトップ向けのCPUの方がモッサリせず良いでしょう。
必要に応じて一次キャッシュファイルであるtmpの場所を変更しておくとよいでしょう。
データの入力
データの入力は入手ツールを使用します。プレビューが表示されますので、表示がおかしい場合、文字コードや区切り文字の変更を手動で行います。
データの確認
フロー毎にデータ(テーブル)の確認をしたいことが度々あるかと思います。
Alteryxでは閲覧ツールを用います。
上部メニュー >> 入手力 >> 閲覧ツール
サンプリング
膨大なレコードのテーブルにて、探索的に分析する際、パフォーマンス低下の為に一度サンプリング(削減)データでフローを組みたい場合がよくあります。
上部メニュー >> 準備 >> サンプリング からサンプリングツールを使用しサンプリングを実施します。
※Alteryxでは
・削減=サンプリング(アンダーサンプリング)
・増幅=オーバーサンプリング
という表記になっています。
必要に応じて使い分けを行ってください。
列の追加
SQLなどではCASE式やIF ELSE式等で既存のカラムの情報から新規カラムを生成することがよくあるかと思います。
Alteryxではフォーミュラツールを使用し、関数を使用することで実現可能です。
上部メニュー >> 準備 >> フォーミュラツール
フォーミュラツールを使用すると、左サイドバーに関数を入力するエリアが表れますので
赤枠:列を追加ボタンを選択した後、生成する新規カラム名を記入します。※1
緑枠:関数を入力します。
※1ここでカラム名を選ぶと列の追加ではなく「指定したカラムの値」を直接変換する操作となります。データ量にもよりますが最初から変換してしまうと確認(デバック)ができない為、分析の現場等では「変換前のカラム」と「変換後のカラム」を横並びに並べデバックし、その後不要なカラムを削除する方式が良いでしょう。
今回はif else式を使用しmaleなら1、femaleなら2、それ以外なら3という具合に式を作成しました。
1 |
IF [Sex] = 'male' THEN 1 ELSEIF [Sex] = 'female' THEN 2 ELSE 3 ENDIF |
閲覧ツールで確認してみましょう。
無事変換されていますね。
値の変更
上部メニュー >> 準備 >> フォーミュラツールを使用します。
フォーミュラツールを使用すると、左サイドバーに関数を入力するエリアが表れますので
チェックボックスから置換を行いたいカラム(赤枠部分)を選択し、その下の入力エリア(緑枠部分)に条件式を記載します。
<その他の変換方法>
正規表現ツールによる変換
上部メニュー >> パース >> 正規表現ツールにより、値の変更が可能です。
Regex関数を使用した変換
上部メニュー >> 準備 >> フォーミュラツール >> 関数にてREGEX_Replace関数使用して変換します。SQLや他の言語に慣れているひとはコチラの方が使いやすいですね。
重複削除
SQLで言うDistinkt、Excelでいう重複行の削除です。
Alteryxではユニークツールを使用します。
上部メニュー >> 準備 >> ユニークツール。
下記の既存テーブルでは前処理に作成した同じ意味を持つカラムが2つ存在していますが、プレビューで表示されているもは一部の為、変換が正しく行えているのか?値のパターンはいくつ存在するのか?想像でしか判断できません。
ユニーク化して確認を行います。
無事にユニーク化ができました。値は
・male=1
・female=2
の二値になるようです。
尚、削除のロジックは選択したカラムの条件の「レコード上最上部」にある行が残る=イキになります。
SQLでいうROW_NUMBER() OVER(PARTITION・・・・・でインデックスが1のものを残すイメージですね!
不要なカラム(列)の削除・及びカラム順序の変更
データクレンジングの途中過程でもたびたび使用しますが、最終的に不要なカラムを削除したり、視覚的な利便性からカラムの順序を変更しておきたい事があるかと思います。どちらもセレクトツールにて実現可能です。
不要なレコード(行)の削除
行の削除はFilterツールを使用します。
上部メニュー >> 結合 >>フィルターツールを使用します。
T=真(True) ※条件に合致したデータが出力
F=偽(False) ※条件に合致しないデータが出力
テーブル結合
分析の現場ではよく利用する結合です。
上部メニュー >> 結合 >> 結合ツールを使用します。
結合キーを選択して、通常はjoin方法を選択するツールが多いですが
Alteryxでは「join方法」の指定はせず、ツールの横にあるL・J・Rのアイコンに出力コネクタを接続すると、各接続結果が出力されます。なんと新しい発想・・・・私には逆に分かりづらかった・・・・ですが慣れの問題ですね。
<参考>
・L:left join(右外部結合)
・J:inner join(内部結合)
・R:right join(左外部結合)
ユニオン
その名の通りユニオンです。単純に複数テーブルを縦に結合(積み上げて)いきます。
上部メニュー >> 結合 >> ユニオンツールを使用します。
値の並び替え(ソート)
Excelでいう降順/昇順の並び替え、SQLでいうOrderByです。
Alteryxではソートツールを使用します。
上部メニュー >> 結合 >> ソートツール。
緑枠のところで、並び替えの順序を指定します。複数設定も可能です。
参考にしたドキュメント
Excelユーザー向けツールガイド|help.alteryx.com
SQLユーザー向けツールガイド|help.alteryx.com
https://www.alteryx.com/ja/alteryx-sql