Definição de recursos de dados no machine learning automatizado
APLICA-SE A: SDK do Python azureml v1
Este artigo explica como personalizar as configurações de definição de recursos de dados no Azure Machine Learning para seus experimentos de machine learning automatizado (AutoML).
Engenharia de recursos e definição de recursos
Os dados de treinamento consistem em linhas e colunas. Cada linha é uma observação ou um registro e as colunas de cada linha são os recursos que descrevem cada registro. Normalmente, os recursos que melhor caracterizam os padrões nos dados são selecionados para criar modelos de previsão.
Embora muitos dos campos de dados brutos possam ser usados diretamente para treinamento de um modelo, muitas vezes é necessário criar outros recursos (projetados) que fornecem informações que diferenciam melhor os padrões nos dados. Esse processo é chamado de engenharia de recursos, em que o uso do conhecimento de domínio dos dados é usado para criar recursos que, por sua vez, ajudam os algoritmos de aprendizado de máquina a aprender melhor.
No Azure Machine Learning, técnicas de dimensionamento de dados e normalização são aplicadas para tornar mais fácil a engenharia de recursos. Coletivamente, essas técnicas e essa engenharia de recursos são chamadas de definição de recursos em experimentos de machine learning (ML) automatizado.
Pré-requisitos
Este artigo pressupõe que você já sabe como configurar um experimento de ML automatizado.
Importante
Os comandos do Python neste artigo exigem a versão mais recente do pacote azureml-train-automl
.
- Instale o pacote
azureml-train-automl
mais recente em seu ambiente local. - Para obter detalhes sobre o pacote
azureml-train-automl
mais recente, veja as notas sobre a versão.
Para saber mais sobre configuração, veja os seguintes artigos:
- Para uma experiência de primeiro código: Configurar o treinamento do AutoML com o Python
- Para uma experiência sem código: Configurar o treinamento do AutoML sem código para dados tabulares com a interface do usuário do estúdio
Configurar a definição de recursos
Em cada experimento automatizado de aprendizado de máquina, técnicas de dimensionamento automático e de normalização são aplicadas aos seus dados por padrão. Essas técnicas são tipos de definição de recursos que ajudam certos algoritmos que são sensíveis a recursos em escalas diferentes. Você pode habilitar mais definição de recursos, como a imputação de valores ausentes, a codificação e transformações.
Observação
As etapas para a definição de recursos do machine learning automatizado (como a normalização de recursos, tratamento de dados ausentes ou conversão de texto em números) tornam-se parte do modelo subjacente. Ao usar o modelo para previsões, as mesmas etapas de definição de recursos aplicadas durante o treinamento são aplicadas aos dados de entrada automaticamente.
Para os experimentos que você configura com o SDK do Python, você pode habilitar ou desabilitar a configuração da definição de recursos e ainda especificar as etapas de definição de recursos a serem usadas para o experimento. Se você estiver usando o estúdio do Azure Machine Learning, consulte as etapas para habilitar a definição de recursos.
A tabela a seguir mostra as configurações aceitas para featurization
na classe AutoMLConfig:
Configuração de definição de recursos | Descrição |
---|---|
"featurization": 'auto' |
Especifica que, como parte do pré-processamento, os verificadores de integridade dos dados e etapas de definição de recursos são executados automaticamente. Essa é a configuração padrão. |
"featurization": 'off' |
Especifica que as etapas da definição de recursos não devem ser feitas automaticamente. |
"featurization": 'FeaturizationConfig' |
Especifica que as etapas de definição de recursos personalizadas devem ser usadas. Saiba como personalizar a definição de recursos. |
Personalização automática
A tabela a seguir resume as técnicas que são aplicadas automaticamente aos seus dados. Essas técnicas são aplicadas para experimentos que são configurados por meio do SDK ou da interface do usuário do estúdio. Para desabilitar esse comportamento, defina "featurization": 'off'
em seu objeto AutoMLConfig
.
Observação
Se você planeja exportar seus modelos criados de AutoML para um modelo de ONNX, somente as opções de definição de recursos marcadas com um asterisco (“*”) têm suporte no formato ONNX. Saiba mais sobre conversão de modelos para ONNX.
Etapas de personalização | Descrição |
---|---|
Remover alta cardinalidade ou nenhum recurso de variação* | Remover esses recursos para definições de treinamento e validação. Isso se aplica a recursos com todos os valores ausentes, com o mesmo valor em todas as linhas ou com cardinalidade alta (por exemplo, hashes, IDs ou GUIDs). |
Acrescentar valores ausentes* | Para recursos numéricos, atribua com a média dos valores na coluna. Para recursos categóricos, atribua com o valor mais frequente. |
Gerar mais recursos* | Para recursos DateTime: Ano, mês, dia, dia da semana, dia do ano, trimestre, semana do ano, hora, minuto, segundo. Para tarefas de previsão, esses recursos de DateTime adicionais são criados: ano ISO, metade de semestre, mês como cadeia de caracteres, semana, dia da semana como cadeia de caracteres, dia de trimestre, dia do ano, AM/PM (0 se a hora for anterior ao meio-dia (12h00) e 1 caso contrário), AM/PM como cadeia de caracteres, hora do dia (baseado em 12 horas) Para recursos de texto: a frequência do termo com base em unigramas, bigramas e trigramas. Saiba mais sobre como isso é feito com o Bert. |
Transformar e codificar* | Transforme recursos numéricos que têm poucos valores exclusivos em recursos categóricos. A codificação One-Hot é usada para recursos categóricos de baixa cardinalidade. A codificação One-Hot-hash é usada para recursos categóricos de alta cardinalidade. |
Inserções de palavras | Um definidor de recursos de texto converte vetores de tokens de texto em vetores de sentença usando um modelo pré-treinado. O vetor de inserção de cada palavra em um documento é agregado com o resto para produzir um vetor de recurso de documento. |
Distância do cluster | Treina um modelo de clustering k-means em todas as colunas numéricas. Produz novos recursos de k (um novo recurso numérico por cluster) contendo a distância de cada amostra para o centroide de cada cluster. |
Em todo experimento de machine learning automatizado, seus dados são dimensionados ou normalizados automaticamente para ajudar os algoritmos a ter um bom desempenho. Durante o treinamento de modelo, uma das técnicas de escala ou normalização a seguir é aplicada a cada modelo.
Dimensionamento e processamento | Descrição |
---|---|
StandardScaleWrapper | Padronize recursos removendo a média e escalando para a variância da unidade. |
MinMaxScalar | Transforme os recursos escalando cada recurso pelo mínimo e máximo dessa coluna. |
MaxAbsScaler | Dimensione cada recurso pelo valor absoluto máximo dele. |
RobustScalar | Dimensiona os recursos por seu intervalo de quantil. |
PCA | Redução de dimensionalidade linear usando a Decomposição de Valor Singular dos dados para projetá-los para um espaço dimensional inferior. |
TruncatedSVD | Esse transformador executa a redução da dimensionalidade linear usando a decomposição de valor singular truncado (SVD). Ao contrário do PCA, esse avaliador não centraliza os dados antes de calcular a decomposição de valor singular, o que significa que ele pode trabalhar com matrizes scipy.sparse de forma eficiente. |
SparseNormalizer | Cada amostra (ou seja, cada linha da matriz de dados) com pelo menos um componente diferente de zero é reescalado independentemente de outras amostras para que a norma (l1 ou l2) seja igual a um. |
Verificadores de integridade dos dados
Os verificador de integridade dos dados ajudam a identificar possíveis problemas com seus dados (por exemplo, valores ausentes ou desequilíbrio de classe). Eles também ajudam você a tomar medidas corretivas para resultados aprimorados.
Os verificador de integridade dos dados são aplicados:
- Para experimentos do SDK: quando os parâmetros
"featurization": 'auto'
ouvalidation=auto
forem especificados em seu objetoAutoMLConfig
- Para experimentos do estúdio: quando a definição de recursos automática estiver habilitada
Você pode revisar os verificador de integridade dos dados para seu experimento:
- Definindo
show_output=True
quando você envia um experimento usando o SDK. - No estúdio, na guia verificador de integridade dos dados da execução de ML automatizado.
Estados dos verificadores de integridade dos dados
Os verificadores de integridade dos dados exibirem um de três estados:
Estado | Descrição |
---|---|
Aprovado | Nenhum problema de dados foi detectado e nenhuma ação é necessária da sua parte. |
Concluído | As alterações foram aplicadas aos seus dados. Incentivamos a revisão das ações corretivas que o AutoML tomou para garantir que as alterações estejam alinhadas aos resultados esperados. |
Alertado | Um problema de dados foi detectado, mas não foi possível remediá-lo. Incentivamos a revisão e a correção do problema. |
Verificadores de integridade dos dados com suporte
A tabela a seguir descreve os verificadores de integridade dos dados que têm suporte no momento e os status associados que você pode ver ao enviar seu experimento:
Verificador de integridade | Status | Condição para gatilho |
---|---|---|
Imputação de valores de recurso ausente | Passado Concluído |
Não foram detectados valores de recursos ausentes em seus dados de treinamento. Saiba mais sobre a imputação de valores ausentes. Foram detectados valores de recursos ausentes em seus dados de treinamento e eles foram imputados. |
Detecção de recursos de alta cardinalidade | Passado Concluído |
As entradas foram analisadas e nenhum recurso de alta cardinalidade foi detectado. Foram detectados recursos de alta cardinalidade nas suas entradas e eles foram tratados. |
Tratamento de divisão de validação | Concluído | A configuração de validação foi definida como 'auto' e os dados de treinamento continham menos de 20.000 linhas. Cada iteração do modelo treinado foi validada usando a validação cruzada. Saiba mais sobre os dados de validação. A configuração de validação foi definida como 'auto' e os dados de treinamento continham mais de 20.000 linhas. Os dados de entrada foram divididos em um conjunto de dados de treinamento e um conjunto de dados de validação para a validação do modelo. |
Detecção de equilíbrio de classe | Passado Alertado Concluído |
Suas entradas foram analisadas, e todas as classes estão equilibradas nos dados de treinamento. Um conjunto de dados é considerado como equilibrado caso cada classe tenha uma boa representação no conjunto de dados, conforme medido pela quantidade e proporção de exemplos. Foram detectadas classes desequilibradas nas suas entradas. Para corrigir o desvio de modelo, corrija o problema de equilíbrio. Saiba mais sobre dados desequilibrados. Classes desequilibradas foram detectadas nas suas entradas e a lógica de varredura determinou a aplicação de balanceamento. |
Detecção de problemas de memória | Passado Concluído |
Os valores selecionados (horizonte, retardo, janela sem interrupção) foram analisados e nenhum problema de falta de memória potencial foi detectado. Saiba mais sobre as configurações de previsão de série temporal. Os valores selecionados (horizonte, retardo, janela sem interrupção) foram analisados e, potencialmente, farão com que o teste fique sem memória. As configurações de retardo ou de janela sem interrupção foram desativadas. |
Detecção de frequência | Passado Concluído |
A série temporal foi analisada e todos os pontos de dados estão alinhados com a frequência detectada. A série temporal foi analisada e foram detectados pontos de dados que não estão alinhados com a frequência detectada. Esses pontos de dados foram removidos do conjunto de dados. |
Validação cruzada | Concluído | Para avaliar com precisão o(s) modelo(s) treinados pelo AutoML, usamos um conjunto de dados em que o modelo não é treinado. Portanto, se o usuário não fornecer um conjunto de dados de validação explícito, uma parte do conjunto de dados de treinamento será usada para isso. Para conjuntos de dados menores (menos de 20.000 amostras), a validação cruzada será usada, caso contrário, um único conjunto de controle é dividido nos dados de treinamento para servir como o conjunto de dados de validação. Portanto, para seus dados de entrada, aproveitamos a validação cruzada com dez dobras, se o número de amostras de treinamento for menor que 1000, e três dobras em todos os outros casos. |
Divisão de dados do Train-Test | Concluído | Para avaliar com precisão o(s) modelo(s) treinados pelo AutoML, usamos um conjunto de dados em que o modelo não é treinado. Portanto, se o usuário não fornecer um conjunto de dados de validação explícito, uma parte do conjunto de dados de treinamento será usada para isso. Para conjuntos de dados menores (menos de 20.000 amostras), a validação cruzada será usada, caso contrário, um único conjunto de controle é dividido nos dados de treinamento para servir como o conjunto de dados de validação. Portanto, os dados de entrada foram divididos em um conjunto de dados de treinamento e um conjunto de dados de validação de controle. |
Detecção da ID da Série Temporal | Passado Fixo |
O conjunto de dados foi analisado e nenhum índice de tempo duplicado foi detectado. Várias séries temporais foram encontradas no conjunto de dados, e os identificadores de série temporal foram criados automaticamente para o seu conjunto de dados. |
Agregação de série temporal | Passado Fixo |
A frequência do conjunto de dados está alinhada com a frequência especificada pelo usuário. Nenhuma agregação foi realizada. Os dados foram agregados para cumprir a frequência fornecida pelo usuário. |
Manipulação de séries curtas | Passado Fixo |
O ML automatizado detectou pontos de dados suficientes para cada série nos dados de entrada para continuar o treinamento. O ML automatizado detectou que algumas séries não continham pontos de dados suficientes para treinamento de um modelo. Para continuar com o treinamento, essas séries curtas foram descartadas ou preenchidas. |
Personalizar a definição de recursos
Você pode personalizar suas configurações de definição de recursos para garantir que os dados e recursos usados para treinar seu modelo de ML resultem em previsões relevantes.
Para personalizar definições de recursos, especifique "featurization": FeaturizationConfig
em seu objetoAutoMLConfig
. Se você estiver usando o Estúdio do Azure Machine Learning para seu experimento, consulte o artigo de instruções. Para personalizar a definição de recursos para os tipos de tarefa previsão, consulte a instruções de previsão.
As personalizações com suporte incluem:
Personalização | Definição |
---|---|
Atualização de finalidade de coluna | Substituir o tipo de recurso de autodetecção para a coluna especificada. |
Atualização de parâmetro do transformador | Atualizar os parâmetros para o transformador especificado. Atualmente, dá suporte a Insertor (média, mais frequente e mediano) e HashOneHotEncoder. |
Remover colunas | Especifica colunas a serem removidas da definição de recursos. |
Bloquear transformadores | Especifica os transformadores de bloqueio a serem usados no processo de definição de recursos. |
Observação
A funcionalidade remover colunas foi preterida a partir da versão 1.19 do SDK. Remova as colunas do conjunto de dados como parte da limpeza, antes de consumi-la em seu experimento de ML automatizado.
Criar o objeto FeaturizationConfig
usando chamadas de 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})
Transparência de definição de recursos
Cada modelo de AutoML tem a definição de recursos aplicada automaticamente. O definição de recursos inclui engenharia automatizada de recursos (quando "featurization": 'auto'
) e dimensionamento e normalização, que impacta o algoritmo selecionado e seus valores de hiperparâmetro. O AutoML dá suporte a métodos diferentes para garantir que você tenha visibilidade do que foi aplicado ao seu modelo.
Considere esse exemplo de previsão:
- Há quatro recursos de entrada: A (numérico), B (numérico), C (numérico), D (datetime).
- O recurso numérico C foi removido porque é uma coluna de ID com todos os valores exclusivos.
- Os recursos numéricos A e B têm valores ausentes e, portanto, são imputados pela média.
- O recurso datetime D é destacado em 11 recursos diferentes de engenharia.
Para obter essas informações, use a saída fitted_model
da execução do experimento de ML automatizado.
automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()
Engenharia de recursos automatizada
A get_engineered_feature_names()
retorna uma lista de nomes de recursos de engenharia.
Observação
Use “timeseriestransformer” para task=”forecasting”, caso contrário, use “datatransformer” para a tarefa “regression” ou “classification”.
fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()
Essa lista inclui todos os nomes de recursos de engenharia.
['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']
O get_featurization_summary()
obtém um resumo de definição de recursos de todos os recursos de entrada.
fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()
Saída
[{'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']}]
Saída | Definição |
---|---|
RawFeatureName | Nome de recurso/coluna de entrada do conjunto de dados fornecido. |
TypeDetected | Tipo de dados detectado do recurso de entrada. |
Dropped | Indica se o recurso de entrada foi removido ou usado. |
EngineeringFeatureCount | Número de recursos gerados por meio de transformações automatizadas de engenharia de recursos. |
Transformações | Lista de transformações aplicadas aos recursos de entrada para gerar recursos de engenharia. |
Colocação em escala e normalização
Para entender o dimensionamento/normalização e o algoritmo selecionado com seus valores de hiperparâmetro, use fitted_model.steps
.
A seguinte saída de exemplo é de execução fitted_model.steps
para uma execução escolhida:
[('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))]
Para obter mais detalhes, use esta função auxiliar:
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()
Essa função auxiliar retorna a saída a seguir para uma execução específica usando LogisticRegression with RobustScalar
como o algoritmo específico.
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}
Prever probabilidade de classe
Os modelos produzidos usando o ML automatizado têm objetos wrapper que espelham a funcionalidade de sua classe de origem open-source. A maioria dos objetos do wrapper do modelo de classificação retornados pelo ML automatizado implementam a função predict_proba()
, que aceita uma amostra de dados de matriz ou de matriz esparsa dos seus recursos (valores X) e retorna uma matriz n-dimensional de cada amostra e sua respectiva probabilidade de classe.
Supondo que você tenha recuperado a melhor execução e o modelo ajustado usando as mesmas chamadas, você pode chamar predict_proba()
diretamente do modelo ajustado, fornecendo uma amostra de X_test
no formato apropriado, dependendo do tipo de modelo.
best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)
Se o modelo subjacente não oferecer suporte à função predict_proba()
ou o formato estiver incorreto, uma exceção específica para classe de modelo será lançada. Consulte os documentos de referência de RandomForestClassifier e XGBoost para obter exemplos de como essa função é implementada para diferentes tipos de modelo.
Integração do BERT no ML automatizado
O BERT é usado na camada de definição de recursos do ML automatizado. Nessa camada, se uma coluna contiver texto livre ou outros tipos de dados como carimbos de data/hora ou números simples, a definição de recursos será aplicada de acordo.
Para o BERT, o modelo é bem ajustado e treinado utilizando os rótulos fornecidos pelo usuário. A partir daqui, as incorporações de documentos são geradas como recursos ao lado de outros, como recursos baseados em carimbo de data/hora, dia da semana.
Saiba como Configurar o AutoML para treinamento de um modelo de processamento de linguagem natural com o Python.
Etapas para invocar o BERT
Para invocar o BERT, defina enable_dnn: True
em seu automl_settings e use uma computação de GPU (vm_size = "STANDARD_NC6"
ou uma GPU superior). Se uma computação de CPU for usada, em vez do BERT, o AutoML habilitará o featurizer BiLSTM DNN.
O ML automatizado executa as seguintes etapas para o BERT.
Pré-processamento e geração de tokens de todas as colunas de texto. Por exemplo, o transformador de
StringCast
pode ser encontrado no resumo de definição de recursos do modelo final. Um exemplo de como produzir o resumo da definição de recursos do modelo pode ser encontrado neste notebook.Concatenar todas as colunas de texto em uma única coluna de texto, portanto,
StringConcatTransformer
no modelo final.Nossa implementação do BERT limita o tamanho de texto total de um exemplo de treinamento a tokens de 128. Isso significa que, o ideal é que todas as colunas de texto quando concatenadas tenham, no máximo, 128 tokens de comprimento. Se várias colunas estiverem presentes, cada coluna deverá ser removida para que essa condição seja atendida. Caso contrário, para colunas concatenadas com o comprimento de >128 a camada de criador de tokens de BERT trunca essa entrada para 128 tokens.
Como parte da limpeza de recursos, o AutoML compara o BERT com a linha de base (recursos de recipiente de palavras) em uma amostra dos dados. Essa comparação determina se o BERT forneceria melhorias de precisão. Se o BERT tiver um desempenho melhor do que a linha de base, o AutoML usará o BERT para a definição de recursos de texto para todos os dados. Nesse caso, você verá o
PretrainedTextDNNTransformer
no modelo final.
O BERT geralmente é executado por mais tempo do que outros featurizers. Para melhorar o desempenho, recomendamos usar STANDARD_NC24r ou STANDARD_NC24rs_V3 para seus recursos RDMA.
O AutoML distribuirá o treinamento do BERT em vários nós se eles estiverem disponíveis (até um máximo de oito nós). Isso pode ser feito em seu objeto AutoMLConfig
definindo o parâmetro max_concurrent_iterations
como superior a 1.
Idiomas com suporte para o BERT no AutoML
Atualmente, o AutoML dá suporte a 100 idiomas e, dependendo do idioma do conjunto de dados, ele escolhe o modelo apropriado do BERT. Para dados em alemão, usamos o modelo alemão do BERT. Para o inglês, usamos o modelo em inglês do BERT. Para todos os outros idiomas, usamos o modelo do BERT multilíngue.
No código a seguir, o modelo alemão do BERT é disparado, uma vez que o idioma do conjunto de dados é especificado como deu
, o código de três letras do idioma para o alemão de acordo com a classificação 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
}