Dataikuによる予測モデルの維持と改善


1つのモデルを管理するのはとても簡単です。しかし、何十ものモデル、あるいはそれ以上のモデルを管理するにはどうすればいいのでしょうか？フランスの銀行[FLOA](https://www.floabank.fr/)のシニアデータサイエンティストであるVincent Gallmann氏は、Dataikuを使ったデータサイエンスプロジェクトの管理について、2021年のProduct Daysセッションでこの質問に答えました。
[→2021 Dataiku Product Daysのビデオを視聴する: Managing Data Science Projects Using Dataiku (英語)](https://content.dataiku.com/managing-ds-projects-using-dataiku)

##課題から始める
機械学習モデルは、多くの場合、将来のデータを予測するように設計されています。しかし、多くのモデルは、急速に進化する環境において新しいデータセットでテストされると、時間の経過とともに予測性能が低下します。これはモデルの劣化と呼ばれています。

残念ながら、ワインとは異なり、予測モデルは年を経るごとに良くなるものではありません。そのため、高い予測性能を維持するためには、モデルをリフレッシュすることが重要です。静的なモデルでは、常に新しいデータを入手しなければ、出現したり進化したりするパターンに追いつくことができません。


このような劣化現象には、主に2つの原因が考えられます。

1. 新規顧客の特性の変化
2. COVID-19のような外的要因

幸いなことに、すべての問題には解決策があります。今回のケースでは、この問題には3つの解決策があります。

##1. ドリフト検知
[ドリフト検知](https://blog.dataiku.com/why-is-my-data-drifting)は、モデルの性能が低下しているかどうかを判断する最初の方法です。ドリフトには2つのタイプがあります。

1つ目のタイプは概念的なもので、対象となる変数の統計的特性の変化を検出することです。例えば、ある企業がスパム発信者を検出したいと考えているとします。最初は、送信されたメッセージの数が5つ以上であれば、スパム発信者と判断するというルールでした。しかし、数ヶ月後、その会社はチャットボットを開発しました。すると、メッセージ数が増えたため、スパム発信者数が激増してしまったのです。この場合、スパム発信者の定義を進化させなければなりません。

ドリフトの2つ目のタイプは、最も一般的な[データドリフト](https://blog.dataiku.com/a-primer-on-data-drift)です。これは、独立変数の統計的特性の変化を検出することです。そのためには、トレーニングデータセットと新しい最新のデータを比較する必要があります。比較の結果、明確な違いが見られた場合、モデルのパフォーマンスが低下している可能性が高いと考えられます。

しかし、注意が必要です。ドリフトが大きいからといって、必ずしもモデルの性能が低下するわけではありません。それは、その特徴がモデルの中でどれだけ重要かによります。Dataikuでは、ドメイン分類法を使用したプラグインのおかげで、ドリフトの大きさを定量化できます。このプラグインは、元のデータセットと開発データセットを識別するためのモデルを学習させます。言い換えれば、2つのデータセットを積み重ねて、データの起源を予測することを目的とした分類器を学習させます。このモデルの性能は、ドリフトレベルの指標として考えることができます。モデルでドリフトを検出したら、Dataikuのシナリオ機能を使って2つのアクションを起こすことができます。1つ目は、メールによるアラートを受け取ることです。2つ目は、最新のデータを使ってモデルの再トレーニングを行うことです。
[→Technical Ebook: A Primer on Data Drift & Drift Detection Techniques（英語）をダウンロード](https://pages.dataiku.com/data-drift-detection-techniques)


##2. AutoML
[AutoML](https://blog.dataiku.com/is-all-automl-created-equal)とは、モデルの学習を自動化するためのものです。Dataikuの[シナリオ](https://knowledge.dataiku.com/latest/courses/automation/scenarios-summary.html)を使用すると、学習用データセットに最近のデータを含めることによって、自動的にモデルを再学習するように設定することができます。これにより、例えば、お客様の行動の変化を捉えることができます。
モデルバージョンが構築できたら、次のステップは、現在のライブモデルバージョンとメトリクスを比較することです。ここで、Dataikuの新機能が活躍します。[メトリクスとチェック](https://knowledge.dataiku.com/latest/courses/automation/metrics-checks-hands-on.html)です。メトリクスに基づいてアクションを起こしたいときにとても便利です。例えば、メトリクスとチェックでモデル間のばらつきが大きいと判断された場合、本番環境のモデルを更新することを考えることができます。
[→EBOOK "The Importance of AutoML for Augmented Analytics"（英語）をダウンロード](https://pages.dataiku.com/automl-augmented-analytics)

##3. A/Bテスト
[A/Bテスト](https://blog.dataiku.com/its-easy-as-ab...c-a-refreshing-approach-to-a/b-testing)とは統計学的なプロセスで、ベースラインの状態に修正を加えた場合に、ある指標に与える影響を測定することができます。A/Bテストには、コントロールグループ、ベースライン、トリートメントグループ、修正、そして確認したい指標などを用います。例えば、ワクチンの効果を測定したいとします。注射をしないコントロールグループと、ワクチンを注射するトリートメントグループを用意し、トリーメント率を確認します。

実際には、モデルのオフライン性能とオンライン性能の間には、かなりの乖離があることが多い。そのため、テストを予測環境で行うことは非常に重要です。このオンライン評価は、候補モデルが実際のデータを処理するときにの振る舞いについて、現実に最も近いフィードバックを提供します。実際、今日のお客様が昨日のお客様と同じように行動するという保証はありません。

例えば、過去6ヶ月間に予測に使った予測モデルを持っていて、新しく作ったモデルが現在のモデルよりも良い予測をするかどうかをテストしたいとします。これにはA/Bテストが有効です。両方のモデルをライブ環境にデプロイしますが、リクエストは2つのモデルに分けます（50:50）。
必要な期間テストを行います。決定的な結果が求められ、新しいモデルがより効果的であることがわかったら、古いモデルを置き換えようとを考えることができます。この戦略をDataikuで設定するのは簡単です。パラメータ（または確率）を選択し、2つのモデルの分析からの結果を記録することができます。

---------------------------------------
[Dataiku Product Daysの完全版ビデオ（英語）](https://content.dataiku.com/managing-ds-projects-using-dataiku)をご視聴ください。
機械学習（ML）プロセスのさまざまなステップの概要、さまざまなA/Bテストの例などを紹介します。

---------------------------------------

原文：[*Maintaining and Improving Predictive Models With Dataiku*](https://blog.dataiku.com/maintaining-improving-predictive-models)