ホームページ >テクノロジー周辺機器 >AI >PythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフロー

PythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフロー

William Shakespeare
William Shakespeareオリジナル
2025-03-08 10:55:11828ブラウズ

なぜMLモデルを監視していますか?

機械学習プロジェクトは反復プロセスです。 Jupyterノートブック内の成功したモデルで停止するだけではありません。モデルがオンラインになった後も停止することさえありません。人々はそれにアクセスできます。展開後でも、開発フェーズ中と同じように機能するように、常にベビーシッターをしなければなりません。

Zillowのスキャンダルは、そうでない場合に何が起こるかの完璧な例です。 2021年、Zillowは、住宅価格を推定した機械学習モデルのために、3億4,400万ドルを失いました。 Zillowは7000戸以上の家で過払いで、はるかに低い価格でオフロードする必要がありました。同社は独自のモデルによって「破壊された」ため、労働力を25%削減する必要がありました。

これらのタイプのサイレントモデル障害は、実際のモデルでは一般的であるため、生産パフォーマンスが低下する前に絶えず更新する必要があります。そうしないと、企業の評判、利害関係者との信頼、そして最終的にはポケットに損害を与えます。

この記事では、nannymlを展開した後の機械学習モデルを監視するためにエンドツーエンドのワークフローを実装する方法を教えてください。

nannymlは、展開後の機械学習に焦点を当てた成長するオープンソースライブラリです。生産ML環境で発生するあらゆる種類の問題を解決するための幅広い機能を提供します。いくつか名前を付けるには:

ドリフト検出:トレーニングと生産データの間のデータ分布の変更を検出します。
  • パフォーマンスの推定:即時の地上真実なしの生産におけるモデルのパフォーマンスを推定します。
  • 自動レポート:
  • 展開されたモデルの健康とパフォーマンスに関するレポートを生成します。 アラートシステム:
  • データドリフトとパフォーマンスの問題のアラートを提供します。
  • モデルの公平性評価:バイアスを防ぐためのモニターモデルの公平性。
  • MLフレームワークとの互換性
  • 互換性:すべての機械学習フレームワークと統合。
  • ユーザーフレンドリーインターフェイス:おなじみのscikit-learnのようなインターフェイスを提供します。
  • これらの機能の技術的なビットを1つずつ学びます。 前提条件の概念
  • ロボットマスタリングアーチェリーの類推を通じて、モデルモニタリングの基本的な概念を学びます。 私たちの類推で:
  • ロボットは、機械学習モデルを表します
  • ターゲットは、モデルの目標または目的を表します。
これは、矢印が雄牛の目にどれだけ近いか、中央の赤い点に基づいて計算されるため、これは回帰の問題であると言えます。

ロボットの物理的属性や環境条件(風や天候など)に加えて、矢印と弓の特性は、モデルの特徴または入力変数です。

それでは、始めましょう。

データドリフト

弓、矢印、ターゲット(データの準備など)を注意深く準備したと想像してください。多くのセンサーとカメラを備えたロボットは、トレーニング中に10000回撮影します。時間が経つにつれて、それは印象的な頻度で雄牛の目に当たり始めます。私たちはパフォーマンスに興奮しており、ロボットとそのコピーをアーチェリー愛好家に販売し始めます(モデルの展開)。

しかし、すぐに、苦情の流れが得られます。一部のユーザーは、ロボットにターゲットが完全に欠落していると報告しています。驚いたところ、私たちはチームを集めて何がうまくいかなかったかを話し合いました。

私たちが見つけたのは、

データドリフトの古典的なケースです

。ロボットが動作している環境は変化しました - さまざまな風のパターン、さまざまな湿度レベル、さらには矢の物理的特性(重量、バランス)と弓の変化さえあります。 入力機能のこの現実世界の変化は、入力データ、特に機能間の関係、時間の経過とともに変化するときに機械学習モデルがどのようにパフォーマンスを下げるかと同様に、ロボットの正確性を捨てました。 コンセプトドリフト

これらの問題に対処した後、ロボットの新しいバッチをリリースします。しかし、数週間で、同様の苦情が流れます。困惑して、私たちはより深く掘り下げ、ターゲットが頻繁にユーザーに置き換えられていることを発見します。

