Referencia de transformaciones de datos - 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 de transformaciones de datos

Transformación de n-gramas

La transformación de n-gramas toma una variable de texto como entrada y produce cadenas correspondientes al deslizamiento de un recuadro de n palabras (configurables por el usuario), con lo que se generan resultados en el proceso. Por ejemplo, tomemos como ejemplo la cadena de texto "I really enjoyed reading this book".

Al especificar la transformación de n-gramas con tamaño de recuadro = 1 simplemente le ofrece todas las palabras individuales en dicha cadena:

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

Al especificar la transformación de n-gramas con un tamaño de recuadro =2, obtiene todas las combinaciones de dos palabras y todas las combinaciones de una palabra:

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

Al especificar la transformación de n-gramas con un tamaño de recuadro = 3 añadiremos las combinaciones de tres palabras a esta lista, con lo que se obtiene lo siguiente:

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

Puede solicitar n-gramas con un tamaño de 2 a 10 palabras. Los n-gramas con tamaño 1 se generan de forma implícita para todas las entradas cuyo tipo se marca como texto en el esquema de datos, por lo que no tiene que solicitarlos. Por último, tenga en cuenta que los n-gramas se generan dividiendo los datos de entrada en espacios en blanco. Esto significa que, por ejemplo, los caracteres de puntuación se considerarán una parte de los tokens de palabras: al generar n-gramas con un recuadro de 2 para la cadena "rojo, verde, azul" se obtendrá {"rojo", "verde", "azul", "rojo, verde", "verde, azul"}. Puede utilizar el procesador de eliminación de puntuación (que se describe más adelante en este documento) para eliminar los símbolos de puntuación si no es lo que desea.

Para calcular los n-gramas de tamaño de recuadro 3 para la variable var1:

"ngram(var1, 3)"

Transformación de bigramas dispersos ortogonales (OSB)

La transformación de OSB está pensada para ayudar en el análisis de cadenas de texto y es una alternativa a la transformación de bi-gramas (n-gramas con tamaño de recuadro 2). Los OSB se generan deslizando el recuadro de tamaño n sobre el texto y obteniendo como resultado todos los pares de palabras que incluyan la primera palabra en el recuadro.

Para crear cada OSB, sus palabras constitutivas se unen mediante el carácter "_" (guion bajo) y cada token de caracteres que se ha saltado se indica añadiendo otro guion bajo en el OSB. De este modo, el OSB codifica no solo los tokens vistos dentro de un recuadro, sino también una indicación del número de tokens omitidos dentro de ese mismo recuadro.

Por poner un ejemplo, considere la cadena "The quick brown fox jumps over the lazy dog" y OSB de tamaño 4. Los seis recuadros de cuatro palabras y los dos últimos recuadros más cortos del final de la cadena se muestran en el siguiente ejemplo, así como los OSB generados a partir de cada uno:

Recuadro, {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}

Los bigramas dispersos ortogonales son una alternativa a los n-gramas que pueden funcionar mejor en algunas situaciones. Si el texto contiene campos de texto largo (10 palabras o más), pruebe a ver qué opción funciona mejor. Tenga en cuenta que el concepto de campo de texto largo puede variar en función de la situación. No obstante, se ha demostrado empíricamente que los OSB representan de forma única el texto en campos de texto grandes debido al símbolo especial de omisión (guion bajo).

Puede solicitar una tamaño de recuadro de 2 a 10 para transformaciones de OSB en variables de texto de entrada.

Para calcular OSB con tamaño de entrada 5 para la variable var1:

"osb(var1, 5)"

Transformación en minúsculas

El procesador de transformación de minúsculas convierte entradas de texto en minúsculas. Por ejemplo, con la entrada "The Quick Brown Fox Jumps Over the Lazy Dog", el procesador devolverá "the quick brown fox jumps over the lazy dog".

Para aplicar la transformación de minúscula a la variable var1:

"lowercase(var1)"

Eliminar la transformación de puntuación

Amazon ML divide implícitamente las entradas marcadas como texto en el esquema de datos en espacios en blanco. La puntuación en la cadena termina conectando tokens de palabras, o como tokens totalmente independientes, en función de los espacios en blanco alrededor de ella. Si no es lo que se desea, se puede utilizar la transformación de eliminación de puntuación para eliminar los símbolos de puntuación de las características generadas. Por ejemplo, en la cadena "Welcome to AML - please fasten your seat-belts!", se genera implícitamente el siguiente conjunto de tokens:

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

Al aplicar el procesador de eliminación de la puntuación a esta cadena se obtiene este conjunto:

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

Tenga en cuenta que solo se eliminan los símbolos de puntuación de prefijo y sufijo. Los símbolos de puntuación que aparecen en la mitad de un token, como por ejemplo, el guion en "seat-belts", no se eliminan.

Para aplicar la eliminación de la puntuación a la variable var1:

"no_punct(var1)"

Transformación de discretización en cuartiles

El proceso de discretización en cuartiles toma dos entradas, una variable numérica y un parámetro denominado número de contenedor y da como resultado una variable categórica. El objetivo consiste en descubrir la ausencia de linealidad en la distribución de la variable agrupando valores observados de manera conjunta.

