モデル評価コンポーネントは、グラウンド トゥルースとバッチ予測の結果を入力として受け取り、評価指標を生成します。グラウンド トゥルースのデータは、人間が判断した「正しくラベル付けされた」データであり、通常はモデルのトレーニングに使用したテスト データセットのターゲット フィールドとして提供されます。詳細については、Vertex AI でのモデル評価をご覧ください。
Vertex AI には、次のモデル評価コンポーネントが用意されています。
モデルタイプのサポート
次の表に、各モデル評価コンポーネントでサポートされているモデルタイプを示します。
モデル評価コンポーネント | サポートされているモデルタイプ |
---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
ターゲット フィールドを削除する
一部のモデルタイプの場合、BatchPredictionJob
コンポーネントでは、データセットからターゲット列(グラウンド トゥルース)を除外する必要があります。
表形式のデータセットのスライスを構成して形式を設定する
スライスは、指定された特性を持つ表形式データのサブセットです。スライスされた指標では、AutoML の表形式モデルとカスタム トレーニング分類モデルに対して、より詳細な評価指標が用意されています。
たとえば、ペットが 1 週間以内に引き取られるかどうかを予測するようにモデルをトレーニングした、ペットの引き取りデータセットについて考えてみましょう。データセット全体の指標を確認することは有益ですが、ペットの種類と年齢に関連する指標について考えてみましょう。つまり、関心があるのは以下に示すデータセットのサブセットです。
特徴 | 値 |
---|---|
age (in years) |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
species |
"dog", "cat", "rabbit" |
この詳細な分析は、モデルで最もエラーが生じやすい場所を特定する、または重要なデータ サブセットでモデルが適切に機能することを確認する際に有効です。
スライスを構成する
スライスを構成するには、次の構成で JSON ファイルを作成します。
{ "FEATURE": { "KIND": { CONFIG } } }
ここで
FEATURE は、スライスを作成する特徴です。例:
age
KIND は、次のいずれかです。
value
value
は、特徴の 1 つの値に単一のスライスを作成します。キーがfloat_value
またはstring_value
の Key-Value ペアとして CONFIG を指定します。例:"float_value": 1.0
次の構成例では、
age
が1
のデータを含む単一のスライスを作成します。{ "age": { "value": { "float_value": 1.0 } } }
range
range
は、指定された範囲内のデータを含む単一のスライスを作成します。キーがlow
とhigh
の 2 つの Key-Value ペアとして CONFIG を指定します。次の構成例では、
age
が1
~3
の任意の値であるデータを含む単一のスライスを作成します。{ "age": { "range": { "low": 1, "high": 3 } } }
all_values
all_values
は、設定可能な特徴のラベルごとに個別のスライスを作成します。CONFIG を"value": true
として指定します。次の構成例では、3 つのスライス(
"dog"
、"cat"
、"rabbit"
に 1 つずつ)を作成します。{ "species": { "all_values": { "value": true } } }
複数の特徴を使用して 1 つ以上のスライスを作成することもできます。
次の構成では、age
が 1
~3
の間の値、species
が "dog"
であるデータを含む単一のスライスを作成します。
{ "age": { "range": { "low": 1, "high": 3 } }, "species": { "value": { "string_value": "dog" } } }
次の構成では、複数のスライス(データセット内の一意の種類ごとに 1 つ)を作成します。ここで、age
は 1
です。
{ "species": { "all_values": { "value": true } }, "age": { "value": { "float_value": 1.0 } } }
生成されたスライスには、サンプル データセットの次のデータが含まれます。
スライス 1:
age:1
とspecies:"dog"
スライス 2:
age:1
とspecies:"cat"
スライス 3:
age:1
とspecies:"rabbit"
スライスの形式を設定する
ModelEvaluationClassificationOp
コンポーネントのスライスの形式を設定するには、次のようにします。
slicing_spec
を作成します。次に例を示します。from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice import SliceSpec from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice.SliceSpec import SliceConfig slicing_spec = SliceSpec(configs={ 'feature_a': SliceConfig(SliceSpec.Value(string_value='label_a') ) })
スライスの構成を保存するリストを作成します。次に例を示します。
slicing_specs = []
各
slicing_spec
を JSON または辞書として形式を設定します。次に例を示します。slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
各
slicing_spec
を組み合わせてリストにします。次に例を示します。slicing_specs.append(slicing_spec_json)
slicing_specs
をパラメータとしてModelEvaluationClassificationOp
コンポーネントに渡します。次に例を示します。ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
公平性指標のスライスを構成して形式を設定する
モデルの公平性を評価するには、次のコンポーネントを使用します。
DetectDataBiasOp
: コンポーネントに渡したスライスのデータバイアス指標を返します。DetectModelBiasOp
: コンポーネントに渡したスライスのモデルバイアス指標を返します。
DetectDataBiasOp
コンポーネントと DetectModelBiasOp
コンポーネントのスライスの形式を設定するには、次のようにします。
BiasConfig
を作成します。次に例を示します。from google.cloud.aiplatform_v1.types.ModelEvaluation import BiasConfig from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice import SliceSpec from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice.SliceSpec import SliceConfig bias_config = BiasConfig(bias_slices=SliceSpec(configs={ 'feature_a': SliceConfig(SliceSpec.Value(string_value='label_a') ) }))
バイアス構成を保存するリストを作成します。次に例を示します。
bias_configs = []
各
bias_config
を JSON または辞書として形式を設定します。次に例を示します。bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
各
bias_config
を組み合わせてリストにします。次に例を示します。bias_configs.append(bias_config_json)
bias_configs
をパラメータとしてDetectDataBiasOp
コンポーネントまたはDetectModelBiasOp
コンポーネントに渡します。次に例を示します。DetectDataBiasOp(bias_configs=bias_configs) DetectModelBiasOp(bias_configs=bias_configs)
必須入力パラメータ
モデル評価コンポーネントに必要な入力パラメータは、評価するモデルのタイプによって異なります。
AutoML モデル
AutoML モデルをトレーニングする場合、Vertex AI はデフォルトのスキーマを使用します。モデル評価コンポーネントの一部の入力パラメータは、デフォルト以外のスキーマを使用してモデルをトレーニングした場合にのみ必要です。
スキーマ ファイルは、Cloud Storage 上の gs://google-cloud-aiplatform/schema/modelevaluation/ からダウンロードできます。
次のタブでは、バッチ予測の出力ファイルと各モデルタイプに必要な入力パラメータの例を示します。
表形式
分類
デフォルト スキーマには次のフィールドがあります。
scores
: 配列classes
: 配列
male
のターゲット列を持つバッチ予測の出力ファイルの例を次に示します。
{ "instance": { "male": "1", "age": "49", "heartRate": "67", "education": "medium_high", "totChol": "282", "diaBP": "79", "BPMeds": "0", "currentSmoker": "current_high", "cigsPerDay": "25", "prevalentStroke": "stroke_0", "prevalentHyp": "hyp_0", "TenYearCHD": "FALSE", "diabetes": "0", "sysBP": "134", "BMI": "26.87", "glucose": "78" }, "prediction": { "scores": [0.3666940927505493, 0.6333059072494507], "classes": ["0", "1"] } }
次の表に、表形式モデルを使用した ModelEvaluationClassificationOp
コンポーネントに必要なパラメータを示します。
評価コンポーネント パラメータ | 必須 |
---|---|
target_field_name |
はい |
prediction_label_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには prediction.classes を使用します。 |
prediction_score_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには prediction.scores を使用します。 |
evaluation_class_labels |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには ["0","1"] を使用します。 |
回帰
デフォルト スキーマには次のフィールドがあります。
value
: 浮動小数点数lower_bound
: 浮動小数点数upper_bound
: 浮動小数点数
age
のターゲット列を持つバッチ予測の出力ファイルの例を次に示します。
{ "instance": { "BPMeds": "0", "diabetes": "0", "diaBP": "65", "cigsPerDay": "45", "prevalentHyp": "hyp_0", "age": "46", "male": "1", "sysBP": "112.5", "glucose": "78", "BMI": "27.48", "TenYearCHD": "FALSE", "totChol": "209", "education": "high", "prevalentStroke": "stroke_0", "heartRate": "75", "currentSmoker": "current_high" }, "prediction": { "value": 44.96103286743164, "lower_bound": 44.61349868774414, "upper_bound": 44.590206146240234 } }
次の表に、表形式モデルを使用した ModelEvaluationRegressionOp
コンポーネントに必要なパラメータを示します。
評価コンポーネント パラメータ | 必須 |
---|---|
target_field_name |
はい |
prediction_label_column |
回帰モデルでは不要です。 |
prediction_score_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには prediction.value を使用します。 |
evaluation_class_labels |
回帰モデルでは不要です。 |
予測
表形式の予測モデルの場合、BatchPredictionJob
コンポーネントでは、データセットからターゲット列(正解)を除外する必要があります。
デフォルト スキーマには次のフィールドがあります。
id
: 文字列displayNames
: 文字列type
: 列挙型timeSegmentStart
: 文字列timeSegmentEnd
: 文字列confidence
: 浮動小数点数
sale_dollars
をターゲット列とする CSV ファイルの例を次に示します。
date,store_name,city,zip_code,county,sale_dollars 2020-03-17,Thriftway,,,,774.08999999999992 2020-03-10,Thriftway,,,,1160.67 2020-03-03,Thriftway,,,,2247.24 2020-06-08,New Star / Fort Dodge,,,,753.98 2020-06-01,New Star / Fort Dodge,,,,967.73 2020-01-10,Casey's General Store #1280 / Fort Dodge,,,,1040.92 2020-10-30,KUM & GO #76 / ADAIR,Adair,50002,ADAIR,1387.02
TargetFieldDataRemoverOp
コンポーネントは、ファイルを BatchPredictionJob
コンポーネントに送信する前にターゲット列を削除します。
date,store_name,city,zip_code,county 2020-03-17,Thriftway,nan,nan,nan 2020-03-10,Thriftway,nan,nan,nan 2020-03-03,Thriftway,nan,nan,nan 2020-06-08,New Star / Fort Dodge,nan,nan,nan 2020-06-01,New Star / Fort Dodge,nan,nan,nan 2020-01-10,Casey's General Store #1280 / Fort Dodge,nan,nan,nan 2020-10-30,KUM & GO #76 / ADAIR,Adair,50002.0,ADAIR
sale_dollars
のターゲット列を持たないバッチ予測の出力ファイルの例を次に示します。
{ "instance": { "content": "gs://kbn-us-central1-test/datasets/text/happy_11556.txt", "mimeType":"text/plain" }, "prediction": { "ids": ["7903916851837534208","3292230833410146304","986387824196452352","2139309328803299328","5598073842623840256","6750995347230687232","4559431178561519616"], "displayNames": ["affection","bonding","achievement","exercise","nature","enjoy_the_moment","leisure"], "confidences": [0.99483216,0.005162797,4.1117933E-6,3.9997E-7,2.4624453E-7,1.9969502E-7,1.16997434E-7] } }
次の表に、表形式モデルを使用した ModelEvaluationForecastingOp
コンポーネントに必要なパラメータを示します。
評価コンポーネント パラメータ | 必須 |
---|---|
target_field_name |
はい |
prediction_label_column |
予測モデルには必要ありません。 |
prediction_score_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには "prediction.value" を使用します。 |
evaluation_class_labels |
予測モデルには必要ありません。 |
ground_truth_gcs_source |
はい: ターゲット列を持つ元のデータセットへの Cloud Storage リンク。 |
ground_truth_format |
いいえ: 元のデータセットの形式。例: "jsonl" 、"csv" 、"bigquery" 。 |
テキスト
分類
テキスト分類モデルの場合、BatchPredictionJob
コンポーネントでは、データセットからターゲット列(グラウンド トゥルース)を除外する必要があります。TargetFieldDataRemoverOp
コンポーネントを使用すると、ワークフローを効率化できます。
デフォルト スキーマには次のフィールドがあります。
ids
: 文字列の配列displayName
: 文字列の配列confidence
: 浮動小数点数の配列
label
をターゲット列とするデータセットの例を次に示します。
{ "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt", "mimeType": "text/plain", "label": "affection" }
TargetFieldDataRemoverOp
コンポーネントは、ファイルを BatchPredictionJob
コンポーネントに送信する前にターゲット列を削除します。
{ "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt", "mimeType": "text/plain" }
label
のターゲット列を持たないバッチ予測の出力ファイルの例を次に示します。
{ "instance": { "content": "gs://kbn-us-central1-test/datasets/text/happy_11556.txt", "mimeType":"text/plain" }, "prediction": { "ids": ["7903916851837534208","3292230833410146304","986387824196452352","2139309328803299328","5598073842623840256","6750995347230687232","4559431178561519616"], "displayNames": ["affection","bonding","achievement","exercise","nature","enjoy_the_moment","leisure"], "confidences": [0.99483216,0.005162797,4.1117933E-6,3.9997E-7,2.4624453E-7,1.9969502E-7,1.16997434E-7] } }
次の表に、テキストモデルを使用した ModelEvaluationClassificationOp
コンポーネントに必要なパラメータを示します。
評価コンポーネント パラメータ | 必須 |
---|---|
target_field_name |
はい |
prediction_label_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには "prediction.displayNames" を使用します。 |
prediction_score_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには "prediction.confidences" を使用します。 |
evaluation_class_labels |
デフォルトのスキーマの場合、または prediction_label_column が指定されている場合は不要です。 |
ground_truth_gcs_source |
はい: ターゲット列を持つ元のデータセットへの Cloud Storage リンク。 |
ground_truth_format |
いいえ: 元のデータセットの形式。例: "jsonl" 、"csv" 、"bigquery" 。 |
動画
分類
動画分類モデルの場合、BatchPredictionJob
コンポーネントでは、ターゲット列(グラウンド トゥルース)をデータセットから除外する必要があります。TargetFieldDataRemoverOp
コンポーネントを使用すると、ワークフローを効率化できます。
デフォルト スキーマには次のフィールドがあります。
id
: 文字列displayName
: 文字列type
: 列挙型timeSegmentStart
: 文字列timeSegmentEnd
: 文字列confidence
: 浮動小数点数
ground_truth
をターゲット列とするデータセットの例を次に示します。
{ "content": "gs://automl-video-demo-data/hmdb51/Aerial_Cartwheel_Tutorial_By_Jujimufu_cartwheel_f_nm_np1_ri_med_0.avi", "ground_truth": "cartwheel", "timeSegmentStart": "0.0", "timeSegmentEnd": "inf" }
TargetFieldDataRemoverOp
コンポーネントは、ファイルを BatchPredictionJob
コンポーネントに送信する前にターゲット列を削除します。
{ "content": "gs://automl-video-demo-data/hmdb51/Aerial_Cartwheel_Tutorial_By_Jujimufu_cartwheel_f_nm_np1_ri_med_0.avi", "timeSegmentStart": "0.0", "timeSegmentEnd": "inf" }
label
のターゲット列を持たないバッチ予測の出力ファイルの例を次に示します。
{ "instance": { "content": "gs://automl-video-demo-data/hmdb51/20_Marine_Corps_Pull_Ups___JimmyDShea_pullup_f_cm_np1_ba_bad_3.avi" "mimeType": "video/avi", "timeSegmentStart": "0.0", "timeSegmentEnd": "inf" }, "prediction": [ { "id":"5015420640832782336", "displayName":"pullup", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.98152995 }, { "id":"2709577631619088384", "displayName":"cartwheel", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.0047166348 }, { "id":"403734622405394432", "displayName":"golf", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.0046260506 }, { "id":"1556656127012241408", "displayName":"ride_horse", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.004590442 }, { "id":"7321263650046476288", "displayName":"kick_ball", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.004536863 } ] }
次の表に、動画モデルを使用する ModelEvaluationClassificationOp
コンポーネントに必要なパラメータを示します。
評価コンポーネント パラメータ | 必須 |
---|---|
target_field_name |
はい |
prediction_label_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには "prediction.displayName" を使用します。 |
prediction_score_column |
デフォルトのスキーマでは不要です。 デフォルト以外のスキーマには "prediction.confidence" を使用します。 |
evaluation_class_labels |
デフォルトのスキーマを使用する場合、または prediction_label_column が指定されている場合は不要です。 |
ground_truth_gcs_source |
はい: ターゲット列を持つ元のデータセットへの Cloud Storage リンク。 |
ground_truth_format |
いいえ: 元のデータセットの形式。例: "jsonl" 、"csv" 、"bigquery" 。 |
カスタム トレーニング済みモデル
カスタム トレーニング済みモデルの場合、BatchPredictionJob
コンポーネントでは、ターゲット列(グラウンド トゥルース)をデータセットから除外する必要があります。TargetFieldDataRemoverOp
コンポーネントを使用すると、ワークフローを効率化できます。
次の例は、カスタム トレーニング済み表形式分類モデルでのバッチ予測の出力ファイルと必要な入力パラメータを示しています。
表形式
分類
一般的なスキーマには次のフィールドがあります。
instance
: モデル トレーニング データセットの列と同じ順序の入力データの配列。prediction
: モデル トレーニング データセットの列と同じ順序の入力データの配列。
species
をターゲット列とする CSV データセットの例を次に示します。
petal_length,petal_width,sepal_length,sepal_width,species 6.4,2.8,5.6,2.2,2 5.0,2.3,3.3,1.0,1 4.9,2.5,4.5,1.7,2 4.9,3.1,1.5,0.1,0
TargetFieldDataRemoverOp
コンポーネントは、ファイルをバッチ予測コンポーネントに送信する前に、ターゲット列を削除します。
petal_length,petal_width,sepal_length,sepal_width 6.4,2.8,5.6,2.2 5.0,2.3,3.3,1.0 4.9,2.5,4.5,1.7 4.9,3.1,1.5,0.1
species
のターゲット列を持たないバッチ予測の出力ファイルの例を次に示します。
{ "instance": [5.6, 2.5, 3.9, 1.1], "prediction": [0.0005816521588712931, 0.9989032745361328, 0.0005150380893610418] } { "instance": [5.0, 3.6, 1.4, 0.2], "prediction": [0.999255359172821, 0.000527293945197016, 0.00021737271163146943] } { "instance": [6.0, 2.9, 4.5, 1.5], "prediction": [0.00025063654175028205, 0.9994204044342041, 0.00032893591560423374] }
次の表に、動画モデルを使用する ModelEvaluationClassificationOp
コンポーネントに必要なパラメータを示します。
評価コンポーネント パラメータ | 必須 |
---|---|
target_field_name |
はい |
prediction_label_column |
空にする必要があります。この列はカスタム トレーニング モデルには存在しません。 |
prediction_score_column |
デフォルトのスキーマでは必須ではありません。JSONL 、CSV 、BIGQUERY のいずれかの形式に対して自動的に設定されます。 |
evaluation_class_labels |
はい。出力予測配列と同じ長さにする必要があります。 |
ground_truth_gcs_source |
はい: ターゲット列を持つ元のデータセットへの Cloud Storage リンク。 |
ground_truth_format |
いいえ: 元のデータセットの形式。例: "jsonl" 、"csv" 、"bigquery" 。 |
Vertex AI で生成されたバッチ予測を使用しないモデル評価
Vertex AI で生成しなかったバッチ予測で、モデル評価パイプライン コンポーネントを使用できます。ただし、モデル評価パイプライン コンポーネントの入力は、次の接頭辞に一致するファイルを含むバッチ予測ディレクトリであることが必要です。
prediction.results-
explanation.results-
predictions_
API リファレンス
コンポーネントのリファレンスについては、Google Cloud Pipeline Components SDK リファレンス ページでモデル評価コンポーネントをご覧ください。
モデル評価のコンポーネントの使用例については、評価を作成するに記載されているノートブックをご覧ください。
変更履歴とリリースノート
変更履歴と Google Cloud パイプライン コンポーネント SDK の変更の詳細については、Google Cloud パイプライン コンポーネント SDK リリースノートをご覧ください。