Gegevens featurization in geautomatiseerde machine learning

VAN TOEPASSING OP:Python SDK azureml v1

Meer informatie over de instellingen voor het weergeven van gegevens in Azure Machine Learning en hoe u deze functies aanpast voor geautomatiseerde machine learning-experimenten.

Functie-engineering en featurization

Trainingsgegevens bestaan uit rijen en kolommen. Elke rij is een observatie of record en de kolommen van elke rij zijn de kenmerken die elke record beschrijven. Normaal gesproken worden de functies die de patronen in de gegevens het beste kenmerken, geselecteerd om voorspellende modellen te maken.

Hoewel veel van de onbewerkte gegevensvelden rechtstreeks kunnen worden gebruikt om een model te trainen, is het vaak nodig om aanvullende (ontworpen) functies te maken die informatie bieden waarmee patronen in de gegevens beter kunnen worden onderscheiden. Dit proces wordt functie-engineering genoemd, waarbij het gebruik van domeinkennis van de gegevens wordt gebruikt om functies te maken die op hun beurt machine learning-algoritmen helpen om beter te leren.

In Azure Machine Learning worden technieken voor het schalen en normaliseren van gegevens toegepast om functie-engineering eenvoudiger te maken. Gezamenlijk worden deze technieken en deze functie-engineering featurization genoemd in geautomatiseerde ML-experimenten.

Vereisten

In dit artikel wordt ervan uitgegaan dat u al weet hoe u een geautomatiseerd ML-experiment kunt configureren.

Belangrijk

Voor de Python-opdrachten in dit artikel is de meest recente azureml-train-automl pakketversie vereist.

Zie de volgende artikelen voor meer informatie over configuratie:

Featurization configureren

In elk geautomatiseerd machine learning-experiment worden automatisch schalen en normalisatietechnieken standaard toegepast op uw gegevens. Deze technieken zijn typen featurization die bepaalde algoritmen helpen die gevoelig zijn voor functies op verschillende schalen. U kunt meer featurization inschakelen, zoals het invoeren van ontbrekende waarden, codering en transformaties.

Notitie

Stappen voor geautomatiseerde machine learning-featurization (zoals functienormalisatie, het verwerken van ontbrekende gegevens of het converteren van tekst naar numerieke tekst) worden onderdeel van het onderliggende model. Wanneer u het model gebruikt voor voorspellingen, worden dezelfde featurization-stappen die tijdens de training worden toegepast, automatisch toegepast op uw invoergegevens.

Voor experimenten die u configureert met de Python SDK, kunt u de featurization-instelling in- of uitschakelen en de featurization-stappen opgeven die voor uw experiment moeten worden gebruikt. Als u de Azure Machine Learning-studio gebruikt, raadpleegt u de stappen om featurization in te schakelen.

In de volgende tabel ziet u de geaccepteerde instellingen voor featurization in de klasse AutoMLConfig:

Featurization-configuratie Beschrijving
"featurization": 'auto' Hiermee geeft u op dat, als onderdeel van de voorverwerking, gegevens kaders en featurization-stappen automatisch moeten worden uitgevoerd. Dit is de standaardinstelling.
"featurization": 'off' Hiermee geeft u op dat featurization-stappen niet automatisch moeten worden uitgevoerd.
"featurization": 'FeaturizationConfig' Hiermee geeft u op dat aangepaste featurisatiestappen moeten worden gebruikt. Meer informatie over het aanpassen van featurization.

Automatische featurization

De volgende tabel bevat een overzicht van technieken die automatisch worden toegepast op uw gegevens. Deze technieken worden toegepast voor experimenten die zijn geconfigureerd met behulp van de SDK of de gebruikersinterface van Studio. Als u dit gedrag wilt uitschakelen, stelt u "featurization": 'off' in uw AutoMLConfig object in.

Notitie

Als u van plan bent om uw door AutoML gemaakte modellen te exporteren naar een ONNX-model, worden alleen de featurization-opties die zijn aangegeven met een sterretje ("*") ondersteund in de ONNX-indeling. Meer informatie over het converteren van modellen naar ONNX.

