Preparación de datos para la regresión
En este artículo se describe cómo AutoML prepara los datos para el entrenamiento de regresión y describe la configuración de datos configurable. Puede ajustar estas opciones durante la configuración del experimento en la Interfaz de usuario de AutoML.
Para configurar estas opciones mediante la API de AutoML), consulte la Referencia de la API de Python de AutoML.
Tipos de características de datos admitidos
Solo se admiten los tipos de características que se enumeran a continuación. Por ejemplo, no se admiten imágenes.
Se admiten los siguientes tipos de características:
- Numérica (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
, yDoubleType
) - Boolean
- Cadena (texto categórico o en inglés)
- Marcas de tiempo (
TimestampType
,DateType
) - ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML y posteriores)
- DecimalType (Databricks Runtime 11.3 LTS ML y versiones posteriores)
Atribución de valores que faltan
En Databricks Runtime 10.4 LTS ML y posteriores, puede especificar cómo se imputan los valores NULL. En la interfaz de usuario, seleccione un método en la lista desplegable de la columna Impute with en el esquema de tabla. En la API, use el parámetro imputers
. Para más información, consulte Referencia de la API de Python de AutoML.
De forma predeterminada, AutoML selecciona un método de imputación basado en el tipo de columna y el contenido.
Nota:
Si elige un método de imputación distinto del predeterminado, AutoML no realiza la detección de tipos semánticos.
Selección de columnas
En Databricks Runtime 10.3 ML y posteriores, puede especificar qué columnas debe usar AutoML para el entrenamiento. Para excluir una columna de la interfaz de usuario, desactive la columna Incluir. En la API, use el parámetro exclude_cols
. Para más información, consulte Referencia de la API de Python de AutoML.
No se puede quitar la columna seleccionada como destino de predicción o como columna de tiempo para dividir los datos.
De manera predeterminada, se incluyen todas las columnas.
División de los datos en conjuntos de entrenamiento, validación y prueba
AutoML divide los datos en tres divisiones para el entrenamiento, la validación y las pruebas. Dependiendo del tipo de problema de ML, tiene diferentes opciones para dividir los datos.
Use los métodos siguientes para dividir los datos en conjuntos de entrenamiento, validación y pruebas:
(Valor predeterminado) División aleatoria: Si no se especifica una estrategia de división de datos, el conjunto de datos se divide aleatoriamente en división de entrenamiento del 60 %, 20 % de validación de división y 20 % división de prueba. Para la clasificación, una división aleatoria estratificada garantiza que cada clase se represente adecuadamente en los conjuntos de entrenamiento, validación y pruebas.
División cronológica: en Databricks Runtime 10.4 LTS ML y versiones posteriores, puede seleccionar una columna de tiempo para crear divisiones cronológicas de entrenamiento, validación y prueba. Las divisiones cronológicas usan los puntos de datos más antiguos para el entrenamiento; los siguientes en antigüedad, para la validación, y los más recientes, en las pruebas. La columna de hora puede ser una marca de tiempo, un entero o una columna de cadena.
División manual: en Databricks Runtime 15.3 ML y versiones posteriores, puede usar la API para configurar una división manual. Especifique una columna dividida y use los valores train
, validate
o test
para identificar las filas que quiere usar para los conjuntos de datos de entrenamiento, validación y prueba. Se omiten todas las filas con valores de columna divididos distintos de train
, test
o validate
y se genera la alerta correspondiente.
Muestreo de grandes conjuntos de datos
Aunque AutoML distribuye las pruebas de ajuste de hiperparámetros entre los nodos de trabajo de un clúster, cada modelo se entrena en un único nodo de trabajo.
AutoML calcula automáticamente la memoria necesaria para cargar y entrenar el conjunto de datos, y muestrea el conjunto de datos si es necesario.
Versión de Databricks Runtime | Comportamiento de muestreo |
---|---|
9.1 ML LTS - 10.4 LTS ML | La fracción de muestreo es constante y no depende del tipo de nodo o memoria del clúster por nodo. |
11.x ML | La fracción de muestreo aumenta para los nodos de trabajo con más memoria por núcleo. Para aumentar el tamaño de la muestra: - Usar un tipo de instancia optimizada para memoria. - Ajuste spark.task.cpus en la configuración de Spark. El valor predeterminado es 1 y el valor máximo es el número de CPU en el nodo de trabajo. El valor máximo es el número de CPU en el nodo de trabajo. Al aumentar este valor, el tamaño de la muestra es mayor, pero se ejecutan menos pruebas en paralelo.Ejemplo: En una máquina con 4 núcleos y 64 GB de RAM: - Con spark.task.cpus=1 , se ejecutan cuatro pruebas por trabajo, cada una con 16 GB de RAM.- Con spark.task.cpus=4 , se ejecuta una prueba por trabajo, con todas las RAM de 64 GB. |
11.3 LTS ML y versiones posteriores | Si AutoML muestra el conjunto de datos, la fracción de muestreo se muestra en la pestaña Información general de la interfaz de usuario. |
12.2 ML LTS y versiones posteriores | AutoML puede controlar conjuntos de datos más grandes asignando más núcleos de CPU por tarea de entrenamiento. Aumente el tamaño de la muestra seleccionando una instancia con más memoria total. |
Para problemas de clasificación, AutoML usa el método sampleBy
PySpark para el muestreo estratificado para conservar la distribución de etiquetas de destino.
Para problemas de regresión, AutoML usa el método sample
PySpark.
Detección de tipos semánticos
Nota:
- AutoML no realiza la detección de tipos semánticos para las columnas que tienen especificados métodos de imputación personalizados.
Con Databricks Runtime 9.1 LTS ML y versiones posteriores, AutoML intenta detectar si las columnas tienen un tipo semántico diferente del tipo de datos Spark o pandas en el esquema de tabla. AutoML trata estas columnas como el tipo semántico detectado. Estas detecciones son el mejor esfuerzo y, a veces, pueden perder la existencia de tipos semánticos. También puede establecer manualmente el tipo semántico de una columna, o decirle a AutoML que no aplique la detección de tipos semánticos a una columna mediante anotaciones.
En concreto, AutoML realiza estos ajustes:
- Las columnas de cadena e entero que representan datos de fecha o marca de tiempo se tratan como un tipo de marca de tiempo.
- Las columnas de cadena que representan datos numéricos se tratan como un tipo numérico.
Con Databricks Runtime 10.1 ML y posteriores, AutoML también realiza estos ajustes:
- Las columnas numéricas que contienen Ids. de categorías se tratan como una característica de categorías.
- Las columnas de cadena que contienen texto en inglés se tratan como una característica de texto.
Anotaciones de tipos semánticos
Con Databricks Runtime 10.1 ML y versiones posteriores, puede controlar manualmente el tipo semántico asignado, colocando una anotación de tipo semántico en una columna. Para anotar manualmente el tipo semántico de una columna <column-name>
como <semantic-type>
, use la sintaxis siguiente:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
puede ser uno de los siguientes:
categorical
: la columna contiene valores categóricos (por ejemplo, valores numéricos que deben tratarse como Ids.).numeric
: la columna contiene valores numéricos (por ejemplo, valores de cadena que se pueden analizar en números).datetime
: la columna contiene valores de marca de tiempo (valores de cadena, numéricos o de fecha, que se pueden convertir en marcas de tiempo).text
: la columna de cadena contiene texto en inglés.
Para deshabilitar la detección de tipos semánticos en una columna, use la anotación de palabra clave especial native
.