¿Hay algún algoritmo de aprendizaje automático para el que pones una línea y devuelve la línea más cercana en un conjunto de datos?

Supongo que está solicitando datos numéricos, aunque lo que propondré podría adaptarse fácilmente a otras interfaces (por ejemplo, texto, imagen, audio). Esencialmente, podemos usar la forma euclidiana [matemática] \ ell ^ k [/ matemática] para definir una función de distancia [matemática] d _ {\ ell ^ k} [/ matemática] entre dos puntos, que se define para [matemática] m [/ math] -puntos dimensionales [math] x_1 [/ math] y [math] x_2 [/ math] as

[matemáticas] d _ {\ ell ^ k} (x_1, x_2) = (\ sum_ {j = 1} ^ {m} ({x_2} _j- {x_1} _j) ^ k) ^ {1 / k} \ tag *{}[/mates]

El valor más convencional para [matemática] k [/ matemática] es [matemática] k = 2 [/ matemática], por muchas razones, incluido que este valor permite que la función sea no negativa (indicando una distancia mínima métrica de 0) y diferenciable —Que el valor absoluto de la [math] \ ell ^ 1 [/ math] -norm no lo es. Por lo tanto, usando [math] k = 2 [/ math], obtenemos

[matemáticas] d _ {\ ell ^ 2} (x_1, x_2) = \ sqrt (\ sum_ {j = 1} ^ {m} ({x_2} _j- {x_1} _j) ^ 2) \ tag * {} [ /mates]

Usando esta función de distancia, podemos calcular esencialmente la distancia entre cada línea en su conjunto de datos y la línea de datos que proporcionó; recuerde que por ahora, estamos trabajando bajo el supuesto de que cualquier línea de datos puede expresarse como un vector [matemática ] \ mathbf {y} = {y_1, y_2,…, y_m} [/ math]. Después de calcular las distancias entre la línea proporcionada y cada línea de datos individual en el conjunto de datos, debe poder devolver la línea con el valor de distancia más bajo. La complejidad del tiempo de ejecución es [matemática] O (nm) [/ matemática], dadas n líneas en el conjunto de datos. La complejidad del espacio debe ser constante si almacena solo el índice y la distancia de la línea más cercana hasta ahora en su paso por el conjunto de datos.

Ahora, consideremos cómo traducir este ejemplo numérico a otros casos. Aplicar esto a las imágenes es en realidad lo más fácil, ya que solo podemos usar valores de píxeles (suponiendo imágenes de igual tamaño en todo el conjunto de datos) como las dimensiones individuales de nuestro análisis de proximidad. Para datos de imagen de dimensiones [math] m \ times p [/ math], cualquier imagen podría expresarse como un vector [math] \ mathbf {y} = {y_1, y_2, …, y_ {mp}} [/ math] . Por lo tanto, podríamos realizar fácilmente una búsqueda análoga como en el caso de los datos numéricos.

Consideremos también el caso de los datos textuales. Aquí, podríamos querer aplicar metodologías y consideraciones más profundas; Asumir que todas las líneas de texto en el conjunto de datos tienen el mismo tamaño es probable que sea inexacto y, lo que es más importante, las diferencias de nivel de caracteres son menos indicativas de similitud en el significado que la comprensión real de toda la línea de texto. Por ejemplo, las palabras “letra” y “mejor” son solo una letra, pero tienen un significado mucho más cercano a “misiva” y “mejorada” que entre sí. Se puede hacer el mismo punto a nivel de oración / párrafo, y por lo tanto, uno puede buscar técnicas en el procesamiento del lenguaje natural (PNL) para encontrar ideas de similitud.

Terminaré probando las posibilidades futuras. Un área de investigación en la que realmente estoy empezando a involucrarme es en las incrustaciones conjuntas: esencialmente, dada una frase textual o una imagen, ¿podemos crear una predicción / identificación con un elemento exactamente similar de la otra clase? Es decir, si se nos da la frase “patio de recreo”, ¿es posible entrenar modelos que, a través de una combinación de PNL, redes neuronales convolucionales (CNN) y otros métodos de ML, produzcan una imagen precisa de un patio de recreo? Es un área de investigación muy emocionante, y el éxito implicaría que se podría desarrollar fácilmente un algoritmo para devolver la imagen más cercana en un conjunto de datos cuando se le proporcione una frase textual (sin etiquetas u otros parámetros / entrenamiento que acompañen a las imágenes en el conjunto de datos).

El aprendizaje automático se trata de hacer predicciones estadísticas, lo que quiere decir con “más cercano” dictará los algoritmos que puede usar, pero en pocas palabras sí, ese es el objetivo principal del aprendizaje automático.

Sí, se llama el algoritmo de vecinos k más cercanos: Wikipedia. Si solo quieres un resultado, k = 1.

More Interesting

¿Cómo podemos encontrar de manera óptima la suma máxima de números de dos conjuntos (de números) que sea menor que un valor fijo, digamos N?

¿Cuál sería la mejor manera de integrar el algoritmo de aprendizaje para clasificar en Solr?

Cómo generar todas las permutaciones de fila de una matriz 2D dada de forma recursiva

¿Cuáles son los actos que se consideran hacer trampa durante un desafío de contratación en Interviewstreet?

¿Cómo pasan su tiempo exactamente los participantes en varios sitios de codificación de algoritmos?

¿Cuáles son algunos de los algoritmos de aprendizaje automático sin supervisión utilizados para la detección de spam?

¿Dónde encuentro los mejores recursos para aprender algoritmos y estructuras de datos?

¿Mattermark está utilizando datos para entrenar algoritmos de aprendizaje automático y modelos predictivos que pueden buscar / identificar nuevas empresas potenciales en una etapa temprana que tienen el potencial de interrumpir la industria?

¿Qué es un árbol rojo-negro?

¿Dónde puedo encontrar una biblioteca de estructura de datos de gráficos dirigida, implementada en Javascript?

¿Cuáles son algunos ejemplos de problemas para los cuales una cola prioritaria resulta útil?

¿Cuál es el mejor algoritmo para encontrar el camino con dos limitaciones?

Si sabemos cómo funciona un algoritmo de hash de contraseña en particular, ¿por qué no podemos simplemente crear una contraseña que genere el mismo hash?

¿Qué tan difícil fue crear e implementar el algoritmo de clasificación de página inicial de los primeros Google?

¿Cuáles son los buenos canales en YouTube para aprender algoritmos y estructuras de datos para la preparación de Google Code Jam o Facebook Hacker Cup?