Featurization-stappen Beschrijving
Hoge kardinaliteit of geen afwijkingsfuncties verwijderen* Verwijder deze functies uit trainings- en validatiesets. Is van toepassing op functies waarvoor alle waarden ontbreken, met dezelfde waarde voor alle rijen of met een hoge kardinaliteit (bijvoorbeeld hashes, id's of GUID's).
Ontbrekende waarden invoeren* Voor numerieke functies moet u het gemiddelde van de waarden in de kolom invoeren.

Voor categorische functies moet u de meest voorkomende waarde gebruiken.
Meer functies genereren* Voor Datum/tijd-functies: Jaar, Maand, Dag, Dag van de week, Dag van het jaar, Kwartaal, Week van het jaar, Uur, Minuut, Seconde.

Voor prognosetaken worden deze extra DateTime-functies gemaakt: ISO-jaar, Half - half jaar, Kalendermaand als tekenreeks, Week, Dag van week als tekenreeks, Dag van kwartaal, Dag van het jaar, AM/PM (0 als het uur voor 12 uur is, 1 anders), AM/PM als tekenreeks, Uur van de dag (basis 12 uur)

Voor tekstfuncties: Termfrequentie op basis van unigrammen, bigrams en trigrammen. Meer informatie over hoe dit met BERT gebeurt.
Transformeren en coderen* Zet numerieke functies met weinig unieke waarden om in categorische functies.

One-hot codering wordt gebruikt voor categorische kenmerken met een lage kardinaliteit. One-hot-hashcodering wordt gebruikt voor categorische functies met een hoge kardinaliteit.
Word insluiten Een text featurizer converteert vectoren van teksttokens naar zinsvectoren met behulp van een vooraf getraind model. De insluitvector van elk woord in een document wordt samengevoegd met de rest om een documentfunctievector te produceren.
Clusterafstand Traint een k-means-clusteringmodel op alle numerieke kolommen. Produceert k nieuwe functies (één nieuwe numerieke functie per cluster) die de afstand van elk voorbeeld tot het zwaartepunt van elk cluster bevatten.

In elk geautomatiseerd machine learning-experiment worden uw gegevens automatisch geschaald of genormaliseerd om algoritmen te helpen goed te presteren. Tijdens de modeltraining wordt een van de volgende schaal- of normalisatietechnieken toegepast op elk model.

Verwerking schalen & Beschrijving
StandardScaleWrapper Functies standaardiseren door het gemiddelde te verwijderen en te schalen naar afwijking van eenheden
MinMaxScalar Transformeert functies door elke functie te schalen met het minimum en maximum van die kolom
MaxAbsScaler Elke functie schalen met de maximale absolute waarde
RobustScalar Functies schalen op kwantielbereik
PCA Lineaire dimensionaliteitsvermindering met behulp van enkelvoudige waarde-ontleding van de gegevens om deze te projecteren naar een lagere dimensionale ruimte
AfgekaptSVDWrapper Deze transformator voert lineaire dimensionaliteitsvermindering uit door middel van afgekapte singular value decompositie (SVD). In tegenstelling tot PCA, centreert deze estimator de gegevens niet voordat de ontleding van de enkelvoudige waarde wordt berekenen, wat betekent dat deze efficiënt kan werken met scipy.sparse matrices
SparseNormalizer Elk monster (dat wil gezegd, elke rij van de gegevensmatrix) met ten minste één niet-nulcomponent wordt onafhankelijk van andere steekproeven opnieuw geschaald, zodat de norm (l1 of l2) gelijk is aan één

Gegevensrails

Gegevensbeveiligingen helpen u bij het identificeren van mogelijke problemen met uw gegevens (bijvoorbeeld ontbrekende waarden of onevenwichtige klassen). Ze helpen u ook bij het uitvoeren van corrigerende acties voor betere resultaten.

