Criar um esquema de dados para o Amazon ML - Amazon Machine Learning

Não estamos mais atualizando o serviço Amazon Machine Learning nem aceitando novos usuários para ele. Essa documentação está disponível para usuários existentes, mas não estamos mais atualizando-a. Para obter mais informações, consulte O que é o Amazon Machine Learning.

Criar um esquema de dados para o Amazon ML

Um esquema é composto de todos os atributos nos dados de entrada e os tipos de dados correspondentes. Ele permite que o Amazon ML entenda os dados na fonte de dados. O Amazon ML usa as informações no esquema para ler e interpretar os dados de entrada, calcular estatísticas, aplicar as transformações de atributo corretas e ajustar seus algoritmos de aprendizagem. Se você não fornecer um esquema, o Amazon ML deduzirá dos dados.

Esquema de exemplo

Para que o Amazon ML leia os dados de entrada corretamente e gere previsões precisas, cada atributo deve ser atribuído ao tipo de dados correto. O exemplo mostra como tipos de dados são atribuídos a atributos e como os atributos e os tipos de dados são incluídos em um esquema. Nosso exemplo se chama "Campanha do cliente" porque queremos prever as respostas dos clientes a nossa campanha de e-mail. Nosso arquivo de entrada é um arquivo .csv com nove colunas:

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 é o esquema para esses dados:

{     "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" } ] }

No arquivo de esquema deste exemplo, o valor de rowId é customerId:

"rowId": "customerId",

O atributo willRespondToCampaign está definido como o atributo de destino:

"targetAttributeName": "willRespondToCampaign ",

O atributo customerId e o tipo de dados CATEGORICAL estão associados à primeira coluna, o atributo jobId e o tipo de dados CATEGORICAL estão associados à segunda coluna, o atributo jobDescription e o tipo de dados TEXT estão associados à terceira coluna, o atributo education e o tipo de dados CATEGORICAL estão associados à quarta coluna e assim sucessivamente. A nona coluna está associada ao atributo willRespondToCampaign com um tipo de dados BINARY. Esse atributo também está definido como o atributo de destino.

Usar o campo targetAttributeName

O valor targetAttributeName é o nome do atributo que você deseja prever. Você deve atribuir um targetAttributeName ao criar ou avaliar um modelo.

Quando você está treinando ou avaliando um modelo de ML, targetAttributeName identifica o nome do atributo nos dados de entrada que contêm as respostas "corretas" para o atributo de destino. O Amazon ML usa o destino, que inclui as respostas corretas, para descobrir padrões e gerar um modelo de ML.

Quando você está avaliando seu modelo, o Amazon ML usa o destino para verificar a precisão de suas previsões. Depois de criar e avaliar o modelo de ML, você pode usar os dados com um targetAttributeName não atribuído para gerar previsões com o modelo de ML.

Você define o atributo de destino no console do Amazon ML quando cria uma fonte de dados ou em um arquivo de esquema. Se você criar seu próprio arquivo de esquema, use esta sintaxe para definir o atributo de destino:

"targetAttributeName": "exampleAttributeTarget",

Neste exemplo, exampleAttributeTarget é o nome do atributo em seu arquivo de entrada que é o atributo de destino.

Usar o campo rowID

row ID é uma indicação opcional associada a um atributo nos dados de entrada. Se especificado, o atributo marcado como row ID é incluído na saída de previsão. Esse atributo facilita a associação de qual previsão corresponde a qual observação. Um exemplo de um bom row ID é um ID de cliente ou um atributo exclusivo semelhante.

nota

O ID de linha é apenas para referência. O Amazon ML não o usa durante o treinamento de um modelo de ML. Se um atributo for selecionado como um ID de linha, ele não será usado para o treinamento de um modelo de ML.

Defina o row ID no console do Amazon ML quando criar uma fonte de dados ou em um arquivo de esquema. Se você estiver criando seu próprio arquivo de esquema, use esta sintaxe para definir row ID:

"rowId": "exampleRow",

No exemplo anterior, exampleRow é o nome do atributo no arquivo de entrada definido como o ID de linha.

Ao gerar previsões em lote, você pode obter a saída a seguir:

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

Neste exemplo, RowID representa o atributo customerId. Por exemplo, prevê-se que customerId 55 vai responder a nossa campanha de e-mail com pouca confiança (0,46317), mas prevê-se que customerId 102 vai responder a nossa campanha de e-mail com muita confiança (0,89625).

Usar o campo AttributeType

No Amazon ML, há quatro tipos de dados para atributos:

Binário

Escolha BINARY para um atributo que tem apenas dois estados possíveis, como yes ou no.

Por exemplo, o atributo isNew, que controla se uma pessoa é um novo cliente, teria um valor true para indicar que o indivíduo é um novo cliente, e um valor false para indicar que não é um novo cliente.

Os valores negativos válidos são 0, n, no, f e false.

Os valores positivos válidos são 1, y, yes, t e true.

