Referência a transformações de dados - 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 a transformações de dados

Transformação de n-gram

A transformação de n-gram assume uma variável de texto como entrada e produz strings correspondentes ao deslizamento de uma janela de n palavras (configuráveis pelo usuário), gerando saídas no processo. Por exemplo, considere a string de texto "Eu gosto muito deste livro".

A especificação da transformação de n-gram com tamanho de janela = 1 retorna todas as palavras individuais dessa string:

{"I", "really", "enjoyed", "reading", "this", "book"}

A especificação da transformação de n-gram com tamanho de janela = 2 retorna todas as combinações de duas palavras, bem como as combinações de uma palavra:

{"I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}

A especificação da transformação de n-gram com tamanho de janela = 3 adicionará combinações de três palavras a essa lista, gerando o seguinte:

{"I really enjoyed", "really enjoyed reading", "enjoyed reading this", "reading this book", "I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}

Você pode solicitar n-grams com um tamanho que varia de 2 a 10 palavras. N-grams com tamanho 1 são gerados implicitamente para todas as entradas cujo tipo seja marcado como texto no esquema de dados; portanto, você não precisa solicitá-los. Por fim, lembre-se de que n-grams são gerados com a quebra dos dados de entrada em caracteres de espaço em branco. Isso significa que, por exemplo, os caracteres de pontuação serão considerados parte dos tokens de palavra: a geração de n-grams com uma janela igual a 2 para a string "vermelho, verde, azul" gerará {"vermelho", "verde", "azul", "vermelho, verde", "verde, azul"}. Você pode usar o processador do removedor de pontuação (descrito posteriormente neste documento) para remover os símbolos de pontuação, caso isso não seja o que você deseja.

Para calcular n-grams do tamanho da janela 3 para a variável var1:

"ngram(var1, 3)"

Transformação de Orthogonal Sparse Bigram (OSB)

A transformação de OSB foi criada para auxiliar na análise de strings de texto e é uma alternativa para a transformação de bigram (n-gram com tamanho de janela 2). Os OSBs são gerados por meio do deslizamento da janela de tamanho n sobre o texto e da geração de cada par de palavras que inclui a primeira palavra da janela.

Para criar cada OSB, suas palavras constituintes são unidas pelo caractere "_" (sublinhado), e cada token ignorado é indicado pela adição de outro sublinhado ao OSB. Desse modo, o OSB codifica não apenas os tokens exibidos em uma janela, mas também uma indicação do número de tokens ignorados na mesma janela.

Para ilustrar, considere a string "The quick brown fox jumps over the lazy dog" e os OSBs de tamanho 4. As seis janelas de quatro palavras e as últimas duas janelas mais curtas no final da string são mostradas no exemplo a seguir, bem como os OSBs gerados a partir de cada uma:

Window, {OSBs generated}

"The quick brown fox", {The_quick, The__brown, The___fox} "quick brown fox jumps", {quick_brown, quick__fox, quick___jumps} "brown fox jumps over", {brown_fox, brown__jumps, brown___over} "fox jumps over the", {fox_jumps, fox__over, fox___the} "jumps over the lazy", {jumps_over, jumps__the, jumps___lazy} "over the lazy dog", {over_the, over__lazy, over___dog} "the lazy dog", {the_lazy, the__dog} "lazy dog", {lazy_dog}

Os Orthogonal sparse bigrams são uma alternativa aos n-grams que podem funcionar melhor em algumas situações. Se seus dados tiverem campos de texto grandes (10 ou mais palavras), experimente para ver o que funciona melhor. Observe que o que constitui um campo de texto grande pode variar de acordo com a situação. No entanto, com campos de texto maiores, os OSBs mostraram empiricamente que representam exclusivamente o texto devido ao símbolo especial de omissão (o sublinhado).

Você pode solicitar um tamanho de janela de 2 a 10 para transformações de OSB em variáveis de texto de entrada.

Para calcular OSBs com o tamanho de janela 5 para a variável var1:

"osb(var1, 5)"

Transformação de minúscula

O processador de transformação de minúsculas converte entradas de texto em minúsculas. Por exemplo, considerando a entrada "The Quick Brown Fox Jumps Over the Lazy Dog", o processador gerará a saída the quick brown fox jumps over the lazy dog".

Para aplicar a transformação de minúscula na variável var1:

"lowercase(var1)"

Transformação de remoção de pontuação

O Amazon ML divide implicitamente entradas marcadas como texto no esquema de dados no espaço em branco. A pontuação na string acaba resultando em tokens de palavra adjacentes ou tokens totalmente separados, dependendo do espaço em branco ao redor deles. Se isso não for desejável, a transformação de remoção de pontuação poderá ser usada para remover símbolos de pontuação dos recursos gerados. Por exemplo, considerando a string "Welcome to AML - please fasten your seat-belts!", o seguinte conjunto de tokens é gerado implicitamente:

{"Welcome", "to", "Amazon", "ML", "-", "please", "fasten", "your", "seat-belts!"}

Aplicando o processador do removedor de pontuação a esses resultados de string neste conjunto:

{"Welcome", "to", "Amazon", "ML", "please", "fasten", "your", "seat-belts"}

Observe que apenas os sinais de pontuação de prefixo e sufixo são removidos. Os sinais de pontuação que aparecem no meio de um token, por exemplo, o hífen de "seat-belts", não são removidos.

Para aplicar a remoção de pontuação à variável var1:

"no_punct(var1)"

Transformação de agrupamento de quartil

O processador de agrupamento de quartil usa duas entradas, uma variável numérica e um parâmetro chamado número de agrupamento, e gera uma variável categórica. O objetivo é descobrir a não linearidade na distribuição da variável, agrupando os valores observados.

Em muitos casos, o relacionamento entre uma variável numérica e o destino não é linear (o valor da variável numérica não aumenta nem diminui monotonicamente com o destino). Nesses casos, pode ser útil armazenar o recurso numérico em um recurso categórico que represente diferentes intervalos do recurso numérico. Assim, cada valor de recurso categórico (agrupamento) pode ser modelado como tendo relacionamento linear próprio com o destino. Por exemplo, digamos que você saiba que o recurso numérico contínuo account_age não está linearmente correlacionado com a probabilidade de compra de um livro. Você pode agrupar age em recursos categóricos que podem capturar o relacionamento com o destino de modo mais preciso.

O processador de agrupamento de quartil pode ser usado para instruir o Amazon ML a estabelecer n agrupamentos de tamanhos iguais com base na distribuição de todos os valores de entrada da variável de idade e, em seguida, substituir cada número por um token de texto que contém o agrupamento. O número ideal de agrupamentos de uma variável numérica depende das características da variável e de seu relacionamento com o destino; a melhor formar de determinar isso é por meio de experimentação. O Amazon ML sugere o número ideal de agrupamento para um recurso numérico com base nas estatísticas de dados da Receita sugerida.

Você pode solicitar entre 5 e 1.000 agrupamentos de quartil a serem calculados para qualquer variável de entrada numérica.

O exemplo a seguir mostra como calcular e usar 50 compartimentos em vez da variável numérica var1:

"quantile_bin(var1, 50)"

Transformação de normalização

O transformador de normalização normaliza variáveis numéricas para que tenham uma média zero e a variação um. A normalização de variáveis numéricas poderá ajudar o processo de aprendizagem se houver diferenças de intervalo muito grandes entre as variáveis numéricas, pois as variáveis com maior magnitude podem dominar o modelo de ML, independentemente de o recurso ser informativo ou não em relação ao destino.

Para aplicar essa transformação à variável numérica var1, adicione este conteúdo à receita:

normalize(var1)

Este transformador também pode usar um grupo de variáveis numéricas definido pelo usuário ou o grupo predefinido de todas as variáveis numéricas (ALL_NUMERIC) como entrada:

normalize(ALL_NUMERIC)

Observação

Não é obrigatório usar o processador de normalização em variáveis numéricas.

Transformação do produto cartesiano

A transformação de cartesiano gera permutações de duas ou mais variáveis de entrada categórica ou de texto. Essa transformação é usada quando existe a suspeita de uma interação entre variáveis. Por exemplo, considere o conjunto de dados de marketing bancário usado no "Tutorial: Usar o Amazon ML para prever respostas a uma oferta de marketing". Usando esse conjunto de dados, gostaríamos de prever se uma pessoa responderia positivamente a uma promoção bancária com base nas informações demográficas e econômicas. Poderíamos suspeitar que o tipo de trabalho da pessoa tenha alguma importância (talvez haja uma correlação entre ser empregado em determinados campos e ter o dinheiro disponível) e que o mais alto nível de instrução atingido também seja importante. Poderíamos ter também uma maior intuição de que há um sinal forte na interação dessas duas variáveis; por exemplo, que a promoção é particularmente ideal para os clientes que são empreendedores e se graduaram em uma universidade.

A transformação de produto cartesiano usa texto ou variáveis categóricas transformação como entrada e produz novos recursos que capturam a interação entre essas variáveis de entrada. Especificamente, para cada exemplo de treinamento, ele criará uma combinação de recursos e os adicionará como um recurso independente. Por exemplo, digamos que nossas linhas de entrada simplificadas tenham esta aparência:

target, education, job

0, university.degree, technician

0, high.school, services

1, university.degree, admin

Se especificarmos que a transformação de cartesiano será aplicada aos campos education e job de variáveis categóricas, o recurso resultante education_job_interaction terá esta aparência:

target, education_job_interaction

0, university.degree_technician

0, high.school_services

1, university.degree_admin

A transformação de cartesiano ainda é mais eficiente quando trabalha em sequências de tokens, como acontece quando um de seus argumentos é uma variável de texto implicitamente ou explicitamente dividida em tokens. Por exemplo, considere a tarefa de classificação de um livro como livro didático ou não. Intuitivamente, podemos pensar que há algo no título do livro que pode nos informar que se trata de um livro didático (determinadas palavras podem ocorrer com mais frequência em títulos de livros didáticos) e também que há algo na encadernação do livro que seja preditivo (os livros didáticos provavelmente têm capa dura), mas é, de fato, a combinação de algumas palavras no título e na encadernação que são mais previsíveis. Para obter um exemplo real, a tabela a seguir mostra os resultados da aplicação do processador de cartesiano às variáveis de entrada binding e title:

Textbook Cargo Binding Produto cartesiano de no_punct(Title) e Binding
1 Economics: Principles, Problems, Policies Hardcover {"Economics_Hardcover", "Principles_Hardcover", "Problems_Hardcover", "Policies_Hardcover"}
0 The Invisible Heart: An Economics Romance Softcover {"The_Softcover", "Invisible_Softcover", "Heart_Softcover", "An_Softcover", "Economics_Softcover", "Romance_Softcover"}
0 Fun With Problems Softcover {"Fun_Softcover", "With_Softcover", "Problems_Softcover"}

O exemplo a seguir mostra como aplicar o transformador de cartesiano a var1 e var2:

cartesian(var1, var2)