Creación de un esquema de datos para Amazon ML - 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.

Creación de un esquema de datos para Amazon ML

Un esquema se compone de todos los atributos de los datos de entrada y sus tipos de datos correspondientes. Permite que Amazon ML entienda los datos de la fuente de datos. Amazon ML utiliza la información del esquema para leer e interpretar los datos de entrada, calcular estadísticas, aplicar las transformaciones de atributo correctas y ajustar los algoritmos de aprendizaje. Si no proporciona ningún esquema, Amazon ML infiere uno a partir de los datos.

Esquema de ejemplo

Para que Amazon ML lea los datos de entrada correctamente y genere predicciones precisas, cada atributo debe estar asignado al tipo de datos correcto. Veamos un ejemplo para ver cómo se asignan los tipos de datos a atributos y cómo los atributos y los tipos de datos se incluyen en un esquema. Denominaremos a nuestro ejemplo "Customer Campaign" porque queremos predecir qué clientes responderán a nuestra campaña de correo electrónico. Nuestro archivo de entrada es un archivo.csv con nueve columnas:

1,3,web developer,basic.4y,no,no,1,261,0 2,1,car repair,high.school,no,no,22,149,0 3,1,car mechanic,high.school,yes,no,65,226,1 4,2,software developer,basic.6y,no,no,1,151,0

Este es el esquema de estos datos:

{     "version": "1.0",     "rowId": "customerId",     "targetAttributeName": "willRespondToCampaign",     "dataFormat": "CSV",     "dataFileContainsHeader": false,     "attributes": [         {             "attributeName": "customerId",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "jobId",             "attributeType": "CATEGORICAL"         }, { "attributeName": "jobDescription", "attributeType": "TEXT" },         {             "attributeName": "education",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "housing",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "loan",             "attributeType": "CATEGORICAL"         },         {             "attributeName": "campaign",             "attributeType": "NUMERIC"         },         {             "attributeName": "duration",             "attributeType": "NUMERIC"         }, { "attributeName": "willRespondToCampaign", "attributeType": "BINARY" } ] }

En el archivo de esquema de este ejemplo, el valor del rowId es customerId:

"rowId": "customerId",

El atributo willRespondToCampaign se define como el atributo de destino:

"targetAttributeName": "willRespondToCampaign ",

El atributo customerId y el tipo de datos CATEGORICAL están asociados a la primera columna, el atributo jobId y el tipo de datos CATEGORICAL están asociados a la segunda columna, el atributo jobDescription y el tipo de datos TEXT están asociados a la tercera columna, el atributo education y el tipo de datos CATEGORICAL están asociados a la cuarta columna y así sucesivamente. La novena columna está asociada al atributo willRespondToCampaign con un tipo de datos BINARY, y este atributo también está definido como atributo de destino.

Funcionamiento del campo targetAttributeName

El valor targetAttributeName es el nombre del atributo que desea predecir. Debe asignar un valor targetAttributeName al crear o evaluar un modelo.

Durante la formación o evaluación de un modelo de ML, el targetAttributeName identifica el nombre del atributo de los datos de entrada que contiene las respuestas "correctas" para el atributo de destino. Amazon ML utiliza el destino, el cual incluye las respuestas correctas, para detectar patrones y generar un modelo de ML.

Cuando evalúa el modelo, Amazon ML utiliza el destino para comprobar la exactitud de las predicciones. Una vez que haya creado y evaluado el modelo de ML, puede utilizar los datos con un targetAttributeName que no esté asignado para generar predicciones con el modelo de ML.

Puede definir el atributo de destino en la consola Amazon ML al crear una fuente de datos o en un archivo de esquema. Si crea su propio archivo de esquemas, utilice la siguiente sintaxis para definir el atributo de destino:

"targetAttributeName": "exampleAttributeTarget",

En este ejemplo, exampleAttributeTarget es el nombre del atributo del archivo de origen que es el atributo de destino.

Funcionamiento del campo rowID

El row ID es un marcador opcional asociado a un atributo de los datos de entrada. Si se especifica, el atributo marcado como row ID se incluye en la predicción de salida. Este atributo facilita determinar qué predicción se corresponde con cada observación. Un ejemplo de un buen row ID es un ID de cliente o un atributo exclusivo similar.

nota

El ID de fila solo es para fines de referencia. Amazon ML no la utiliza al entrenar un modelo de ML. Seleccionar un atributo como ID de fila lo excluye de que se utilice para el entrenamiento de un modelo de ML.

Puede definir el row ID en la consola Amazon ML al crear una fuente de datos o en un archivo de esquema. Si crea su propio archivo de esquema, utilice la siguiente sintaxis para definir el row ID:

"rowId": "exampleRow",

En el anterior ejemplo, exampleRow es el nombre del atributo del archivo de origen que se define como el ID de fila.

Al generar predicciones por lotes, es posible que aparezca el siguiente resultado:

tag,bestAnswer,score 55,0,0.46317 102,1,0.89625

En este ejemplo, RowID representa al atributo customerId. Por ejemplo, un customerId de 55 significa que responde a nuestra campaña de correo electrónico con una confianza baja (0,46317), mientras un customerId de 102 significa que responde a nuestras campañas de correo electrónico con una confianza alta (0,89625).

Funcionamiento del campo AttributeType

En Amazon ML existen cuatro tipos de datos de atributos:

Binario

Seleccione BINARY para un atributo que solo tiene dos estados posibles, como por ejemplo yes o no.

Por ejemplo, el atributo isNew, para controlar si una persona es un nuevo cliente, tendría que tener un valor true para indicar que la persona es un nuevo cliente, y un valor false para indicar que no es un nuevo cliente.

Los valores negativos válidos son 0, n, no, f y false.

Los valores positivos válidos son 1, y, yes, t y true.

Amazon ML ignora el caso de entradas binarias y elimina el espacio blanco de alrededor. Por ejemplo, " FaLSe " es un valor binario válido. Puede combinar los valores binarios que utiliza en la misma fuente de datos, como true, noy 1. Amazon ML solo genera 0 y 1 para atributos binarios.

Categórico

Seleccione CATEGORICAL para un atributo que admite un número limitado de valores de cadena únicos. Por ejemplo, un ID de usuario, el mes y un código postal son valores categóricos. Los atributos categóricos se tratan como una cadena única y no se tokenizan más.

Numérico

Seleccione NUMERIC para un atributo que admite una cantidad como un valor.

Por ejemplo, la temperatura, el peso y la el número de clics son valores numéricos.

No todos los atributos que contienen números son numéricos. Los atributos categóricos, como de días del mes e IDs, a menudo se representan como números. Para que se consideren numéricos, un número debe ser comparable a otro número. Por ejemplo, el ID de cliente 664727 no le indica nada sobre el ID de cliente 124552, pero un peso de 10 le indica que ese atributo es más pesado que un atributo con un peso de 5. Los días del mes no son numéricos, porque el primero de un mes podría ocurrir antes o después del segundo de otro mes.

nota

Al utilizar Amazon ML para crear su esquema, se asignará el tipo de datos Numeric para todos los atributos que utilizan los números. Si Amazon ML crea su esquema, compruebe la existencia de asignaciones incorrectas y definir los atributos CATEGORICAL.

Text

Elija TEXT para un atributo que es una cadena de palabras. Al leer en los atributos de texto, Amazon ML convierte en tokens, delimitado por los espacios en blanco.

Por ejemplo, email subject vuelve a estar en buen estado email y subjecty email-subject here se convierte en email-subject y here.

Si el tipo de datos de una variable en el esquema de formación no coincide con el tipo de datos de esa variable en el esquema de evaluación, Amazon ML cambia el tipo de datos de evaluación para que coincida con el tipo de datos de formación. Por ejemplo, si el esquema de datos de formación asigna un tipo de datos de TEXT a la variable age, pero el esquema de evaluación asigna un tipo de datos de NUMERIC a age, Amazon ML considera que la envejecen en la evaluación de los datos como variables TEXT en vez de NUMERIC.

Para obtener información sobre las estadísticas asociadas a cada tipo de datos, consulte Estadísticas descriptivas.

Proporcionar un esquema a Amazon ML

Cada fuente de datos necesita un esquema. Puede elegir entre dos formas para proporcionar un esquema a Amazon ML:

  • Permitir que Amazon ML infiera los tipos de datos de cada atributo en el archivo de datos de entrada y que cree un esquema automáticamente.

  • Proporcione un archivo de esquema cuando cargue sus datos de Amazon Simple Storage Service (Amazon S3).

Permitir que Amazon ML cree un esquema

Al utilizar la consola de Amazon ML para crear un origen de datos, Amazon ML utiliza reglas sencillas basadas en los valores de las variables para crear un esquema. Le recomendamos que revise el esquema creado por Amazon ML y que corrija los tipos de datos que no sean precisos.

Proporcionar un esquema

Después de crear su archivo de esquema, debe volver a Amazon ML. Dispone de dos opciones para hacerlo:

  1. Proporcione el esquema utilizando la consola de Amazon ML.

    Utilice la consola para crear la fuente de datos e incluya el archivo de esquema añadiendo la extensión .schema al nombre del archivo de los datos de entrada. Por ejemplo, si el URI de Amazon Simple Storage Service (Amazon S3) para sus datos de entrada es s3://my-bucket-name/data/input.csv, la URI del esquema será s3://my-bucket-name/data/input.csv.schema. Amazon ML localiza automáticamente el archivo de esquema que proporcione en lugar de intentar inferir el esquema de los datos.

    Para utilizar un directorio de archivos como datos de entrada a Amazon ML, añada la extensión .schema, a la ruta del directorio. Por ejemplo, si los archivos de datos se encuentran en la ubicación s3://examplebucket/path/to/data/, la URI al esquema será s3://examplebucket/path/to/data/.schema.

  2. Proporcione el esquema utilizando la API de Amazon ML.

    Si pretende llamar a la API de Amazon ML para crear un origen de datos, puede cargar el archivo de esquema a Amazon S3 y, a continuación, proporcionar la URI a dicho archivo del atributo DataSchemaLocationS3 de la API CreateDataSourceFromS3. Para obtener más información, consulte CreateDataSourceFromS3.

    Puede proporcionar el esquema directamente en la carga de CreateDataSource* APIs en lugar de guardarlo primero en Amazon S3. Para ello, coloque toda la cadena del esquema en el atributo DataSchema de las API CreateDataSourceFromS3, CreateDataSourceFromRDSo CreateDataSourceFromRedshift. Para obtener más información, consulte Referencia de la API de Amazon Machine Learning.