これらの新しいターゲットのサイズは異なり、さまざまな距離に配置されます。この変更には、ロボットの撮影技術に対する別のアプローチが必要です。これは、

コンセプトドリフトの教科書の例

機械学習の用語では、入力変数とターゲットの結果が変化すると、概念ドリフトが発生します。私たちのロボットの場合、新しいタイプのターゲットは、変化に関してトレーニングされたデータのダイナミクスを大幅に調整する必要があるのと同じように、撮影に異なる撮影に適応する必要があることを意味しました。

概念とデータドリフトのより現実世界の例

ポイントを家に持ち帰るには、データと概念のドリフトがどのように発生するかについての実際の例をいくつか見てみましょう。

データドリフトの例

  1. クレジットスコアリングモデル:経済的変化は、人々の支出と信用習慣を変えます。クレジットスコアリングモデルが適応しない場合、不当な拒否または危険な承認のいずれかにつながる可能性があります。
  2. ヘルス監視システム:ヘルスケアでは、ユーザーの人口統計やセンサーのキャリブレーションの変化は、患者のバイタルを監視するモデルからの健康評価の不正確さにつながる可能性があります。
  3. 小売需要予測:
  4. 小売業では、消費者の行動と傾向の変化は、過去の販売データベースのモデルを現在の製品需要の予測に効果的ではないようにする可能性があります。 コンセプトドリフトの例

ソーシャルメディアコンテンツのモデレーション:
    コンテンツモデレートモデルは、進化する言語と文化的現象に常に適応する必要があります。
  1. 自動運転車:自動運転車のモデルは、最高のパフォーマンスのために地域ベースの交通ルールと条件のために更新する必要があります。
  2. 詐欺検出モデル:
  3. 詐欺的な戦術が進化するにつれて、詐欺検出モデルは、新しいパターンを特定するために更新が必要です。 さあ、エンドツーエンドのML監視ワークフローを考えてみましょう
  4. エンドツーエンドMLモデルの監視ワークフローはどのように見えますか?
  5. モデル監視には、MLエンジニアが繰り返し従うべき3つの主要なステップが含まれます。 1。パフォーマンスの監視
  6. 最初のステップは、もちろん、展開のモデルパフォーマンスに注意を払うことです。しかし、これは言うよりも簡単です。

生産中のモデルにグラウンドトゥルースがすぐに利用できる場合、モデルの動作の変化を簡単に検出できます。たとえば、ユーザーは、ロボット/アーチェリーの類推で何が悪いのかをすぐに伝えることができます。なぜなら、彼らはターゲットを見て、ロボットが見逃したことを伝えることができるからです。 対照的に、ローンのデフォルトを予測するモデルの例を挙げてください。このようなモデルは、ユーザーが次の支払いでデフォルトであるかどうかを予測します。予測を確認するには、モデルは実際の支払い日まで待つ必要があります。これは、

の地面の真実の遅延の例です。これは、実際の機械学習システムで最も一般的です。 このような場合、モデルがうまく機能しているかどうかを確認するには、グラウンドトゥルースが利用可能になるのを待つには費用がかかりすぎます。したがって、MLエンジニアは、モデルのパフォーマンスを使用せずに推定する方法が必要です。これは、CBPEやDLEなどのアルゴリズムが入ってくる場所です(後で詳しく説明します)。

モニタリングモデルは、直接的なビジネスへの影響を測定し、つまりKPI(主要なパフォーマンスインジケーター)の監視を測定することで実行することもできます。 Zillowの場合、適切な監視システムが利益の損失を検出し、エンジニアに警告した可能性があります(仮説的に)。

2。根本原因分析

監視システムがパフォーマンスの低下を検出した場合、システムが実現したパフォーマンス(グラウンドトゥルース付き)または推定パフォーマンス(グラウンドトゥルースなし)に関係なく、MLエンジニアはドロップの背後にある原因を特定する必要があります。

これには通常、機能を個別にまたは組み合わせてデータ(機能ドリフト)を組み合わせて、概念ドリフトのターゲットを調べることが含まれます。

