Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Codificación de características en Neptune ML
Los valores de las propiedades están disponibles en diferentes formatos y tipos de datos. Para lograr un buen rendimiento en el machine learning, es fundamental convertir esos valores en codificaciones numéricas conocidas como características.
Neptune ML realiza la extracción y codificación de características como parte de los pasos de procesamiento y exportación de datos mediante técnicas de codificación de características que se describen aquí.
nota
Si tiene previsto implementar su propia codificación de características en una implementación de modelo personalizado, puede deshabilitar la codificación automática de características en la etapa de preprocesamiento de datos. Para ello, seleccione none
como tipo de codificación de características. No se produce ninguna codificación de características en esa propiedad de nodo o borde y, en su lugar, los valores sin procesar de las propiedades se analizan y guardan en un diccionario. El preprocesamiento de datos sigue creando el gráfico DGL a partir del conjunto de datos exportado, pero este gráfico creado no cuanta con las características preprocesadas para el entrenamiento.
Debe utilizar esta opción únicamente si tiene previsto realizar su propia codificación personalizada de características como parte del entrenamiento con modelos personalizados. Para obtener más información, consulte Modelos personalizados de Neptune ML.
Características categóricas de Neptune ML
Una propiedad que puede tomar uno o varios valores distintos de una lista fija de valores posibles es una característica categórica. En Neptune ML, las características categóricas se codifican mediante la codificación one-hot
Food Veg. Meat Fruit Encoding --------- ---- ---- ----- -------- Apple 0 0 1 001 Chicken 0 1 0 010 Broccoli 1 0 0 100
nota
El número máximo de categorías de cualquier característica categórica es de 100. Si una propiedad tiene más de 100 categorías de valor, solo las 99 más comunes se ubican en categorías distintas y el resto se coloca en una categoría especial denominada OTHER
.
Características numéricas de Neptune ML
Cualquier propiedad cuyos valores sean números reales se puede codificar como una característica numérica en Neptune ML. Las características numéricas se codifican mediante números de coma flotante.
Puede especificar un método de normalización de datos para usarlo al codificar características numéricas, como, por ejemplo: "norm": "
. Se admiten las siguientes técnicas de normalización:normalization technique
"
-
“none”: no normaliza los valores numéricos durante la codificación.
-
“min-max”: normaliza cada valor restándole el valor mínimo y dividiéndolo por la diferencia entre el valor máximo y el mínimo.
-
“standard”: normaliza cada valor dividiéndolo entre la suma de todos los valores.
Características numéricas por bucket de Neptune ML
En lugar de representar una propiedad numérica con números sin procesar, puede condensar los valores numéricos en categorías. Por ejemplo, puede dividir las edades de las personas en categorías, como niños (0-20), adultos jóvenes (20-40), personas de mediana edad (40-60) y personas mayores (a partir de los 60 años). Al usar estos buckets numéricos, estaría transformando una propiedad numérica en una especie de característica categórica.
En Neptune ML, para que una propiedad numérica se codifique como una característica numérica por bucket, debe proporcionar dos cosas:
Un rango numérico con el formato
"range": [
, dondea
,b
]a
yb
son números enteros.Un recuento de buckets con el formato
"bucket_cnt":
, dondec
c
es el número de buckets, también un número entero.
Neptune ML calcula el tamaño de cada bucket como ( b - a ) / c
y codifica cada valor numérico como el número del bucket en el que se encuentre. Cualquier valor inferior a a
se considera que pertenece al primer bucket y cualquier valor superior a b
se considera que pertenece al último bucket.
Si lo desea, también puede hacer que los valores numéricos se clasifiquen en más de un bucket. Para ello, debe especificar un tamaño de ventana deslizante, como, por ejemplo: "slide_window_size":
, donde s
s
es un número. A continuación, Neptune ML transforma cada valor numérico v
de la propiedad en un rango de v - s/2
a v + s/2
y asigna el valor v
a cada bucket que cubre el rango.
Por último, si lo desea, también puede proporcionar una forma de rellenar los valores que faltan para las características numéricas y las características numéricas por buckets. Para ello, utilice
"imputer": "
, donde la técnica de imputación es una de las siguientes: imputation technique
""mean"
, "median"
o "most-frequent"
. Si no se especifica un parámetro de imputación, esto puede provocar que el procesamiento se detenga.
Codificación de características de texto en Neptune ML
En el caso de textos de formato libre, Neptune ML puede utilizar varios modelos diferentes para convertir la secuencia de tokens de una cadena de valor de propiedad en un vector de valor real de tamaño fijo:
text_fasttext: utiliza la codificación fastText
. Esta es la codificación recomendada para las características que utilizan solo uno de los cinco idiomas que admite FastText. text_sbert: utiliza los modelos de codificación Sentence BERT
(SBERT). Esta es la codificación recomendada para el texto que no admite text_fasttext
.text_word2vec: utiliza los algoritmos Word2Vec
publicados originalmente por Google para codificar texto. Word2Vec solo admite inglés. text_tfidf: utiliza un vectorizador de frecuencia de términos - frecuencia inversa de documentos
(TF-IDF) para codificar texto. La codificación TF-IDF admite características estadísticas que las demás codificaciones no admiten.
Codificación fastText de valores de propiedades de texto en Neptune ML
Neptune ML puede utilizar los modelos de fastText
en
(inglés)zh
(chino)hi
(hindi)es
(español)fr
(francés)
Tenga en cuenta que fastText no puede procesar frases que incluyan palabras en más de un idioma.
Si lo desea, el método text_fasttext
puede utilizar un campo max_length
que especifique el número máximo de tokens del valor de una propiedad de texto que se codificará, tras el cual se truncará la cadena. Esto puede mejorar el rendimiento cuando los valores de las propiedades del texto incluyen cadenas largas, ya que si no se especifica max_length
, fastText codifica todos los tokens independientemente de la longitud de la cadena.
En este ejemplo se especifica que los títulos de películas en francés se codifican mediante fastText:
{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_fasttext"], "language": "fr", "max_length": 1024 } ] }
Codificación de frases BERT (SBERT) de características de texto en Neptune ML
Neptune ML puede convertir la secuencia de tokens de un valor de propiedad de cadena en un vector de valor real de tamaño fijo mediante los modelos Sentence BERTtext_sbert128
, que es el predeterminado si solo se especifica text_sbert
y text_sbert512
. La diferencia entre ambos es la longitud máxima de una cadena de valores de propiedad de texto que se codifica. La codificación text_sbert128
trunca las cadenas de texto después de codificar 128 tokens, mientras que text_sbert512
trunca las cadenas de texto después de codificar 512 tokens. Como resultado, text_sbert512
requiere más tiempo de procesamiento que text_sbert128
. Ambos métodos son más lentos que text_fasttext
.
La codificación SBERT es multilingüe, por lo que no es necesario especificar un idioma para el texto del valor de propiedad que se va a codificar. SBERT admite muchos idiomas y puede codificar una frase que incluya más de un idioma. Si va a codificar valores de propiedades que incluyan texto en uno o varios idiomas que fastText no admite, el método de codificación recomendado es SBERT.
En el siguiente ejemplo se especifica que los títulos de las películas se codifican como SBERT hasta un máximo de 128 tokens:
{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_sbert128"] } ] }
Codificación Word2Vec de características de texto en Neptune ML
Neptune ML puede codificar valores de propiedades de cadenas como una característica de Word2Vec (Googletext_word2vec
codifica los tokens de una cadena como un vector denso mediante uno de los modelos entrenados de spaCy
En el siguiente ejemplo se especifica que los títulos de las películas se codifican con Word2Vec:
{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_word2vec"], "language": "en_core_web_lg" } ] }
Tenga en cuenta que el campo de idioma es opcional, ya que el modelo en_core_web_lg
en inglés es el único que admite Neptune.
Codificación TF-IDF de características de texto en Neptune ML
Neptune ML puede codificar valores de propiedades de texto como características text_tfidf
. Esta codificación convierte la secuencia de palabras del texto en un vector numérico mediante un vectorizador de frecuencia de términos - frecuencia inversa de documentos
TF-IDF
Por ejemplo, si la palabra “kiss” aparece dos veces en el título de una película (por ejemplo, “kiss kiss bang bang”) y “kiss” aparece en el título de cuatro películas en total, el valor TF-IDF de “kiss” en el título “kiss kiss bang bang” sería 2 / 4
.
El vector que se crea inicialmente tiene dimensiones d, donde d es el número de términos únicos en todos los valores de propiedad de ese tipo. La operación de reducción de dimensionalidad utiliza una proyección dispersa aleatoria para reducir ese número a un máximo de 100. A continuación, se genera el vocabulario de un gráfico mediante la combinación de todas sus características text_tfidf
.
El vectorizador de TF-IDF se puede controlar de varias maneras:
-
max_features
: con el parámetromax_features
, puede limitar el número de términos de las característicastext_tfidf
a los más comunes. Por ejemplo, si se establecemax_features
en 100, solo se incluyen los 100 términos más utilizados. El valor predeterminado demax_features
si no se establece de forma explícita es 5000. -
min_df
: con el parámetromin_df
, puede limitar el número de términos de las característicastext_tfidf
a aquellos que tengan al menos una determinada frecuencia de documentos. Por ejemplo, si se establecemin_df
en 5, solo se utilizarán los términos que aparezcan en al menos 5 valores de propiedad diferentes. El valor predeterminado demin_df
si no se establece de forma explícita es 2. -
ngram_range
: el parámetrongram_range
determina qué combinaciones de palabras se consideran términos. Por ejemplo, singram_range
se establece en[2, 4]
, los seis términos siguientes aparecerían en el título “kiss kiss bang bang”:Términos de dos palabras: “kiss kiss”, “kiss bang” y “bang bang”.
Términos de tres palabras: “kiss kiss bang” y “kiss bang bang”.
Términos de cuatro palabras: “kiss kiss bang bang”.
El ajuste predeterminado de
ngram_range
es[1, 1]
.
Características de fecha y hora de Neptune ML
Neptune ML puede convertir partes de los valores de las propiedades datetime
en características categóricas mediante la codificación de matrices one-hotdatetime_parts
para especificar una o varias de las siguientes partes para codificar: ["year", "month", "weekday", "hour"]
. Si no se configura datetime_parts
, las cuatro partes se codificarán de forma predeterminada.
Por ejemplo, si el rango de valores de fecha y hora abarca los años 2010 a 2012, las cuatro partes de la entrada de fecha y hora 2011-04-22 01:16:34
son las siguientes:
-
year:
[0, 1, 0]
.Como solo hay tres años en el intervalo (2010, 2011 y 2012), la matriz one-hot tiene tres entradas, una para cada año.
-
month:
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
.En este caso, la matriz one-hot tiene una entrada para cada mes del año.
-
weekday:
[0, 0, 0, 0, 1, 0, 0]
.La norma ISO 8601 establece que el lunes es el primer día de la semana y, dado que el 22 de abril de 2011 era viernes, la correspondiente matriz one-hot de día de la semana ocupa la quinta posición.
-
hour:
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
.La hora 1 de la madrugada se establece en una matriz one-hot de 24 miembros.
El día del mes, el minuto y el segundo no están codificados de forma categórica.
Si el rango total de datetime
en cuestión solo incluye fechas de un año, no se codifica ninguna matriz de year
.
Puede especificar una estrategia de imputación para rellenar los valores de datetime
que faltan, mediante el parámetro imputer
y una de las estrategias disponibles para las características numéricas.
Codificación automática de características en Neptune ML
En lugar de especificar manualmente los métodos de codificación de características que se van a utilizar para las propiedades del gráfico, puede configurar auto
como un método de codificación de características. A continuación, Neptune ML intenta inferir la mejor codificación de características para cada propiedad en función del tipo de datos subyacente.
Estas son algunas de las heurísticas que Neptune ML utiliza para seleccionar las codificaciones de características adecuadas:
Si la propiedad solo tiene valores numéricos y se puede convertir en tipos de datos numéricos, Neptune ML suele codificarla como un valor numérico. Sin embargo, si el número de valores únicos de la propiedad es inferior al 10 % del número total de valores y la cardinalidad de esos valores únicos es inferior a 100, Neptune ML utiliza una codificación categórica.
Si los valores de las propiedades se pueden convertir en un tipo
datetime
, Neptune ML los codificará como una característicadatetime
.Si los valores de las propiedades se pueden convertir en valores booleanos (1/0 o True/False), Neptune ML utilizará la codificación por categorías.
Si la propiedad es una cadena con más del 10 % de sus valores únicos y el número medio de tokens por valor es mayor o igual a 3, Neptune ML inferirá que el tipo de propiedad sea texto y detectará automáticamente el idioma que se está utilizando. Si el idioma detectado es uno de los que admite fastText, es decir, inglés, chino, hindi, español y francés, Neptune ML utilizará
text_fasttext
para codificar el texto. De lo contrario, Neptune ML utilizará text_sbert.Si la propiedad es una cadena no clasificada como característica de texto, Neptune ML presupone que se trata de una característica categórica y utiliza la codificación por categorías.
Si cada nodo tiene su propio valor único para una propiedad que se infiere que es una característica de categoría, Neptune ML eliminará la propiedad del gráfico de entrenamiento porque probablemente sea un ID que no sería informativo para el entrenamiento.
-
Si se sabe que la propiedad incluye separadores válidos de Neptune, como puntos y comas (“;”), Neptune ML solo puede tratar la propiedad como
MultiNumerical
oMultiCategorical
.Neptune ML primero intenta codificar los valores como características numéricas. Si esto se ejecuta correctamente, Neptune ML utilizará la codificación numérica para crear características vectoriales numéricas.
De lo contrario, Neptune ML codificará los valores como multicategóricos.
Si Neptune ML no puede inferir el tipo de datos de los valores de una propiedad, Neptune ML eliminará la propiedad del gráfico de entrenamiento.