2020年1月1日水曜日

Dataikuを使ってみよう #4 DataikuのAutoML(機械学習の自動化)

これまでの記事では、Dataikuでできるデータ加工、データハンドリングデータ分割を掲載してきました。
いよいよ、データ分析の醍醐味である、メインイベントである「データモデリング」について、Dataikuではどのように行うのかを紹介します。

従来のデータモデリング

従来のデータモデリングは、データを加工・変換し、モデリングのロジックを「ひとつずつコーディング」していく必要がありました。例えば、ロジスティック回帰とRandom Forestの両方のロジックを比較したい場合は、一つずつコードを書き、パラメーターを設定し実行、結果が思わしくない場合や新しいロジックを追加…とコーディング作業が必要でした。

Dataikuでは、よく利用するアルゴリズムがデフォルトで組み込んであり、マウス選択という簡単な操作でモデルを実行、比較をしてくれます。次からはどのようなステップで実行するかを確認していきます。

DataikuでAutoML(機械学習の自動化)

Dataikuでは分析したいモデルをクリックするだけで複数モデルを走らせることができます。
最近では、このような機能のことを最近では「AutoML」と言われているようです。

AutoML(Automated Machine Learning: 自動化された機械学習)とは?https://www.atmarkit.co.jp/ait/articles/1901/06/news029.html
では、Dataikuではどのように利用できるのかを見ていきましょう。

最初に考えておくべきこと

まず最初に大事なことは、分析対象の項目を「予測したい」のか、「分類したい」のかを決めておきます。なぜかというと、モデルを適応させる際に選択をしなければいけないためです。
今回はDataikuのチュートリアルで提供してある、以下の内容のデータフローを利用します。モデリングを適応する前までの準備は、すでにこれまで紹介してきた記事で対応が可能です。

実際にアルゴリズムを回してみる(Prediction)

今回は、上記のサンプルのように、「メンテナンスが必要な資産がどれかを予測するための分析」をしてみましょう。

まずは、以下のように分析をしたい対象のデータセットを選択して、右ペイン中の「LAB」をクリックします。

そうすると、以下の画面が表示され、どのプロセスに進むかを選択できます。ここでは、すでにデータ加工については終わっているものとして、「Quick Model」を選択します。

右ペイン中の「Code Notebook」はPythonやR、Scala、SQL、Hive、Impalaなどを使ってカスタマイズしたコードを入力できます。また、「PREDEFINED」はすでに定義済みのコードを利用できるものになります。自分でコードを書いて分析をしたい、カスタマイズをしてやりたいというユーザーはこちらを利用することをお勧めします。


Quick Modelを選択したら、次のが画面が表示され、「Prediction」か「Clustering」かを選択する必要があります。今回は、資産の故障予測を行いたいため、Predictionを選択します。
Predictionを選択した後は、予測をしたい分析項目を指定します。ここでは、「Failur bin」を指定しましょう。
選択すると、以下のように選択肢が表示されます。

ここでは、「Automated Machine Learning」を選択しましょう。
「Expert Mode」は、Deep Learningの適応やPython、Scalaで自分自身で独自の推定量(Estimator)を書くことができますい。

Automated Machine Learningを選択した後、以下のような画面が表示されます。ここでは「Quick Prototypes」を選択します。ほかの選択肢もありますが、後日説明をします。
選択後、右下の「CREATE」ボタンをクリックして前準備は完了です。
準備が完了すると、以下のような画面になります。最初は何も表示されていませんが、分析対象データセットの変数やアルゴリズムの選択などをするために、「DESIGN」タブをクリックします。
左ペイン中にいくつかのメニューが並んでおり、それぞれデータセットに関するものやアルゴリズムに関して設定を変更することが可能です。

Train/Test Set では、アルゴリズムを適応するデータセットの分割方法について指定ができます。サンプリングの割合や具体的な行数を指定したりすることが可能です。
次にMericsの画面では、何を指標として最適化を目指すのかを指定することが可能です。AUCなのかLoglossなのか、Accuracyなのか…。分析の目的にあった指標を選ぶことで、それぞれのモデルで最適な値を目指して学習をしてくれます。
Feature Handlingの画面では変数の取り扱いをどうするかを選択できます。分析対象に各変数を入れるかどうか、欠損値だったらどう扱うかなど、処理を行うことができます。また、項目内の値も分布として表示されますので、
Feature Generationは、変数結合(Pairwise liner combinations / Pairwise polynomial combinations / Explicit pairwise interactions)  を選択することができます。これらは複数組み合わせることも可能です。ただし、お気づきのように変数組みあわせとなるので、元の変数が多い場合は、多数の変数組み合わせが発生するため、アルゴリズムを実行する際に時間がかかるので注意をしてください。

Feature Reductionは上記と反対で、変数を減らす方法を指定できます。分析対象との相関が強いもの、Tree-Based、PCAを使った変数選択などを利用できます。


続いて、Modelingの項目に移ります。

Algorithm では、Dataikuで事前に組み込まれたどのアルゴリズムを利用するかを選択することができます。Predictionで選べるモデルは11種類(Random Forest、XGB、ロジスティック回帰、SVMなど)あり、On/Offを選択するだけで適応できます。
また、選択したアルゴリズムの右側にはそれぞれのアルゴリズムのパラメータを指定することが可能です。パラメータを変更したい場合には役に立つかもしれません。


HyperParameters では、Grid Searchの反復回数や並列数の指定、クロスバリデーションのやり方などを指定することができます。
これら以外の項目もありますが、ここでは割愛します。

