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

組み込み評価ツール

palantir_models には、標準的な回帰モデルと分類モデル向けの事前構築済み評価ツールが含まれています。組み込み評価ツールは、モデルで推論を実行し、予測を正解データの列と比較して、標準的なメトリクスを評価に記録します。そのため、一般的なメトリクスを手動で計算する必要はありません。

組み込み評価ツールを使用するには、環境に scikit-learn がインストールされている必要があります。

evaluate 関数

palantir_models.evaluations.evaluate 関数は、組み込み評価ツールを実行します。モデル、入力データ、正解データの列名、および使用する評価ツールを選択する評価ツールの設定を指定します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import palantir_models as pm from palantir_models.evaluations import evaluate, RegressionEvaluatorConfig from palantir_models.transforms import ModelInput from transforms.api import transform, Input @pm.transforms.evaluation("error_analysis") @transform.using( test_data=Input("/Housing/clean/test_set"), housing_model=ModelInput("/Housing/models/price_regressor", use_sidecar=True), ) def compute(test_data, housing_model): evaluate( model=housing_model, inputs=test_data.pandas(), targets="actual_price", prediction_column="predicted_price", evaluator_config=RegressionEvaluatorConfig(), )

@pm.transforms.evaluation でデコレートされたトランスフォーム内で呼び出すと、evaluate は評価に自動的に書き込みます。自分で create_evaluation を呼び出す必要はありません。すでに作成した評価に記録するには、evaluation 引数でその評価を渡します。

evaluate は、計算したメトリクスを metrics 属性に保持する EvaluationResult を返します。同じメトリクスが、副次的効果として評価にも記録されます。

入力、正解データ、予測

  • inputs は、推論のためにモデルに渡されます。pandas または pyspark の DataFrame は単一の引数として渡され、tuple は位置引数として展開され、dict はキーワード引数として展開されます(ただし、モデルが単一の map または struct 入力を宣言している場合、dict はそのまま渡されます)。Spark DataFrame はメトリクスの計算のために pandas に実体化されるため、データはドライバーのメモリーに収まる必要があります。
  • targets は、正解データの列名です。指定した名前は、ちょうど1列に解決される必要があります。evaluation_df が指定されている場合はその中で、そうでない場合は inputs の中で検索されます。正解データの列が inputs に含まれていない場合は、evaluation_df を使用して指定します。
  • prediction_column は、モデルの出力内で予測を保持する列の名前です。デフォルトは targets の値です。モデルの出力列の名前が異なる場合は、明示的に設定します。

モデルの要件

evaluate が推論を実行するため、モデルアダプターはいくつかの要件を満たす必要があります。

  • 推論メソッド: アダプターの predict メソッドをオーバーライドしている場合、evaluate はそのメソッドを呼び出します。そうでない場合は、transform にフォールバックします。どちらか一方が推論を実行する必要があり、predict は宣言された API 入力ごとに、名前で対応付けられた引数を1つ受け取る必要があります。
  • 入力の形式:inputs の形式は、入力、正解データ、予測のディスパッチルールに従って、モデルが宣言した API 入力と一致する必要があります。
  • 出力の形式: 推論は DataFrame、または DataFrame を含む InferenceResults、dict、tuple、list を返す必要があります。また、それらの DataFrame のうち、ちょうど1つに prediction_column が含まれている必要があります。出力 DataFrame のいずれにもその列が含まれていない場合、または2つ以上に含まれている場合は、評価に失敗します。
  • 確率の列: 分類の roc_auc では、設定した確率の列も出力に含まれている必要があります。

回帰

連続値を予測するモデルには、RegressionEvaluatorConfig を使用します。回帰評価ツールは、次のメトリクスを記録します。

メトリクス説明
example_count評価したサンプルの件数。
mean_absolute_error平均絶対誤差 (MAE)。
mean_squared_error平均二乗誤差 (MSE)。
root_mean_squared_error二乗平均平方根誤差 (RMSE)。
r2R²(決定係数)。
max_error最大残差誤差。
mean_absolute_percentage_error平均絶対パーセント誤差 (MAPE)。
Copied!
1 2 3 4 5 6 7 8 9 from palantir_models.evaluations import evaluate, RegressionEvaluatorConfig evaluate( model=housing_model, inputs=test_data.pandas(), targets="actual_price", prediction_column="predicted_price", evaluator_config=RegressionEvaluatorConfig(), )

分類

二値分類器と多クラス分類器には、ClassificationEvaluatorConfig を使用します。評価ツールが問題を二値分類として扱うか、多クラス分類として扱うかは、予測とラベル全体に存在する一意のクラスの数から自動的に判断されます。

すべての分類評価で、次のメトリクスが記録されます。

メトリクス説明
example_count評価したサンプルの件数。
accuracy全体の正解率。
precision適合率。
recall再現率。
f1F1 スコア。

さらに、次の処理が行われます。

  • 二値分類器では、混同行列の件数 true_positives、true_negatives、false_positives、false_negatives も記録されます。
  • 多クラス分類器では、設定オプション average で指定した平均化方法を使用して、precision、recall、f1 が計算されます。
  • クラス確率が指定されている場合は、one-vs-rest 方式を使用して roc_auc も記録されます。

設定オプション

オプションデータ型説明
average"weighted"(デフォルト)、"micro"、"macro"、または "samples"多クラスモデルにおける precision、recall、f1、roc_auc の平均化方法。二値分類器では無視されます。
class_probabilities_columnsOptional[List[str]]クラスインデックス順に並べた、クラスごとに1つのモデル出力列。roc_auc に必要です。
class_probability_columnOptional[str]各行の値がクラスごとの確率を表す配列形式になっている、単一のモデル出力列。roc_auc に必要です。

クラス確率は、class_probabilities_columns または class_probability_column のいずれか一方だけで指定します。両方を指定するとエラーが発生します。参照先の列は、モデルの出力に含まれている必要があります。確率が指定されていない場合、roc_auc は省略されます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 from palantir_models.evaluations import evaluate, ClassificationEvaluatorConfig evaluate( model=churn_model, inputs=test_data.pandas(), targets="churned", prediction_column="prediction", evaluator_config=ClassificationEvaluatorConfig( average="macro", class_probability_column="class_probabilities", ), )

組み込みメトリクスをサブセットにグループ化する

すべての評価ツールの設定は、subset オプションを受け付けます。設定すると、その評価ツールが記録するすべてのメトリクスに subset/ というプレフィックスが付き、モデルページ上でサブセットとしてグループ化されます。これにより、データの異なる部分に対して同じ評価ツールを実行し、比較できます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 from palantir_models.evaluations import evaluate, RegressionEvaluatorConfig # 価格帯ごとに個別に評価し、メトリクスをその価格帯にまとめます。 for tier, group in test_data.pandas().groupby("price_tier"): evaluate( model=housing_model, inputs=group, targets="actual_price", prediction_column="predicted_price", evaluator_config=RegressionEvaluatorConfig(subset=tier), )

これにより、affordable/mean_absolute_error や luxury/r2 などのメトリクスが記録されます。

メソッドの完全なシグネチャについては、モデル評価の Python API リファレンスを参照してください。