●Driverless AIのの利便性を高める機能

前回は、H2O.ai社が提供する、機械学習をプログラミングなしで自動化する製品「H2O Driverless AI(以下、Driverless AI)」の概要とデータセットの確認とデータ分析の方法を説明しました。今回は応用編として、Driverless AIをさらに深く利用する機能を紹介します。

○Driverless AIの効果的な利用方法

最初に、今回の内容で実現できるDriverless AIの効果的な使い方を説明します。

Driverless AIを使うと、「現状の手持ちのデータで分析課題をクリアできそうか」「数ある中でどの分析課題にまず取り組めばよさそうか」といった、データ分析の検討段階における判断スピードを高める効果が期待できます。さらに、今回紹介する「MLI」からその予測モデルの課題もみえてくるため、初期の判断材料として有効です。

また、PythonやRなどの他の機械学習ツールを使って詳細な前処理やデータ分析を行いつつ、並行してDriverless AIの結果をベンチマークとして利用する、といったことも可能になります。

他のツールでデータの前処理をした効果をDriverless AIで確認する、Driverless AIによる予測モデルの機械学習パラメータや特徴量生成の手法を参考に、他ツールによる分析の精度を高めていく、など、お互いの成果をお互いに活用していくプロセスは効果的です。

加えて、後述する「カスタムレシピ」で機械学習アルゴリズムや特徴量生成手法の性能を検証してから他ツールでの分析に利用するなども可能です。Driverless AIを利用すると、機械学習アルゴリズムと特徴量の生成・選択をすべて絡めた実践的な性能検証を手早く実行できるようになります。

○MLI(Machine Learning Interpretability)

それでは、順を追って各機能について説明していきます。

Driverless AIの機械学習機能「Experiment」では、特徴量エンジニアリングと高性能な機械学習アルゴリズムを駆使して、できるだけ精度の高い予測モデルを生成するように動作します。このため、結果の予測モデルの構造は複雑になりがちで、モデルがどのような仕組みで動いているのかを直観的に理解しづらくなります。

Driverless AIでは、この予測モデルの解釈を手助けするための機能「MLI」を用意しており、この中で予測モデルの動作の特徴をさまざまな手法を使って可視化してくれます。

図1: MLIのサマリー画面

予測モデルとデータ変数の関係性を可視化:

例えばMLIでは、生成された予測モデルから、変数の重要度・Shapley値・Partial Dependence Plotの指標やグラフを計算して提供します。これらの指標は、「データの各変数がモデルの予測結果にどれだけの影響を与えたか」「各変数の値が変動したら予測結果はどのような値を示すか」など、予測モデルと各データ変数の関係性を説明してくれます。

図2: 変数の重要度

図3: Shapley値

図4: Partial Dependence Plot

代理モデルによる説明:

さらにMLIでは、データセットと予測結果の値から、より単純な構造の予測モデル(代理モデルとよばれます)を生成する機能が備わっています。

決定木、ランダムフォレスト、LIME(局所的な一般化線形モデル)の代理モデルが生成され、その挙動の可視化情報が提供されます。代理モデルは、元の予測モデルを模倣するように学習が行われるため、元のモデルのおおよその動作のイメージをつかむことができます。

また、代理モデルで元のモデルの動きをどの程度再現できたかを表す指標も確認できるので、これは代理モデルの単純なアルゴリズムでも十分精度が出るのでは、といった予想もつけられます。

図5:代理モデルによる可視化情報

予測モデルの「公正さ」を説明:

Driverless AIのバージョン1.7.1では「Disparate Impact Analysis」という機能が追加されました。これは、生成されたモデルが各データ変数に対してどれだけ「公正な」モデルかを表す機能となります。例えば、性別や人種など、分析課題によっては不適切な変数の値に依存して、予測モデルが明らかに偏った判定を返していないか、といった判断材料を提供してくれます。

図6: Disparate Impact Analysis

What-If分析機能:

さらにバージョン1.8.1では、「Sensitivity Analysis」という機能が追加されました。これは、データの値を変動させて予測結果がどう変化するかを検証できる(What-If分析)機能になります。フィルタリングの機能を使い、複数データに対してこの検証を行うこともできます。

図7: Sensitivity Analysis

このように、MLIの機能を利用すると、さまざまな角度から予測モデルに対する理解を深めることができます。また、明らかにおかしな変数の影響が強くないか、ある集団に偏ったモデルになっていないかなど、現状の予測モデルの改善点の洗い出しにも利用できます。

●Driverless AI 1.7.0から導入された目玉機能「BYOR」

○プロジェクト機能

Driverless AIを利用しているうちに、データセットやExperimentの数が増え、管理が大変になってくることと思われます。このため、関連するデータセットやExperimentをプロジェクトとしてまとめる機能が備わっています。

図8: プロジェクト画面

ここでは、Experimentの実行、Experimentの精度によるソート、複数の予測モデルに対する予測精度の計算、Experiment同士の比較、などの機能が利用できます。

図9: Experimentの比較(最大3つまで)

○予測モデルのデプロイ

