注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
メトリックセットは、モデルの出力をまとめた名前付きのメトリックスのコンテナとして機能します。 サポートされているメトリックには、数値、チャート、画像が含まれます。
Pythonでは、メトリックセットはfoundry_ml_metrics
パッケージ内のMetricSet
クラスで実装されています(環境設定内にfoundry_ml
が必要です)。
すべてのメトリックは、以下のパラメーターを持つMetricSet.add
メソッドを使用して追加できます。
name
メトリックの文字列名value
追加したいメトリックの値subset
このメトリックが対象とするデータのサブセットを説明するdict<str, str>
stage
このメトリックを特定のステージに関連付けるためのFoundry MLモデルステージまたはステージuuid。デフォルトでは最後のモデルステージ以下は、概念を説明するために空のMetricSetを作成する例です。
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
に渡す必要があります。
MetricSet を保存するには、モデルを返すように返します。上記の例は、Code Workbook から保存する方法を示しています。Code Repository 内にいる場合は、Code Repository の例 に示すように返します。
入力データセットは、モデルが適用された特定のバージョンのデータへの明示的な参照であり、その後のメトリックが計算されます。 これらを手動で追跡することで、モデルのパフォーマンスの記録と完全な起源を作成します。これは、多数のモデルをModeling Objectivesで互いに評価する際に必要であり、これらのモデルが同じデータに対して評価されていることを確認します。
入力データセットは、適切なメタデータを取得するために、Python transform input タイプとして MetricSets
に渡す必要があります。注:Code Workbookは、インポートされたデータセットに対してのみこれをサポートしています。ベストプラクティスに沿って、テスト/トレインスプリットとは別のワークブックで検証を行う必要があります。
数値メトリックは最も基本的なメトリックタイプであり、通常はアナリストがモデルパフォーマンスについて最初に洞察するものです。
数値メトリックは単純な python int
または float
タイプであり、単純にメトリックセットに追加されます。
Copied!1 2
# 日本語のコメント metric_set.add(name='My numeric metric', value=1.5) # 数値メトリックを追加し、名前は'My numeric metric'、値は1.5と設定
チャートは、単純な数値メトリクスを超えたモデルのパフォーマンスを視覚化します。
foundry_ml
は、さまざまなフォーマットでチャートをバックアップするためのデータを直接保存する機能を提供します。
データが保存されるため、特にModeling Objectivesにおいて、優れたモデル比較能力が得られます。
すべてのサポートされているチャートは、foundry_ml_metrics.charts
パッケージの関数によって作成されます。
例を考えてみましょう:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14
# foundry_ml_metrics.chartsをインポートします import foundry_ml_metrics.charts # xsはx軸の値、ysはy軸の値で、これらを指定して折れ線グラフを作成します line_chart = foundry_ml_metrics.charts.line(xs=[0.0, 1.0], ys=[1.0, 0.0]) # xsはx軸の値(ここではカテゴリ名)、ysはy軸の値(ここでは各カテゴリの数値)で、これらを指定して棒グラフを作成します 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 5 6 7
from matplotlib import pyplot # [0, 1] と [1, 0] の座標をプロットする 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 に表示されます。
例えば、クラシックなオープンソースのアヤメデータで、平均以下と平均以上の花弁の長さにおけるモデルの精度を計算しているかもしれません。
これは以下のように行うことができます:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
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') # セット{'sepal_length': 'long'}でフィルタリングし、その結果を正確さとして追加します metric_set.add(name='accuracy', subset={'sepal_length': 'long'}, value=compute_accuracy(predictions_long)) predictions_short = predictions.filter('sepal_length < 3') # セット{'sepal_length': 'short'}でフィルタリングし、その結果を正確さとして追加します metric_set.add(name='accuracy', subset={'sepal_length': 'short'}, value=compute_accuracy(predictions_short))
サブセット辞書には任意の数のフィールドを提供できます。
メトリクスセットはデータセットとして表現され、Foundry Builds経由で計算されます。モデルがその場で更新された場合、または新しい入力データのバージョンが利用可能になった場合は、メトリクスセットを再ビルドする必要があります。なぜなら、それはモデルと入力データセットの特定のバージョンに関連付けられているからです。
重要なことは、モデルを更新して再実行する場合、特定のモデル(および入力データセット)バージョンに関連付けられているため、古い情報を防ぐために関連付けられたMetricSetsも再ビルドする必要があるということです。そうしないと、Model Preview内にメトリクスが表示されません。