様々な選択項目を紹介して設定するところが多いなと感じられたかもしれません。
しかし指定できる内容はコードで指定する部分がカバーされていて、マウスのみで指定できるため、実際コードを書くよりはかなり楽に指定ができます。
最低限、Algorithm の項目で使いたいアルゴリズムを選ぶだけでも動かすことは可能です。そのような場合の結果はベンチマークとして利用するのもよいかもしれません。

では実際に動かしてみましょう。
必要な設定が完了したら、右上にある「Train」ボタンをクリックして実際にアルゴリズムを回してみましょう。

Trainボタンをクリックすると、画面が切り替わり、しばらくすると以下のように結果を返してくれます。
左ペインには指定したアルゴリズムが表示され、指定した評価メトリックが計算されます。適応したアルゴリズムの中で、一番良いアルゴリズムには、トロフィーマーク🏆が表示されます。
また、中央ペインのグラフは時間と評価メトリックのグラフが表示されます。その下には、各アルゴリズムの影響度の高い変数が表示されます。一つの画面で各アルゴリズムの結果が分かりやすく表示されます。

各アルゴリズムの詳細な結果を見る場合には、左ペイン中の各モデルをクリックしてください。
今回は一番スコアの良かった、Random Forestを参照しています。先ほどの設定と同様に、左ペインで様々な結果を表示できます。
(今回はすべての項目を紹介するのは難しいため、主だった項目のみ紹介します)

まずはDecision Tree。 決定木のように、どの項目が分岐になったのかを確認することができ、しかも改装をインタラクティブに深堀することが可能です。

続いて、Valuable Importance。 データサイエンスをやったことがある方であれば一番最初に見る綱目ですね。重要な変数になります。
次に Confusion Matrix(混合行列)。 これもよく見るのではないでしょうか。こちらも表を見るだけでなく、Cutoff部分をスライダーにて動かすことができるため、インタラクティブにAccuracyを計算することができます。

Lift Chart はチャートが2つあり、ランダムなパターン(線形のパターン)に対して今回のモデルがどのぐらいリフトするのかを見ることができます。

ROC curv。 ROC曲線といわれるチャートもDataikuでは結果として自動で作成してくれます。


これら以外でもGrid Searchの結果や、どの変数を適応したのかなど、適応したアルゴリズムに対して、様々な情報を自動的に計算をしてくれます。

実行時間は、データセットの大きさやどのぐらいアルゴリズムを選択したか、Dataikuを動かしているマシンのスペックにもよりますので一概に言えませんが、これだけの情報(結果)をDataikuは返してくれます。

結果をスコアリングしてみる

上記のようにどのアルゴリズムが良さげなのかがわかったので、実際にデータに対して適応をしてみます。

スコアリングさせたいアルゴリズムをクリックして、詳細画面を表示させます。
そして、右上に「DEPLOY」ボタンが表示されているので、クリックします。
次の画面で新しいモデルとしてDeployするか、もしくは既存のモデルをUpdateするかを選択します。ここでは、新しいモデルとしてDeployをします。(Deploy as a new retrainable modelを選択)
そうすると、以下のようなアイコンが表示されます。これで選択したアルゴリズムをDeployできました。
続いては、Deployしたアルゴリズムを使ってスコアリングをしてみます。
スコアリングは、Deployしたアルゴリズムを選択して、右ペイン中の「Score」 アイコンを選択します。
次の画面で左ペインにインプットのデータセットの指定、その下に予測するためのモデルを選択し、右ペインにアウトプットのデータセット名を入力します。(既存のデータセットを上書きしたい場合は、下のUSE EXISTING DATASETをクリックして、既存のデータセットを選択します)
選択し終わったら、右下のCRATE RECIPE をクリックします。

次の画面では内容の確認を行います。特に問題がない場合は、右下の「RUN」ボタンをクリックするとスコアリングが始まります。
実行が終了すると、Flow上では以下のように表示されます。
結果のデータセットを見てみると、右側のほうに数列結果が追加されています。(Proba_0,Proba_1,Prediction) 

これでスコアリングまでが終了しました。

再度モデルを調整しなおしたい場合

モデルを評価したり、スコアリングの結果をやり直ししたい場合が出てくるかもしれません。
もちろん、その場合もやり直しをすることが可能です。

Deployしたモデルを再度クリックをします。
現在スコアリングに適応がされているモデルが表示されます。右上の「VIEW ORIGINAL ANALYSIS」をクリックすると、上記のアルゴリズムを設定した画面に戻ります。ここで上記と同様にアルゴリズムを選択したり、パラメータを変更したりしてみます。
変更が完了したら、前回と同様に右上の「TRAIN」ボタンをクリックします。

その後、結果が返ってきますが、異なる点が出てきます。それは、実行履歴が残るという点です。
以下の赤下線のように、SESSION1とSESSION2の項目ができています。SESSION1は初回実行、SESSION2は今回実行した結果です。

アルゴリズムのパラメータ調整や新しいアルゴリズムの適応など何回かやり直しても、前回の結果が残っているため、比較もしやすいし、元にも戻れます。

新しい結果をもとに再度スコアリングしたい場合は、上記の説明のように、再度スコアリングの操作をしてもらえれば結果が適応されます。

まとめ

ここまで、分析の醍醐味であるアルゴリズムやパラメータの設定・選択、実行、スコアリング をDataikiuでどのように行うのかを紹介しました。

説明上、複数の画面を説明をして長い説明になっていますが、実際にやってみると、とても簡単に複数の機械学習の実行がされ、スコアリングも容易に実行ができることが実感できると思います。
RやPythonなどのコードを書くよりも簡単に利用できます。

ぜひ触ってDataikuの便利さを体感してみてください。

[フリーエディション]


0 件のコメント: