AlteryxでPredictive系ツールを使う時の流れ
こんにちは、小澤です。
Alteryxでは、Predictive系のツールを利用して簡単に機械学習などが行えます。 しかし、処理自体は簡単に行えても、ツールが効果的な使い方を教えてくれるわけではありません。
そこで、今回は効果的にAlteryxでどのようにこれらのツールを効果的に使っていけばいいのかを紹介したいと思います。
データの確認する
まず、最初に行うことはデータの確認をすることです。
データそのものの確認
まずは、データそのものを見て確認するところから始まります。 これには、AlteryxであればBrowseツールが利用できます。
また、Alteryxにどのように読み込ませるかを考える段階で、ファイルそのものを開いて確認することも必要になるかと思います。 これは、例えばExcelファイルであればシートの指定が必要になるため、Excelそのもので一度ファイルを開いて確認するといった場合や、SQL文を記述してデータを取得する際に、大元テーブル構造がわかっていないとSQLを記述できないなどの場合が該当します。 入力ファイルがjsonやxmlいった場合のパースする方法を検討する場合もその構造を理解している必要があります。
このプロセスはAlteryxで行うことにこだわらず、テキストエディタで確認するなど、やりやすい方法を選択するのがいいかと思います。
また、この段階で正しく読み込むのが難しそうなデータであることが発覚した場合は、その対応も必要となります。 これに関しては、例えばCSVで行ごとに項目数がバラバラだったり、クオートやエスケープの有無があったりなかったといった単一ファイル内で整合性が取れていない場合が1つの例として考えられます。 ただし、これは一例であり、様々な状況が考えられ、データの扱いにも依存した対応が求められるため、ここでは詳細には立ち入りません。
列ごとのデータの性質の確認
続いて、各列ごとにデータの性質を確認していきます。 これには、Field SummaryツールやBrowseツールのProfileを使うのが便利です。
これらのツールを利用することで、データ中の各列ごとの情報を確認することができます。
これによってデータの分布や平均値、中央値、標準偏差など統計的な性質や外れ値、欠損値があるデータ、複数の異なる性質のデータが混在してるなど、などの基本的な性質や各データの型などを把握しておくことが可能です。
例えば欠損値の多いデータであれば以下のように確認可能です。
ヒストグラムも見れるので、多峰型になっており複数の異なる性質のデータが混ざってそうなものを確認することもできます。
また、機械学習を使う際には問題となる不均衡データの確認も行えます。
複数列にまたがるデータの性質の確認
続いて、データの確認プロセスとしては、複数列にまたがっての性質確認となります。
Association AnalysisツールやScaterplotツールを利用して、データ間での相関や散布図を見ることができます。
複数の説明変数の間に相関がある場合にうまく学習ができなくなる多重共線性(マルチコ)などの問題を回避するために、特徴選択や次元削減を行う必要があるかを確認するのに役立つでしょう。
また、クロス集計や主成分分析を行うなどすれば、場合によってはそれだけでも十分な情報が得られるもしれません。
- クロス集計表の作成 #alteryx #02 | Alteryx Advent Calendar 2016
- Alteryxで主成分分析をしてみる #alteryx #18 | Alteryx Advent Calendar 2016
データ加工・特徴抽出
続いて、得られた性質からデータの加工を行います。
例えば、以下のワークフローでは
- 年齢の欠損値に性別や継承(Mr, Miss)ごとの平均値を入れて補完
- カテゴリカル変数をダミー変数に変換
といったことを行っています。
今回は、ワークフローの解説を行うことが目的ではないため、詳細については割愛しますが、機械学習などを利用するに際してこのようにデータ加工していく必要がある場合があります。
実際のデータでどのような処理が必要になるかはその場面ごとに様々です。 この部分は全体のプロセスの中でも複雑かつ長いフローになりがちです。 どのような場面でどのような処理が必要になるかと、それをAlteryxでどのように実現するかが腕の見せ所となるでしょう。
また、ここで行うような処理のワークフローは高度な分析用途のみならず、簡単な集計やデータの整形などを行うワークフローの組み立て方の知識とも相互に補完しあえる領域です。 そのため、Alteryxを利用する際にはかなり重要な部分となるでしょう。
入力となるデータとどのような結果が欲しいかを具体的にイメージしながら、その結果にたどり着くようなワークフローを組み立てられるようになると、Alteryxを使ってやれることの幅がどんどん広がっていきます。
ここで、1つ例として、Oversample Fieldツールを紹介します。 このツールは、指定した値のデータが全体に占める割合を調整してくれます。
以下のデータは、speciesの項目に「Iris-setosa」が10件、「Iris-versicolor」が50件の合計60件のデータとなっています。
このデータに対して、Oversample Fieldツールを以下の設定で利用します。
すると、Iris-setosaのデータが全体のうち50%を占めるように調整してくれます。
ただし、ツール使用後のデータを見ていただくとわかる通り、多い方のデータを減らして調整しているので、データ全体の件数は減ってしまい雨天には注意してください。
データの分割
次に行うことは、データの分割です。 どういうことかというと、機械学習を行う際には学習に利用するデータと評価に利用するデータを分けて利用します。このプロセスではそれを行います。
なぜこのようなことをするかというと、「過学習」と「汎化性能」という要素が関わってきます。 この記事内で、機械学習そのものについての深入りはしませんのでここでは簡単に説明します。
機械学習を行う際は、作成したモデルを利用して未知のデータをどれだけうまく予測できるかが重要となります。 ただし、未知のデータはまだ得られていないものなので、これをどれだけうまく予測できるかは学習時にはわかりません。
そこで、現在得られているデータを分割して、一部を学習に使い、学習に使わなかった残りのデータを未知のデータと仮定してどれだけうまく予測できるかで確認を行います。 分割した一部のデータは学習時は利用されていないので擬似的に未知のデータとして扱えますし、すでに正解となる結果も含まれているので、どれだけ正解できていたかの評価も行えるということになります。
このデータ分割を行うツールがCreate Samplesツールになります。
このツールでは以下のような設定で、学習に使うデータを全体の70%, 評価に使うデータを30%といった感じに分割できます。
また、乱数のシードも設定可能なので繰り返し実行しても同じ結果となります。
学習処理の実行
さて、いよいよ機械学習の処理を実行します。
ここでは、
- Logistic Regressionツール
- Forest Modelツール
- Support Vector Machineツール
- Neural Networkツール
など、様々な手法を実現するためのツールが用意されています。 これらの共通の項目として
- モデル名
- 目的変数
- 説明変数
を設定します。
各手法ごとの独自のパラメータ設定などもあります。 パラメータの調整は、手動で設定することも可能ですが、Alteryx側でよろしくやってくれるのに任せるのもありです。
各ツールの使い方や結果の見方に関しては、当ブログでも過去にいくつか紹介していますので、そちらもあわせて参考にしてください。
- 決定木モデルを作る #alteryx #03 | Alteryx Advent Calendar 2016
- 線形回帰をしてみる #alteryx #07 | Alteryx Advent Calendar 2016
- ロジスティック回帰をしてみる #alteryx #11 | Alteryx Advent Calendar 2016
- AlteryxでSVM
評価・比較
最後に作成したモデルの評価や各手法ごとの比較を行います。
モデル評価には、正解率やPrecision-Recall, F-measure、AUCなど様々ありますが、ここではAlteryx上でツール1で実現可能なAUCを紹介します。
この計算にLift Chartツールを利用します。
このツールでは、以下のような出力でモデルの評価を行います。
上部にあるグラフを確認すると、対角線上に直線が引いてあるのがわかるかと思います。 これは、ランダムに予測した時の結果となります。 その上の青い線は今回作成したモデルでの評価結果となります。 このグラフでモデルの線がランダムの直線と比較して、上方向に膨らんでいる面積が多いほどより良い予測結果となっている、というものになります。
この結果を数値として確認するのが一番下の表の「Area」となっている部分です。 この数値はランダムと同じだと0.5、最大値が1となっており、数値が高いほどいい結果になっています。
さらにこのLift Chartツールは複数のモデルをUnionツールで結合した結果を入力として受け付けることも可能で、それによって複数手法での比較も行えます。
グラフや数値は入力のモデル全ての結果が出力されるので、それらをこの画面のみで比較することが可能です。
実際に未知のデータを予測する
さて、ここまでで一通りのプロセスが完了しましたが、最後に実際の未知のデータを予測してみましょう。
準備
まず、作成したモデルの保存ですが、これはOutput DataツールでそのままAlteryxのデータ形式であるyxdbファイルとして出力できます。 バイナリ形式のため、CSVなどテキスト形式では出力できない点にはご注意ください。 保存したモデルはInput Dataツールで通常のデータと同様に読み込むことが可能です。
次に未知のデータに対しても同じようにデータの加工や特徴抽出を行う必要があります。 これは通常、学習時と同じ処理を適用することになります。 そのため、一連の処理をマクロとして作成しておくと便利です。
作成するマクロは以下のようになります。
入出力がMacro Input/Outputツールになった以外は同じであることが確認できかと思います。 今回は、そのまま流用しただけのマクロとなっていますが、インタフェースツールを利用して汎用性を高めるなどは自由に行えます。
保存したモデルの読み込みと、マクロ化したデータ加工・特徴抽出のプロセスを利用したワークフローは以下のようになります。
なお、マクロのアイコンにはいらすとやのかき氷を利用していますが、このアイコンには特に意味はありません。
予測
予測を行うにはScoreツールを利用します。
このツールを利用すると、予測結果をデータに追加することができます。 どのようなデータが追加されるかというと、数値を予測する回帰の場合は予測した数値、Yes/Noなどを予測する分類問題の場合はそれぞれYesのスコア, Noのスコアといったものが出力されます。Yes/NoではA/B/Cのような3つの分類の場合は3つそれぞれのスコアのような形式となります。
以下のデータでは、0か1かの分類問題の予測なのでそれぞれのスコアが出力されています。
これらのうち、もっともスコアが高いものを予測結果として扱うので、Formulaツールで
IF [Score_0] > [Score_1] THEN "0" ELSE "1" ENDIF
としてやることで、予測結果を取得することができます。
終わりに
今回はAlteryxでPredictive系のツールを利用する際の一通りの流れを解説しました。
実際には、分析よってどのようなことを実現したいかの課題設定や、必要なデータを収集するなどAlteryxの外の領域行うフローも必要になりますが、このようなフローを知っておけば、いざAlteryxを使った分析を行うとなった際に「ツールの使い方はわかったが実際のワークフローに落とし込めない」といった状況を克服することが可能になるかと思います。
Alteryxに興味をお持ちいただいた方はこちらからお問い合わせください。