O Amazon ML ignora o caso de entradas binárias e elimina os espaços em branco adjacentes. Por exemplo, " FaLSe " é um valor binário válido. Você pode combinar os valores binários usados na mesma fonte de dados, por exemplo, usando true, no e 1. O Amazon ML produz apenas as saídas 0 e 1 para atributos binários.

Categóricos

Escolha CATEGORICAL um atributo que aceita em um número limitado de valores de strings exclusivos. Por exemplo, um ID de usuário, o mês e um CEP são valores categóricos. Os atributos categóricos são tratados como uma única string e não são ainda mais indexados.

Numeric

Escolha NUMERIC para um atributo que aceita uma quantidade como um valor.

Por exemplo, temperatura, peso e taxa de clique são valores numéricos.

Nem todos os atributos que aceitam números são numéricos. Os atributos categóricos, como dias do mês e IDs, geralmente são representados como números. Para ser considerado numérico, um número deve ser comparável a outro número. Por exemplo, o ID do cliente 664727 não informa nada sobre o ID do cliente 124552, mas um peso de 10 informa que esse atributo é mais pesado do que um atributo com peso de 5. Os dias do mês não são numéricos porque o primeiro dia de um mês pode ocorrer antes ou depois do segundo dia de outro mês.

nota

Quando você usa o Amazon ML para criar seu esquema, ele atribui o tipo de dados Numeric a todos os atributos que usam números. Se o Amazon ML cria seu esquema, verifique se há atribuições incorretas e defina esses atributos como CATEGORICAL.

Texto

Escolha TEXT para um atributo que é uma string de palavras. Ao ler atributos de texto, o Amazon ML os converte em tokens, delimitados por espaços em branco.

Por exemplo, email subject se torna email e subject, e email-subject here passa a ser email-subject e here.

Se o tipo de dados de uma variável no esquema de treinamento não corresponde ao tipo de dados dessa variável no esquema de avaliação, o Amazon ML altera o tipo de dados de avaliação para que corresponda ao tipo de dados de treinamento. Por exemplo, se o esquema de dados de treinamento atribuir o tipo de dados TEXT à variável age, mas o esquema de avaliação atribuir o tipo de dados NUMERIC a age, o Amazon ML tratará as idades nos dados de avaliação como variáveis TEXT em vez de NUMERIC.

Para obter informações sobre as estatísticas associadas a cada tipo de dados, consulte Estatísticas descritivas.

Fornecer um esquema ao Amazon ML

Toda fonte de dados precisa de um esquema. Há duas maneiras disponíveis para fornecer um esquema ao Amazon ML:

  • Permitir que o Amazon ML deduza os tipos de dados de cada atributo no arquivo de dados de entrada e crie automaticamente um esquema para você.

  • Fornecer um arquivo de esquema ao fazer upload dos dados do Amazon Simple Storage Service (Amazon S3).

Permitir que o Amazon ML crie seu esquema

Quando você usa o console do Amazon ML para criar uma fonte de dados, o Amazon ML usa regras simples com base nos valores de suas variáveis para criar seu esquema. Recomendamos enfaticamente que você examine o esquema criado pelo Amazon ML e corrija os tipos de dados se eles não forem precisos.

Fornecer um esquema

Depois de criar o arquivo de esquema, você precisa torná-lo disponível para o Amazon ML. Você tem duas opções:

  1. Fornecer o esquema usando o console do Amazon ML.

    Use o console para criar sua fonte de dados e inclua o arquivo de esquema anexando a extensão .schema ao nome do seu arquivo de dados de entrada. Por exemplo, se o URI do Amazon Simple Storage Service (Amazon S3) para seus dados de entrada for s3://my-bucket-name/data/input.csv, o URI do esquema será s3://my-bucket-name/data/input.csv.schema. O Amazon ML localiza automaticamente o arquivo de esquema que você fornecer, em vez de tentar deduzir o esquema de seus dados.

    Para usar um diretório de arquivos como entrada de dados para o Amazon ML, anexe a extensão .schema ao caminho do diretório. Por exemplo, se os arquivos de dados residem no local s3://examplebucket/path/to/data/, o URI de seu esquema será s3://examplebucket/path/to/data/.schema.

  2. Fornecer o esquema usando a API do Amazon ML.

    Se você pretender chamar a API do Amazon ML para criar a fonte de dados, poderá fazer upload do arquivo de esquema no Amazon S3 e fornecer o URI desse arquivo no atributo DataSchemaLocationS3 da API CreateDataSourceFromS3. Para obter mais informações, consulte CreateDataSourceFromS3.

    Você pode fornecer o esquema diretamente na carga de CreateDataSource em vez de primeiro salvá-lo no Amazon S3. Para fazer isso, coloque a string do esquema completa no atributo DataSchema das APIs CreateDataSourceFromS3, CreateDataSourceFromRDS ou CreateDataSourceFromRedshift. Para obter mais informações, consulte Referência da API do Amazon Machine Learning.