Gegevensrails worden toegepast:

  • Voor SDK-experimenten: wanneer de parameters "featurization": 'auto' of validation=auto zijn opgegeven in uw AutoMLConfig object.
  • Voor studio-experimenten: wanneer automatische featurization is ingeschakeld.

U kunt de gegevensrails voor uw experiment bekijken:

  • Door in te stellen show_output=True wanneer u een experiment verzendt met behulp van de SDK.

  • Ga in de studio naar het tabblad Gegevensrails van uw geautomatiseerde ML-uitvoering.

Statussen van gegevensbeveiliging

Gegevensrails geven een van de drie statussen weer:

Staat Beschrijving
Geslaagd Er zijn geen gegevensproblemen gedetecteerd en u hoeft geen actie te ondernemen.
Gereed Er zijn wijzigingen toegepast op uw gegevens. We raden u aan de corrigerende acties te bekijken die Door AutoML zijn uitgevoerd om ervoor te zorgen dat de wijzigingen overeenkomen met de verwachte resultaten.
Gewaarschuwd Er is een gegevensprobleem gedetecteerd, maar kan niet worden verholpen. We raden u aan het probleem te herzien en op te lossen.

Ondersteunde gegevensbeveiligingsrails

In de volgende tabel worden de gegevensbeveiligingsrails beschreven die momenteel worden ondersteund en de bijbehorende statussen die u mogelijk ziet wanneer u uw experiment verzendt:

Veiligheidsrail Status Voorwaarde voor trigger
Ontbrekende invoer van functiewaarden Geslaagd


Gereed
Er zijn geen ontbrekende functiewaarden gedetecteerd in uw trainingsgegevens. Meer informatie over het invoeren van ontbrekende waarden.

Ontbrekende functiewaarden zijn gedetecteerd in uw trainingsgegevens en zijn toegerekend.
Functiedetectie voor hoge kardinaliteit Geslaagd


Gereed
Uw invoer is geanalyseerd en er zijn geen functies voor hoge kardinaliteit gedetecteerd.

Functies met hoge kardinaliteit zijn gedetecteerd in uw invoer en zijn verwerkt.
Verwerking van validatiesplitsing Gereed De validatieconfiguratie is ingesteld op 'auto' en de trainingsgegevens bevatten minder dan 20.000 rijen.
Elke iteratie van het getrainde model is gevalideerd met behulp van kruisvalidatie. Meer informatie over validatiegegevens.

De validatieconfiguratie is ingesteld op 'auto'en de trainingsgegevens bevatten meer dan 20.000 rijen.
De invoergegevens zijn gesplitst in een trainingsgegevensset en een validatiegegevensset voor validatie van het model.
Detectie van klassenverdeling Geslaagd



Gewaarschuwd


Gereed
Uw invoer is geanalyseerd en alle klassen zijn evenwichtig in uw trainingsgegevens. Een gegevensset wordt beschouwd als evenwichtig als elke klasse een goede representatie in de gegevensset heeft, zoals gemeten op basis van het aantal en de verhouding van de steekproeven.

Er zijn onbalansklassen gedetecteerd in uw invoer. Los het probleem met de verdeling op om modelvooroordelen op te lossen. Meer informatie over onevenwichtige gegevens.

Er zijn onevenwichtige klassen gedetecteerd in uw invoer en de opruimende logica heeft bepaald dat de verdeling moet worden toegepast.
Detectie van geheugenproblemen Geslaagd



Gereed

De geselecteerde waarden (horizon, vertraging, doorlopend venster) zijn geanalyseerd en er zijn geen potentiële problemen met onvoldoende geheugen gedetecteerd. Meer informatie over configuraties voor tijdreeksprognoses.


De geselecteerde waarden (horizon, vertraging, doorlopend venster) zijn geanalyseerd en kunnen ertoe leiden dat uw experiment onvoldoende geheugen heeft. De configuraties voor vertraging of rollend venster zijn uitgeschakeld.
Frequentiedetectie Geslaagd



Gereed

