Referencia del formato de recetas - Amazon Machine Learning

Ya no actualizamos el servicio Amazon Machine Learning ni aceptamos nuevos usuarios para él. Esta documentación está disponible para los usuarios actuales, pero ya no la actualizamos. Para obtener más información, consulte Qué es Amazon Machine Learning.

Referencia del formato de recetas

Las recetas de Amazon ML contienen instrucciones para transformar los datos como parte del proceso de machine learning. Las recetas se definen utilizando una sintaxis similar a JSON, pero que tienen restricciones adicionales más allá de las restricciones JSON normales. Las recetas tienen las secciones siguientes, que debe aparecer en el orden en el que se muestran aquí:

  • Los grupos permiten agrupar diversas variables para facilitar la aplicación de transformaciones. Por ejemplo, puede crear un grupo de todas las variables relacionadas con las partes de texto sin formato de una página web (título, cuerpo) y, a continuación, realizar una transformación en todas estas partes a la vez.

  • Las asignaciones permiten la creación de variables con nombres intermedios que se pueden reutilizar en el procesamiento.

  • Las salidas definen qué variables se utilizarán en el proceso de entrenamiento y qué transformaciones (si procede) se aplicarán a estas variables.

Grupos

Puede definir grupos de variables a fin de transformar colectivamente todas las variables dentro de los grupos o utilizar estas variables para el aprendizaje automático sin transformarlas. De forma predeterminada, Amazon ML crea los siguientes grupos:

ALL_TEXT, ALL_NUMERIC, ALL_CATEGORICAL, ALL_BINARY: grupos para tipos específicos en función de las variables definidas en el esquema del origen de datos.

nota

No puede crear un grupo con el grupo ALL_INPUTS.

Estas variables se pueden utilizar en la sección de la salida de la receta sin estar definidos. También puede crear grupos personalizados añadiendo o restando variables de grupos existentes, o directamente desde una colección de variables. En el siguiente ejemplo se muestran los tres enfoques y la sintaxis de la asignación de agrupamiento:

"groups": { "Custom_Group": "group(var1, var2)", "All_Categorical_plus_one_other": "group(ALL_CATEGORICAL, var2)" }

Los nombres de grupo tienen que comenzar con un carácter alfabético y puede tener entre 1 y 64 caracteres. Si el nombre de grupo no comienza con un carácter alfabético o si contiene caracteres especiales (, ' " \t \r \n ( ) \), debe estar entre comillas para que se incluya en la receta.

Asignaciones

Puede asignar una o varias transformaciones a una variable intermedia por comodidad y legibilidad. Por ejemplo, si tiene una variable de texto denominada "email_subject" y le aplica la transformación a minúscula, puede llamar a la variable resultante "email_subject_lowercase", lo que facilita la tarea de realizar un seguimiento de ella en otras partes de la receta. Las asignaciones también pueden estar encadenadas, lo que le permite aplicar varias transformaciones en un orden especificado. El siguiente ejemplo muestra asignaciones únicas y asignaciones encadenadas en la sintaxis de la receta:

"assignments": { "email_subject_lowercase": "lowercase(email_subject)", "email_subject_lowercase_ngram":"ngram(lowercase(email_subject), 2)" }

Los nombres de variables intermedias tienen que comenzar con un carácter alfabético y pueden tener entre 1 y 64 caracteres. Si el nombre no comienza con un carácter alfabético o si contiene caracteres especiales (, ' " \t \r \n ( ) \), debe estar entre comillas para que se incluya en la receta.

Salidas

La sección de salidas controla qué variables de entrada se utilizarán para el proceso de aprendizaje y qué transformaciones se les aplicarán. Una sección de salida vacía o inexistente es un error, ya que no se transferirá ningún dato al proceso de aprendizaje.

La sección de salidas más simple incluye el grupo predefinido ALL_INPUTS, que indica a Amazon ML que utilice todas las variables definidas en el origen de datos para el aprendizaje:

"outputs": [ "ALL_INPUTS" ]

La sección de salida también puede consultar los demás grupos predefinidos indicando a Amazon ML que utilice todas las variables en estos grupos:

"outputs": [ "ALL_NUMERIC", "ALL_CATEGORICAL" ]

La sección de salida también puede consultar grupos personalizados. En el siguiente ejemplo, solo uno de los grupos personalizados definidos en la sección de asignaciones de agrupamiento del ejemplo anterior se utilizará para el aprendizaje automático. Todas las demás variables quedarán descartadas:

"outputs": [ "All_Categorical_plus_one_other" ]

La sección de salidas también puede consultar las asignaciones de variables definidas en la sección de asignación:

"outputs": [ "email_subject_lowercase" ]

Las variables de entrada o las transformaciones se pueden definir directamente en la sección de salidas:

"outputs": [ "var1", "lowercase(var2)" ]

La salida tiene que especificar de forma explícita todas las variables y las variables transformadas que se espera que estén disponibles para el proceso de aprendizaje. Por ejemplo, cuando incluye en la salida un producto cartesiano de "var1" y "var2". Si desea incluir también las dos variables sin procesar "var1" y "var2", debe añadir las variables sin procesar en la sección de salida:

"outputs": [ "cartesian(var1,var2)", "var1", "var2" ]

Las salidas pueden incluir comentarios para facilitar la legibilidad añadiendo el texto del comentario junto con la variable:

"outputs": [ "quantile_bin(age, 10) //quantile bin age", "age // explicitly include the original numeric variable along with the binned version" ]

Puede combinar y asociar todos estos enfoques en la sección de salidas.

nota

Los comentarios no están permitidos en la consola de Amazon ML cuando se añade una receta.

Ejemplo completo de receta

El siguiente ejemplo se refiere a varios procesadores de datos integrados que se introdujeron en ejemplos anteriores:

{ "groups": { "LONGTEXT": "group_remove(ALL_TEXT, title, subject)", "SPECIALTEXT": "group(title, subject)", "BINCAT": "group(ALL_CATEGORICAL, ALL_BINARY)" }, "assignments": { "binned_age" : "quantile_bin(age,30)", "country_gender_interaction" : "cartesian(country, gender)" }, "outputs": [ "lowercase(no_punct(LONGTEXT))", "ngram(lowercase(no_punct(SPECIALTEXT)),3)", "quantile_bin(hours-per-week, 10)", "hours-per-week // explicitly include the original numeric variable along with the binned version", "cartesian(binned_age, quantile_bin(hours-per-week,10)) // this one is critical", "country_gender_interaction", "BINCAT" ] }