Compartir a través de


Caracterización de datos en aprendizaje automático automatizado (AutoML)

SE APLICA A:SDK de Azure Machine Learning v1 para Python

Importante

En este artículo se proporciona información sobre el uso del SDK de Azure Machine Learning v1. EL SDK v1 está en desuso a partir del 31 de marzo de 2025. El soporte técnico finalizará el 30 de junio de 2026. Puede instalar y usar SDK v1 hasta esa fecha. Los flujos de trabajo existentes que usan SDK v1 seguirán funcionando después de la fecha de finalización del soporte técnico. Sin embargo, podrían estar expuestos a riesgos de seguridad o cambios significativos si se producen cambios de arquitectura en el producto.

Se recomienda realizar la transición al SDK v2 antes del 30 de junio de 2026. Para más información sobre SDK v2, consulte ¿Qué es la CLI de Azure Machine Learning y el SDK de Python v2? y la referencia del SDK v2.

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 para diferenciar 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 AutoML.

Requisitos previos

En este artículo se da por supuesto que ya sabe cómo configurar un experimento de AutoML.

Importante

Los comandos de Python de este artículo requieren la versión más reciente del paquete azureml-train-automl.

Para obtener información sobre la configuración, vea los artículos siguientes:

Configuración de la caracterización

En todos los experimentos de AutoML, las técnicas de escalado automático y normalización se aplican 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 para la caracterización de AutoML (como la normalización de características, el control de los datos que faltan o la conversión de texto a numérico) forman 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 Estudio de Azure Machine Learning, consulte 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 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. Para más información, consulte Personalización de características.

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.

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 categóricas, imputar con el valor más frecuente.
Generación de más características* Para las características de DateTime: año, mes, día, día de la semana, día del año, trimestre, semana del año, hora, minuto, segundo.

Para las tareas de previsión, se crean estas características de DateTime adicionales: Año ISO, mitad- medio año, mes natural como cadena, semana, día de la semana como cadena, día del trimestre, día del año, AM/PM (0 para la am, 1 para pm), AM/PM como cadena, hora del día (base de 12 horas).

Para las características de Texto: frecuencia de términos basada en unigramas, bigrams y trigramas. Para más información, consulte Integración de 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 usa para características categóricas de baja cardinalidad. La codificación one-hot-hash se utiliza para características categóricas de alta cardinalidad.
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.

Nota

*Si tiene previsto exportar los modelos creados por AutoML a un modelo ONNX, solo se admiten las opciones de caracterización indicadas con un asterisco en formato ONNX. Para más información, consulte Realizar predicciones con un modelo ONNX de AutoML.

En todos los experimentos de AutoML, los datos se escalan o normalizan automáticamente para ayudar a los algoritmos a funcionar correctamente. 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
StandardScaler Estandariza las características restando la media y escalando a una varianza unitaria.
MinMaxScaler Transforma las características mediante el escalado de cada característica por el mínimo y máximo de esa columna.
MaxAbsScaler Escala cada característica por su valor absoluto máximo.
RobustScaler Escala las características por su intervalo cuantil.
PCA Análisis de componentes principales. 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). A diferencia de PCA, este estimador no centra los datos antes de calcular la descomposición del valor singular, lo que le permite trabajar con scipy.sparse matrices de forma eficaz.
Normalizador 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 le ayudan a identificar posibles problemas con los datos, como los valores que faltan o los datos desequilibrados. 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' o validation=auto en el AutoMLConfig objeto .
  • Para experimentos de Studio: Cuando está habilitada 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 Protección de datos de la ejecución de AutoML.

Estados de límite de protección de datos

Los límites de protección de datos muestran uno de los tres estados siguientes:

Estado 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 aplicaron 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 del desencadenador
Atribución de los valores de características que faltan Aprobado


¡Listo!
No se ha detectado que falten valores de característica en los datos de entrenamiento. Para más información, consulte Configuración de las opciones de caracterización.

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 Aprobado


¡Listo!
Las entradas se analizaron y no se detectaron 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 Aprobado




Alertado



¡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 Aprobado