彼らの発見に基づいて、彼らはさまざまな問題解像度の手法を採用しています

3。問題解決

ここに、展開後のパフォーマンスの劣化によって引き起こされる損害を軽減するための技術の非独占的リストがあります:

データのリバランス:
    パフォーマンスの低下がデータドリフトによるものである場合、トレーニングデータセットを調整して現在の条件を反映することは良い選択肢です。
  1. 機能エンジニアリング:新機能を更新または作成すると、モデルのパフォーマンスが向上します。これは、入力と出力の関係が変更された概念ドリフトの場合の良いアプローチです。
  2. モデル再再訓練:より高価な方法は、新鮮なデータを使用してモデルを再トレーニングして、正確なままでいることを確認しています。これは、データとコンセプトドリフトの両方でうまく機能します
  3. モデルの微調整:
  4. ゼロから再訓練する代わりに、一部のモデルは最近のデータセットで微調整できます。これは、深い学習モデルと生成モデルでうまく機能します 異常検出:
  5. 異常(斬新)検出方法の使用は、生産データの異常なパターンを早期に識別することができます。
  6. ドメインの専門知識の関与:ドメインの専門家を引き付けると、モデルがパフォーマンスが低下している理由について深い洞察を提供する場合があります。
  7. 各メソッドにはアプリケーションコンテキストがあり、多くの場合、それらの組み合わせを実装することになります。 Nannymlは、この反復プロセスの最初の2つのステップを扱います。それでは、それに取り掛かりましょう。
  8. ステップ1:nannyml
  9. のデータの準備 トレーニングと検証セットとは別に、Nannymlは、監視を開始するために特定の形式の参照と分析と呼ばれる2つの追加セットを必要とします。このセクションでは、任意のデータからそれらを作成する方法を教えてください。 最初に、既に訓練されており、監視できるように生産に展開する準備ができているモデルが必要です。この目的のために、ダイヤモンドデータセットを使用して、XGBoost Regressorをトレーニングします。
  10. データの読み込み、機能の定義、ターゲット

モジュールをインポートした後の最初のステップは、シーボーンからダイヤモンドデータセットをロードすることです。ただし、監視がどのように見えるかを説明するために、この記事用に特別に準備したデータセットの特別なバージョンを使用します。以下のスニペットを使用して、データセットを環境にロードできます。

データセットのこの特別なバージョンには、「セット」という名前の列があります。

今のところ、すべての機能名、カテゴリの機能名、およびターゲット名を抽出します。

タスクは回帰です。物理的な属性を考慮して、ダイヤモンドの価格を予測します。
import warnings

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder

warnings.filterwarnings("ignore")
ダイヤモンドデータセットはかなりきれいです。したがって、私たちが実行する唯一の前処理は、テキスト機能をPandasカテゴリデータ型にキャストすることです。これは、xgboostによる自動カテゴリデータの前処理を有効にするための要件です。

データの分割に進みましょう。

データを4つのセットに分割します
dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv"

diamonds_special = pd.read_csv(dataset_link)
diamonds_special.head()

はい、あなたはそれを正しく読みます。データを4つのセットに分割します。伝統的に、あなたはそれを3つに分割しているかもしれません:

モデルがパターンを学習するためのトレーニングセット

  • 検証セットHyperParameter Tuning
  • 展開前の最終評価のテストセット
  • モデル監視ワークフローには、生産データを模倣する別のセットが必要です。これは、適切なアルゴリズムを使用してパフォーマンスの低下を正しく検出し、何がうまくいかなかったかを報告することにより、システムが正しく検出されることを保証するためです。 この目的のために、私は設定された列に4つのカテゴリを持つダイヤモンドの列スペシャルにラベルを付けました:
  • トレーニングセットは70%を表し、残りはそれぞれ合計データのそれぞれ10%です。それを分割しましょう:

しかし、実際のデータセットには組み込まれたセットラベルが付属していないため、データを手動で4つのセットに分割する必要があります。 sklearnのtrain_test_splitを使用してタスクを実行する関数は次のとおりです。

メモ:
# Extract all feature names
all_feature_names = diamonds_special.drop(["price", "set"], axis=1).columns.tolist()

