Bagikan melalui


Fiturisasi data dalam pembelajaran mesin otomatis

BERLAKU UNTUK: Python SDK azureml v1

Artikel ini menjelaskan cara menyesuaikan pengaturan fiturisasi data di Azure Pembelajaran Mesin untuk eksperimen pembelajaran mesin otomatis (AutoML) Anda.

Rekayasa fitur dan fiturisasi

Data pelatihan terdiri dari baris dan kolom. Setiap baris adalah pengamatan atau rekaman, dan kolom-kolom dari setiap baris adalah fitur-fitur yang menjelaskan setiap rekaman. Biasanya, fitur yang paling mencirikan pola dalam data dipilih untuk membuat model prediktif.

Meskipun banyak bidang data mentah dapat digunakan langsung untuk melatih model, sering kali perlu untuk membuat fitur lain (direkayasa) yang memberikan informasi yang membedakan pola dalam data dengan lebih baik. Proses ini disebut rekayasa fitur, di mana penggunaan pengetahuan domain tentang data digunakan untuk membuat fitur yang, pada gilirannya, membantu algoritma pembelajaran mesin untuk belajar lebih baik.

Di Azure Machine Learning, teknik penskalaan data dan normalisasi diterapkan agar rekayasa fitur lebih mudah. Secara kolektif, teknik ini dan rekayasa fitur ini disebut fiturisasi dalam eksperimen pembelajaran mesin otomatis (ML).

Prasyarat

Artikel ini mengasumsikan bahwa Anda sudah tahu cara mengonfigurasi eksperimen ML otomatis.

Penting

Perintah Python dalam artikel ini memerlukan versi paket azureml-train-automl terbaru.

Untuk informasi tentang konfigurasi, lihat artikel berikut ini:

Mengonfigurasi fiturisasi

Dalam setiap eksperimen pembelajaran mesin otomatis, penskalaan otomatis dan teknik normalisasi diterapkan ke data Anda secara default. Teknik-teknik ini adalah jenis featurisasi yang membantu algoritma tertentu yang sensitif terhadap fitur pada skala yang berbeda. Anda dapat mengaktifkan lebih banyak fiturisasi, seperti missing-values imputation, pengkodean, dan transformasi.

Catatan

Langkah-langkah fiturisasi pembelajaran mesin otomatis (seperti normalisasi fitur, penanganan data yang hilang, atau mengonversi teks menjadi numerik) menjadi bagian dari model dasar. Saat menggunakan model untuk prediksi, langkah-langkah fiturisasi yang sama yang diterapkan selama pelatihan akan diterapkan ke data input Anda secara otomatis.

Untuk eksperimen yang Anda konfigurasikan dengan Python SDK, Anda dapat mengaktifkan atau menonaktifkan setelan fiturisasi dan menentukan lebih lanjut langkah-langkah fiturisasi yang akan digunakan untuk eksperimen Anda. Jika Anda menggunakan studio Azure Machine Learning, lihat langkah-langkah untuk mengaktifkan fiturisasi.

Tabel berikut memperlihatkan setelah yang diterima untuk featurization pada kelas AutoMLConfig:

Konfigurasi Fiturisasi Deskripsi
"featurization": 'auto' Menunjukkan bahwa, sebagai bagian dari praproses, data guardrails dan langkah-langkah fiturisasi dilakukan secara otomatis. Setelah Ini adalah default.
"featurization": 'off' Menentukan bahwa langkah-langkah fiturisasi tidak harus dilakukan secara otomatis.
"featurization": 'FeaturizationConfig' Menentukan bahwa langkah-langkah fiturisasi yang dikustomisasi akan digunakan. Pelajari cara kustomisasi fiturisasi.

Fiturisasi otomatis

Tabel berikut ini meringkas teknik-teknik yang secara otomatis diterapkan ke data Anda. Teknik ini diterapkan untuk eksperimen yang dikonfigurasi dengan menggunakan SDK atau UI studio. Untuk menonaktifkan perilaku ini, set "featurization": 'off' pada obyek AutoMLConfig Anda.

Catatan

Jika Anda berencana untuk mengekspor model yang dibuat AutoML Anda ke model ONNX, hanya opsi-opsi fiturisasi yang ditunjukkan dengan tanda bintang ("*") yang didukung dalam format ONNX. Pelajari selengkapnya tentang mengonversi model ke ONNX.