En muchos casos, la relación entre una variable numérica y el destino no es lineal (el valor de la variable numérica no aumenta ni disminuye de forma monótona con el destino). En estos casos, puede ser útil guardar la característica numérica en una característica categórica que represente distintos rangos de la característica numérica. A continuación, cada valor de característica categórica (contenedor) pueden modelarse como si tuviera su propia relación lineal con el destino. Por ejemplo, supongamos que sabe que la característica numérica continua account_age no está linealmente correlacionada con la probabilidad de comprar un libro. Puede guardar la edad en características categóricas que podrían ser capaces de captar la relación con el destino con más precisión.

El procesador de discretización en cuartiles puede utilizarse para indicar a Amazon ML que establezca n contenedores de igual tamaño en función de la distribución de todos los valores de entrada de la variable de la edad y, a continuación, que sustituya cada número con un token de texto que contenga el contenedor. La cantidad óptima de contenedores para una variable numérica depende de las características de la variable y su relación en el destino y se determina mejor con la experimentación. Amazon ML sugiere el número óptimo de contenedores para una característica numérica en función de las estadísticas de datos en la receta sugerida.

Puede solicitar entre 5 y 1000 contenedores de cuartiles para que se calculen para cualquier variable de entrada numérica.

El siguiente ejemplo muestra cómo calcular y utilizar 50 contenedores en el lugar de la variable numérica var1:

"quantile_bin(var1, 50)"

Transformación de normalización

El transformador de normalización normaliza las variables numéricas para que tengan una media de cero y una varianza de uno. La normalización de variables numéricas puede ayudar en el proceso de aprendizaje si hay diferencias de rango muy grandes entre variables numéricas, porque las variables con la mayor magnitud podrían dominar el modelo de ML, independientemente de si la característica es o no informativa con respecto al destino.

Para aplicar esta transformación a variables numéricas var1, añada esto a la receta:

normalize(var1)

Este transformador también puede tomar un grupo de variables numéricas definidas por el usuario o el grupo predefinido de todas las variables numéricas (ALL_NUMERIC) como entrada:

normalize(ALL_NUMERIC)

Nota

No es obligatorio utilizar el procesador de normalización para las variables numéricas.

Transformación de producto cartesiana

La transformación cartesiana genera permutaciones de dos o más variables de texto o de entrada categórica. Esta transformación se utiliza cuando se sospecha una interacción entre variables. Por ejemplo, pensemos en el conjunto de datos de marketing bancario que se utiliza en Tutorial: Uso de Amazon ML para predecir respuestas a una oferta de marketing. Al usar este conjunto de datos, nos gustaría predecir si una persona responde positivamente a la promoción de un banco, en función de la información económica y demográfica. Podemos sospechar que el tipo de trabajo de la persona es algo importante (quizás existe una correlación entre trabajar en determinados campos y disponer de más dinero) y también lo es el máximo nivel de educación alcanzado. Puede que también tengamos una mayor intuición de que existe una señal sólida en la interacción de estas dos variables: por ejemplo, que la promoción es especialmente idónea para clientes que sean empresarios que han obtenido un título universitario.

La transformación de producto cartesiana toma variables categóricas o texto como entrada y produce nuevas características que captan la interacción entre estas variables de entrada. Concretamente, para cada ejemplo de formación, creará una combinación de características y las añadirá como una característica independiente. Por ejemplo, supongamos que nuestras filas de entradas simplificadas tienen este aspecto:

objetivo, formación, trabajo

0, título.universitario, técnico

0, educación.secundaria, servicios

1, título.universitario, administración

Si se especifica que la transformación cartesiana se debe aplicar a los campos de trabajo y educación de variables categóricas, la característica resultante educación_trabajo_interacción tendrá este aspecto:

objetivo, educación_trabajo_interacción

0, título.universitario_técnico

0, educación.secundaria_servicios

1, título.universitario_administración

La transformación cartesiana es incluso más potente cuando se trata de trabajar en secuencias de tokens, como ocurre cuando uno de sus argumentos es una variable de texto que se divide de forma implícita o explícita en tokens. Por ejemplo, tomemos el caso de la tarea de clasificar un libro como un libro de texto o no. De forma intuitiva, podríamos pensar que hay algo sobre el título del libro que nos indica que es un libro de texto (determinadas palabras pueden aparecer con mayor frecuencia en los títulos de los libros de texto) y también podríamos pensar que existe algo acerca de la tapa del libro que es predictivo (los libros de texto tienen más posibilidades de tener tapa dura), pero realmente es la combinación de algunas palabras en el título y la tapa lo que resulta más predictivo. Para ofrecer un ejemplo real, la siguiente tabla muestra los resultados de aplicar el procesador cartesiano a las variables de entrada de tapa y título:

Libro de texto Title Tapa Producto cartesiano de no_punct(Title) y tapa
1 Economics: Principles, Problems, Policies Tapa dura {"Economics_Hardcover", "Principles_Hardcover", "Problems_Hardcover", "Policies_Hardcover"}
0 The Invisible Heart: An Economics Romance Tapa blanda {"The_Softcover", "Invisible_Softcover", "Heart_Softcover", "An_Softcover", "Economics_Softcover", "Romance_Softcover"}
0 Fun With Problems Tapa blanda {"Fun_Softcover", "With_Softcover", "Problems_Softcover"}

El siguiente ejemplo muestra cómo aplicar el transformador cartesiano a var1 y var2:

cartesian(var1, var2)