# Extract the columns and cast into category
cats = diamonds_special.select_dtypes(exclude=np.number).columns

# Define the target column
target = "price"
「コードを説明する」ボタンを使用して、関数の行ごとの説明を取得します。

さあ、モデルトレーニングに進みましょう。

for col in cats:
   diamonds_special[col] = diamonds_special[col].astype("category")
モデルのトレーニング

diamonds_special.set.unique()
['train', 'val', 'test', 'prod']
Categories (4, object): ['prod', 'test', 'train', 'val']
さて、ここにハイパーパラメーターが既に調整されているリグレッサーをトレーニングするコードがあります:

素晴らしい - 検証セットのRMSEに関して503ドルを達成するモデルがあります。テストセットで最後にモデルを評価しましょう。

テストパフォーマンスは551 $です。それで十分です。

参照セットの作成

この時点まで、すべてが非常に簡単でした。さて、私たちは主要な部分に来ます - 参照と分析セットを作成します。

参照セットは、モデル監視コンテキストで使用されるテストセットの別名です。 Nannymlは、テストセットでのモデルのパフォーマンスを、生産パフォーマンスのベースラインとして使用します。参照セットには、機能以外の2つの列が必要です。

  • ターゲット自体 - グラウンドトゥルース - ダイヤモンド価格
  • テスト予測 - Y_TEST_PRED
  • に生成しました

今、テストセットには機能とターゲットが含まれていますが、Y_TEST_PREDがありません:

import warnings

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder

warnings.filterwarnings("ignore")

追加しましょう:

dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv"

diamonds_special = pd.read_csv(dataset_link)
diamonds_special.head()

次に、テストセットを参照に変更します:

# Extract all feature names
all_feature_names = diamonds_special.drop(["price", "set"], axis=1).columns.tolist()

# Extract the columns and cast into category
cats = diamonds_special.select_dtypes(exclude=np.number).columns

# Define the target column
target = "price"
分析セットの作成

この時点で、私たちのリグレッサーがクラウドに展開されていると想像してみましょう。想像力は、この記事の過剰なモデルを実際に展開するよりも簡単です。

ダイヤモンドの価格設定モデルを展開した後、ダイヤモンドの大規模な出荷が来ているというニュースを受け取ります。貨物が到着する前に、ダイヤモンドの物理的な測定値が製品として送られてきました(まだ想像しています)。それで、生成しましょう。

for col in cats:
   diamonds_special[col] = diamonds_special[col].astype("category")
実際のダイヤモンドが到着し、人間の専門家がモデルによって生成された価格を検証する前に、モデルがうまく機能しているかどうかを確認する必要があります。ウェブサイトに不正確な価格でダイヤモンドを表示したくありません。 これを行うには、Y_PROD_PREDをGround Truthの実際の価格と比較することにより、モデルのパフォーマンスを測定する必要があります。しかし、価格が検証される前に、私たちは基本的な真実を持つことはありません。したがって、グラウンドトゥルースなしでモデルのパフォーマンスを推定する必要があります。 このタスクを実行するには、nannymlには分析セットが必要です。モデルによって行われた予測を含む生産データを含むデータ。

分析セットを作成することは、参照の作成に似ています:

今、私たちはレグレッサーのパフォーマンスを推定する準備ができています。

ステップ2:nannyml

のパフォーマンスの推定

nannymlは、回帰モデルと分類モデルのパフォーマンスを推定するための2つの主要なアルゴリズムを提供します。
diamonds_special.set.unique()
['train', 'val', 'test', 'prod']
Categories (4, object): ['prod', 'test', 'train', 'val']

回帰の直接損失推定

(DLE)

分類のための信頼性ベースのパフォーマンス推定

(CBPE)

(CBPE)
  • タスクにDLEアルゴリズムを使用します。 DLEは、グラウンドトゥルースなしで生産モデルのパフォーマンスを測定し、RMSE、RMSLE、MAEなどのさまざまな回帰疑似メトリクスを報告できます。 DLEを使用するには、最初にベースラインのパフォーマンスを確立するために参照するために適合する必要があります。 Nannyml のDLEを使用したパフォーマンスの推定
  • DLEの初期化には、入力機能名、テストのための地上真理を含む列の名前、およびテスト予測を含む列の名前の3つのパラメーターが必要です。 さらに、250のメトリックとチャンクサイズとしてRMSEを渡しています。分析のパフォーマンスを参照して推定するために推定器を適合させましょう。
  • プロットできるNannyml resultオブジェクトがあります。それが生成するものを見てみましょう:
import warnings

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder

warnings.filterwarnings("ignore")

PythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフロー

プロットを解釈しましょう。参照および分析セットにパフォーマンスを表示する2つのセクションがあります。推定生産RMSEがしきい値を超えて上昇した場合、Nannymlはそれらをアラートとしてマークします。

ご覧のとおり、生産データにいくつかのアラートがあり、最後のバッチで魚のようなことが起こっていることを示唆しています。

ステップ3:監視における推定対実現パフォーマンス

監視システムは、モデルのパフォーマンスが生産で約半分に低下したことを示しています。しかし、それは見積もりにすぎません - 私たちはそれを確実に言うことはできません。

推定パフォーマンスをプロットしている間、貨物が到​​着し、ダイヤモンドの専門家は実際の価格を計算しました。価格としてProdに保存しました。

ここで、モデルの実現パフォーマンス(実際のパフォーマンス)を推定パフォーマンスと比較して、監視システムがうまく機能しているかどうかを確認できます。

nannymlは、そうするためのパフォーマンスカルシュレータークラスを提供します:

クラスには、4つのパラメーターが必要です

dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv"

diamonds_special = pd.read_csv(dataset_link)
diamonds_special.head()
rublec_type:タスクは何ですか?

y_true:ラベルは何ですか?
  • y_pred:予測はどこで見つけることができますか?
  • メトリック:パフォーマンスを計算するためにどのメトリックを使用していますか?
  • それらを渡して計算機を参照に適合させた後、分析セットで計算します。
  • realized_resultsとatmatiated_resultsを比較するには、ビジュアルを再度使用します。

まあ、推定RMSE(紫)は実際のパフォーマンスにかなり近かったようです(RMSE、青)。

これは私たちに1つのことを教えてくれます。監視システムはうまく機能していますが、損失の増加によって示されるように、モデルはそうではありません。したがって、理由は何ですか?
# Extract all feature names
all_feature_names = diamonds_special.drop(["price", "set"], axis=1).columns.tolist()

# Extract the columns and cast into category
cats = diamonds_special.select_dtypes(exclude=np.number).columns

# Define the target column
target = "price"

今、これに飛び込みます。PythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフロー

ステップ4:ドリフト検出方法

イントロで述べたように、モデルが生産に失敗する最も一般的な理由の1つはドリフトです。このセクションでは、データ(機能)ドリフト検出に焦点を当てます。

ドリフト検出は、モデルモニタリングワークフローの根本原因分析ステップの一部です。通常、多変量ドリフト検出から始まります

多変量ドリフト検出

最高の多変量ドリフト検出方法の1つは、PCAを使用したデータ再構成エラーの計算です。それは非常にうまく機能し、特徴分布のわずかなドリフトさえも捕まえることができます。この方法の高レベルの概要は次のとおりです

1。 PCAは参照に適合し、それをより低い次元に圧縮します-REFEREW_LOWER。

このステップでは、PCAの性質により、元のデータセットに関する情報が失われます。

2。 Reference_lowerは、元の次元に分解されます-REFEREW_RECONSTRUCTED。

  • ステップ1で情報が失われたため、再構築されたデータは参照と完全に同じではありません。
3。 ReferenceとReference_Reconstructedの違いが見つかり、

データ再構成エラー -Reconstruct_Error。

Reconstruct_Errorは、生産データの再構成エラーを比較するためのベースラインとして機能します
  • 4。同じ削減/再構築方法が、生産データのバッチに適用されます。

生産データの再構築エラーがベースラインよりも高い場合、機能が漂いました。

    システムは、生産データをさらに調査するように促すアラートを送信します
  • これらの4つのステップは、nannymlのdatareconstructiondriftCalculatorクラスとして実装されています。使用方法は次のとおりです
データの各塊(それぞれ250行)にエラーが発生したら、プロットできます。

