MLOps: Dataikuにおけるチャンピオン／チャレンジャーのモデル評価

[MLOps](https://blog.dataiku.com/the-7-myths-of-mlops)は、AI/ML分野でますます広く実践されるようになってきました。MLOpsの具体的な実現方法は組織によって異なりますが、MLOpsで重要なことは、デプロイ後のモデルを適切に監視し、必要に応じてそのモデルを調整していくことです。

なぜなら、データやビジネスの要件が変化すれば、それに応じて本番環境のモデルを更新・調整し、ビジネスの成果をもたらし続けるようにする必要があるからです。

特に、チャンピオン/チャレンジャーのモデルによる評価は、本番環境のモデル性能を比較するアプローチとしてよく知られています。例えば、顧客の解約モデルを構築し、本番環境にデプロイしたものの、時間が経つにつれてパフォーマンスが低下しているとします。このとき、パフォーマンスを再調整する必要があります。最新のデータでモデルを再トレーニングしたり、新しいアルゴリズムを活用したりすることを検討するでしょう。新しいアプローチ（チャレンジャー）で作成したモデルは、本番環境にデプロイする前に、既存（チャンピオン）のモデルと比較する必要があります。

## チャンピオン／チャレンジャーのプロジェクト例

Dataikuで、チャンピオン/チャレンジャーを評価する方法の1つを紹介します。この例では、顧客の解約率を予測しており、1つのモデルが本番環境にデプロイされています。含まれるデータは、3種類あります。モデルの学習に使われたトレーニングデータセット、モデルによって将来の値を予測するラベルのないデータセット、時間の経過とともに未知のデータに対するモデルのパフォーマンスを測定する検証データセットです。Dataikuの「モデル評価ストア」では、検証データを使ってこのモデルのパフォーマンスを測定します。そのため、検証データセットは、トレーニングデータセットとは異なるデータを使います。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/01da182f-f659-6e32-dc84-84043d893c03.png)


現在採用しているモデルは、XGBoostのモデル（チャンピオン）です。今回のチャンピオン/チャレンジャーの評価では、新たに開発したランダムフォレストのモデル（チャレンジャー）と比較します。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/68aa8ea5-0950-1713-424d-c676bbe0a491.png)


チャンピオンとチャレンジャーの評価には、シャドーテストを使います。つまり、同じデータで両方のモデルを評価し、チャレンジャーのモデルがチャンピオンのモデルを上回った場合にのみ、モデルを変更します。

[Dataikuの「モデル評価ストア」](https://blog.dataiku.com/easily-compare-and-evaluate-models-in-dataiku)（パフォーマンス指標とデータドリフトのスコアを計算することで、モデルのパフォーマンスを経時的に追跡できる機能）を使って、チャンピオンとチャレンジャーのモデルにおける、パフォーマンスの違いを視覚的に検証しました。同じ検証用データセットで両モデルを評価したことで、パフォーマンスを正確に比較できました。その結果、チャレンジャーモデルがすべての指標で優れていることがわかります。Dataikuのモデル評価ストアは、トレンドや好ましくないモデルの挙動まですぐに検出できるので、MLOpsのフレームワークに不可欠な要素となっています。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/9c15a31c-abc1-b75a-8de8-931a6b214934.png)


この「モデル評価ストア」で、モデルを比較して、可視化された詳細なパフォーマンスをすぐに確認できます。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/f57f2a69-3055-87f9-572c-936af21c0192.png)


モデルは、性能を評価するだけでなく、モデルが倫理的であり、ビジネスの意思決定者が解釈可能であることが重要です。インタラクティブなwhat-if分析、可視化された特徴量の重要性などを通じて、Dataikuは、信頼性や透明性があり、偏りのないモデルを構築できるようにすることを支援しています。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/a01fc9b3-7388-ff24-3591-412f92053d3a.png)


## チャンピオン／チャレンジャーの評価の自動化

チャレンジャーのモデルは、チャンピオンのモデルよりも優れていることが確認できたので、チャレンジャーのモデルに変更していきましょう。さらに、チャンピオンのモデルと将来のチャレンジャーのモデルを継続的に比較したい場合は、[Dataikuの「シナリオ」](https://doc.dataiku.com/dss/latest/scenarios/definitions.html?_gl=1*1rhu1v9*_ga*MTE5NTU4NzQxNS4xNjY5NTE0NTk1*_ga_B3YXRYMY48*MTY3MjI5MDY1Ny45Mi4wLjE2NzIyOTA3MTEuNi4wLjA.)を使って自動化できます。以下の例では、チャンピオンのモデルとチャレンジャーのモデルを同じ検証データで評価し、そのパフォーマンスを比較し、それに応じて新しいチャンピオンのモデルを決めていくという、ステップを繰り返します。指標はAUCで比較し、チャンピオンのモデルよりもチャレンジャーのモデルの方が優れている場合のみ変更するPythonコードが表示されています。このシナリオを時間単位で実行することで、よりパフォーマンスの高いモデルを本番環境に昇格させるプロセスを自動化することができます。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/95066654-72d2-c33a-a4a7-2540b564fbce.png)


![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/584bfa51-0eb0-c0b9-bf79-dd6ece9dda0e.png)


## ヒューマン・イン・ザ・ループによるアプローチ

次々と自動化したいところではありますが、人間が介入すれば、MLOpsのフレームワークにガバナンスとコントロールが加わります。チャンピオンとチャレンジャーの評価を自動化するこの例では、最後のステップでシナリオのレポートを作成し、関連するステークホルダーにメールを送信しています。

具体的には、もしチャレンジャーがチャンピオンを上回った場合、チャレンジャーのモデルにすぐに変更するのではなく、メールで関係者に通知します。変更するかどうかの最終判断は人間が下せる仕組みとなります。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/af912340-5e27-3b35-397c-f3ae395e9175.png)



## まとめ

Dataikuのエンド・ツー・エンドのプラットフォームは、MLOpsのフレームワークを念頭に置いて設計されています。今回の例は、チャンピオン/チャレンジャー評価に対する、さまざまなアプローチのうちの1つに過ぎません。自動化シナリオで処理することもできますし、人間がループに入り[ガバナンス](https://www.dataiku.com/product/key-capabilities/governance/?_gl=1*1rhu1v9*_ga*MTE5NTU4NzQxNS4xNjY5NTE0NTk1*_ga_B3YXRYMY48*MTY3MjI5MDY1Ny45Mi4wLjE2NzIyOTA3MTEuNi4wLjA.)をかけてコントロールした運用も可能です。

どのようなアプローチを選択するにしても、モデル評価ストアやシナリオなどの機能は、ニーズに合わせてカスタマイズして使用することができます。

## DataikuのMLOpsをもっと知りたい方はこちら

このウェビナー（英語）では、DataikuのMLOpsとガバナンスのフレームワークを使用した、エンドツーエンドのMLパイプライン例（不正検出のユースケース）を取り上げています。MLOpsのプロセスをスムーズに進めるために、Dataikuをどのように活用いただけるか、こちらの[動画](https://www.dataiku.com/learn/webinars/derisk-ai-efforts/?_gl=1*zrt25r*_ga*MTE5NTU4NzQxNS4xNjY5NTE0NTk1*_ga_B3YXRYMY48*MTY3MjI5MDY1Ny45Mi4wLjE2NzIyOTA3MTEuNi4wLjA.)で解説しています。

原文: [MLOps: Champion/Challenger Model Evaluation in Dataiku](https://blog.dataiku.com/mlops-champion-challenger-model-evaluation)