¿Puedes explicar el hashing de características de una manera fácil de entender?

Me gustó la respuesta de Luis, aunque me gustaría enfatizar cuál es el beneficio del truco de hash y cuáles son sus alternativas.

La mayoría de los algoritmos de ML requieren que represente los datos de entrada como una matriz de números reales. El proceso de conversión de datos en bruto a una matriz de números reales se llama ingeniería de características, y el truco de hashing es una técnica de ingeniería de características.

Veamos cuáles son las técnicas estándar de ingeniería de características para tratar con datos categóricos y datos de texto.

La variable categórica es una variable que puede tomar un número finito de valores. Ejemplo: ID de anuncio, ID de usuario, categoría de anuncio. El enfoque habitual para representar esta variable como entrada para el algoritmo ML es utilizar una codificación única: crea N variables binarias donde N es un número de posibles valores de variable categórica.

La forma más sencilla de representar datos de texto como entrada al algoritmo ML es usar la variación del modelo de bolsa de palabras: crea N variables binarias donde N es una cantidad de palabras en el lenguaje y marca todas las variables correspondientes a cada palabra que contiene un ejemplo de entrenamiento para ser verdad.

Puede ver que estos dos enfoques son muy similares entre sí y ambos crean una matriz de entrada muy dispersa y muy dimensional.

Entonces, el truco de hash, como lo explicó Luis, simplemente simula estos 2 enfoques y funciona como una tabla de hash.

Y si sabe cómo funciona la tabla hash, es posible que se pregunte sobre la colisión. Pero la investigación y la práctica han demostrado que la colisión no perjudica demasiado la precisión (o, a veces, no la perjudica en absoluto). De todos modos, esta es una desventaja del truco de hashing. Otra desventaja es que pierde la capacidad de interpretación.

El truco de hash tiene 3 grandes ventajas para el modelo de codificación / conjunto de palabras de uno en caliente:

  • Es mucho más simple de codificar.
  • No requiere ningún diccionario para prepararse. Centrémonos un poco en esto. Por lo general, en el sistema real, la fase del tren se separa de la fase de aplicación. Pero para mapear un valor de variable categórica a una variable codificada en binario, primero debe encontrar todos los valores de esta variable categórica, también debe usar el mismo mapeo en el tren y aplicar la fase, por lo que debe pasar estos mapeos de alguna manera.
  • Es amigable con el aprendizaje en línea, donde puedes entrenar en un conjunto de datos que no cabe en la memoria porque solo necesitas ver cada ejemplo una vez. La codificación única no funcionará bien con el aprendizaje en línea porque para preparar los diccionarios primero debe ver el conjunto de datos completo. Ver el volador wabbit.

Espero que ayude.

La idea es muy simple: convertir datos en un vector de características. Cuando esto se hace usando hashing, llamamos al método “hashing de características” o “el truco de hashing”.

Explicaré cómo funciona con un ejemplo simple usando texto como datos.

Digamos que nuestro texto es:

“el veloz zorro marrón”

Nos gustaría representar esto como un vector. Lo primero que necesitamos es fijar la longitud del vector, el número de dimensiones que vamos a usar, digamos que nos gustaría usar 5 dimensiones.

Una vez que arreglemos el número de dimensiones, necesitamos una función hash que tomará una cadena y devolverá un número entre 0 y n-1, en nuestro caso entre 0 y 4. Se puede usar cualquier buena función hash y solo usa h (cadena ) mod n para que devuelva un número entre 0 y n-1.

Inventaré los resultados para cada palabra en nuestro texto:

h (el) mod 5 = 0
h (rápido) mod 5 = 1
h (marrón) mod 5 = 1
h (zorro) mod 5 = 3

Una vez que tengamos esto, simplemente podemos construir nuestro vector como:

(1,2,0,1,0)

Tenga en cuenta que solo agregamos 1 a la enésima dimensión del vector cada vez que nuestra función hash devuelve esa dimensión para una palabra en el texto.

Y ese es el hashing de características o “el truco de hashing”. Puedes saltarte el resto, pero no puedo resistirme a dejar algunos consejos adicionales:

* En general, el número de dimensiones que usamos para nuestros vectores puede ser MUY grande, por ejemplo [math] 2 ^ {25} [/ math] o similar.

* Los vectores serán muy escasos, así que guárdelos en un formato que ahorre espacio, por ejemplo, un vector para los valores que no son cero y otro vector para el número de columna para cada uno de esos valores.

* Es posible usar una segunda función hash que devuelve +1 o -1 para decidir si sumas o restas del vector. Esto minimizará las colisiones haciendo que una dimensión del vector tome un valor muy grande.

“El secreto no impresiona a nadie. El truco para el que lo usas es todo”.

Luis.

More Interesting

¿Por qué una gran proporción de los nuevos estudiantes de CS optan por especializarse en áreas más nuevas como el aprendizaje automático, la informática social y la informática móvil en lugar de las más antiguas como los sistemas, la arquitectura y las redes?

¿Por qué se requieren conocimientos de aprendizaje automático para un periodista de datos? ¿Por qué la exploración y visualización de datos por sí sola no es suficiente para el periodismo de datos?

¿Qué funciona mejor, un ANN con miles de unidades por capa pero solo docenas de capas o uno con docenas de unidades por capa, pero cientos de capas?

¿Qué son las unidades recurrentes cerradas y cómo se pueden implementar con TensorFlow?

¿Es inútil seguir el aprendizaje automático como segundo año?

¿Qué tan similares son los problemas en los diversos campos del análisis de datos (aprendizaje automático, estadísticas, procesamiento de señales, optimización, teoría de la información, etc.)?

¿Qué biblioteca de PNL cubre la mayoría de los idiomas para un proyecto de análisis de sentimientos?

Cómo configurar datos de entrenamiento para una red neuronal para generar valores de joystick basados ​​en una entrada de imagen

¿Qué es una explicación intuitiva de los modelos de proceso gaussianos?

¿Cuál es la motivación de Google para el código abierto del modelo de TensorFlow para problemas ML / NLP como el resumen automático de texto?

¿Qué algoritmos de aprendizaje automático para la clasificación admiten el aprendizaje en línea?

¿Cuál es el significado de muchas sinapsis entre dos neuronas en la red neuronal?

¿Cómo se usa el aprendizaje automático en la ciencia de los materiales?

¿Cómo debo elegir entre convertirme en un desarrollador de JavaScript de pila completa o un ingeniero de aprendizaje automático?

¿Es una variable significativa en un modelo de regresión lineal?