¿Cuál es la forma estándar de ordenar contenidos en función de la función o consulta del usuario?

Descargo de responsabilidad: comencé a aprender ML el semestre pasado y he trabajado en un par de proyectos aquí y allá. Mi respuesta podría ser poco teórica, pero podría darle una ventaja útil.

Cálculo previo:
En primer lugar, hay pocos problemas asociados con el cálculo previo de las puntuaciones para cada elemento en cada categoría, como:
1) No conocemos un conjunto universal de palabras a partir del cual se formará la consulta del usuario. No podemos negar la posibilidad de tener que procesar palabras invisibles
2) Probar todas las permutaciones posibles es la fuerza bruta, exponencial y, en resumen, poco práctica. Parte de la permutación puede ser tan obsoleta que no valdrá la pena los esfuerzos de procesamiento y el tiempo de desarrollo.

Modelo de espacio vectorial:
Puede crear un modelo de espacio vectorial para los datos que tiene. Pocas dimensiones posibles pueden ser: Color, género del cliente, tipo de vestido, fabricante, material utilizado, etc. El costo del vestido y los parámetros relacionados con la fecha pueden ayudarlo a clasificar, pero no veo mucho beneficio en tener dimensiones para ellos.
Consulta Ex – “Blue Denim”
Puede considerar los puntos (entidades) que se encuentran en , etc. y descuidar todos los demás elementos. Este paso reduce su conjunto de resultados en muchos pliegues.
Más sobre espacio vectorial: modelo de espacio vectorial

Grupos basados ​​en categorías:
Extendiendo la idea anterior, puede formar grupos para elementos similares. Este paso lo puedes hacer de antemano. Y luego hacer un procesamiento más fino.
Hay muchos algoritmos de agrupamiento como K-means, Hierarchical, etc. Vea cuál le queda mejor.

Enfoque basado en etiquetas y N-gramos:
No sé qué tan sofisticados son sus datos, pero si tiene una descripción / etiquetas junto con cada elemento, este enfoque también se puede aplicar. Las etiquetas no serán más que atributos de la entidad. Incluso Google incorpora ranking basado en palabras clave, por lo que es ciertamente factible. Si tiene una descripción de texto sin formato, el vector N-gram para cada elemento puede calcularse previamente. Del mismo modo, calcule el vector de consulta y luego encuentre la mejor coincidencia.

Puntuación asimétrica:
Esta es una idea novedosa para manejar falsos positivos. El acuerdo consiste en establecer diferentes sanciones por errores cometidos para diferentes tipos de elementos. Ex. Mostrar una camisa en el 15 cuando el usuario pide una camiseta debería doler más que mostrar una camisa en el 97.

Haciendo uso de los datos del usuario:
Supongo que permitirá que los usuarios creen perfiles en su portal de comercio electrónico. Una manera fácil será solicitar detalles triviales como género y medidas, ya que no ingresarán estos detalles en la consulta de búsqueda inicial. Sin embargo, eso no significa que no podamos hacer uso de esa información 😀
Además, brinde una opción para cambiar esta configuración allí mismo en la página de resultados de búsqueda. Esto maneja la situación en la que los usuarios compran cosas para sus amigos y familiares y no para ellos mismos.

Misceláneo – Clasificación:
Conocemos una solución lineal para estadísticas de orden K (Fuente: algoritmo de selección)
Este algoritmo se adapta mejor a la necesidad, ya que simplemente queremos los principales elementos K y no queremos ordenar todos los datos.

¡Espero que esto ayude!

Como señaló las puntuaciones de cálculo previo para cada consulta posible, el par de elementos no se escalará.

Un enfoque alternativo comúnmente utilizado en los sistemas de recomendación es la factorización matricial. Esto implica proyectar la consulta y los elementos en un espacio común y luego calcular la distancia, utilizando alguna medida, entre la consulta y los elementos en ese espacio.

En general, la factorización matricial, que determina cómo se proyectan las consultas y los elementos en el espacio común, se calcula fuera de línea. La proyección de todos los elementos también se puede calcular previamente. Esto significa que en tiempo de ejecución todo lo que hay que hacer es proyectar la consulta en el espacio común y calcular la distancia a cada documento.

Puede que le interese alternar mínimos cuadrados y SVD como punto de partida. Mahout tiene una implementación a gran escala que se describe aquí http://www.slideshare.net/srowen… .

Otro enfoque muy prometedor es utilizar RBM / redes profundas que son muy buenas para extraer características no lineales de las consultas y los elementos. El hash semántico es un enfoque prometedor para hacer esto en tiempo constante. Ver aquí para más detalles http://www.utstat.toronto.edu/~r