¡Listo!
Se analizaron los valores seleccionados (horizonte, retraso, ventana gradual) y no se detectaron posibles problemas de memoria insuficiente. Obtenga más información sobre las configuraciones de previsión de series temporales.

Se han analizado los valores seleccionados (horizonte, desfase y ventana móvil) y podrían causar que el experimento agote la memoria. Las configuraciones de retardo o de ventana gradual están desactivadas.
Detección de frecuencias Aprobado


¡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 el modelo entrenado 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 el modelo entrenado 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 identificadores de serie temporal Aprobado


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 Aprobado


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 cortas Aprobado


Fijo
AutoML detectó suficientes puntos de datos para cada serie de los datos de entrada para continuar con el entrenamiento.

AutoML 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

Puede personalizar la configuración de caracterización para asegurarse de que los datos y características que se usan para entrenar el modelo de Machine Learning dan lugar a predicciones pertinentes.

Para personalizar las featurizaciones, especifique "featurization": FeaturizationConfig en el objeto AutoMLConfig. Si usa Azure Machine Learning Studio para el experimento, consulte la Configuración de las opciones de caracterización. Para personalizar la caracterización de los tipos de tareas de previsión, consulte la Personalizar caracterizació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 quitar de la caracterización.
Transformadores de bloque Especifica los transformadores de bloque que se usarán en el proceso de caracterización.

Nota

La funcionalidad quitar columnas está en desuso a partir de la versión 1.19 del SDK. Quite las columnas del conjunto de datos como parte de la limpieza de datos antes de consumirla en el experimento de AutoML.

Puede crear el FeaturizationConfig objeto 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 variable numérica C se elimina 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 el fitted_model salida de la ejecución del experimento de AutoML.

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

Diseño de características automatizadas

El get_engineered_feature_names() devuelve una lista de nombres de características diseñados.

Nota

Use 'timeseriestransformer' para task='forecasting', si no, use 'datatransformer' para 'regression' o 'classification' tarea.

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']

El get_featurization_summary() obtiene un resumen de caracterización 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']}]
Resultados Definición
RawFeatureName Nombre de característica o columna de entrada del conjunto de datos proporcionado.
TipoDetectado Tipo de datos detectado de la característica de entrada.
Descartado 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 comprender el escalado y la normalización y el algoritmo seleccionado con sus valores de hiperparámetros, 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 AutoML tienen objetos contenedores que reflejan la funcionalidad de su clase de origen de código abierto. La mayoría de los objetos contenedor de modelos de clasificación devueltos por AutoML implementan la función predict_proba(), que acepta una muestra de datos de matriz dispersa o similar a una matriz dispersa de las características (valores X) y devuelve una matriz n dimensional de cada muestra y su probabilidad de 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 AutoML

Las representaciones de codificador bidireccional de Transformadores (BERT) se usan en la capa de caracterización de AutoML. 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.

Para BERT, el modelo está optimizado y entrenado mediante el uso de las etiquetas proporcionadas por el usuario. Desde aquí, las incrustaciones de documentos se generan como características junto con otras, como las características basadas en marca de tiempo, el 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 se usa un proceso de CPU, en lugar de BERT, AutoML habilita el caracterizador DNN de BiLSTM.

AutoML realiza los pasos siguientes para BERT.

  1. Preprocesa y tokeniza 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 de Jupyter Notebook.

  2. Concatena todas las columnas de texto en una sola columna de texto, de ahí el 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.

  3. Como parte del barrido de características, AutoML compara BERT con la línea base (bolsa de características 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.

BERT generalmente se ejecuta más tiempo que otros caracterizadores. 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 admitidos para BERT

AutoML admite actualmente alrededor de 100 idiomas. Según el lenguaje del conjunto de datos, AutoML elige el modelo BERT adecuado. Para los datos en alemán, se usa el modelo BERT en alemán. Para inglés, usamos el modelo BERT inglés. Para todos los demás idiomas, se usa el modelo multilingüe de BERT.

En el código siguiente, el modelo BERT alemán se desencadena porque el idioma del conjunto de datos se especifica en deu, el código de idioma de tres letras para 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
}