Langkah-langkah featurisasi Deskripsi
Hilangkan kardinalitas tinggi atau tidak ada fitur varians* Hilangkan fitur-fitur ini dari pelatihan dan set validasi. Berlaku untuk fitur-fitur yang semua nilainya hilang, dengan nilai yang sama di semua baris, atau dengan kardinalitas tinggi (misalnya, hash, ID, atau GUID).
Impute nilai yang hilang* Untuk fitur numerik, impute dengan rata-rata nilai dalam kolom.

Untuk fitur kategoris, impute dengan nilai yang paling sering.
Menghasilkan lebih banyak fitur* Untuk fitur DateTime: Tahun, Bulan, Hari, Hari dalam seminggu, Hari dalam setahun, Kuartal, Minggu dalam setahun, Jam, Menit, Detik.

Untuk tugas prakiraan, fitur DateTime tambahan ini dibuat: Tahun ISO, Setengah - setengah tahun, Kalender bulan sebagai string, Minggu, Hari dalam seminggu sebagai string, Hari kuartal, Hari dalam setahun, AM/PM (0 jika jam sebelum tengah hari (12 siang), 1 sebaliknya), AM/PM sebagai string, Jam dalam sehari (berdasarkan 12 jam)

Untuk fitur Teks: Frekuensi istilah berdasarkan unigram, bigram, dan trigram. Pelajari lebih lanjut tentang bagaimana hal ini dilakukan dengan BERT.
Mengubah dan mengkodekan* Ubah fitur numerik yang memiliki beberapa nilai unik menjadi fitur kategoris.

Pengkodean one-hot digunakan untuk fitur kategoris kardinalitas rendah. Pengkodean hash one-hot digunakan untuk fitur kategoris kardinalitas tinggi.
Penyematan kata Featurizer teks mengonversi vektor token teks menjadi vektor kalimat dengan menggunakan model yang sudah dilatih sebelumnya. Vektor penyematan setiap kata dalam dokumen dikumpulkan dengan sisanya untuk menghasilkan vektor fitur dokumen.
Jarak Kluster Melatih model pengklusteran k-means pada semua kolom numerik. Menghasilkan fitur baru k (satu fitur numerik baru per kluster) yang berisi jarak dari setiap sampel ke sentroid dari setiap kluster.

Dalam setiap eksperimen pembelajaran mesin otomatis, data Anda secara otomatis diskalakan atau dinormalisasi untuk membantu algoritme berkinerja baik. Selama pelatihan model, salah satu teknik penskalaan atau normalisasi berikut diterapkan pada setiap model.

Penskalan & pemrosesan Deskripsi
StandardScaleWrapper Standarisasi fitur dengan menghapus rata-rata dan penskalaan ke varian unit.
MinMaxScalar Mengubah fitur dengan menskalakan setiap fitur dengan minimum dan maksimum kolom tersebut.
MaxAbsScaler Skalakan setiap fitur dengan nilai absolut maksimumnya.
RobustScalar Menskalakan fitur berdasarkan rentang kuantilnya.
PCA Pengurangan dimensi linier menggunakan Dekomposisi Nilai Tunggal data untuk memproyeksikannya ke ruang dimensi yang lebih rendah.
TruncatedSVD Transformator ini melakukan pengurangan dimensi linier dengan menggunakan dekomposisi nilai tunggal terpotong (SVD). Bertentangan dengan PCA, estimator ini tidak memfokuskan data sebelum menghitung dekomposisi nilai tunggal, yang berarti dapat bekerja dengan matriks scipy.sparse secara efisien.
SparseNormalizer Setiap sampel (yaitu, setiap baris matriks data) dengan setidaknya satu komponen nonzero diskalakan ulang secara independen dari sampel lain sehingga normanya (l1 atau l2) sama dengan satu.

Pagar pembatas data

Pagar pembatas data membantu Anda mengidentifikasi potensi masalah dengan data Anda (misalnya, nilai yang hilang atau ketidakseimbangan kelas). Pagar pembatas juga membantu Anda mengambil tindakan korektif untuk hasil yang ditingkatkan.

Pagar pembatas data diterapkan:

  • Untuk eksperimen SDK: Saat parameter "featurization": 'auto' atau validation=auto ditentukan dalam objek Anda AutoMLConfig
  • Untuk eksperimen studio: Saat fiturisasi otomatis diaktifkan

Anda dapat meninjau pagar pembatas data untuk eksperimen Anda:

  • Dengan setelan show_output=True kapan Anda mengirimkan eksperimen dengan menggunakan SDK.
  • Di studio, pada tab Pagar Pembatas data dari proses ML otomatis Anda.

Status pagar pembatas data

