注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

MetricSets リファレンス [廃止予定]

廃止予定

メトリクスセットは、foundry_ml を使用するデータセットを元とするモデル向けに作成されました。このライブラリは、2025年10月31日から正式に非推奨となっています。新しい実装では、代わりに実験の使用を推奨します。palantir_models で作成したモデルのモデルページにはメトリクスセットは表示されませんが、モデルに対してメトリクスセットを書き込み、Modeling Objectives でメトリクスを表示することは引き続き可能です。

メトリクスセットは、名前付きメトリクスのコンテナとして機能します。ここでは、モデルの出力を要約したものをメトリクスと定義します。 サポートされているメトリクスには、数値、チャート、画像があります。

Python では、メトリクスセットは foundry_ml_metrics パッケージ内の MetricSet クラスによって実装されます(環境設定に foundry_ml が必要です)。

すべてのメトリクスは、次のパラメーターを指定して MetricSet.add メソッドで追加できます。

  • name メトリクス名を表す文字列
  • value 追加するメトリクスの値
  • subset このメトリクスの対象となるデータのサブセットを記述する dict<str, str>
  • stage 特定のステージに関連付けるための Foundry ML モデルステージまたはステージの UUID。デフォルトは最後のモデルステージです

概念を説明するため、空のメトリクスセットを作成する例を以下に示します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import foundry_ml_metrics def Metrics(Model, validation_hold_out): # モデルと入力データで MetricSet を初期化します metric_set = foundry_ml_metrics.MetricSet( model = Model, input_data=validation_hold_out ) val_df = validation_hold_out.dataframe() # データセットに対してモデルを実行し、推論結果を取得します inference_results = Model.transform(val_df) # メトリクスを計算します y_true, y_pred = ... acc = ... f1 = ... # MetricSet にメトリクスを追加します metric_set.add(name='Accuracy', value=acc) metric_set.add(name='F1 Score', value=f1) return metric_set

作成時には、model パラメーターと input_data パラメーターを MetricSet に渡す必要があります。

メトリクスセットを保存するには、モデルと同じように戻り値として返します。上の例は、Code Workbook から保存する方法を示しています。

Code Repositories の MetricSets

Code Repositories のメトリクスセットは、当初データセットを元とするモデルとして作成されたモデルとの下位互換性のためだけに存在します。新しい実装では使用せず、可能な場合は既存のメトリクスセットを実験に置き換えてください。

palantir_models で作成したモデルのモデルページにはメトリクスセットは表示されませんが、モデルに対してメトリクスセットを書き込み、Modeling Objectives でメトリクスを表示することは引き続き可能です。

これを行うには、Code Repositories でモデルを作成し、環境に foundry_ml_metrics ライブラリを追加します。メトリクスセットを palantir_models と組み合わせて使用する例を以下に示します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import uuid from transforms.api import transform, Input, Output from palantir_models.transforms import ModelInput from foundry_ml_metrics import MetricSet # 環境に foundry_ml_metrics を追加します @transform( evaluation_data_input=Input("path_to_input"), model_input=ModelInput("path_to_model"), metric_set_output=Output("path_to_output"), ) def compute(training_data_input, model_input, metric_set_output): metric_set = MetricSet( # モデルのバージョン識別子の「ハッシュ」部分を渡します。たとえば、 # ri.models.main.model-version.6c0f17a8-ad73-46a4-b86e-8d0a13327ef2, # の場合は、6c0f17a8-ad73-46a4-b86e-8d0a13327ef2 のみを渡します。 model=uuid.UUID( # model_version_rid プロパティは、ModelInput クラスでのみ利用可能で、 # palantir_models のバージョンが 0.1602.0 以上の場合に限られます。 model_input.model_version_rid.replace("ri.models.main.model-version.", "") ), input_data=evaluation_data_input ) metric_set.add(name='Accuracy', value=0.8) metric_set.add(name='F1', value=0.95) metric_set.save(metric_set_output)

次に、Modeling Objectives の評価設定で、evaluation_data_input データセットを評価データセットとして設定します。すると、Modeling Objectives の評価表示で、そのデータセットの下にメトリクスが表示されます。

入力データセット

入力データセットは、モデルが適用され、その後メトリクスが計算されたデータの特定のバージョンへの明示的な参照です。 これらを手動で追跡することで、モデルの性能に関する記録と完全な来歴を作成できます。この機能は、Modeling Objectives で多数のモデルを相互に評価する際に、 それらのモデルが同じデータに対して評価されていることを保証するために必要です。

