Caracterización de datos en aprendizaje automático automatizado
SE APLICA A: SDK de Python azureml v1
En este artículo se explica cómo personalizar la configuración de caracterización de datos en Azure Machine Learning para los experimentos de aprendizaje automático automatizado (AutoML).
Ingeniería de características y caracterización
Los datos de entrenamiento constan de filas y columnas. Cada fila es una observación o registro, y las columnas de cada fila son las características que describen cada registro. Normalmente, las características que mejor caracterizan los patrones de los datos se seleccionan para crear modelos predictivos.
Aunque muchos de los campos de datos sin procesar se pueden usar directamente para entrenar un modelo, a menudo es necesario crear otras características (diseñadas) que proporcionan información que diferencia mejor los patrones de los datos. Este proceso se denomina ingeniería de características, donde el uso de conocimientos de dominio de los datos se usa para crear características que, a su vez, ayudan a los algoritmos de aprendizaje automático a aprender mejor.
En Azure Machine Learning, se aplican técnicas de escalado de datos y normalización para facilitar la ingeniería de características. En conjunto, estas técnicas y esta ingeniería de características se denominan caracterización en experimentos de aprendizaje automático automatizado (ML).
Requisitos previos
En este artículo se da por supuesto que ya sabe cómo configurar un experimento de ML automatizado.
Importante
Los comandos de Python de este artículo requieren la versión más reciente del paquete azureml-train-automl
.
- Instale el paquete
azureml-train-automl
más reciente en el entorno local. - Para obtener información sobre la última versión del paquete
azureml-train-automl
, consulta las notas de la versión.
Para obtener información sobre la configuración, vea los artículos siguientes:
- Para obtener una experiencia de código primero: Configuración del entrenamiento de AutoML con Python
- Para obtener una experiencia sin código: Configuración del entrenamiento de AutoML sin código para datos tabulares con la interfaz de usuario de Studio
Configuración de la caracterización
En todos los experimentos de aprendizaje automático automatizado se aplican técnicas de escalado automático y normalización a los datos de forma predeterminada. Estas técnicas son tipos de caracterización que ayudan a ciertos algoritmos que son sensibles a las características a diferentes escalas. Puede habilitar una caracterización adicional, como la atribución de valores que faltan, la codificación y las transformaciones.
Nota
Los pasos de la caracterización del aprendizaje automático automatizado (tales como la normalización de características, el control de los datos que faltan o la conversión de valores de texto a numéricos) se convierten en parte del modelo subyacente. Cuando se usa el modelo para realizar predicciones, se aplican automáticamente a los datos de entrada los mismos pasos de caracterización que se aplican durante el entrenamiento.
En el caso de los experimentos configurados con el SDK de Python, se puede habilitar o deshabilitar el valor de caracterización y especificar con más detalle los pasos de caracterización que se van a usar para el experimento. Si usa Azure Machine Learning Studio, vea los pasos para habilitar la caracterización.
En la tabla siguiente se muestran los valores aceptados para featurization
en la clase AutoMLConfig:
Configuración de la caracterización | Descripción |
---|---|
"featurization": 'auto' |
Especifica que, como parte del preprocesamiento, los límites de protección de datos y los pasos de caracterización se van a realizar automáticamente. Esta es la configuración predeterminada. |
"featurization": 'off' |
Especifica que los pasos de caracterización no se deben realizar automáticamente. |
"featurization": 'FeaturizationConfig' |
Especifica que se van a usar los pasos de caracterización personalizados. Aprenda a personalizar la caracterización. |
Características automáticas
En la tabla siguiente se resumen las técnicas que se aplican automáticamente a los datos. Estas técnicas se aplican para los experimentos que se configuran mediante el SDK o la interfaz de usuario de Studio. Para deshabilitar este comportamiento, establezca "featurization": 'off'
en el objeto AutoMLConfig
.
Nota
Si tiene previsto exportar los modelos creados mediante AutoML a un modelo de ONNX, solo se admiten las opciones de caracterización indicadas con un asterisco ("*") en el formato ONNX. Más información sobre la conversión de modelos a ONNX.
Pasos de caracterización | Descripción |
---|---|
Eliminación de las características de cardinalidad alta o sin variación* | Permite eliminar estas características de los conjuntos de entrenamiento y validación. Se aplican a características en las que faltan todos los valores, que tienen el mismo valor en todas las filas o que tienen una cardinalidad alta (por ejemplo, hashes, id. o GUID). |
Atribución de los valores que faltan* | Para las características numéricas, se atribuyen con el promedio de los valores de la columna. Para las características de categorías, se atribuyen con el valor más frecuente. |
Generación de más características* | Para las características de fecha y hora: año, mes, día, día de la semana, día del año, trimestre, semana del año, hora, minuto, segundo. En el caso de las tareas de previsión, se crean estas características adicionales de fecha y hora: año ISO, semestre, mes natural como cadena, semana, día de la semana como cadena, día del trimestre, día del año, AM/PM [0 si la hora es antes de mediodía (12 p. m.); 1, en caso contrario], AM/PM como cadena, hora del día (formato de 12 h) Para las características de texto: Frecuencia de término basada en unigramas, bigramas y trigramas. Más información sobre cómo se hace esto con BERT. |
Transformación y codificación* | Permite transformar las características numéricas con pocos valores únicos en características de categorías. La codificación "one-hot" se utiliza para las características de categoría de cardinalidad baja. La codificación "one-hot-hash" se utiliza para las características de categorías de cardinalidad alta. |
Inserciones de palabras | Caracterizador de texto que convierte los vectores de tokens de texto en vectores de oración mediante un modelo previamente entrenado. El vector de inserción de cada palabra en un documento se agrega con el resto para producir un vector de característica de documento. |
Distancia del clúster | Entrena un modelo de agrupación en clústeres k-means en todas las columnas numéricas. Genera k nuevas características (una característica numérica nueva por grupo), que contienen la distancia de cada muestra hasta el centroide de cada clúster. |
En todos los experimentos de aprendizaje automático automatizado, los datos se escalan y se normalizan automáticamente para ayudar a que los algoritmos funcionen bien. Durante el entrenamiento del modelo, se aplica una de las siguientes técnicas de escalado o normalización para todos los modelos.
Escalado y procesamiento | Descripción |
---|---|
StandardScaleWrapper | Normalice las características mediante la eliminación de la media y el escalado a la varianza unitaria. |
MinMaxScalar | Transforma las características mediante el escalado de cada característica por el mínimo y máximo de esa columna. |
MaxAbsScaler | Escale cada característica por su valor absoluto máximo. |
RobustScalar | Escala las características por su intervalo cuantil. |
PCA | Reducción de la dimensionalidad lineal mediante la descomposición de valores singulares de los datos para proyectarlos en un espacio dimensional inferior. |
TruncatedSVD | Este transformador realiza la reducción de la dimensionalidad lineal mediante la descomposición de valores singulares truncados (SVD). Al contrario que PCA, este estimador no centra los datos antes de calcular la descomposición del valor singular, lo que significa que puede funcionar con matrices scipy.sparse de forma eficaz. |
SparseNormalizer | Cada muestra (es decir, cada fila de la matriz de datos) con al menos un componente distinto de cero se vuelve a escalar independientemente de otras muestras para que su norma (l1 o l2) sea igual a una. |
Límites de protección de datos
Los límites de protección de datos permiten identificar posibles incidencias con los datos (por ejemplo, valores que faltan o desequilibrio de clases). También ayudan a tomar acciones correctivas para mejorar los resultados.
Se aplican límites de protección de datos:
- Para experimentos del SDK: Cuando se especifican los parámetros
"featurization": 'auto'
ovalidation=auto
en el objetoAutoMLConfig
- Para experimentos de Studio: Cuando se habilita la caracterización automática
Puede revisar los límites de protección de datos del experimento:
- Mediante el establecimiento de
show_output=True
cuando se envía un experimento con el SDK. - En Studio, en la pestaña Límites de protección de datos de la ejecución del ML automatizado.
Estados de límites de protección de datos
Los límites de protección de datos muestran uno de los tres estados siguientes:
State | Descripción |
---|---|
Superado | No se ha detectado ningún problema con los datos y no se requiere ninguna acción por su parte. |
Listo | Los cambios se han aplicado a los datos. Se recomienda revisar las acciones correctivas que ha realizado ML automatizado para asegurarse de que los cambios se alineen con los resultados esperados. |
Con alertas | Se ha detectado una incidencia con los datos, pero no se ha podido resolver. Se recomienda revisar y solucionar la incidencia. |
Límites de protección de datos admitidos
En la tabla siguiente se describen los límites de protección de datos admitidos actualmente, así como los estados asociados que podría ver al enviar el experimento:
Límite de protección | Estado | Condición para el desencadenador |
---|---|---|
Atribución de los valores de características que faltan | Pasado ¡Listo! |
No se ha detectado que falten valores de característica en los datos de entrenamiento. Obtenga más información sobre la imputación de valores que faltan. Se han detectado valores de característica que faltan en los datos de entrenamiento y se han imputado. |
Detección de características de alta cardinalidad | Pasado ¡Listo! |
Se han analizado las entradas y no se han detectado características de cardinalidad alta. Se han detectado características de cardinalidad alta en las entradas y se han controlado. |
Control de división de validación | ¡Listo! | La configuración de validación se ha establecido en 'auto' y los datos de entrenamiento contenían menos de 20 000 filas. Todas las iteraciones del modelo entrenado se han validado mediante validación cruzada. Obtenga más información sobre la validación de datos. La configuración de validación se ha establecido en 'auto' y los datos de entrenamiento contenían más de 20 000 filas. Los datos de entrada se han dividido en un conjunto de datos de entrenamiento y un conjunto de datos de validación para comprobar el modelo. |
Detección de equilibrio de clases | Pasado Con alertas ¡Listo! |
Se analizaron las entradas y todas las clases están equilibradas en los datos de entrenamiento. Se considera que un conjunto de datos está equilibrado si todas las clases tienen una representación adecuada en el conjunto de datos según el número y proporción de las muestras. Se han detectado clases desequilibradas en las entradas. Para corregir el sesgo del modelo, corrija el problema de equilibrio. Obtenga más información sobre datos desequilibrados. Se detectaron clases desequilibradas en las entradas, y la lógica de barrido ha determinado aplicar el equilibrio. |
Detección de problemas de memoria | Pasado ¡Listo! |
Se han analizado los valores seleccionados (horizonte, retardo y ventana con desplazamiento) sin que se hayan detectado incidencias potenciales de memoria insuficiente. Obtenga más información sobre las configuraciones de previsión de series temporales. Se han analizado los valores seleccionados (horizonte, retardo y ventana con desplazamiento) y pueden provocar que el experimento se quede sin memoria. Las configuraciones de retardo o de ventana gradual están desactivadas. |
Detección de frecuencias | Pasado ¡Listo! |
Se ha analizado la serie temporal y todos los puntos de datos están alineados con la frecuencia detectada. Se ha analizado la serie temporal y se han detectado puntos de datos que no están alineados con la frecuencia detectada. Estos puntos de datos se quitaron del conjunto de datos. |
Validación cruzada | Listo | Para evaluar con precisión los modelos entrenados por AutoML, usamos un conjunto de datos en el que el modelo no está entrenado. Por lo tanto, si el usuario no proporciona un conjunto de datos de validación explícito, se usa una parte del conjunto de datos de entrenamiento para lograrlo. En el caso de conjuntos de datos más pequeños (menos de 20 000 muestras), se usa la validación cruzada; de lo contrario, se divide un único conjunto de espera de los datos de entrenamiento para servir como conjunto de datos de validación. Por lo tanto, para los datos de entrada usamos la validación cruzada con 10 plegamientos, si el número de muestras de entrenamiento es inferior a 1000 y 3 plegamientos en todos los demás casos. |
División de datos de entrenamiento y pruebas | Listo | Para evaluar con precisión los modelos entrenados por AutoML, usamos un conjunto de datos en el que el modelo no está entrenado. Por lo tanto, si el usuario no proporciona un conjunto de datos de validación explícito, se usa una parte del conjunto de datos de entrenamiento para lograrlo. En el caso de conjuntos de datos más pequeños (menos de 20 000 muestras), se usa la validación cruzada; de lo contrario, se divide un único conjunto de espera de los datos de entrenamiento para servir como conjunto de datos de validación. Por lo tanto, los datos de entrada se dividen en un conjunto de datos de entrenamiento y en un conjunto de datos de validación de retención. |
Detección de id. de serie temporal | Pasado Fijo |
Se analizó el conjunto de datos y no se detectó ningún índice de tiempo duplicado. Se encontraron varias series temporales en el conjunto de datos y los identificadores de serie temporal se crearon automáticamente para el conjunto de datos. |
Agregación de serie temporal | Pasado Fijo |
La frecuencia del conjunto de datos se alinea con la frecuencia especificada por el usuario. No se realizó ninguna agregación. Los datos se agregaron para cumplir con la frecuencia proporcionada por el usuario. |
Control de series breves | Pasado Fijo |
El ML automatizado ha detectado suficientes puntos de datos para cada serie en los datos de entrada para continuar con el entrenamiento. Ml automatizado detectó que algunas series no contenían suficientes puntos de datos para entrenar un modelo. Para continuar con el entrenamiento, estas series cortas se quitaron o acolcharon. |
Personalización de la caracterización
Se pueden personalizar los valores de la caracterización para asegurarse de que los datos y las características que se usan a fin de entrenar el modelo de Machine Learning generen predicciones pertinentes.
Para personalizar las caracterizaciones, especifique"featurization": FeaturizationConfig
en el objeto AutoMLConfig
. Si usa Azure Machine Learning Studio para el experimento, vea el artículo de procedimiento. Para personalizar la caracterización de los tipos de tarea de previsión, consulte el procedimiento de previsión.
Las personalizaciones compatibles incluyen:
Personalización | Definición |
---|---|
Actualización del propósito de la columna | Invalida el tipo de característica detectado automáticamente para la columna especificada. |
Actualización de parámetros del transformador | Actualizar los parámetros para el transformador especificado. Actualmente admite Imputer (media, más frecuente y mediana) y HashOneHotEncoder. |
Quitar columnas | Especifica las columnas que se van a eliminar de la caracterización. |
Transformadores de bloque | Especifica los transformadores de bloque que se van a usar en el proceso de características. |
Nota
La funcionalidad Quitar columnas está en desuso a partir de la versión 1.19 del SDK. Quite columnas del conjunto de datos como parte de la limpieza de datos antes de consumirlos en el experimento de aprendizaje automático automatizado.
Cree el objeto FeaturizationConfig
mediante llamadas 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})
Transparencia de caracterización
Cada modelo AutoML tiene una caracterización aplicada automáticamente. La caracterización incluye ingeniería de características automatizada (cuando "featurization": 'auto'
) y escalado y normalización que, a su vez, afecta al algoritmo seleccionado y a sus valores de hiperparámetro. AutoML admite distintos métodos para asegurarse de que tiene visibilidad sobre lo que se aplicó al modelo.
Considere este ejemplo de previsión:
- Hay cuatro características de entrada: A (numérico), B (numérico), C (numérico), D (fecha y hora).
- La característica numérica C se quita porque es una columna Id. con todos los valores únicos.
- A las características numéricas A y B les faltan valores y, por tanto, los atribuye la media.
- La característica de fecha y hora D se divide en 11 diferentes características de diseño.
Para obtener esta información, use la salida fitted_model
de la ejecución del experimento de aprendizaje automático automatizado.
automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()
Diseño de características automatizadas
get_engineered_feature_names()
devuelve una lista de nombres de características diseñadas.
Nota
Utilice 'timeseriestransformer' para la tarea = 'forecasting'; en caso contrario, utilice 'datatransformer' para la tarea 'regression' o 'classification'.
fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()
En esta lista se incluyen todos los nombres de las características de diseño.
['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']
get_featurization_summary()
obtiene un resumen de características de todas las características de entrada.
fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()
Resultados
[{'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 | Definición |
---|---|
RawFeatureName | Nombre de columna o característica de entrada desde el conjunto de datos proporcionado. |
TypeDetected | Tipo de datos detectado de la característica de entrada. |
Dropped | Indica si la característica de entrada se ha quitado o se ha utilizado. |
EngineeringFeatureCount | Número de características que se generan por las transformaciones de diseño de características automatizadas. |
Transformaciones | Lista de transformaciones aplicadas a las características de entrada para generar características de diseño. |
Escalado y normalización
Para entender el escalado o normalización y el algoritmo seleccionado con sus valores de hiperparámetro, use fitted_model.steps
.
La siguiente salida de ejemplo procede de la ejecución de fitted_model.steps
para una ejecución elegida:
[('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 más información, use esta función 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()
Esta función auxiliar devuelve el siguiente resultado para una ejecución determinada usando LogisticRegression with RobustScalar
como 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}
Predicción de la probabilidad de las clases
Los modelos generados mediante el aprendizaje automático automatizado tienen objetos contenedores que reflejan la funcionalidad de su clase de origen de código abierto. La mayoría de los objetos contenedores de modelos de clasificación devueltos por el aprendizaje automático automatizado implementan la función predict_proba()
, que acepta una muestra de datos similares a una matriz o de matriz dispersa de las características (valores X), y devuelve una matriz de n dimensiones de cada muestra y la probabilidad de la clase respectiva.
Suponiendo que recuperó el mejor modelo de ejecución y ajustado con las mismas llamadas, puede llamar a predict_proba()
directamente desde el modelo ajustado, proporcionando una muestra de X_test
en el formato adecuado en función del tipo de modelo.
best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)
Si el modelo subyacente no admite la función predict_proba()
o el formato es incorrecto, se produce una excepción específica de clase de modelo. Vea los documentos de referencia RandomForestClassifier y XGBoost para obtener ejemplos de cómo se implementa esta función para los distintos tipos de modelos.
Integración de BERT en el aprendizaje automático automatizado
BERT se usa en la capa de caracterización del ML automatizado. En esta capa, si una columna contiene texto libre u otros tipos de datos, como marcas de tiempo o números simples, la caracterización se aplica en consecuencia.
En el caso de BERT, el modelo se ajusta y se entrena con las etiquetas proporcionadas por el usuario. Desde aquí, las inserciones de documentos se muestran como características junto con otras, como las basadas en marcas de tiempo, día de la semana.
Aprenda a Configurar AutoML para entrenar un modelo de procesamiento de lenguaje natural con Python.
Pasos para invocar BERT
Para invocar BERT, establezca enable_dnn: True
en automl_settings y use un proceso de GPU (vm_size = "STANDARD_NC6"
o una GPU superior). Si en lugar de BERT se usa un proceso de CPU, AutoML habilita el caracterizador BiLSTM DNN.
El ML automatizado realiza los siguientes pasos para BERT.
El preprocesamiento y la tokenización de todas las columnas de texto. Por ejemplo, el transformador de
StringCast
se puede encontrar en el resumen de caracterización del modelo final. Puede encontrar un ejemplo de cómo generar el resumen de caracterización del modelo en este cuaderno.Concatene todas las columnas de texto en una sola columna de texto, por lo tanto,
StringConcatTransformer
en el modelo final.Nuestra implementación de BERT limita la longitud total del texto de un ejemplo de entrenamiento a 128 tokens. Esto significa que todas las columnas de texto, cuando se concatenan, deben tener una longitud máxima de 128 tokens. Si existen varias columnas, cada columna debe eliminarse de forma que se satisfaga esta condición. En caso contrario, en las columnas concatenadas de más de 128 tokens, la capa del tokenizador de BERT trunca esta entrada a 128 tokens.
Como parte del barrido de características, AutoML compara BERT con la línea de base (características de contenedor de palabras) en una muestra de los datos. Esta comparación determina si BERT proporcionaría mejoras en la precisión. Si BERT funciona mejor que la línea de base, AutoML usa BERT para la caracterización de texto para todos los datos. En ese caso, verá el
PretrainedTextDNNTransformer
en el modelo final.
Normalmente, BERT se ejecuta más tiempo que otros administradores de características. Para mejorar el rendimiento, se recomienda usar STANDARD_NC24r o STANDARD_NC24rs_V3 para sus funcionalidades de RDMA.
AutoML distribuye el entrenamiento de BERT en varios nodos si están disponibles (hasta un máximo de ocho nodos). Esto se puede hacer en el objeto AutoMLConfig
estableciendo el parámetro max_concurrent_iterations
en un valor mayor que 1.
Idiomas compatibles para BERT en el aprendizaje automático automatizado
AutoML admite actualmente unos 100 idiomas y, en función del idioma del conjunto de datos, elige el modelo BERT adecuado. Para los datos en alemán, se usa el modelo BERT en alemán. Para inglés, se usa el modelo BERT en inglés. Para todos los demás idiomas, se usa el modelo multilingüe de BERT.
En el código siguiente, se desencadena el modelo BERT en alemán, ya que el idioma del conjunto de datos se especifica como deu
, el código de idioma de 3 letras para el alemán según la clasificación 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
}