Entrena con el algoritmo de aprendizaje lineal integrado

El entrenamiento con algoritmos integrados en AI Platform te permite enviar tu conjunto de datos y entrenar un modelo sin escribir ningún código de entrenamiento. En esta página, se explica cómo funciona el algoritmo integrado de aprendizaje lineal y cómo usarlo.

Descripción general

Este algoritmo integrado realiza el procesamiento previo y el entrenamiento:

  1. Procesamiento previo: AI Platform procesa tu combinación de datos categóricos y numéricos en un conjunto de datos numéricos a fin de prepararlos para el entrenamiento.
  2. Entrenamiento: con el conjunto de datos y los parámetros del modelo que proporcionaste, AI Platform ejecuta el entrenamiento con el estimador lineal de TensorFlow.

Limitaciones

Las siguientes funciones no son compatibles para el entrenamiento con el algoritmo de aprendizaje lineal integrado:

Tipos de máquina admitidos

Se admiten los siguientes niveles de escala y tipos de máquinas de AI Platform:

Establece el formato de los datos de entrada

Cada fila de un conjunto de datos representa una instancia, y cada columna de un conjunto de datos representa un valor de atributo. La columna de destino representa el valor que deseas predecir.

Prepara el archivo CSV

Tus datos de entrada deben estar en un archivo CSV con codificación UTF-8. Si tus datos de entrenamiento solo consisten en valores categóricos y numéricos, puedes usar el módulo de procesamiento previo para completar los valores numéricos que faltan, dividir el conjunto de datos y quitar filas con más del 10% de los valores faltantes. De lo contrario, puedes ejecutar el entrenamiento sin el procesamiento previo automático habilitado.

Debes preparar tu archivo CSV de entrada para cumplir con los siguientes requisitos:

  • Quita la fila del encabezado. La fila del encabezado contiene las etiquetas para cada columna. Quita la fila del encabezado a fin de evitar enviarla con el resto de las instancias de datos como parte de los datos de entrenamiento.
  • Asegúrate de que la columna de destino sea la primera. La columna de destino contiene el valor que estás intentando predecir. Para un algoritmo de clasificación, todos los valores en la columna de destino son una clase o una categoría. Para un algoritmo de regresión, todos los valores en la columna de destino son numéricos.

Controla los valores de números enteros

Según la configuración predeterminada, las columnas de valores de números enteros se interpretan como columnas categóricas si hay valores únicos suficientes. Por ejemplo, si una columna en tu conjunto de datos incluye valores de números enteros, como {101, 102, 103}, AI Platform interpreta estos valores como categorías, como {'high', 'medium', 'low'}.

Para evitar este análisis incorrecto, asegúrate de convertir los números enteros en flotantes cuando quieras que los datos sean numéricos: {101.0, 102.0, 103.0}. A fin de garantizar que los números enteros se interpreten como categóricos, agrega una string antes o después de cada valor: {code_101, code_102, code_103}.

Presenta un trabajo de entrenamiento de aprendizaje lineal

En esta sección, se explica cómo enviar un trabajo de entrenamiento con el algoritmo de aprendizaje lineal integrado.

Puedes encontrar explicaciones breves de cada hiperparámetro en Google Cloud Platform Console, y una explicación más completa en la referencia del algoritmo de aprendizaje lineal integrado.

Console

  1. Ve a la página Trabajos de AI Platform en Google Cloud Platform Console.

    Página Trabajos de AI Platform

  2. Haz clic en el botón Trabajo de entrenamiento nuevo. De las opciones que se muestran a continuación, haz clic en Entrenamiento de modelos integrados.

  3. En la página Crea un nuevo trabajo de entrenamiento, selecciona Algoritmo de aprendizaje lineal integrado y haz clic en Siguiente.

  4. Para obtener más información sobre todos los parámetros disponibles, sigue los vínculos en Google Cloud Platform Console y consulta la referencia del algoritmo de aprendizaje lineal integrado para obtener más detalles.

gcloud

  1. Configura variables de entorno a fin de complementar tu trabajo. Para ello, completa los campos [VALUES-IN-BRACKETS] con tus propios valores:

       # Specify the name of the Cloud Storage bucket where you want your
       # training outputs to be stored, and the Docker container for
       # your built-in algorithm selection.
       BUCKET_NAME='[YOUR-BUCKET-NAME]'
       IMAGE_URI='gcr.io/cloud-ml-algos/linear_learner_cpu:latest'
    
       # Specify the Cloud Storage path to your training input data.
       TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
       DATASET_NAME='census'
       ALGORITHM='linear'
       MODEL_TYPE='classification'
    
       DATE='date '+%Y%m%d_%H%M%S''
       MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
       JOB_ID="${MODEL_NAME}_${DATE}"
    
       JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. Envía el trabajo de entrenamiento con gcloud ai-platform jobs training submit de la siguiente manera:

       gcloud ai-platform jobs submit training $JOB_ID \
          --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
          -- \
          --preprocess --model_type=$MODEL_TYPE --batch_size=250 \
          --learning_rate=0.1 --max_steps=1000 \
          --training_data_path=$TRAINING_DATA
    
  3. Supervisa el estado de tu trabajo de entrenamiento mediante la vista de los registros con gcloud. Consulta gcloud ai-platform jobs describe y gcloud ai-platform jobs stream-logs.

       gcloud ai-platform jobs describe ${JOB_ID}
       gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Cómo funciona el procesamiento previo

El procesamiento previo automático funciona para los datos categóricos y numéricos. La rutina de procesamiento previo primero analiza y, a continuación, transforma tus datos.

