注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
評価ライブラリは、モデル評価ツールを生成する、Foundry の公開済み Python パッケージです。評価ライブラリを使用すると、モデルの性能、公平性、堅牢性、その他のメトリクスを測定する処理を、異なるモデリング目標で再利用できます。
Foundry では、二値分類モデルおよび回帰モデル用のデフォルトのモデル評価ツールに加えて、モデリング目標でネイティブに使用できるカスタムモデル評価ツールも作成できます。
カスタム評価ツール、その設定オプション、および生成されるメトリクスは、評価ツールの実装の冒頭にある docstring で指定された名前と説明で、Modeling Objectives アプリケーションに表示されます。
カスタム評価ツールを公開すると、公開済みライブラリの閲覧権限を持つすべてのユーザーが Modeling Objective アプリケーションで利用できるようになります。これにより、組織全体で標準化されたメトリクスを計算するための再利用可能なロジックを記述できます。

カスタム評価ツールは、モデリング目標の評価ライブラリ設定で選択できます。このライブラリは、評価ツールで定義されたパラメーターに基づいて設定できます。

カスタム評価ツールを作成するには、次の手順を実行します。
Code Repositories アプリケーションには、多くのテンプレート実装があります。この例では Model Evaluator Template Library を使用します。Foundry のプロジェクトに移動し、+ 新規 > リポジトリタイプ > モデル統合 > Template の言語を選択して、Model Evaluator Template Library を選択し、最後に初期化を選択します。

Model Evaluator Template Library の src/evaluator/custom_evaluator.py ファイルには、実装例が含まれています。Evaluator Python インターフェースの実装は、新しいリポジトリバージョンタグを付けてリポジトリの新しいバージョンを公開すると、自動的に登録され、利用可能になります。
カスタム評価ツールのロジックを含むリポジトリでは、複数の評価ツールを公開できます。評価ツールの実装ファイルを追加する場合は、評価ツールテンプレートの build.gradle にあるモデル評価ツールモジュールのリストに、そのファイルへの参照を追加する必要があります。

カスタム評価ツールを実装するには、Evaluator インターフェースの実装を作成する必要があります。また、任意で、Modeling Objectives アプリケーションが解釈する設定フィールドを指定できます。
評価ツールテンプレートライブラリで、src/evaluator/custom_evaluator.py ファイルに評価ツールを追加します。
評価ツールのインターフェースは、次のように定義されています。
Copied!1 2 3 4 5 6 7 8 9 10 11class Evaluator(): def apply_spark(self, df: DataFrame) -> List[ComputedMetricValue]: """ 評価ツールを適用して、PySpark Dataframe のメトリクスを計算します。 :param df: The PySpark DataFrame to compute metrics on :return: A list of computed metric values """ pass
カスタム評価ツール、その設定オプション、および生成されるメトリクスは、実装の冒頭にある docstring で指定された名前と説明で、Modeling Objectives アプリケーションに表示されます。
必須の値は次のとおりです。
display-name:評価ツールの表示名description:評価ツールの説明任意で、次の項目を0個以上追加できます。
param:カスタム評価ツールの設定パラメーターmetric:評価ツールが生成するメトリクスこれは、入力データセットの行数を計算する評価ツールの例です。
この評価ツールの例は、Modeling Objectives アプリケーションに次の内容で表示されます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21from pyspark.sql import DataFrame from pyspark.sql import functions as F from foundry_ml_metrics.evaluation import ComputedMetricValue, Evaluator class CustomEvaluator(Evaluator): """ :display-name: Row Count Evaluator :description: This evaluator calculates the row count of the input DataFrame. :metric Row Count: The row count """ def apply_spark(self, df: DataFrame) -> List[ComputedMetricValue]: row_count = df.count() return [ ComputedMetricValue( metric_name='Row Count', metric_value=row_count ) ]
設定パラメーターを指定すると、Modeling Objectives アプリケーションで評価ツールを設定可能にできます。 設定パラメーターには、実行時に Modeling Objectives アプリケーションによってユーザーが入力した値が設定されます。 この評価ツールのユーザーは、モデリング目標で自動評価を設定するときに、パラメーターの値を設定できます。
使用できる設定フィールドは次のとおりです。
int:整数float:浮動小数点数bool:ブール値(True または False)str:文字列値Field[float]:入力 DataFrame 内の浮動小数点数の列Field[int]:入力 DataFrame 内の整数の列Field[str]:入力 DataFrame 内の文字列の列パラメーターを Optional(組み込みの typing パッケージ)で囲むと、任意にできます。
例:
str は Optional[str] になりますField[str] は Optional[Field[str]] になりますこれは、入力データセットの行数と、入力列 column の値が value になるように入力 DataFrame を絞り込んだときの行数を計算する評価ツールの例です。
この評価ツールの例は、Modeling Objectives アプリケーションに次の内容で表示されます。
column、説明は「絞り込み対象の列」です。value、説明は「絞り込みに使用する値」です。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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43from pyspark.sql import DataFrame from pyspark.sql import functions as F from foundry_ml_metrics.evaluation import ComputedMetricValue, Evaluator, Field class CustomEvaluator(Evaluator): """ :display-name: Configurable Row Count Evaluator :description: This evaluator calculates the row count of the input DataFrame, filtered to the specified value. :param column: Filtered column :param value: Filtered value :metric Row Count: The unfiltered row count :metric Filtered Row Count: The filtered row count """ column: Field[int] value: int def __init__(self, column: Field[int], value: int): self.column = column self.value = value def apply_spark(self, df: DataFrame) -> List[ComputedMetricValue]: column_name = self.column.name column_value = self.value row_count = df.count() filtered_row_count = df.filter( F.col(column_name) == column_value ).count() return [ ComputedMetricValue( metric_name='Row Count', metric_value=row_count ), ComputedMetricValue( metric_name='Filtered Row Count', metric_value=filtered_row_count ) ]
新しく設定したカスタム評価ツールを Modeling Objectives アプリケーションで使用するには、まず、新しいリポジトリバージョンタグを付けてリポジトリの新しいバージョンを公開する必要があります。
以下のクラスを参照用に示します。
フィールドは、評価ツールライブラリの設定パラメーターとして使用され、実装する必要があるプロパティを Modeling Objective アプリケーションに伝えます。
Field には、次のインターフェースがあります。
Copied!1 2class Field(): name: str
ComputedMetricValue は、Foundry モデルに付加するメトリクスの情報を格納します。
Copied!1 2 3 4 5 6 7 8 9 10class ComputedMetricValue(): """ 評価ツールのいずれかで計算されるメトリクスで、メトリクス名、値、およびサブセット情報で構成されます。 """ metric_name: str metric_value: MetricValue def __init__(self, metric_name, metric_value): self.metric_name = metric_name self.metric_value = metric_value
MetricValue は、次のいずれかにできます。
get_figure(self) -> Figure:多くの seaborn プロットがこの関数を実装しています。save(self, path: str):多くの seaborn プロットがこの関数を実装しています。savefig(self, path: str)