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.
- Pasang paket
azureml-train-automl
terbaru ke lingkungan lokal Anda. - Untuk detail tentang paket
azureml-train-automl
terbaru, lihat catatan rilis.
Untuk informasi tentang konfigurasi, lihat artikel berikut ini:
- Untuk pengalaman pertama kode: Menyiapkan pelatihan AutoML dengan Python
- Untuk pengalaman tanpa kode: Siapkan pelatihan AutoML tanpa kode untuk data tabular dengan antarmuka pengguna studio
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'
atauvalidation=auto
ditentukan dalam objek AndaAutoMLConfig
- 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.
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.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.
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_iterations
parameter 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
}