適切なメタデータを取得するには、入力データセットを Python トランスフォーム入力の種類として MetricSets に渡す必要があります。注:Code Workbook では、インポートされたデータセットに対してのみこれをサポートしています。ベストプラクティスに従い、検証はテスト用と学習用のデータ分割を行うワークブックとは別のワークブックで行う必要があります。

入力の種類を変更

メトリクスの種類

数値メトリクス

数値メトリクスは最も基本的なメトリクスの種類であり、通常、AIP Analyst がモデルの性能について最初に得るインサイトです。 数値メトリクスは単純な Python の int または float データ型であり、そのままメトリクスセットに追加できます。

Copied!
1 metric_set.add(name='My numeric metric', value=1.5)

チャートメトリクス

チャートは、単純な数値メトリクスだけでは表せないモデルの性能を可視化します。 foundry_ml には、さまざまな形式のチャートの元となるデータを直接保存する機能があります。 データが保存されるため、特に Modeling Objectives で、より優れたモデル比較が可能になります。

サポートされているすべてのチャートは、foundry_ml_metrics.charts パッケージ内の関数によって作成されます。

例を見てみましょう。

Copied!
1 2 3 4 5 6 7 import foundry_ml_metrics.charts line_chart = foundry_ml_metrics.charts.line(xs=[0.0, 1.0], ys=[1.0, 0.0]) bar_chart = foundry_ml_metrics.charts.bar(xs=["category 1", "category 2"], ys=[0.56, 0.41]) metric_set.add(name='My line chart', value=line_chart) metric_set.add(name='My bar chart', value=bar_chart)

画像メトリクス

Python には、画像を保存できるオープンソースの描画ライブラリが豊富にあります。 これを活用するため、foundry_ml では、matplotlib および seaborn に対応する画像オブジェクトをメトリクスの値として指定できます。

Copied!
1 2 3 4 from matplotlib import pyplot pyplot.plot([0, 1], [1, 0]) matplotlib_plot = pyplot.gcf() metric_set.add(name='My image chart', value=matplotlib_plot)

検証データのサブセット

モデルの性能は、データセット内の異なるサブセット間で変動することがよくあります。 この分析を支援するため、MetricSet.add メソッドは subset パラメーターを受け取ります。 これは、適用したフィルターを記述する、文字列をキーと値とする Python 辞書です。フィルターに意味のある名前を付けることで、現実世界の問題を表すさまざまなデータの部分集合におけるモデルの性能をユーザーが理解しやすくなります。

メトリクスとサブセットは Modeling Objectives に表示されます。

たとえば、定番のオープンソースの iris データを使用して、花弁の長さが平均未満の場合と平均を上回る場合のモデルの精度を計算するとします。

これは次のように行えます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 def compute_accuracy(testing_df): # 正解率の実装 compute_accuracy = ... metric_set = foundry_ml_metrics.MetricSet( model = Model, input_data=testing_df ) # すべてのデータのスコアを計算します predictions = Model.transform(testing_df) # subset = {} は全体を示し、デフォルトです metric_set.add(name='accuracy', subset={}, value=compute_accuracy(predictions)) # データを絞り込みます predictions_long = predictions.filter('sepal_length > 3') metric_set.add(name='accuracy', subset={'sepal_length': 'long'}, value=compute_accuracy(predictions_long)) predictions_short = predictions.filter('sepal_length < 3') metric_set.add(name='accuracy', subset={'sepal_length': 'short'}, value=compute_accuracy(predictions_short))

サブセットの辞書には任意の数のフィールドを指定できます。

メトリクスを更新する

メトリクスセットはデータセットとして表され、Foundry のビルドによって計算されます。モデルがその場で更新された場合、または新しいバージョンの入力データが利用可能になった場合は、メトリクスセットを再ビルドする必要があります。これは、メトリクスセットがモデルと入力データセットの特定のバージョンに関連付けられているためです。

重要な点として、モデルを更新して再実行した場合は、古い情報が残らないように、リンクされたメトリクスセットも再ビルドする必要があります。これは、メトリクスセットがモデル(および入力データセット)の特定のバージョンに関連付けられているためです。再ビルドしないと、モデルプレビュー内にメトリクスが表示されません。