Komponen evaluasi model

Komponen evaluasi model menggunakan kebenaran nyata dan hasil prediksi batch sebagai input, kemudian membuat metrik evaluasi. Data kebenaran nyata adalah data yang "diberi label dengan benar" seperti yang ditentukan oleh manusia, dan biasanya disediakan sebagai kolom target dalam set data pengujian yang Anda gunakan untuk melatih model. Untuk mengetahui informasi selengkapnya, lihat Evaluasi model di Vertex AI.

Vertex AI menyediakan komponen evaluasi model berikut:

Dukungan jenis model

Tabel berikut menunjukkan jenis model yang didukung untuk setiap komponen evaluasi model:

Komponen evaluasi model Jenis model yang didukung
ModelEvaluationClassificationOp
  • Tabulasi AutoML, gambar, teks, video
  • Tabulasi kustom
  • ModelEvaluationRegressionOp
  • Tabulasi AutoML
  • Tabulasi kustom
  • ModelEvaluationForecastingOp
  • Tabulasi AutoML
  • Menghapus kolom target

    Untuk beberapa jenis model, komponen BatchPredictionJob mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda.

    Konfigurasi dan format slice untuk set data tabulasi Anda

    Slice adalah subset data tabulasi dengan karakteristik tertentu. Slice metrik menawarkan metrik evaluasi yang lebih terperinci untuk AutoML tabulasi dan model klasifikasi pelatihan kustom.

    Misalnya, pertimbangkan set data adopsi hewan peliharaan tempat model dilatih untuk memprediksi apakah hewan peliharaan akan diadopsi dalam waktu seminggu. Meskipun melihat metrik untuk seluruh set data bisa bermanfaat, Anda mungkin tertarik dengan metrik yang terkait dengan spesies dan usia hewan peliharaan tersebut. Dengan kata lain, Anda tertarik pada subset set data ini:

    Fitur Nilai
    age (in years) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
    species "dog", "cat", "rabbit"

    Analisis yang mendetail ini dapat membantu mengidentifikasi lokasi yang paling rentan mengalami error, atau memastikan model memiliki performa yang baik pada subset data yang penting.

    Mengonfigurasi slice

    Untuk mengonfigurasi slice, buat file JSON dengan konfigurasi berikut:

    {
      "FEATURE": {
        "KIND": {
          CONFIG
        }
      }
    }
    

    Dengan keterangan:

    • FEATURE adalah fitur yang ingin Anda buat slice-nya. Contoh, age.

    • KIND adalah salah satu dari berikut ini:

      • value

        value membuat satu slice pada satu nilai fitur. Tentukan CONFIG sebagai pasangan nilai kunci dengan kuncinya adalah float_value atau string_value. Sebagai contoh, "float_value": 1.0

        Contoh konfigurasi berikut akan membuat satu slice yang berisi data dengan age dari 1:

        {
          "age": {
            "value": {
              "float_value": 1.0
            }
          }
        }
      • range

        range membuat satu slice yang menyertakan data dalam rentang tertentu. Tentukan CONFIG sebagai dua key-value pair dengan kuncinya adalah low dan high.

        Contoh konfigurasi berikut membuat satu slice yang berisi data dengan age yang merupakan nilai antara 1 dan 3:

        {
          "age": {
            "range": {
              "low": 1,
              "high": 3
            }
          }
        }
      • all_values

        all_values membuat slice terpisah pada setiap kemungkinan label untuk fitur. Tentukan CONFIG sebagai "value": true.

        Contoh konfigurasi berikut membuat tiga slice—masing-masing untuk "dog", "cat", dan "rabbit":

        {
          "species": {
            "all_values": {
              "value": true
            }
          }
        }

    Anda juga dapat menggunakan beberapa fitur untuk membuat satu atau beberapa slice.

    Konfigurasi berikut akan membuat satu slice yang berisi data dengan age berada di antara 1 dan 3, sedangkan species-nya adalah "dog":

    {
      "age": {
        "range": {
          "low": 1,
          "high": 3
        }
      },
      "species": {
        "value": {
          "string_value": "dog"
        }
      }
    }
    

    Konfigurasi berikut akan membuat beberapa slice—satu untuk setiap spesies unik dalam set data, dengan age adalah 1.

    {
      "species": {
        "all_values": {
          "value": true
        }
      },
      "age": {
        "value": {
          "float_value": 1.0
        }
      }
    }
    

    Slice yang dihasilkan berisi data berikut dari contoh set data:

    • Slice 1: age:1 dan species:"dog"

    • Slice 2: age:1 dan species:"cat"

    • Slice 3: age:1 dan species:"rabbit"

    Slice format

    Untuk memformat slice pada komponen ModelEvaluationClassificationOp, lakukan hal berikut:

    1. Buat slicing_spec. Contoh:

      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') ) })
    2. Buat daftar untuk menyimpan konfigurasi slice. Contoh:

      slicing_specs = []
    3. Format setiap slicing_spec sebagai JSON atau kamus. Contoh:

      slicing_spec_json = json_format.MessageToJson(slicing_spec)
      
      slicing_spec_dict = json_format.MessageToDict(slicing_spec)
    4. Gabungkan setiap slicing_spec ke dalam daftar. Contoh:

      slicing_specs.append(slicing_spec_json)
    5. Teruskan slicing_specs sebagai parameter ke komponen ModelEvaluationClassificationOp. Contoh:

      ModelEvaluationClassificationOp(slicing_specs=slicing_specs)

    Slice konfigurasi metrik keseimbangan format

    Agar dapat mengevaluasi model Anda untuk keseimbangan, gunakan komponen berikut:

    Untuk memformat slice pada komponen DetectDataBiasOp dan DetectModelBiasOp, lakukan hal berikut:

    1. Buat BiasConfig. Contoh:

      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') ) }))
    2. Buat daftar untuk menyimpan konfigurasi bias. Contoh:

      bias_configs = []
    3. Format setiap bias_config sebagai JSON atau kamus. Contoh:

      bias_config_json = json_format.MessageToJson(bias_config)
      
      bias_config_dict = json_format.MessageToDict(bias_config)
    4. Gabungkan setiap bias_config ke dalam daftar. Contoh:

      bias_configs.append(bias_config_json)
    5. Teruskan bias_configs sebagai parameter ke komponen DetectDataBiasOp atau DetectModelBiasOp. Contoh:

      DetectDataBiasOp(bias_configs=bias_configs)
      
      DetectModelBiasOp(bias_configs=bias_configs)

    Parameter input yang diperlukan

    Parameter input yang diperlukan untuk komponen evaluasi model bervariasi berdasarkan jenis model yang Anda evaluasi.

    Model AutoML

    Saat melatih model AutoML, Vertex AI menggunakan skema default. Beberapa parameter input untuk komponen evaluasi model hanya diperlukan jika Anda menggunakan skema non-default untuk melatih model.

    Anda dapat melihat dan mendownload file skema dari lokasi Cloud Storage berikut:
    gs://google-cloud-aiplatform/schema/modelevaluation/

    Tab berikut menunjukkan contoh file output prediksi batch dan parameter input yang diperlukan untuk setiap jenis model:

    Berbentuk tabel

    Klasifikasi

    Skema default mencakup kolom berikut:

    • scores: array
    • classes: array

    Berikut adalah contoh file output prediksi batch dengan kolom target 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"]
        }
    }
              

    Tabel ini menjelaskan parameter yang diperlukan untuk komponen ModelEvaluationClassificationOp dengan model tabulasi:

    Parameter komponen evaluasi Diperlukan
    target_field_name Ya
    prediction_label_column Tidak diperlukan untuk skema default.
    Gunakan prediction.classes untuk skema non-default.
    prediction_score_column Tidak diperlukan untuk skema default.
    Gunakan prediction.scores untuk skema non-default.
    evaluation_class_labels Tidak diperlukan untuk skema default.
    Gunakan ["0","1"] untuk skema non-default.

    Regresi

    Skema default mencakup kolom berikut:

    • value: float
    • lower_bound: float
    • upper_bound: float

    Berikut adalah contoh file output prediksi batch dengan kolom target 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
      }
    }
              

    Tabel ini menjelaskan parameter yang diperlukan untuk komponen ModelEvaluationRegressionOp dengan model tabulasi:

    Parameter komponen evaluasi Diperlukan
    target_field_name Ya
    prediction_label_column Tidak diperlukan untuk model regresi.
    prediction_score_column Tidak diperlukan untuk skema default.
    Gunakan prediction.value untuk skema non-default.
    evaluation_class_labels Tidak diperlukan untuk model regresi.

    Prakiraan

    Untuk model perkiraan tabulasi, komponen BatchPredictionJob mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda. Anda dapat menggunakan komponen TargetFieldDataRemoverOp untuk alur kerja yang lebih efisien.

    Skema default mencakup kolom berikut:

    • id: string
    • displayNames: string
    • type: enum
    • timeSegmentStart: string
    • timeSegmentEnd: string
    • confidence: float

    Berikut adalah contoh file CSV dengan sale_dollars sebagai kolom target:

    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
              

    Komponen TargetFieldDataRemoverOp menghapus kolom target sebelum mengirim file ke komponen 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
              

    Berikut adalah contoh file output prediksi batch tanpa kolom target 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]
      }
    }
              

    Tabel ini menjelaskan parameter yang diperlukan untuk komponen ModelEvaluationForecastingOp dengan model tabulasi:

    Parameter komponen evaluasi Diperlukan
    target_field_name Ya
    prediction_label_column Tidak diperlukan untuk model perkiraan.
    prediction_score_column Tidak diperlukan untuk skema default.
    Gunakan "prediction.value" untuk skema non-default.
    evaluation_class_labels Tidak diperlukan untuk model perkiraan.
    ground_truth_gcs_source Ya: link Cloud Storage ke set data asli dengan kolom target.
    ground_truth_format Ya: format set data asli. Misalnya, "jsonl", "csv", atau "bigquery".

    Text

    Klasifikasi

    Untuk model klasifikasi teks, komponen BatchPredictionJob mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda. Anda dapat menggunakan komponen TargetFieldDataRemoverOp untuk alur kerja yang lebih efisien.

    Skema default mencakup kolom berikut:

    • ids: array string
    • displayName: array string
    • confidence: array float

    Berikut adalah contoh set data dengan label sebagai kolom target:

    {
      "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt",
      "mimeType": "text/plain",
      "label": "affection"
    }
              

    Komponen TargetFieldDataRemoverOp menghapus kolom target sebelum mengirim file ke komponen BatchPredictionJob:

    {
      "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt",
      "mimeType": "text/plain"
    }
              

    Berikut adalah contoh file output prediksi batch tanpa kolom target 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]
      }
    }
              

    Tabel ini menjelaskan parameter yang diperlukan untuk komponen ModelEvaluationClassificationOp dengan model teks:

    Parameter komponen evaluasi Diperlukan
    target_field_name Ya
    prediction_label_column Tidak diperlukan untuk skema default.
    Gunakan "prediction.displayNames" untuk skema non-default.
    prediction_score_column Tidak diperlukan untuk skema default.
    Gunakan "prediction.confidences" untuk skema non-default.
    evaluation_class_labels Tidak diperlukan untuk skema default, atau saat prediction_label_column disediakan.
    ground_truth_gcs_source Ya: link Cloud Storage ke set data asli dengan kolom target.
    ground_truth_format Ya: format set data asli. Misalnya, "jsonl", "csv", atau "bigquery".

    Video

    Klasifikasi

    Untuk model klasifikasi video, komponen BatchPredictionJob mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda. Anda dapat menggunakan komponen TargetFieldDataRemoverOp untuk alur kerja yang lebih efisien.

    Skema default mencakup kolom berikut:

    • id: string
    • displayName: string
    • type: enum
    • timeSegmentStart: string
    • timeSegmentEnd: string
    • confidence: float

    Berikut adalah contoh set data dengan ground_truth sebagai kolom target:

    {
      "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"
    }
              

    Komponen TargetFieldDataRemoverOp menghapus kolom target sebelum mengirim file ke komponen 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"
    }
              

    Berikut adalah contoh file output prediksi batch tanpa kolom target 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
        }
      ]
    }
              

    Tabel ini menjelaskan parameter yang diperlukan untuk komponen ModelEvaluationClassificationOp dengan model video:

    Parameter komponen evaluasi Diperlukan
    target_field_name Ya
    prediction_label_column Tidak diperlukan untuk skema default.
    Gunakan "prediction.displayName" untuk skema non-default.
    prediction_score_column Tidak diperlukan untuk skema default.
    Gunakan "prediction.confidence" untuk skema non-default.
    evaluation_class_labels Tidak diperlukan jika skema default digunakan, atau saat prediction_label_column disediakan.
    ground_truth_gcs_source Ya: link Cloud Storage ke set data asli dengan kolom target.
    ground_truth_format Ya: format set data asli. Misalnya, "jsonl", "csv", atau "bigquery".

    Model yang dilatih khusus

    Untuk model yang dilatih khusus, komponen BatchPredictionJob mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda. Anda dapat menggunakan komponen TargetFieldDataRemoverOp untuk alur kerja yang lebih efisien.

    Contoh berikut menunjukkan file output prediksi batch dan parameter input yang diperlukan untuk model klasifikasi tabulasi yang dilatih khusus:

    Berbentuk tabel

    Klasifikasi

    Skema umumnya mencakup kolom berikut:

    • instance: array data input dalam urutan yang sama seperti kolom set data pelatihan model.
    • prediction: array data input dalam urutan yang sama seperti kolom set data pelatihan model.

    Berikut adalah contoh set data CSV dengan species sebagai kolom target:

    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
              

    Komponen TargetFieldDataRemoverOp menghapus kolom target sebelum mengirim file ke komponen prediksi batch:

    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
              

    Berikut adalah contoh file output prediksi batch tanpa kolom target 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]
    }
              

    Tabel ini menjelaskan parameter yang diperlukan untuk komponen ModelEvaluationClassificationOp dengan model video:

    Parameter komponen evaluasi Diperlukan
    target_field_name Ya
    prediction_label_column Harus kosong; kolom ini tidak ada di model yang dilatih khusus.
    prediction_score_column Tidak diperlukan untuk skema default; disetel otomatis untuk format JSONL, CSV, atau BIGQUERY.
    evaluation_class_labels Ya. Harus sama panjang dengan array prediksi output.
    ground_truth_gcs_source Ya: link Cloud Storage ke set data asli dengan kolom target.
    ground_truth_format Ya: format set data asli. Misalnya, "jsonl", "csv", atau "bigquery".

    Evaluasi model tanpa prediksi batch yang dihasilkan Vertex AI

    Anda dapat menggunakan komponen pipeline evaluasi model dengan prediksi batch yang tidak Anda hasilkan di Vertex AI. Namun, perhatikan bahwa input untuk komponen pipeline evaluasi model harus berupa direktori prediksi batch yang berisi file yang cocok dengan imbuhan berikut:

    • prediction.results-

    • explanation.results-

    • predictions_

    Referensi API

    Untuk referensi komponen, lihat Referensi SDK google_cloud_pipeline_components.

    Untuk mengetahui contoh cara menggunakan komponen Evaluasi Model, lihat notebook yang tercantum dalam artikel Membuat evaluasi.

    Histori versi dan catatan rilis

    Untuk mempelajari lebih lanjut histori versi dan perubahan pada Google Cloud Pipeline Components SDK, lihat Catatan Rilis Google Cloud Pipeline Components SDK.