De tijdreeks is geanalyseerd en alle gegevenspunten zijn afgestemd op de gedetecteerde frequentie.

De tijdreeks is geanalyseerd en er zijn gegevenspunten gedetecteerd die niet overeenkomen met de gedetecteerde frequentie. Deze gegevenspunten zijn verwijderd uit de gegevensset.
Kruisvalidatie Gereed Om de door AutoML getrainde modellen nauwkeurig te evalueren, gebruiken we een gegevensset waarop het model niet is getraind. Dus als de gebruiker geen expliciete validatiegegevensset opgeeft, wordt een deel van de trainingsgegevensset gebruikt om dit te bereiken. Voor kleinere gegevenssets (minder dan 20.000 voorbeelden) wordt kruisvalidatie gebruikt. Anders wordt één bewaringsset gesplitst van de trainingsgegevens om te fungeren als de validatiegegevensset. Daarom gebruiken we voor uw invoergegevens kruisvalidatie met 10 vouwen, als het aantal trainingsvoorbeelden kleiner is dan 1000 en 3 vouwen in alle andere gevallen.
Gegevenssplitsing trainen en testen Gereed Om de door AutoML getrainde modellen nauwkeurig te evalueren, gebruiken we een gegevensset waarop het model niet is getraind. Dus als de gebruiker geen expliciete validatiegegevensset opgeeft, wordt een deel van de trainingsgegevensset gebruikt om dit te bereiken. Voor kleinere gegevenssets (minder dan 20.000 voorbeelden) wordt kruisvalidatie gebruikt. Anders wordt één bewaringsset gesplitst van de trainingsgegevens om te fungeren als de validatiegegevensset. Daarom zijn uw invoergegevens gesplitst in een trainingsgegevensset en een validatiegegevensset voor bewaring.
Detectie van tijdreeks-id's Geslaagd



Opgelost

De gegevensset is geanalyseerd en er zijn geen dubbele tijdindexen gedetecteerd.

Er zijn meerdere tijdreeksen gevonden in de gegevensset en de tijdreeks-id's zijn automatisch gemaakt voor uw gegevensset.
Tijdreeksaggregatie Geslaagd



Opgelost

De frequentie van de gegevensset wordt afgestemd op de door de gebruiker opgegeven frequentie. Er is geen aggregatie uitgevoerd.

De gegevens zijn geaggregeerd om te voldoen aan de door de gebruiker opgegeven frequentie.
Verwerking van korte reeksen Geslaagd



Opgelost

Geautomatiseerde ML heeft voldoende gegevenspunten gedetecteerd voor elke reeks in de invoergegevens om door te gaan met de training.

Geautomatiseerde ML heeft gedetecteerd dat sommige reeksen onvoldoende gegevenspunten bevatten om een model te trainen. Om door te gaan met trainen, zijn deze korte reeksen verwijderd of opgevuld.

Featurization aanpassen

U kunt uw featurization-instellingen aanpassen om ervoor te zorgen dat de gegevens en functies die worden gebruikt om uw ML-model te trainen, resulteren in relevante voorspellingen.

Als u featurizations wilt aanpassen, geeft u "featurization": FeaturizationConfig op in uw AutoMLConfig object. Als u de Azure Machine Learning-studio voor uw experiment gebruikt, raadpleegt u het instructieartikel. Als u featurization wilt aanpassen voor taaktypen voor prognoses, raadpleegt u de instructies voor prognoses.

Ondersteunde aanpassingen zijn onder andere:

Aanpassing Definitie
Bijwerken van kolomdoel Overschrijf het automatisch gedetecteerde functietype voor de opgegeven kolom.
Update van transformerparameter Werk de parameters voor de opgegeven transformator bij. Momenteel ondersteunt Imputer (gemiddelde, meest frequent en mediaan) en HashOneHotEncoder.
Kolommen verwijderen Hiermee geeft u kolommen die moeten worden verwijderd uit een featurized.
Bloktransformatoren Hiermee geeft u bloktransformatoren die moeten worden gebruikt in het featurization-proces.