Análisis

Primero, AI Platform detecta automáticamente el tipo de datos de cada columna, identifica cómo debe tratarse cada columna y calcula algunas estadísticas de los datos en la columna. Esta información se captura en el archivo metadata.json.

AI Platform analiza el tipo de la columna de destino a fin de identificar si el conjunto de datos determinado es con fines de regresión o clasificación. Si se produce un conflicto entre este análisis y tu selección de model_type, ocurre un error. Sé explícito acerca de cómo debe tratarse la columna de destino; para ello, formatea tus datos con claridad en los casos ambiguos.

  • Tipo: la columna puede ser numérica o categórica.

  • Tratamiento: AI Platform identifica cómo tratar cada columna de la siguiente manera:

    • Si la columna incluye un solo valor en todas las filas, se trata como una constante.
    • Si la columna es categórica y, por lo tanto, incluye valores únicos en todas las filas, se trata como un row_identifier.
    • Si la columna es numérica con valores flotantes, o si es numérica con valores de números enteros y contiene muchos valores únicos, la columna se trata como numérica.
    • Si la columna es numérica con valores enteros y contiene pocos valores únicos suficientes, la columna se trata como una columna categórica en la que los valores de números enteros son la identidad o el vocabulario.
      • Se considera que una columna tiene pocos valores únicos si la cantidad de valores únicos en la columna es inferior al 20% de la cantidad de filas en el conjunto de datos de entrada.
    • Si la columna es categórica con cardinalidad alta, se la trata con hash; aquí, la cantidad de depósitos de hash es igual a la raíz cuadrada de la cantidad de valores únicos en la columna.
      • Se considera que una columna categórica tiene una cardinalidad alta si la cantidad de valores únicos es mayor que la raíz cuadrada de la cantidad de filas en el conjunto de datos.
    • Si la columna es categórica y la cantidad de valores únicos es menor o igual que la raíz cuadrada de la cantidad de filas en el conjunto de datos, la columna se trata como una columna categórica normal con vocabulario.
  • Estadísticas: AI Platform calcula las siguientes estadísticas en función del tipo de columna y el tratamiento identificados, que se utilizarán para transformar la columna en una etapa posterior.

    • Si la columna es numérica, se calculan los valores de la media y la varianza.
    • Si la columna es categórica, y el tratamiento es identidad o vocabulario, los valores distintos se extraen de la columna.
    • Si la columna es categórica y el tratamiento es hash, la cantidad de depósitos de hash se calcula con respecto a la cardinalidad de la columna.

Transformación

Una vez finalizado el análisis inicial del conjunto de datos, AI Platform transforma tus datos en función de los tipos, los tratamientos y las estadísticas que se aplican a tu conjunto de datos. AI Platform realiza transformaciones en el siguiente orden:

  1. Divide el conjunto de datos de entrenamiento en conjuntos de datos de validación y prueba si especificas los porcentajes de división.
  2. Quita las filas que tienen más del 10% de atributos faltantes.
  3. Completa los valores numéricos que faltan con el uso de la media de la columna.
.

Ejemplos de transformaciones

Se quitan las filas con el 10% de los valores faltantes. En los siguientes ejemplos, supongamos que la fila tiene 10 valores. Cada fila de ejemplo se trunca para que sea más simple.

Problema de la fila Valores originales Valores transformados Explicación
Fila de ejemplo sin valores faltantes [3, 0.45, …,
'fruits', 0, 1]
[3, 0.45, …,
1, 0, 0, 0, 1]
La string 'fruits' se transforma en los valores “1, 0, 0” en la codificación one-hot. Esto sucede más adelante en el grafo de TensorFlow.
Faltan demasiados valores [3, 0.45, …,
'fruits', __, __]
Se quita la fila Falta más del 10% de los valores en la fila.
Falta un valor numérico. [3, 0.45, …,
'fruits', 0, __]
[3, 0.45, …,
1, 0, 0, 0, 0.54]
  • El valor medio de la columna reemplaza el valor numérico faltante. En este ejemplo, la media es 0.54.
  • La string 'fruits' se transforma en los valores "1, 0, 0" en la codificación one-hot. Esto sucede más adelante en el grafo de TensorFlow.
Falta un valor categórico [3, 0.45, …,
__, 0, 1]
[3, 0.45, …,
0, 0, 0, 0, 1]
  • El valor categórico faltante se transforma en los valores “0, 0, 0” en la codificación one-hot. Esto sucede más adelante en el grafo de TensorFlow.

Columnas de atributos

Durante la transformación, las columnas no se procesan. En cambio, los metadatos producidos durante el análisis se pasan a AI Platform para crear las columnas de atributos según corresponda:

Tipo de columna Tratamiento de la columna Columna de atributos resultante
Numérico (Todos los tipos de tratamiento de la columna) tf.feature_column.numeric_column

Los valores de la media y la varianza se utilizan para estandarizar los valores
new_value = (input_value - mean) / sqrt(variance):

Categórico Identidad tf.feature_column.categorical_column_with_identity
Categórico Vocabulario tf.feature_column.categorical_column_with_vocabulary_list
Categórico Hash tf.feature_column.categorical_column_with_hash_bucket
Categórico Identificador de constante o de fila Ignorados. No se creó ninguna columna de atributos.

Una vez que se complete el procesamiento previo automático, AI Platform sube nuevamente el conjunto de datos procesado a tu depósito de Cloud Storage en el directorio que especificaste en la solicitud de trabajo.

Más recursos de aprendizaje

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.