2020年4月18日土曜日

Dataiku Version7 新機能 : Individual explanations / 解釈可能な機械学習

3月中旬にリリースされた、Dataiku Version7でリリースされた機能紹介の3つ目です。
今回は、「Interpretable Machine Learning = 解釈可能な機械学習」についてです。

機械学習の結果解釈

少し前までは、「機械学習はブラックボックスだ。(でも精度は良い)」という話が多く聞かれました。全体的なモデルの精度と予測はできるが、個別の結果(例えばユーザーごと)でどの変数が効いているのかを説明するのは難しい状態でした。

ただ、一昨年、昨年あたりから潮目が変わってきており、こちらのドキュメントが公開されてから機械学習の結果解釈について議論が進められているようです。
Interpretable Machine Learning
https://christophm.github.io/interpretable-ml-book/
日本語では、Interpretable Machine Learning についてはわかりやすいかと思います。

機械学習と解釈可能性
https://speakerdeck.com/line_developers/machine-learning-and-interpretability

Dataikuでの機械学習結果の解釈

Dataikuでの機械学習結果の解釈については、個別の対象(例:ユーザーIDや端末番号)など予測をしたい対象に対して、どのような変数が影響があったのか?というアプローチでUIを構成されています。では、実際の画面を見ていきましょう。

どこから確認するか

機械学習のモデルを作成したVisual Recipeから確認ができます。

Visual Recipeをクリックして、左上のView Original Recipeをクリックします。Original Recipeを表示すると、作成したモデル一覧が表示されています。

今回は一番上のRandom Forestで確認をしてみましょう。
Random Forestをクリックすると次のページに移動をしてみましょう。

左ペインのメニューの中に、「Individual Explanation」のメニューをクリックすると、上記のような画面が表示されます。初期表示だと、下の個別結果は表示されていませんが。右上にある「COMPUTE」をクリックすることで結果が表示されます。

ここでの大きな特徴は、上のグラフの両側をスライダーのように動かせ、予測確率が高いグループと少ないグループから個別の対象を抜き出すことが可能な点です。
スライダーで選択したい部分を選び、右上のCOMPUTEをクリックすると、下の画面に個別の結果が表示されます。

右側が予測確率が高い個別の対象で。左側が確率が低い対象になります。
(今回利用しているデータは、Eコマースの購買データを使って予測をするモデルになります。この数字は個別の顧客IDです)
以下の画面にもありますように、個別対象についてそれぞれ重要な変数を表示してくれます。
また、この対象は自由に選択することが可能です。

どのようなときに使えるか?

多くの機械学習プロジェクトでは、モデル精度を求められると思いますが、実際に現場や経営陣に説明をする際に、特定の対象(例えば特定の顧客)でどのような変数が重要だったのかを聞かれる場合もあるかと思います。
その際にこの機能を使って説明ができるかと思います。

聞くよりも実際に触ってみたほうが実感が湧くかと思いますので、ぜひ触ってみてください。フリーエディションでも十分に利用することが可能かと思います。

[フリーエディション]

2020年4月6日月曜日

Dataiku Version7 新機能 : Github(Git)との連携

Dataikuが3月の中旬に新しいバージョンアップされました。前回は、Interactive Statistics を紹介して、DataikuのEDA(Exploratory Data Analysis)の機能が大幅に拡充されたのを紹介しました。

今回はGithubとの連携について紹介をします。
※ Github、Gitの使い方についてこちらでは紹介いたしません。こちらをご参考ください。

GithubへのSSHキーの設定

まずはGithubのアカウントの取得とSSHキーの設定をしてください。
GithubのSSHキーの設定の仕方はこちらになります。

サーバーの設定をしてからDataikuを起動

私はハマってしまったのですが、Dataikuが動いているサーバーのSSHキー設定が完了してから、Dataikuを起動してください。私の場合はそこがわからなかったため、Dataikuを先に起動し、後からSSHキーを設定したために、後述のRepositoryを設定する際にエラーが発生してハマってしまいました。

GithubへPush・Pull

では、実際にDataikuとGithubを連携してみましょう。
Githubの貢献したいRepositoryに移動し、以下のSSHのCloneアドレスを取得しましょう。
次に、Dataikuに移動し、連携させたいProjectを選択します。ツールバー>︙>Version Control を選択するとGithubと連携ができる画面に遷移します。
Add Remoteを選択すると、先程取得したアドレスを入力する画面が表示されます。
この入力画面で何もエラーがでなければ、無事にGithubの該当Reposirotyと接続ができています。ちなみに私はここでエラーに遭遇しまして、Permission Denied が表示されました。
無事にGithubに接続できたら、以下のような有効化された画面が表示され、設定したRepositoryにPush、Pullができるようになります。
また、新しいbranchを作成したい場合は、master▼をクリックすると、branchを作成できるメニューが表示されます。Create new branch をクリックします。
ここで表示されている、Duplicate project ~ を選択すると、次の画面に遷移します。この選択は、branch用に新しいProjectを作成するという意味になります。
また、Use current project ~ を選択すると、いま表示しているProjectで新しいbranchを作成することになります。

新しいbranchが作成されると、Project名の隣にbranch名が表示されます。



では、新しいbranchを作ってみたところで、実際にGithubの該当RepositoryにPushをしてみましょう。以下の画面まで行き、Pushをクリックしてください。
そうすると、メッセージが表示され、問題なくPushができたことがわかります。
Github側の画面に行くと、以下のように表示され、無事にPushができました。

Pullについても同様で、メニューリストからPullを選択すると、変更された内容が現在表示しているProjectに反映されます。

想定される使い方

Dataikuのコンセプトは、複数人(データエンジニア・マーケティング・データサイエンティスト等)が同時に扱えるというコラボレーションを重視した製品です。
反面、少し試したいこと(新しいデータセットを追加したり、モデルを変更したり等)については、現在の環境を直接変更することで行うしかありませんでした。こういった変更が後工程の人に影響を及ぼすことも容易に想像できます。

そういった事故を防ぐ、少し試してみたいという際にこのGithubの連携機能を使ってみることができそうです。

例えば、データセット・モデルのチューニングをする新しいbranchを作成して、試してみて問題なければMasterにMerge、MasterをDataikuのProjectにPullして使うという使い道がありそうです。

聞くよりも実際に触ってみたほうが実感が湧くかと思いますので、ぜひ触ってみてください。フリーエディションでも十分に利用することが可能かと思います。

[フリーエディション]