2009-04-27 31 views
18

¿Qué es un buen algoritmo para sugerir cosas que a alguien le gustaría según sus elecciones anteriores? (Por ejemplo, como popularizado por Amazon para sugerir libros, y se utiliza en servicios como iRate radio o Yape donde se obtiene sugerencias de artículos valoraciones)Algoritmo para sugerir productos

Respuesta

12

simple y directo (del carrito de orden):

Mantenga una lista de las transacciones en términos de qué artículos se ordenaron juntos. Por ejemplo, cuando alguien compra una videocámara en Amazon, también compra medios para grabar al mismo tiempo.

Al decidir qué se "sugiere" en una página de producto determinada, observe todos los pedidos donde se ordenó, cuente todos los demás artículos comprados al mismo tiempo y luego muestre los 5 artículos principales que fueron más frecuentes comprado al mismo tiempo.

pueden ampliar a partir de ahí basado no sólo en las órdenes, pero lo que la gente buscaron en la secuencia en la página web, etc.

En términos de un sistema de clasificación (es decir, grados de la película):

Se vuelve más difícil cuando ingresas calificaciones. En lugar de una canasta discreta de artículos que uno ha comprado, tiene un historial de clientes de clasificaciones de artículos.

En ese momento está buscando extracción de datos, y la complejidad es tremenda.

Un algoritmo simple, sin embargo, no está lejos de lo anterior, pero toma una forma diferente. Tome los artículos con la calificación más alta del cliente y los artículos con la calificación más baja, y encuentre otros clientes con listas con la calificación más alta y la clasificación más baja. Desea unirlos con otros que tienen gustos y aversiones extremos similares: si se centra solo en los Me gusta, cuando sugiera algo que odia, les habrá dado una mala experiencia. En los sistemas de sugerencias, siempre se quiere errar por el lado de la experiencia "tibia" en lugar de "odiar", porque una mala experiencia les impedirá usar las sugerencias.

Sugerir artículos en las listas más altas de otros al cliente.

+2

A continuación, puede avanzar más buscando solo búsquedas de productos realizadas por personas con la misma información demográfica (hombres caucásicos de entre 18 y 24 años, por ejemplo). – TheTXI

+1

Idealmente segmentará muy finamente el mercado, los datos demográficos, el etiquetado, las palabras clave de revisión, etc. se incorporarán a su motor de sugerencias. Puede volverse muy, muy complejo muy rápidamente ... Pero para un sistema simple de primer orden, lo anterior puede funcionar muy bien. Una vez que esté en su lugar, puede ajustar el algoritmo y las fuentes de datos al contenido de su corazón ... –

1

Los algoritmos de productos recomendados son un gran negocio ahora. NetFlix para uno ofrece 100.000 solo para incrementos menores en la precisión de su algoritmo.

0

análisis de la cesta de mercado es el campo de estudio que está buscando:

Microsoft ofrece dos algoritmos adecuados con su servidor de análisis: Microsoft Algoritmo de asociación de Microsoft Algoritmo de árboles de decisión

revisar este artículo de MSDN para sugerencias sobre la mejor manera de utilizar Analysis Services para resolver este problema.

link text

3

no hay una respuesta definitiva y es muy poco probable que hay un algoritmo estándar para eso.

Cómo se hace eso depende en gran medida del tipo de datos que desea relacionar y cómo está organizado. Depende de cómo defina "relacionado" en el alcance de su aplicación.

A menudo, el pensamiento más simple produce buenos resultados. En el caso de los libros, si tiene una base de datos con varios atributos por entrada (por ejemplo, autor, fecha, género, etc.), puede elegir sugerir un conjunto aleatorio de libros del mismo autor, el mismo género, títulos similares y otros como ese.

Sin embargo, siempre puedes probar cosas más complicadas. Mantener un registro de otros usuarios que requirieron este "producto" y sugerir otros "productos" que esos usuarios necesitaban en el pasado (el producto puede ser cualquier cosa, desde un libro, una canción hasta cualquier cosa que pueda imaginar). Algo que hacen la mayoría de los sitios importantes que tienen una función de sugerencia (aunque probablemente incluyan mucha información, desde atributos de productos hasta datos demográficos, para servir mejor al cliente).

O incluso puede recurrir a la denominada AI; Se pueden construir redes neuronales que consideren todos esos atributos del producto e intentar (en base a observaciones previas) relacionarlo con otros y actualizarse.

Una combinación de cualquiera de estos casos podría funcionar para usted.

Yo personalmente recomendaría pensar en cómo quiere que funcione el algoritmo y cómo sugerir "productos" relacionados. Luego, puede explorar todas las opciones: de simple a complicado y equilibrar sus necesidades.

0

Creo que hacer un Google en la regresión de mínimos cuadrados (o algo por el estilo) puede darte algo para morder.

0

sólo de pensar en voz alta:

es necesario calcular la correlación entre todos y cada uno - si su patrón de calificaciones buenas y malas coincide con los de otra persona, entonces se puede sugerir su elevada (O^2?) -rated cosas para usted

pero ¿cómo funciona esto si tiene solo unos pocos puntos de datos?

calificaciones deben ser normalizadas - una calificación de 2 * por alguien que califica todo lo demás como 1 * es claramente un voto afirmativo, mientras que una calificación de 2 * por alguien que califica todo lo demás como 4 * -5 * es más como un voto a la baja

cómo evitar que los spammers califiquen todo lo suyo y a los competidores mal? tal vez el sistema de correlación que hace de todos modos - si los spammers no se correlacionan con sus calificaciones a continuación, sus sugerencias son devaluados

0

CPAN módulo Math::Preference::SVD es al parecer un "Preferencia/Motor de recomendación basado en solo valor de descomposición"

0

pienso la mayoría de los consejos útiles ya han sido sugeridos, pero pensé que simplemente pondría en cómo lo haría, solo pensando, ya que no he hecho algo como esto.

Primero, encontraré en qué parte de la aplicación voy a muestrear los datos que se utilizarán, de modo que si tengo una tienda, probablemente esté en la lista de espera. Entonces guardaría una relación entre cada artículo en el carrito de compra.

ahora si un usuario va a una página de elementos, puedo contar el número de relaciones de otros artículos y elegir, por ejemplo, los 5 artículos con el mayor número de relación con el elemento seleccionado.

Sé que es simple, y es probable que haya formas mejores.

Pero espero que ayude

1

Como se ha deducido por las respuestas hasta el momento, y de hecho como usted sugiere, este es un tema amplio y complejo. No puedo dar una respuesta, al menos nada que ya no se haya dicho, pero un punto que a un par de excelentes libros sobre el tema:

+0

+1. Prefiero programar CI, que creo que tiene un mayor equilibrio entre la teoría y la práctica, para CI en acción, que parece completamente dedicado a recetas para usar bibliotecas Java. Pero los dos vale la pena mirar. –

0

hay una plataforma de recomendación creado por Amazon llamada Certona, puede resultar útil, que es utilizado por las compañías tales como B & Q y Screwfix encontrar más información en www.certona.com/

Cuestiones relacionadas