Notitie

De functionaliteit voor het neerzetten van kolommen is afgeschaft vanaf SDK-versie 1.19. Verwijder kolommen uit uw gegevensset als onderdeel van het opschonen van gegevens, voordat u deze gebruikt in uw geautomatiseerde ML-experiment.

Maak het FeaturizationConfig object met behulp van API-aanroepen:

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 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})

Transparantie van featurization

Voor elk AutoML-model wordt featurization automatisch toegepast. Featurization omvat geautomatiseerde functie-engineering (wanneer "featurization": 'auto') en schalen en normalisatie, die vervolgens van invloed zijn op het geselecteerde algoritme en de bijbehorende hyperparameterwaarden. AutoML ondersteunt verschillende methoden om ervoor te zorgen dat u inzicht hebt in wat er op uw model is toegepast.

Bekijk dit prognosevoorbeeld:

  • Er zijn vier invoerfuncties: A (numeriek), B (numeriek), C (numeriek), D (datum/tijd).
  • Numerieke functie C wordt verwijderd omdat het een id-kolom met alle unieke waarden is.
  • Numerieke kenmerken A en B hebben ontbrekende waarden en worden daarom door het gemiddelde toegerekend.
  • DateTime-functie D is opgenomen in 11 verschillende functies.

Als u deze informatie wilt ophalen, gebruikt u de uitvoer van uw fitted_model geautomatiseerde ML-experimentuitvoering.

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

Geautomatiseerde functie-engineering

De get_engineered_feature_names() retourneert een lijst met ontworpen functienamen.

Notitie

Gebruik 'timeseriestransformer' voor task='forecasting', anders gebruikt u 'datatransformer' voor 'regression' of 'classification' taak.

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

Deze lijst bevat alle namen van ontworpen functies.

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

De get_featurization_summary() krijgt een featurization-samenvatting van alle invoerfuncties.

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

Uitvoer

[{'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','DateTime','DateTime','DateTime']}]
Uitvoer Definitie
RawFeatureName Voer de functie-/kolomnaam in van de opgegeven gegevensset.
TypeDetected Het gegevenstype van de invoerfunctie is gedetecteerd.
Gedaald Geeft aan of de invoerfunctie is verwijderd of gebruikt.
EngineeringFeatureCount Aantal functies dat is gegenereerd via geautomatiseerde functie-engineeringtransformaties.
Transformaties Lijst met transformaties die zijn toegepast op invoerfuncties om ontworpen functies te genereren.

Schalen en normaliseren

Gebruik fitted_model.stepsvoor meer informatie over het schalen/normaliseren en het geselecteerde algoritme met de bijbehorende hyperparameterwaarden.

De volgende voorbeelduitvoer is van uitvoering fitted_model.steps voor een gekozen uitvoering:

[('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))

Gebruik deze helperfunctie voor meer informatie:

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()   

Deze helperfunctie retourneert de volgende uitvoer voor een bepaalde uitvoering met LogisticRegression with RobustScalar als specifiek algoritme.

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}

Klassekans voorspellen

Modellen die zijn geproduceerd met behulp van geautomatiseerde ML hebben allemaal wrapper-objecten die de functionaliteit van hun opensource-oorsprongklasse weerspiegelen. De meeste wrapperobjecten voor classificatiemodellen die door geautomatiseerde ML worden geretourneerd, implementeren de predict_proba() functie. Deze accepteert een matrixachtige of sparse matrixgegevensvoorbeeld van uw functies (X-waarden) en retourneert een n-dimensionale matrix van elke steekproef en de bijbehorende klassekans.

Ervan uitgaande dat u het beste uitgevoerde en aangepaste model hebt opgehaald met behulp van dezelfde aanroepen van hierboven, kunt u rechtstreeks vanuit het aangepaste model aanroepen predict_proba() , waarbij u een X_test voorbeeld in de juiste indeling opgeeft, afhankelijk van het modeltype.

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

Als het onderliggende model de predict_proba() functie niet ondersteunt of als de indeling onjuist is, wordt er een modelklassespecifieke uitzondering gegenereerd. Zie de referentiedocumenten RandomForestClassifier en XGBoost voor voorbeelden van hoe deze functie wordt geïmplementeerd voor verschillende modeltypen.

BERT-integratie in geautomatiseerde ML

BERT wordt gebruikt in de featurization-laag van geautomatiseerde ML. Als een kolom in deze laag vrije tekst of andere typen gegevens bevat, zoals tijdstempels of eenvoudige getallen, wordt featurization dienovereenkomstig toegepast.

Het model is voor BERT afgestemd en getraind met behulp van de door de gebruiker geleverde labels. Hier worden documentinsluitingen uitgevoerd als functies naast andere functies, zoals functies op basis van tijdstempels, dag van de week.

Leer hoe u NLP-experimenten (Natural Language Processing) instelt die ook bert gebruiken met geautomatiseerde ML.

Stappen voor het aanroepen van BERT

Als u BERT wilt aanroepen, stelt u enable_dnn: True in uw automl_settings in en gebruikt u een GPU-berekening (vm_size = "STANDARD_NC6" of een hogere GPU). Als een CPU-berekening wordt gebruikt, schakelt AutoML in plaats van BERT de BiLSTM DNN-featurizer in.

Geautomatiseerde ML voert de volgende stappen uit voor BERT.

  1. Voorverwerking en tokenisatie van alle tekstkolommen. De transformer 'StringCast' is bijvoorbeeld te vinden in de featurization-samenvatting van het uiteindelijke model. Een voorbeeld van het produceren van het featurization-overzicht van het model vindt u in dit notebook.

  2. Voeg alle tekstkolommen samen in één tekstkolom, vandaar de StringConcatTransformer in het uiteindelijke model.

    Onze implementatie van BERT beperkt de totale tekstlengte van een trainingsvoorbeeld tot 128 tokens. Dit betekent dat alle tekstkolommen, indien samengevoegd, in het ideale geval maximaal 128 tokens lang moeten zijn. Als er meerdere kolommen aanwezig zijn, moet elke kolom worden verwijderd, zodat aan deze voorwaarde wordt voldaan. Anders wordt deze invoer voor samengevoegde kolommen met een lengte >van 128 tokens door de tokenizerlaag van BERT afgekapt tot 128 tokens.

  3. Als onderdeel van het opruimen van functies vergelijkt AutoML BERT met de basislijn (bag of words features) op een steekproef van de gegevens. Deze vergelijking bepaalt of BERT nauwkeurigheidsverbeteringen zou opleveren. Als BERT beter presteert dan de basislijn, gebruikt AutoML vervolgens BERT voor text featurization voor de hele gegevens. In dat geval ziet u de PretrainedTextDNNTransformer in het uiteindelijke model.

BERT loopt over het algemeen langer dan andere featurizers. Voor betere prestaties raden we u aan om 'STANDARD_NC24r' of 'STANDARD_NC24rs_V3' te gebruiken voor hun RDMA-mogelijkheden.

AutoML distribueert BERT-training over meerdere knooppunten als deze beschikbaar zijn (maximaal acht knooppunten). Dit kunt u doen in uw AutoMLConfig object door de max_concurrent_iterations parameter in te stellen op hoger dan 1.

Ondersteunde talen voor BERT in AutoML

AutoML ondersteunt momenteel ongeveer 100 talen en afhankelijk van de taal van de gegevensset kiest AutoML het juiste BERT-model. Voor Duitse gegevens gebruiken we het Duitse BERT-model. Voor Engels gebruiken we het Engelse BERT-model. Voor alle andere talen gebruiken we het meertalige BERT-model.

In de volgende code wordt het Duitse BERT-model geactiveerd, omdat de taal van de gegevensset is opgegeven in deu, de drieletterige taalcode voor Duits volgens ISO-classificatie:

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
}

Volgende stappen