Pagar pembatas data menampilkan salah satu dari tiga status:

Provinsi Deskripsi
Lulus Tidak ada masalah data yang terdeteksi dan tidak ada tindakan yang diperlukan oleh Anda.
Selesai Perubahan diterapkan ke data Anda. Kami mendorong Anda untuk meninjau tindakan korektif yang diambil AutoML, untuk memastikan bahwa perubahan selaras dengan hasil yang diharapkan.
Diperingatkan Masalah data terdeteksi tetapi tidak dapat diperbaiki. Kami mendorong Anda untuk merevisi dan memperbaiki masalah ini.

Pagar pembatas data yang didukung

Tabel berikut ini menjelaskan pagar pembatas data yang saat ini didukung dan status terkait yang mungkin Anda lihat saat Anda mengirimkan eksperimen Anda:

Pagar pembatas Status Kondisi untuk pemicu
Imputasi nilai fitur yang hilang Diteruskan


Selesai
Tidak ada nilai fitur yang hilang yang terdeteksi dalam data pelatihan Anda. Pelajari selengkapnya tentang imputasi nilai yang hilang.

Nilai fitur yang hilang terdeteksi dalam data pelatihan Anda dan diimpute.
Deteksi fitur kardinalitas tinggi Diteruskan


Selesai
Input Anda dianalisis, dan tidak ada fitur kardinalitas tinggi yang terdeteksi.

Fitur kardinalitas tinggi terdeteksi di input Anda dan telah ditangani.
Penanganan pemisahan validasi Selesai Konfigurasi validasi diset ke 'auto' dan data pelatihan berisi kurang dari 20.000 baris.
Setiap iterasi model terlatih divalidasi dengan menggunakan validasi silang. Pelajari selengkapnya tentang data validasi.

Konfigurasi validasi diset ke 'auto', dan data pelatihan berisi kurang dari 20.000 baris.
Data input telah dibagi menjadi himpunan data pelatihan dan himpunan data validasi untuk validasi model.
Deteksi penyeimbangan kelas Diteruskan




Diberitahu



Selesai
Input Anda telah dianalisis, dan semua kelas diseimbangkan dalam data pelatihan Anda. Himpunan data dianggap seimbang jika setiap kelas memiliki representasi yang baik dalam himpunan data, sebagaimana diukur berdasarkan jumlah dan rasio sampel.

Kelas yang tidak seimbang terdeteksi dalam input Anda. Untuk memperbaiki bias model, perbaiki masalah keseimbangan. Pelajari selengkapnya tentang data tidak seimbang.

Kelas yang tidak seimbang terdeteksi dalam input Anda dan logika sweeping telah menentukan untuk menerapkan keseimbangan.
Deteksi masalah memori Diteruskan



Selesai
Nilai pililhan (horizon, lag, rolling window) dianalisis, dan tidak ada potensi masalah kehabisan memori yang terdeteksi. Pelajari selengkapnya tentang konfigurasi prakiraan rangkaian waktu.

Nilai yang dipilih (horizon, lag, rolling window) dianalisis dan akan berpotensi menyebabkan eksperimen Anda kehabisan memori. Konfigurasi lag atau rolling-window dimatikan.
Deteksi Frekuensi Diteruskan


Selesai
Rangkaian waktu dianalisis, semua titik data diselaraskan dengan frekuensi yang terdeteksi.

Rangkaian waktu dianalisis, dan titik data yang tidak selaras dengan frekuensi yang terdeteksi, terdeteksi. Titik data ini dihapus dari himpunan data.
Validasi silang Selesai Untuk mengevaluasi model yang dilatih oleh AutoML secara akurat, kami menggunakan himpunan data yang tidak dilatih oleh model. Oleh karena itu, jika pengguna tidak memberikan himpunan data validasi eksplisit, bagian dari himpunan data pelatihan digunakan untuk mencapai hal ini. Untuk himpunan data yang lebih kecil (kurang dari 20.000 sampel), validasi silang digunakan, jika tidak, satu set penangguhan dibagi dari data pelatihan untuk berfungsi sebagai himpunan data validasi. Oleh karena itu, untuk data input Anda, kami menggunakan validasi silang dengan 10 lipatan, jika jumlah sampel pelatihan kurang dari 1000, dan 3 lipatan dalam semua kasus lainnya.
Pemisahan data Train-Test Selesai Untuk mengevaluasi model yang dilatih oleh AutoML secara akurat, kami menggunakan himpunan data yang tidak dilatih oleh model. Oleh karena itu, jika pengguna tidak memberikan himpunan data validasi eksplisit, bagian dari himpunan data pelatihan digunakan untuk mencapai hal ini. Untuk himpunan data yang lebih kecil (kurang dari 20.000 sampel), validasi silang digunakan, jika tidak, satu set penangguhan dibagi dari data pelatihan untuk berfungsi sebagai himpunan data validasi. Oleh karena itu, data input Anda dibagi menjadi himpunan data pelatihan dan himpunan data validasi holdout.
Pendeteksian ID Rangkaian Waktu Diteruskan