Experimentの完了画面では、外部環境でモデルを実行できるモジュール(Pipeline)を取得できますが、これを手軽にWeb API形式でデプロイできる機能も備わっています。デプロイ先は、Driverless AI環境もしくはAmazon Lambdaの環境となります。

図10: デプロイ実行結果画面

デプロイ後は、外部環境からのWeb APIアクセスに対して予測結果を返すことができます。

図11: Web APIの動作検証(curlとPythonで検証)

○Python, Rクライアント

Driverless AIの操作を、ウェブブラウザ経由ではなくプログラムコードを介して行いたい場合は、PythonやRのクライアントを利用するとよいでしょう。

PythonやRの実行環境にクライアントをインストールすることで、Driverless AI環境にアクセスでき、ファイルアップロード・Experiment実行・予測結果のダウンロードなど、Driverless AIの大半の処理をプログラムコードから実行できます。

この機能により、Experimentの設定を少しずつ変えながら繰り返し学習を実行する、日々生成されるデータを定期的にDriverless AIに読み込ませてモデルの再学習を行う、などの処理を自動化できます。

図12: Pythonクライアントの機能検証(1)(接続・データアップロードなど)

図13: Pythonクライアントの機能検証(2)(Experiment実行・結果確認)

○BYOR(Bring Your Own Recipe)

「BYOR」は、Driverless AIのバージョン1.7.0から導入された目玉機能です。

BYORの機能を利用すると、Experimentにて使用される、特徴量エンジニアリング手法(Transformer)・機械学習アルゴリズム(Model)・モデルの精度評価指標(Scorer)のモジュールを、ユーザがPythonのコードで独自に開発して自由に組み込むことができます。これらのモジュールは「レシピ」とよばれています。

このレシピの実行に必要なPythonのパッケージがある場合は、レシピのコードの中で指定すればインストールされます。また、標準のレシピを含め、有効化するレシピは各Experimentにて個別に指定できるため、特定のデータへの利用に特化したレシピの導入なども特に問題ありません。

BYODの機能により、最新の機械学習アルゴリズムの性能を試したい、データ加工やデータ分析に関する自社のノウハウを組み込みたい、「この日付が日本の祝日か判定する」のような地域に特化した特徴量生成処理を組み込みたい、など、各ユーザのニーズにあわせた柔軟なカスタマイズができます。

H2O.ai社の公式GitHubにて、100を超えるカスタムレシピや、レシピの書き方やテンプレートなどが公開されていますので、まずはそちらをご確認いただき導入をお試しいただければと思います。今回はBox-Cox変換とよばれる数値変換(特徴量生成)のレシピを導入しました。

図14: 公式GitHubのカスタムレシピ(Box-Cox変換)

カスタムレシピの追加は、Experiment設定の「Expert Settings」画面で行います。

BYOR機能のボタンを押して対象のURLを張り付けると、自動的に必要機能のインストールと動作テストのプロセスを実行して、該当レシピを導入してくれます。

(なお、Expert SettingsはExperimentの詳細設定画面です。GPUの利用有無・各機械学習アルゴリズムの利用有無・ハイパーパラメータの値やその探索範囲の指定など、かなり細かい設定調整ができますので、通常の「つまみ」の調整で満足できない場合はこちらを利用してください)

図15: Expert Settings

カスタムレシピの導入・有効化後に実行したExperimentの結果が下記になります。カスタムレシピで生成された特徴量が重要変数として使われており、モデルの予測精度も若干上昇していました。

図16:カスタムレシピにより予測精度が向上

なお、BYORを利用してもExperimentの動作プロセス自体は変わりません。このため、カスタムレシピによる機械学習アルゴリズムや特徴量も、Experimentプロセスの中で有用とみなされたものだけが最終的な予測モデルに使われることになります。

このように、データ分析の柔軟性が格段に広がるBYOR機能ですが、こちらを利用すると、MOJO形式のPipeline取得(Python形式は取得可)・デプロイ機能・MLIの一部機能など、機能の利用に一部制限が発生します。

また、カスタムレシピの動作の安全性や正確性など、導入に関しては自分で責任を持つ必要がある、といった懸念事項はあります。いくつかの有用なカスタムレシピは、改良を加えつつ標準のレシピとして取り入れていく方針とのことですので、そちらを待つのも手かもしれません。

なお、バージョン1.8.1からはデータ取得のBYOR機能が追加されています。PythonコードをDriverless AIに読み込ませることで、柔軟なデータ取得や前処理を行うことができます。アップロード済みのデータに対しても加工できるので、データを後で少し修正したくなった場合にも便利な機能になっています。

図17:データ取得のBYOR画面(Live Code)

以上、Driverless AIをさらに深く使いこなすための機能や利用方法を紹介しました。興味を持たれた場合は、トライアルなどで機能を試してみていただければと思います。

著者プロフィール

○有馬 直尭

ネットワンシステムズ株式会社

ビジネス開発本部 第1応用技術部

2018年入社。前職にて運用自動化への応用を目的とした機械学習の検証を担当していた縁で、入社後は製造業におけるデータ分析PoC案件に携わる。現在は主にデータ分析関連ツールの調査や検証に従事している。