Otomatik makine öğrenmesinde veri özelliği oluşturma
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
Bu makalede, otomatik makine öğrenmesi (AutoML) denemeleriniz için Azure Machine Learning'deki veri özelliği ayarlarını özelleştirme işlemi açıklanmaktadır.
Özellik mühendisliği ve özellik geliştirme
Eğitim verileri satır ve sütunlardan oluşur. Her satır bir gözlem veya kayıttır ve her satırın sütunları her kaydı açıklayan özelliklerdir. Genellikle, verilerdeki desenleri en iyi niteleyen özellikler tahmine dayalı modeller oluşturmak için seçilir.
Ham veri alanlarının çoğu bir modeli eğitmek için doğrudan kullanılabilir olsa da, genellikle verilerdeki desenleri daha iyi ayırt eden bilgiler sağlayan diğer (tasarlanmış) özelliklerin oluşturulması gerekir. Bu işleme özellik mühendisliği adı verilir. Burada verilerin etki alanı bilgisinin kullanılması, makine öğrenmesi algoritmalarının daha iyi öğrenmesine yardımcı olacak özellikler oluşturmak için kullanılır.
Azure Machine Learning'de özellik mühendisliğini kolaylaştırmak için veri ölçeklendirme ve normalleştirme teknikleri uygulanır. Bu teknikler ve bu özellik mühendisliği toplu olarak otomatik makine öğrenmesi (ML) denemelerinde özellik geliştirme olarak adlandırılır.
Önkoşullar
Bu makalede, otomatik ml denemesini yapılandırmayı zaten bildiğiniz varsayılır.
Önemli
Bu makaledeki Python komutları en son azureml-train-automl
paket sürümünü gerektirir.
- En son
azureml-train-automl
paketi yerel ortamınıza yükleyin. - En son
azureml-train-automl
paketle ilgili ayrıntılar için sürüm notlarına bakın.
Yapılandırma hakkında bilgi için aşağıdaki makalelere bakın:
- Kod öncelikli bir deneyim için: Python ile AutoML eğitimini ayarlama
- Kod içermeyen bir deneyim için: Studio kullanıcı arabirimiyle tablosal veriler için kod içermeyen AutoML eğitimi ayarlama
Özellik geliştirmeyi yapılandırma
Her otomatik makine öğrenmesi denemesinde, verilerinize varsayılan olarak otomatik ölçeklendirme ve normalleştirme teknikleri uygulanır. Bu teknikler, farklı ölçeklerdeki özelliklere duyarlı olan belirli algoritmalara yardımcı olan özellik geliştirme türleridir. Eksik değerlerin belirtilmesi, kodlama ve dönüşümler gibi daha fazla özellik kazandırabilirsiniz.
Not
Otomatik makine öğrenmesi özellik geliştirme adımları (özellik normalleştirme, eksik verileri işleme veya metni sayısala dönüştürme gibi) temel alınan modelin bir parçası haline gelir. Modeli tahminler için kullandığınızda, eğitim sırasında uygulanan özellik geliştirme adımları giriş verilerinize otomatik olarak uygulanır.
Python SDK'sı ile yapılandırdığınız denemeler için özellik geliştirme ayarını etkinleştirebilir veya devre dışı bırakabilir ve denemeniz için kullanılacak özellik geliştirme adımlarını daha ayrıntılı olarak belirtebilirsiniz. Azure Machine Learning stüdyosu kullanıyorsanız özellik geliştirmeyi etkinleştirme adımlarına bakın.
Aşağıdaki tabloda AutoMLConfig sınıfında için kabul edilen ayarlar featurization
gösterilmektedir:
Özellik kazandırma yapılandırması | Açıklama |
---|---|
"featurization": 'auto' |
Ön işlemenin bir parçası olarak, veri korumaları ve özellik geliştirme adımlarının otomatik olarak yapılacağını belirtir. Bu ayar varsayılandır. |
"featurization": 'off' |
Özellik ekleme adımlarının otomatik olarak yapılmayacağı belirtir. |
"featurization": 'FeaturizationConfig' |
Özelleştirilmiş özellik geliştirme adımlarının kullanılacağını belirtir. Özellik geliştirmeyi özelleştirmeyi öğrenin. |
Otomatik özellik kazandırma
Aşağıdaki tabloda, verilerinize otomatik olarak uygulanan teknikler özetlenir. Bu teknikler, SDK veya stüdyo kullanıcı arabirimi kullanılarak yapılandırılan denemeler için uygulanır. Bu davranışı devre dışı bırakmak için nesnenizde AutoMLConfig
ayarlayın"featurization": 'off'
.
Not
AutoML tarafından oluşturulan modellerinizi bir ONNX modeline aktarmayı planlıyorsanız, ONNX biçiminde yalnızca yıldız işareti ("*") ile belirtilen özellik özellikleri seçenekleri desteklenir. Modelleri ONNX'e dönüştürme hakkında daha fazla bilgi edinin.
Özellik geliştirme adımları | Açıklama |
---|---|
Yüksek kardinaliteyi bırakın veya varyans özelliği yok* | Bu özellikleri eğitim ve doğrulama kümelerinden bırakın. Tüm değerleri eksik olan, tüm satırlarda aynı değere sahip veya yüksek kardinaliteye (örneğin, karmalar, kimlikler veya GUID' ler) sahip özellikler için geçerlidir. |
Eksik değerleri açma/kapatma* | Sayısal özellikler için, sütundaki değerlerin ortalamasıyla birlikte impute. Kategorik özellikler için, en sık kullanılan değerle impute. |
Daha fazla özellik oluşturma* | DateTime özellikleri için: Year, Month, Day, Day of week, Day of year, Quarter, Week of the year, Hour, Minute, Second. Tahmin görevleri için bu ek DateTime özellikleri oluşturulur: ISO yılı, Yarım - yarım yıl, Dize olarak Takvim ayı, Hafta, Dize olarak haftanın günü, Üç aylık dönem günü, Yılın günü,/PM (saat öğleden önceyse 12 pm), 1 aksi halde), DIZE olarak/PM, Gün saati (12-sa) Metin özellikleri için: Tek birimleri, büyük harfleri ve trigramları temel alan terim sıklığı. BERT ile bunun nasıl yapıldığı hakkında daha fazla bilgi edinin. |
Dönüştürme ve kodlama* | Birkaç benzersiz değeri olan sayısal özellikleri kategorik özelliklere dönüştürün. One-hot kodlama düşük kardinalite kategorik özellikleri için kullanılır. One-hot-hash kodlaması, yüksek kardinalite kategorik özellikleri için kullanılır. |
Word eklemeleri | Metin özellik oluşturucu, önceden eğitilmiş bir model kullanarak metin belirteçlerinin vektörlerini cümle vektörlerine dönüştürür. Her sözcüğün belgeye ekleme vektörleri, belge özellik vektörleri oluşturmak için geri kalanıyla birlikte toplanır. |
Küme Uzaklığı | K ortalamaları kümeleme modelini tüm sayısal sütunlarda eğiter. Her örneğin her kümenin merkez merkezine uzaklıklarını içeren k yeni özellikler (küme başına bir yeni sayısal özellik) üretir. |
Her otomatik makine öğrenmesi denemesinde, algoritmaların iyi performans göstermelerine yardımcı olmak için verileriniz otomatik olarak ölçeklendirilir veya normalleştirilir. Model eğitimi sırasında, her modele aşağıdaki ölçeklendirme veya normalleştirme tekniklerinden biri uygulanır.
Ölçeklendirme ve işleme | Açıklama |
---|---|
StandardScaleWrapper | Ortalamayı kaldırarak ve birim varyansını ölçeklendirerek özellikleri standartlaştırın. |
MinMaxScalar | Her özelliği bu sütunun en düşük ve en yüksek düzeyine göre ölçeklendirerek özellikleri dönüştürür. |
MaxAbsScaler | Her özelliği maksimum mutlak değerine göre ölçeklendirin. |
RobustScalar | Özellikleri nicelik aralığına göre ölçeklendirir. |
PCA | Verileri daha düşük boyutlu bir alana yansıtmak için Tekil Değer Ayrıştırma kullanılarak doğrusal boyutsallık azaltma. |
KesilmişSVD | Bu transformatör kesilen tekil değer ayrıştırma (SVD) kullanarak doğrusal boyutsallığı azaltma gerçekleştirir. PCA'nın aksine, bu tahmin aracı tekil değer ayrıştırma işlemini hesaplamadan önce verileri ortalamaz; bu da scipy.sparse matrisleriyle verimli bir şekilde çalışabileceği anlamına gelir. |
Seyrek Normalleştirici | En az bir sıfır olmayan bileşene sahip her örnek (diğer bir deyişle veri matrisinin her satırı), normunun (l1 veya l2) bire eşit olması için diğer örneklerden bağımsız olarak yeniden ölçeklendirilir. |
Veri korumaları
Veri korumaları verilerinizle ilgili olası sorunları (örneğin eksik değerler veya sınıf dengesizliği) belirlemenize yardımcı olur. Ayrıca, iyileştirilmiş sonuçlar için düzeltici eylemler gerçekleştirmenize de yardımcı olur.
Veri korumaları uygulanır:
- SDK denemeleri için: Parametreler
"featurization": 'auto'
veyavalidation=auto
nesnenizdeAutoMLConfig
belirtildiğinde - Stüdyo denemeleri için: Otomatik özellik özelliği etkinleştirildiğinde
Denemeniz için veri korumalarını gözden geçirebilirsiniz:
- SDK kullanarak bir deneme gönderdiğinizde ayarını
show_output=True
yaparak. - Stüdyoda, otomatik ML çalıştırmanızın Data guardrails sekmesinde.
Veri koruma durumları
Veri korumaları üç durumdan birini görüntüler:
Durum | Açıklama |
---|---|
Geçirilen | Hiçbir veri sorunu algılanmadı ve herhangi bir işlem yapmanız gerekmez. |
Yapılmış | Verilerinize değişiklikler uygulandı. Değişikliklerin beklenen sonuçlarla uyumlu olduğundan emin olmak için AutoML'nin yaptığı düzeltici eylemleri gözden geçirmenizi öneririz. |
Uyarılır | Bir veri sorunu algılandı ancak düzeltilemedi. Sorunu düzeltmenizi ve düzeltmenizi öneririz. |
Desteklenen veri korumaları
Aşağıdaki tabloda, şu anda desteklenen veri korumaları ve denemenizi gönderirken görebileceğiniz ilişkili durumlar açıklanmaktadır:
Otokorkuluk | Durum | Tetikleyici koşulu |
---|---|---|
Eksik özellik değerleri imputation | Geçirilen Bitti |
Eğitim verilerinizde eksik özellik değeri algılanmadı. Eksik değer gösterimi hakkında daha fazla bilgi edinin. Eğitim verilerinizde eksik özellik değerleri algılandı ve engellendi. |
Yüksek kardinalite özelliği algılama | Geçirilen Bitti |
Girişleriniz analiz edildi ve yüksek kardinalite özellikleri algılanmadı. Girdilerinizde yüksek kardinalite özellikleri algılandı ve işlendi. |
Doğrulama bölme işlemesi | Bitti | Doğrulama yapılandırması olarak 'auto' ayarlandı ve eğitim verileri 20.000'den az satır içeriyordu. Eğitilen modelin her yinelemesi çapraz doğrulama kullanılarak doğrulandı. Doğrulama verileri hakkında daha fazla bilgi edinin. Doğrulama yapılandırması olarak 'auto' ayarlandı ve eğitim verileri 20.000'den fazla satır içeriyordu. Giriş verileri, modelin doğrulanması için bir eğitim veri kümesine ve doğrulama veri kümesine ayrılmıştır. |
Sınıf dengeleme algılama | Geçirilen Uyarılır Bitti |
Girişleriniz analiz edildi ve tüm sınıflar eğitim verilerinizde dengelenir. Her sınıfın veri kümesinde örnek sayısı ve oranına göre ölçülen iyi bir gösterimi varsa veri kümesinin dengelenmiş olduğu kabul edilir. Girişlerinizde dengesiz sınıflar algılandı. Model sapmasını düzeltmek için dengeleme sorununu düzeltin. Dengesiz veriler hakkında daha fazla bilgi edinin. Girişlerinizde dengesiz sınıflar algılandı ve süpürme mantığı dengeleme uygulamak için karar verdi. |
Bellek sorunları algılama | Geçirilen Bitti |
Seçilen değerler (ufuk, gecikme, sıralı pencere) analiz edildi ve olası bellek yetersiz sorunları algılanmadı. Zaman serisi tahmin yapılandırmaları hakkında daha fazla bilgi edinin. Seçilen değerler (ufuk, gecikme, sıralı pencere) analiz edildi ve denemenizin belleğinin bitme olasılığı var. Gecikme veya sıralı pencere yapılandırmaları kapalıdır. |
Sıklık algılama | Geçirilen Bitti |
Zaman serisi analiz edildi ve tüm veri noktaları algılanan sıklık ile hizalanır. Zaman serisi analiz edildi ve algılanan sıklık ile uyumlu olmayan veri noktaları algılandı. Bu veri noktaları veri kümesinden kaldırıldı. |
Çapraz doğrulama | Bitti | AutoML tarafından eğitilen modelleri doğru bir şekilde değerlendirmek için modelin eğitilen olmadığı bir veri kümesi kullanırız. Bu nedenle, kullanıcı açık bir doğrulama veri kümesi sağlamazsa, bunu başarmak için eğitim veri kümesinin bir bölümü kullanılır. Daha küçük veri kümelerinde (20.000'den az örnek) çapraz doğrulama kullanılır, aksi halde tek bir ayrı tutma kümesi eğitim verilerinden ayrılarak doğrulama veri kümesi görevi görür. Bu nedenle, giriş verileriniz için eğitim örneklerinin sayısı 1000'den azsa ve diğer tüm durumlarda 3 katsa 10 kat ile çapraz doğrulama kullanırız. |
Eğit-Test veri bölme | Bitti | AutoML tarafından eğitilen modelleri doğru bir şekilde değerlendirmek için modelin eğitilen olmadığı bir veri kümesi kullanırız. Bu nedenle, kullanıcı açık bir doğrulama veri kümesi sağlamazsa, bunu başarmak için eğitim veri kümesinin bir bölümü kullanılır. Daha küçük veri kümelerinde (20.000'den az örnek) çapraz doğrulama kullanılır, aksi halde tek bir ayrı tutma kümesi eğitim verilerinden ayrılarak doğrulama veri kümesi görevi görür. Bu nedenle giriş verileriniz bir eğitim veri kümesine ve ayrı tutma doğrulama veri kümesine bölünür. |
Zaman Serisi Kimliği algılama | Geçirilen Sabit |
Veri kümesi analiz edildi ve yinelenen zaman dizini algılanmadı. Veri kümesinde birden çok zaman serisi bulundu ve zaman serisi tanımlayıcıları veri kümeniz için otomatik olarak oluşturuldu. |
Zaman serisi toplama | Geçirilen Sabit |
Veri kümesi sıklığı, kullanıcı tarafından belirtilen sıklık ile hizalanır. Toplama gerçekleştirilmedi. Veriler, kullanıcı tarafından sağlanan sıklık ile uyumlu olacak şekilde toplanmıştır. |
Kısa seri işleme | Geçirilen Sabit |
Otomatik ML, giriş verilerindeki her seri için eğitime devam etmek için yeterli veri noktası algılandı. Otomatik ML, bazı serilerin modeli eğitmek için yeterli veri noktası içermediğini algılamıştı. Eğitime devam etmek için bu kısa seriler bırakıldı veya dolduruldu. |
Özellik geliştirmeyi özelleştirme
ML modelinizi eğitmek için kullanılan verilerin ve özelliklerin ilgili tahminlere neden olduğundan emin olmak için özellik geliştirme ayarlarınızı özelleştirebilirsiniz.
Özellik geliştirmelerini özelleştirmek için nesnenizde AutoMLConfig
belirtin"featurization": FeaturizationConfig
. Denemeniz için Azure Machine Learning stüdyosu kullanıyorsanız nasıl yapılır makalesine bakın. Tahminler görev türleri için özellik geliştirmeyi özelleştirmek için tahmin nasıl yapılır bölümüne bakın.
Desteklenen özelleştirmeler şunlardır:
Özelleştirme | Tanım |
---|---|
Sütun amaçlı güncelleştirme | Belirtilen sütun için otomatik algılanan özellik türünü geçersiz kılın. |
Transformer parametre güncelleştirmesi | Belirtilen transformatörün parametrelerini güncelleştirin. Şu anda Imputer (ortalama, en sık ve ortanca) ve HashOneHotEncoder'ı destekler. |
Sütunları bırakma | Öne çıkarılmaktan kaldırılan sütunları belirtir. |
Blok transformatörleri | Özellik geliştirme işleminde kullanılacak blok transformatörlerini belirtir. |
Not
Bırakma sütunları işlevselliği SDK sürüm 1.19 itibariyle kullanım dışıdır. Otomatik ML denemenizde kullanmadan önce veri kümenizden veri temizlemenin bir parçası olarak sütunları bırakın.
API çağrılarını FeaturizationConfig
kullanarak nesnesini oluşturun:
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})
Özellik kazandırma saydamlığı
Her AutoML modelinin özellik özelliği otomatik olarak uygulanır. Özellik geliştirme, otomatik özellik mühendisliğini (when "featurization": 'auto'
) ve ardından seçilen algoritmayı ve hiper parametre değerlerini etkileyen ölçeklendirme ve normalleştirmeyi içerir. AutoML, modelinize uygulananlar hakkında görünürlük sahibi olduğunuzdan emin olmak için farklı yöntemleri destekler.
Şu tahmin örneğini göz önünde bulundurun:
- Dört giriş özelliği vardır: A (Sayısal), B (Sayısal), C (Sayısal), D (DateTime).
- Tüm benzersiz değerlere sahip bir kimlik sütunu olduğundan C sayısal özelliği bırakılır.
- A ve B sayısal özellikleri eksik değerlere sahiptir ve bu nedenle ortalama tarafından işaretlenir.
- DateTime özelliği D, 11 farklı mühendislik özelliğine sahiptir.
Bu bilgileri almak için otomatik ML deneme çalıştırmanızın çıkışını kullanın fitted_model
.
automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()
Otomatik özellik mühendisliği
, get_engineered_feature_names()
mühendislik özelliği adlarının listesini döndürür.
Not
task='forecasting' için 'timeseriestransformer' kullanın, aksi halde 'regresyon' veya 'sınıflandırma' görevi için 'datatransformer' kullanın.
fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()
Bu liste, tüm mühendislik özellikleri adlarını içerir.
['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']
, get_featurization_summary()
tüm giriş özelliklerinin özellik oluşturma özetini alır.
fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()
Çıktı
[{'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']}]
Çıktı | Tanım |
---|---|
RawFeatureName | Sağlanan veri kümesinden özellik/sütun adı girin. |
Tür Algılandı | Giriş özelliğinin veri türü algılandı. |
Düştü | Giriş özelliğinin bırakıldığını veya kullanıldığını gösterir. |
EngineeringFeatureCount | Otomatik özellik mühendisliği dönüşümleri aracılığıyla oluşturulan özellik sayısı. |
Dönüşümler | Mühendislik özellikleri oluşturmak için giriş özelliklerine uygulanan dönüştürmelerin listesi. |
Ölçeklendirme ve normalleştirme
Ölçeklendirme/normalleştirmeyi ve hiper parametre değerleriyle seçilen algoritmayı anlamak için kullanın fitted_model.steps
.
Aşağıdaki örnek çıkış, seçilen bir çalıştırma için çalıştırılır fitted_model.steps
:
[('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))]
Daha fazla ayrıntı almak için şu yardımcı işlevi kullanın:
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()
Bu yardımcı işlevi, belirli bir algoritma olarak kullanarak LogisticRegression with RobustScalar
belirli bir çalıştırma için aşağıdaki çıkışı döndürür.
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}
Sınıf olasılığını tahmin etme
Otomatik ML kullanılarak üretilen modellerin tümü, açık kaynak kaynak kaynak sınıfından işlevselliği yansıtan sarmalayıcı nesnelere sahiptir. Otomatik ML tarafından döndürülen sınıflandırma modeli sarmalayıcı nesnelerinin predict_proba()
çoğu, özelliklerinizin dizi benzeri veya seyrek matris veri örneğini (X değerleri) kabul eden ve her örneğin n boyutlu dizisini ve ilgili sınıf olasılığını döndüren işlevini uygular.
Aynı çağrıları kullanarak en iyi çalıştırma ve uyduru modeli aldığınız varsayıldığında, doğrudan uygun modelden çağrı predict_proba()
yapabilir ve model türüne bağlı olarak uygun biçimde bir X_test
örnek sağlayabilirsiniz.
best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)
Temel alınan model işlevi desteklemiyorsa predict_proba()
veya biçim yanlışsa, modele özgü bir özel durum oluşturulur. Bu işlevin farklı model türleri için nasıl uygulandığına ilişkin örnekler için RandomForestClassifier ve XGBoost başvuru belgelerine bakın.
Otomatik ML'de BERT tümleştirmesi
BERT , otomatik ML'nin özellik katmanında kullanılır. Bu katmanda bir sütunda serbest metin veya zaman damgaları ya da basit sayılar gibi diğer veri türleri olduğunda gerekli özellik geliştirme işlemleri uygulanır.
BERT için modelde kullanıcı tarafından sağlanan etiketler kullanılarak ince ayar ve eğitim gerçekleştirilir. Sonrasında belge eklemeleri, zaman damgası tabanlı özellikler ve haftanın günü gibi diğer özelliklerle birlikte sunulur.
Python ile doğal dil işleme modeli eğitmek için AutoML'yi ayarlamayı öğrenin.
BERT'yi çağırma adımları
BERT'yi çağırmak için automl_settings ayarlayın enable_dnn: True
ve bir GPU işlem (vm_size = "STANDARD_NC6"
veya daha yüksek bir GPU) kullanın. CPU işlemi kullanılıyorsa, AutoML BERT yerine BiLSTM DNN özellik oluşturucuyu etkinleştirir.
Otomatik ML, BERT için aşağıdaki adımları uygular.
Tüm metin sütunlarının ön işlemesi ve belirteci. Örneğin,
StringCast
transformatör son modelin özellik belirleme özetinde bulunabilir. Modelin özellik özetinin nasıl oluşturulacağıyla ilgili bir örnek bu not defterinde bulunabilir.Tüm metin sütunlarını tek bir metin sütununa, dolayısıyla
StringConcatTransformer
son modelde birleştirin.BERT uygulamamız, bir eğitim örneğinin toplam metin uzunluğunu 128 belirteçle sınırlar. Diğer bir deyişle, birleştirilirken tüm metin sütunları ideal olarak en fazla 128 belirteç uzunluğunda olmalıdır. Birden çok sütun varsa, bu koşulun karşılanması için her sütunun ayıklanması gerekir. Aksi takdirde, uzunluğu >128 belirteç olan birleştirilmiş sütunlar için BERT'nin belirteç oluşturucu katmanı bu girişi 128 belirteçle kısaltır.
Özellik süpürme işleminin bir parçası olarak AutoML, BERT'yi veri örneğindeki taban çizgisiyle (sözcük paketi özellikleri) karşılaştırır. Bu karşılaştırma, BERT'in doğruluk iyileştirmeleri verip vermeyeceğini belirler. BERT temelden daha iyi performans gösterirse, AutoML tüm veriler için metin özellik kazandırma için BERT kullanır. Bu durumda, son modelde öğesini
PretrainedTextDNNTransformer
görürsünüz.
BERT genellikle diğer özellik oluşturuculardan daha uzun çalışır. Daha iyi performans için RDMA özellikleri için STANDARD_NC24r veya STANDARD_NC24rs_V3 kullanmanızı öneririz.
AutoML, kullanılabilir durumdaysa (en fazla sekiz düğüm) BERT eğitimini birden çok düğüm arasında dağıtır. Bu, parametresi 1'den yüksek olarak ayarlanarak max_concurrent_iterations
nesnenizde AutoMLConfig
yapılabilir.
AutoML'de BERT için desteklenen diller
AutoML şu anda yaklaşık 100 dili destekler ve veri kümesinin diline bağlı olarak AutoML uygun BERT modelini seçer. Almanca veriler için Alman BERT modelini kullanırız. İngilizce için İngilizce BERT modelini kullanırız. Diğer tüm diller için çok dilli BERT modelini kullanırız.
Aşağıdaki kodda, veri kümesi dili , ISO sınıflandırmasına deu
göre Almanca için üç harfli dil kodu belirtildiğinden Almanca BERT modeli tetikleniyor:
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
}