Referência de formato de receita - 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.

Referência de formato de receita

As receitas do Amazon ML contêm instruções para transformar seus dados como parte do processo de machine learning. As receitas são definidas com uma sintaxe do tipo JSON, mas há restrições adicionais além das restrições normais de JSON. As receitas têm as seguintes seções, que devem aparecer na ordem mostrada aqui:

  • Os grupos permitem o agrupamento de várias variáveis para facilitar a aplicação de transformações. Por exemplo, você pode criar um grupo de todas as variáveis relacionadas a partes de texto livre de uma página da web (título, corpo) e, em seguida, executar uma transformação em todas essas partes de uma só vez.

  • As atribuições permitem a criação de variáveis nomeadas intermediárias que podem ser reutilizadas no processamento.

  • As saídas definem quais variáveis serão usadas no processo de aprendizagem e quais transformações (se houver) se aplicam a essas variáveis.

Grupos

Você pode definir grupos de variáveis para transformar coletivamente todas as variáveis dentro dos grupos ou pode usar essas variáveis para Machine Learning sem transformá-las. Por padrão, o Amazon ML cria os seguintes grupos para você:

ALL_TEXT, ALL_NUMERIC, ALL_CATEGORICAL, ALL_BINARY – grupos específicos aos tipos baseados em variáveis definidas no esquema da fonte de dados.

nota

Você não pode criar um grupo com ALL_INPUTS.

Essas variáveis podem ser usadas na seção de saídas de sua receita sem serem definidas. Você também pode criar grupos personalizados adicionando ou subtraindo variáveis de grupos existentes, ou diretamente de uma coleção de variáveis. No exemplo a seguir, demonstramos todas as três abordagens e a sintaxe para a atribuição do agrupamento:

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

Os nomes de grupo precisam começar com um caractere alfabético e podem ter de 1 a 64 caracteres. Se o nome do grupo não começar com um caractere alfabético ou se ele contiver caracteres especiais (, ' " \t \r \n ( ) \), o nome precisará ser cotado para inclusão na receita.

Atribuições

Você pode atribuir uma ou mais transformações a uma variável intermediária para conveniência e legibilidade. Por exemplo, se você tiver uma variável de texto chamada email_subject e aplicar a transformação de minúscula a ela, poderá nomear a variável resultante email_subject_lowercase, facilitando o monitoramento dela em outro lugar na receita. As atribuições também podem ser encadeadas, permitindo que você aplique várias transformações em uma ordem específica. O exemplo a seguir mostra atribuições únicas e encadeadas na sintaxe de receita:

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

Os nomes de variáveis intermediárias precisam começar com um caractere alfabético e podem ter de 1 a 64 caracteres. Se o nome não começar com um caractere alfabético ou se ele contiver caracteres especiais (, ' " \t \r \n ( ) \), o nome precisará ser cotado para inclusão na receita.

Outputs

A seção de saídas controla quais variáveis de entrada serão usadas para o processo de aprendizagem e quais transformações aplicar a elas. Uma seção de saída vazia ou não existente é um erro, porque nenhum dado será passado para o processo de aprendizagem.

A seção de saídas mais simples inclui apenas o grupo predefinido ALL_INPUTS, instruindo o Amazon ML a usar todas as variáveis definidas na fonte de dados para aprendizado:

"outputs": [ "ALL_INPUTS" ]

A seção de saída também pode se referir a outros grupos predefinidos ao instruir o Amazon ML a usar todas as variáveis nesses grupos:

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

A seção de saída também pode se referir a grupos personalizados. No exemplo a seguir, apenas um dos grupos personalizados definidos na seção de atribuições de agrupamento no exemplo anterior será usado para Machine Learning. Todas as outras variáveis serão descartadas:

"outputs": [ "All_Categorical_plus_one_other" ]

A seção de saídas também pode se referir a atribuições de variáveis definidas na seção de atribuição:

"outputs": [ "email_subject_lowercase" ]

Além disso, variáveis de entrada ou transformações podem ser definidas diretamente na seção de saídas:

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

A saída precisa especificar explicitamente todas as variáveis e variáveis transformadas que devem estar disponíveis para o processo de aprendizagem. Digamos, por exemplo, que você incluiu na saída um produto cartesiano de var1 e var2. Se você quiser incluir as duas variáveis brutas var1 e var2 também, será necessário adicionar as variáveis brutas na seção de saída:

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

As saídas podem incluir comentários para legibilidade ao adicionar o texto do comentário junto com a variável:

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

Você pode combinar todas essas abordagens na seção de saídas.

nota

Não são permitidos comentários no console do Amazon ML ao adicionar uma receita.

Exemplo de receita completa

O exemplo a seguir se refere a vários processadores de dados incorporados que foram introduzidos em exemplos 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" ] }