Diperbaiki
Himpunan data dianalisis, dan tidak ada indeks waktu duplikat yang terdeteksi.

Beberapa rangkaian waktu ditemukan dalam himpunan data, dan pengidentifikasi rangkaian waktu dibuat secara otomatis untuk himpunan data Anda.
Agregasi rangkaian waktu Diteruskan


Diperbaiki
Frekuensi himpunan data diselaraskan dengan frekuensi yang ditentukan pengguna. Agregasi tidak dilakukan.

Data diagregasi untuk mematuhi frekuensi yang disediakan pengguna.
Penanganan seri pendek Diteruskan


Diperbaiki
ML Otomatis mendeteksi titik data yang cukup untuk setiap seri dalam data input untuk melanjutkan pelatihan.

ML otomatis mendeteksi bahwa beberapa seri tidak berisi cukup poin data untuk melatih model. Untuk melanjutkan pelatihan, seri pendek ini dijatuhkan atau di-padding.

Menyesuaikan fiturisasi

Anda dapat menyesuaikan setelan fiturisasi guna memastikan bahwa data dan fitur yang digunakan untuk melatih model ML menghasilkan prediksi yang relevan.

Untuk menyesuaikan fiturisasi, tentukan "featurization": FeaturizationConfig di objek AutoMLConfig Anda. Jika Anda menggunakan studio Azure Machine Learning untuk eksperimen Anda, lihat artikel cara. Untuk menyesuaikan fiturisasi untuk tipe tugas prakiraan, lihat cara prakiraan.

Kustomisasi yang didukung meliputi:

Penyesuaian Definisi
Pembaruan tujuan kolom Mengganti jenis fitur yang terdeteksi otomatis untuk kolom yang ditentukan.
Pembaruan parameter transformator Memperbarui parameter untuk transformator yang ditentukan. Saat ini mendukung Imputer (rata-rata, paling sering, dan median) dan HashOneHotEncoder.
Membuat kolom Menentukan kolom untuk dihilangkan agar tidak ditampilkan.
Transformator blok Menentukan transformator blok yang akan digunakan dalam proses featurisasi.

Catatan

Fungsi hilangkan kolom dihentikan pada SDK versi 1.19. Hilangkan kolom dari himpunan data Anda sebagai bagian dari pembersihan data, sebelum menggunakannya dalam percobaan ML otomatis.

Buat objek FeaturizationConfig dengan menggunakan panggilan API:

featurization_config = FeaturizationConfig()
featurization_config.blocked_transformers = ['LabelEncoder']
featurization_config.drop_columns = ['aspiration', 'stroke']
featurization_config.add_column_purpose('engine-size', 'Numeric')
featurization_config.add_column_purpose('body-style', 'CategoricalHash')
#default strategy mean, add transformer param for 3 columns
featurization_config.add_transformer_params('Imputer', ['engine-size'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['city-mpg'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['bore'], {"strategy": "most_frequent"})
featurization_config.add_transformer_params('HashOneHotEncoder', [], {"number_of_bits": 3})

Transparansi fiturisasi

Setiap model AutoML memiliki fiturisasi yang diterapkan secara otomatis. Fiturisasi mencakup rekayasa fitur otomatis (ketika"featurization": 'auto') dan penskalaan dan normalisasi, yang kemudian berdampak pada algoritma yang dipilih dan nilai hyperparameter-nya. AutoML mendukung berbagai metode untuk memastikan Anda memiliki visibilitas ke dalam apa yang diterapkan pada model Anda.

Pertimbangkan contoh prakiraan ini:

  • Ada empat fitur input: A (Numerik), B (Numerik), C (Numerik), D (DateTime).
  • Fitur numerik C dihilangkan karena merupakan kolom ID dengan semua nilai unik.
  • Fitur numerik A dan B memiliki nilai yang hilang dan karenanya diimpute oleh mean.
  • Fitur DateTime D difiturisasi ke dalam 11 fitur rekayasa yang berbeda.

Untuk mendapatkan informasi ini, gunakan output fitted_model dari proses eksperimen ML otomatis Anda.

automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()

Rekayasa fitur otomatis

get_engineered_feature_names() mengembalikan daftar nama fitur yang direkayasa.

Catatan

Gunakan 'timeseriestransformer' untuk task='forecasting', jika tidak gunakan 'datatransformer' untuk tugas 'regression' atau 'classification'.

fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()

Daftar ini mencakup semua nama fitur yang direkayasa.

['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']

get_featurization_summary() mendapat ringkasan fiturisasi dari semua fitur input.

fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()

Output

[{'RawFeatureName': 'A',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'B',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'C',
  'TypeDetected': 'Numeric',
  'Dropped': 'Yes',
  'EngineeredFeatureCount': 0,
  'Tranformations': []},
 {'RawFeatureName': 'D',
  'TypeDetected': 'DateTime',
  'Dropped': 'No',
  'EngineeredFeatureCount': 11,
  'Tranformations': ['DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime',ateTime','DateTime','DateTime']}]
Output Definisi
RawFeatureName Input nama fitur/kolom dari himpunan data yang disediakan.
TypeDetected Tipe data yang terdeteksi dari fitur input.
Dropped Menunjukkan apakah fitur input dihilangkan atau digunakan.
EngineeringFeatureCount Jumlah fitur yang dihasilkan melalui transformasi rekayasa fitur otomatis.
Transformasi Daftar transformasi yang diterapkan pada fitur input untuk menghasilkan fitur yang direkayasa.

Penskalaan dan normalisasi

Untuk memahami penskalaan/normalisasi dan algoritma yang dipilih dengan nilai hyperparameter-nya, gunakan fitted_model.steps.

Output sampel berikut ini berasal dari menjalankan fitted_model.steps untuk proses yang dipilih:

[('RobustScaler', 
  RobustScaler(copy=True, 
  quantile_range=[10, 90], 
  with_centering=True, 
  with_scaling=True)), 

  ('LogisticRegression', 
  LogisticRegression(C=0.18420699693267145, class_weight='balanced', 
  dual=False, 
  fit_intercept=True, 
  intercept_scaling=1, 
  max_iter=100, 
  multi_class='multinomial', 
  n_jobs=1, penalty='l2', 
  random_state=None, 
  solver='newton-cg', 
  tol=0.0001, 
  verbose=0, 
  warm_start=False))]

Untuk mendapatkan detail selengkapnya, gunakan fungsi helper ini:

from pprint import pprint

def print_model(model, prefix=""):
    for step in model.steps:
        print(prefix + step[0])
        if hasattr(step[1], 'estimators') and hasattr(step[1], 'weights'):
            pprint({'estimators': list(e[0] for e in step[1].estimators), 'weights': step[1].weights})
            print()
            for estimator in step[1].estimators:
                print_model(estimator[1], estimator[0]+ ' - ')
        elif hasattr(step[1], '_base_learners') and hasattr(step[1], '_meta_learner'):
            print("\nMeta Learner")
            pprint(step[1]._meta_learner)
            print()
            for estimator in step[1]._base_learners:
                print_model(estimator[1], estimator[0]+ ' - ')
        else:
            pprint(step[1].get_params())
            print()   

Fungsi helper ini mengembalikan output berikut untuk proses tertentu dengan menggunakan LogisticRegression with RobustScalar seabgai algoritma tertentu.

RobustScaler
{'copy': True,
'quantile_range': [10, 90],
'with_centering': True,
'with_scaling': True}

LogisticRegression
{'C': 0.18420699693267145,
'class_weight': 'balanced',
'dual': False,
'fit_intercept': True,
'intercept_scaling': 1,
'max_iter': 100,
'multi_class': 'multinomial',
'n_jobs': 1,
'penalty': 'l2',
'random_state': None,
'solver': 'newton-cg',
'tol': 0.0001,
'verbose': 0,
'warm_start': False}

Memprediksi probabilitas kelas

Model yang diproduksi dengan menggunakan ML otomatis semuanya memiliki objek wrapper yang mencerminkan fungsionalitas dari kelas yang berasal dari open-source. Sebagian besar objek wrapper model klasifikasi yang dikembalikan oleh ML otomatis mengimplementasikan fungsi predict_proba(), yang menerima sampel data matriks seperti array atau yang jarang dari fitur-fitur Anda (nilai X), dan mengembalikan array n-dimensi dari setiap sampel dan probabilitas kelasnya masing-masing.

Dengan asumsi Anda mengambil model eksekusi dan pas terbaik menggunakan panggilan yang sama, Anda dapat memanggil predict_proba() langsung dari model yang X_test dipasang, menyediakan sampel dalam format yang sesuai tergantung pada jenis model.

best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)

Jika model yang mendasar tidak mendukung predict_proba() fungsi atau formatnya salah, pengecualian khusus kelas model akan dilemparkan. Lihat dokumen referensi RandomForestClassifier dan XGBoost untuk contoh tentang bagaimana fungsi ini diterapkan untuk berbagai jenis model.

Integrasi BERT dalam ML otomatis

BERT digunakan di lapisan fiturisasi ML otomatis. Dalam lapisan ini, jika satu kolom berisi teks bebas atau jenis data lain seperti tanda waktu atau angka sederhana, maka fiturisasi diterapkan sesuai dengan itu.

Untuk BERT, model ini disempurnakan dan dilatih menggunakan label yang disediakan pengguna. Dari sini, penyematan dokumen adalah output sebagai fitur di samping yang lain, seperti fitur berbasis tanda waktu, hari dalam seminggu.

Pelajari cara Menyiapkan AutoML untuk melatih model pemrosesan bahasa alami dengan Python.

Langkah-langkah untuk memanggil BERT

Untuk memanggil BERT, atur enable_dnn: True di automl_settings Anda dan gunakan komputasi GPU (vm_size = "STANDARD_NC6" atau GPU yang lebih tinggi). Jika komputasi CPU digunakan, maka alih-alih BERT, AutoML mengaktifkan BiLSTM DNN featurizer.

ML otomatis mengambil langkah-langkah berikut untuk BERT.

  1. Praprosesi dan tokenisasi semua kolom teks. Misalnya, StringCast transformator dapat ditemukan dalam ringkasan fiturisasi model akhir. Contoh cara menghasilkan ringkasan fiturisasi model dapat ditemukan di notebook ini.

  2. Menggabungkan semua kolom teks ke dalam satu kolom teks, karenanya StringConcatTransformer dalam model akhir.

    Implementasi BERT kami membatasi total panjang teks sampel pelatihan menjadi 128 token. Itu berarti semua kolom teks ketika digabungkan idealnya paling banyak harus 128 token panjangnya. Jika ada beberapa kolom, setiap kolom harus dipangkas sehingga tercapai keadaan tersebut. Jika tidak, untuk kolom gabungan dengan panjang >128 token, lapisan tokenizer BERT akan memotong input ini menjadi 128 token.

  3. Sebagai bagian dari sweeping fitur, AutoML membandingkan BERT dengan baseline (sekantong fitur kata) pada sampel data. Perbandingan ini menentukan apakah BERT akan memberikan peningkatan akurasi. Jika BERT berkinerja lebih baik daripada baseline, AutoML akan menggunakan BERT untuk fiturisasi teks bagi seluruh data. Dalam hal ini, Anda melihat PretrainedTextDNNTransformer dalam model akhir.

BERT umumnya berjalan lebih lama daripada featurizer lainnya. Untuk performa yang lebih baik, sebaiknya gunakan STANDARD_NC24r atau STANDARD_NC24rs_V3 untuk kemampuan RDMA mereka.

AutoML mendistribusikan pelatihan BERT di beberapa simpul jika tersedia (hingga maksimal delapan simpul). Hal ini dapat dilakukan di objek AutoMLConfig Anda dengan menyetel max_concurrent_iterationsparameter ke lebih tinggi dari 1.

Bahasa yang didukung untuk BERT di AutoML

AutoML saat ini mendukung sekitar 100 bahasa dan bergantung pada bahasa himpunan data, AutoML memilih model BERT yang sesuai. Untuk data Jerman, kami menggunakan model BERT Jerman. Untuk bahasa Inggris, kami menggunakan model BERT Bahasa Inggris. Untuk semua bahasa lain, kami menggunakan model BERT multibahasa.

Dalam kode berikut, model BERT Jerman dipicu, karena bahasa himpunan data ditentukan deu, tiga kode bahasa huruf untuk bahasa Jerman menurut klasifikasi ISO:

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='deu')

automl_settings = {
    "experiment_timeout_minutes": 120,
    "primary_metric": 'accuracy',
# All other settings you want to use
    "featurization": featurization_config,
    
    "enable_dnn": True, # This enables BERT DNN featurizer
    "enable_voting_ensemble": False,
    "enable_stack_ensemble": False
}