import warnings

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder

warnings.filterwarnings("ignore")

ご覧のとおり、再構成エラーは非常に高く、機能のドリフトを示しています。エラーを実現したパフォーマンスと比較することもできます:
dataset_link = "https://raw.githubusercontent.com/BexTuychiev/medium_stories/master/2024/1_january/4_intro_to_nannyml/diamonds_special.csv"

diamonds_special = pd.read_csv(dataset_link)
diamonds_special.head()

PythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフロー

ご覧のとおり、損失のスパイクはすべて、再構成エラーのアラートに対応しています。
# Extract all feature names
all_feature_names = diamonds_special.drop(["price", "set"], axis=1).columns.tolist()

# Extract the columns and cast into category
cats = diamonds_special.select_dtypes(exclude=np.number).columns

# Define the target column
target = "price"
単変量ドリフト検出

PythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフローデータ再構成エラーは、すべての機能のドリフトを測定するための単一の数値です。しかし、個々の機能のドリフトはどうですか?データセットに何百もの機能が含まれていた場合、どのようにして最も漂流している機能を見つけて適切な手段を講じますか?

そこでは、単変量ドリフト検出方法を使用します。 Nannymlは、機能タイプに応じていくつかを提供します:

カテゴリの特徴:

l-infinity、chi2

連続的な機能:
    wasserstein、kolgomor-smirnov test
  • 両方:
  • Jensen-Shannen距離、Hellinger Distance
  • これらはすべて、分析セットの機能と関連する個々の機能の分布を比較しています。単変動分割クラス内でいくつか(またはすべて)を使用できます:
  • 必要なパラメーターの唯一のパラメーターはcolumn_namesで、残りはnannymlによって設定されたデフォルトを使用できます。しかし、物事をシンプルに保つために、継続的かつカテゴリー的な特徴のためにwassersteinとjensen_shannonを使用しています。 現在、11の機能があるため、plot()を呼び出します。show()は、最も最適な結果をもたらさない場合があります。代わりに、アラートカウントランカーを使用して、最も多くのアラートを与えた機能を返すことができます(すべてのチャンクを考慮した場合)。コードは次のとおりです
  • ランカーの結果が得られたら、パンダのデータフレームであるため、頭を印刷できます。

for col in cats:
   diamonds_special[col] = diamonds_special[col].astype("category")

最も問題のある機能は、色と深さであることがわかります。記事を書く前に人為的にドリフトさせたのは私だったので、これは私を驚かせるべきではありません。

しかし、これが実際のシナリオである場合、これらの機能の問題解決に取り組むのに時間を費やすことをお勧めします。

結論

モデル監視は、良いモデルができたら機械学習が終了するという幻想を打ち砕くため、魅力的だと思います。地球が丸くなり、ユーザーパターンが変化するにつれて、長い間関連するモデルはありません。これにより、モデルがMLエンジニアのスキルセットの重要な部分を監視するようになります。

今日、基本的なモデル監視ワークフローについて説明しました。私たちは、基本的な監視の概念について話すことから始めました。次に、コードに向かって先端を投げます。データをNannymlと互換性のある形式に偽造しました。推定モデルパフォーマンスの最初のプロットを作成し、実現したパフォーマンスと比較するために別のプロットを作成しました。パフォーマンスが低下しているといういくつかのアラートを受け取りました。多変量ドリフト検出でチェックしました。重い機能ドリフトが見つかりました。個々の機能ドリフト検出でダブルチェックしました。漂流機能を特定しました

残念ながら、問題の解決を停止しました。監視ワークフローの最後のステップは、この記事の範囲を超えています。ただし、モデルの監視については、それをカバーする優れた推奨事項がいくつかあります。

機械学習監視の概念コース

Pythonコースでの機械学習監視

    これらのコースはどちらも、あなたが望むことができる最高の人から作成されています - NannymlのCEO兼創設者。コースには、見逃せない情報のナゲットがたくさんあります。
  • いくつかの実践的なチュートリアルについては、Nanny ML Docsを読むこともお勧めします。

以上がPythonでNannymlを使用したエンドツーエンドMLモデルの監視ワークフローの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。