¿Cómo puedo comenzar a construir un motor de recomendación? ¿Dónde puedo encontrar un conjunto de datos interesante? ¿Con qué herramientas / tecnologías / algoritmos es mejor construir el motor? ¿Cómo verifico la efectividad de las recomendaciones?

Supongo que estás construyendo para aprender, ya que también estás buscando un problema interesante para resolver.

GroupLens proporciona los conjuntos de datos clásicos, en mi opinión, para jugar con los recomendadores (http://grouplens.org/node/12). Todos los conjuntos de datos son pequeños (100K-10M puntos de datos). Son inusualmente limpios y densos. Su tema, clasificaciones de películas, son fáciles de entender y evaluar intuitivamente.

Para la experimentación, los siguientes también son interesantes y de una escala que aún es apropiada para la experimentación en una máquina:

  • BookCrossing (http: //www.informatik.uni-freibu…)
  • Jester (http://goldberg.berkeley.edu/jes…)
  • Libimseti (http://www.occamslab.com/petrice…)

Para divertirnos con conjuntos de datos mucho más grandes, sugeriría que StackOverflow y los volcados de datos públicos de Wikipedia sean fantásticos y lleguen a fuentes de datos más “reales”: grandes, un poco ruidosos, escasos.

Soy el autor principal de la implementación de recomendaciones de Apache Mahout (http://mahout.apache.org/). Contiene una implementación distribuida basada en Hadoop y una implementación Java pura no distribuida simple de muchos algoritmos de recomendación (métodos de vecindad basados ​​en el usuario y basados ​​en elementos, para enfoques de factorización matricial). Creo que Mahout es quizás el marco de recomendación de código abierto más popular que existe, y creo que no te equivocarías al comenzar allí. El libro Mahout in Action lo explica en detalle.

No me importa señalar que estoy construyendo mi propia versión de un sistema de recomendación de próxima generación como el proyecto Myrrix (http://myrrix.com). Uno de sus objetivos es ser aún más fácil de configurar y ejecutar. También es de código abierto y una forma bastante simple de crear un prototipo de un sistema de recomendación.

También bastante fuerte en mi opinión son …

  • Duine (http://www.duineframework.org/)
  • easyrec (http://easyrec.org/)

Para evaluar las recomendaciones, realmente , debe ejecutar pruebas empíricas. Haga recomendaciones a los usuarios en vivo, verifique la tasa de clics / conversiones que resulta de un enfoque versus otro.

Fuera de línea, en el laboratorio, un enfoque común para evaluar un recomendante es ver qué tan bien puede predecir las calificaciones. Algunos datos se retienen como prueba, luego las estimaciones del recomendante se comparan con los valores reales. El error absoluto promedio o el error cuadrático medio son medidas populares de cuán precisas fueron las estimaciones.

Esto solo funciona si su entrada de recomendación es algo así como calificaciones, o si el recomendación funciona prediciendo calificaciones. No todos lo hacen. En ese caso, debe recurrir a pruebas simples de precisión / recuperación y derivados como F1 / ganancia acumulada con descuento normalizada.

Estas son pruebas problemáticas para los recomendadores, pero son mejores que nada. Por qué eso es suficiente para completar otra pregunta y respuesta.

Si desea construir su propio sistema de recomendaciones desde cero para tener una idea y una comprensión básica, le sugiero que lea un libro maravilloso llamado – Programación de la inteligencia colectiva. El segundo capítulo del libro le enseña cómo construir un motor de recomendación simple con una lista completa de códigos. (<200 líneas en python simple). Si sigues este capítulo (que debería ser bastante fácil), tendrías una comprensión básica de algoritmos simples detrás del motor de recomendaciones y un motor de recomendaciones que funciona con los datos de calificación de películas proporcionados por GroupLens.

Aquí está la lista de libros en el sitio web de O’Reilly: http://shop.oreilly.com/product/

Después de haber creado un motor de recomendaciones desde cero (actualmente el más descargado en Node.js) y no tener experiencia previa en aprendizaje automático, este es mi consejo:

1. Lea el segundo capítulo en Programación de inteligencia colectiva. Seguí los ejemplos en el libro y conseguí que los algoritmos funcionaran en Python. Luego, como me propuse construir un motor de recomendaciones en Node.js (Javascript), porté los algoritmos a Javascript. Vi algunos problemas de rendimiento y usabilidad bastante claros con los algoritmos proporcionados, así que sabía que podía hacerlo mejor.

2. Obtenga tutoría. Poco después de que todo funcionara, contacté a los creadores de los principales motores de recomendación en Github para que me dieran consejos sobre cómo estructurar la versión 2.0. Vi muchas promesas al alejarme del coeficiente de Pearson al coeficiente de jaccard. También en el uso de Redis como un almacén de datos rápido e intermedio para las recomendaciones. Obtener una gran tutoría fue probablemente el único punto de influencia que realmente me llevó a hacerlo bien.

3. Obtenga datos semilla. Construí mi sitio de ejemplo (recomendación de la aplicación de demostración Raccoon – Módulo Node.js) con películas, así que no tuve problemas para enviar encuestas y recuperar datos utilizables. Aquí hay algunos otros buenos lugares para conjuntos más grandes (100k – 10M) entaroadun / gist: 1653794

4. Haz pruebas. Para probar la eficiencia a pequeña escala, creé pruebas. En una escala mayor, tendría que comenzar a recibir comentarios de los usuarios o medir la tasa de clics / impresiones a partir de las recomendaciones.

En general, probablemente me tomó ~ 120 horas desde no saber nada sobre los motores de ML / recomendación hasta construir uno desde cero (que incluye aproximadamente 40 horas para el sitio de demostración). Si tienes curiosidad, échale un vistazo a recomendaciónRaccoon y déjame saber lo que piensas.

1)
Sean Owen ya mencionó algunos conjuntos de datos. Un conjunto de datos de calificación bastante grande es el de Yahoo Music: http://webscope.sandbox.yahoo.co … Contiene 700 millones de calificaciones.

2)
Si desea construir un motor desde cero, puede usar lo que le convenga. Si necesita inspiración o quiere ver cómo otros han resuelto esto, hay bastantes paquetes de código abierto que merecen una mirada.

Mahout es el software basado en Java más importante.

Si te gusta Python, quizás eche un vistazo a python-recsys de Oscar Celma: https://github.com/ocelma/python

Soy el autor principal de MyMediaLite, que está escrito en C # y se ejecuta en todas las plataformas principales (a través de Mono): http://ismll.de/mymedialite
MyMediaLite contiene muchos métodos de vanguardia tanto para la predicción de la calificación como para la recomendación de elementos a partir de comentarios implícitos (que es mucho más importante en la práctica).
Puede usar la mayor parte de la funcionalidad de la biblioteca a través de sus herramientas de línea de comandos, sin tener que escribir una sola línea de C #. También puede usar la biblioteca de Python, Ruby o F #. Los ejemplos están en el sitio web.

En términos de algoritmos, los métodos de filtrado colaborativo (en el sentido más amplio) son muy populares, por ejemplo, kNN basado en el usuario y basado en elementos (muchas variantes diferentes) y técnicas de factorización de matrices. Lo bueno de los métodos de FQ es que son bastante independientes del dominio.
Además, hay métodos basados ​​en atributos de contenido o de usuario que pueden ayudarlo, por ejemplo, con el problema de arranque en frío.

3)
Básicamente, hay dos métodos principales: pruebas en línea (por ejemplo, pruebas A / B) en su sistema con usuarios reales y simulaciones fuera de línea con un conjunto de datos estático.

Para simulaciones fuera de línea, MyMediaLite tiene una de las colecciones de medidas y protocolos de evaluación más grandes que existen: MAE, RMSE, CBD, AUC, precisión / recuperación, MAP, NDCG, MRR.

La comunidad alrededor de los recomendadores está en buena forma. Existen innumerables recursos y tutoriales en línea que le brindan literalmente un proceso paso a paso para construir un motor de recomendaciones.

El requisito previo para construir un motor de recomendación es que necesita saber programar en Python y, específicamente, cómo usar una computadora portátil Jupyter Python. ¡También ayuda tener cierta familiaridad con la manipulación matricial! Llegaría al extremo de sugerir que el álgebra lineal debería ser parte del repertorio de todos los aspirantes a científicos de datos. (Si se siente ambicioso, pruebe el siguiente maravilloso conjunto de cuadernos basado en el texto de álgebra lineal canónica de Gilbert Strang).

Aparte de eso, no hay nada que te impida sumergirte directamente. Y aquí hay algunos pasos para que comiences.

Comience con el conjunto de datos Movielens

Un conjunto de datos popular, que ha aparecido en las competiciones de Kaggle y que a menudo se usa para construir y comparar los recomendadores, es el conjunto de datos de Movielens disponible públicamente. Este conjunto de datos es excelente porque está organizado de una manera fácil de ingerir y ofrece el tipo correcto de volumen. Existen diferentes tipos de algoritmos que se han desarrollado utilizando este conjunto de datos. Proporciona para cada película un título, la identificación del usuario y la calificación que ha sido (escasamente) asignada por un usuario determinado a un conjunto de películas. También se proporcionan etiquetas y enlaces para cada película a otras fuentes de datos y se pueden utilizar para construir algoritmos de recomendación más sofisticados.

Elija un sistema de filtrado colaborativo basado en elementos o usuarios en Python

Estos sistemas son un buen lugar para comenzar porque se basa en los conceptos fundamentales de construir un motor de recomendaciones. Comienza analizando su conjunto de datos y luego construye una matriz de elementos de usuario como un marco de datos Pandas en Python. Una vez que los datos se han ingerido como un marco de datos, puede utilizar toda la maquinaria de la excelente API de Pandas para perfilar y analizar los datos.

En mi experiencia, el acceso a artefactos concretos, como estructuras de datos manipulables, proporciona un soporte invaluable para dar sentido a lo que de otro modo parecerían conceptos algorítmicos bastante abstractos.

Otra gran ventaja de comenzar con un usuario o un filtro colaborativo basado en elementos es que existen cuadernos existentes para construir tales recomendadores; El siguiente cuaderno de Marcel Caraciolo es un gran recurso. Este cuaderno proporciona una descripción sucinta pero inteligible de los antecedentes conceptuales, luego algunos perfiles del conjunto de datos MovieLens antes de proceder a construir y evaluar el recomendante.

La evaluación es un agujero de conejo, pero comienza con el clásico RMSE

Una métrica estándar que muchos usan es el error cuadrático medio (RSME). Brevemente, la forma en que esto funciona es la siguiente. El recomendación que acaba de construir, inspirado en el cuaderno anterior, por ejemplo, le permitirá generar predicciones de las clasificaciones que un usuario asignaría para las películas en un conjunto de prueba extendido. Luego, el RMSE se calcula promediando la diferencia al cuadrado entre las calificaciones reales y previstas para cada uno de los pares de usuario / película en el conjunto de prueba. El cuaderno de Marcel usa el RMSE para evaluar el recomendante en su excelente tutorial.

Esta es solo una forma de evaluar el desempeño de un recomendante y generalmente se considera que proporciona una estimación de “precisión”. Hay varias otras métricas que puede usar para evaluar la calidad de su motor de recomendaciones, pero esa es una respuesta a otra pregunta para otro día.

¿Que sigue?

Le recomendaría que proceda directamente a construir un recomendador en Spark utilizando el algoritmo de factorización de matriz que está disponible de fábrica. ¡Y también hay un cuaderno para eso! (Puede encontrar el cuaderno aquí.) Existe la cuestión “pequeña” de configurar Spark en su máquina local o en un clúster, pero esa es una lucha que bien vale la inversión.

Si desea construir un motor de recomendación en las próximas 6 horas, le recomiendo encarecidamente el paquete gensim en python. gensim te permite entrenar sobre un corpus. Luego puede convertir su corpus o término de búsqueda en vectores y emitir consultas de búsqueda o similitud. gensim también tiene un útil tutorial sobre capacitación en wikipedia en inglés. Para responder a sus preguntas específicas:

1. ¿Dónde encontrar un conjunto de datos interesante para el mismo?
Use la wikipedia en inglés o la base de datos de reseñas de libros de Amazon.

2. ¿Qué herramientas / tecnologías / algoritmos son mejores para construir el motor?
gensim: tutorial de Gensim

3. ¿Cómo verificar la efectividad de las recomendaciones?
Puede comparar sus resultados de similitud con las métricas de similitud existentes, como tfidf o coseno.

El sistema de recomendaciones ha sido un tema candente durante mucho tiempo. Parece que casi todas las empresas están construyendo tales sistemas. Por ejemplo, Amazon está utilizando un sistema de recomendación para proporcionar productos que a los clientes también les gusten. Hulu está utilizando un sistema de recomendación para sugerir otros programas o episodios populares.

Si es nuevo en el sistema de recomendaciones, le recomiendo que eche un vistazo al diseño posterior de un sistema de recomendaciones, que tiene un excelente resumen de este tema.

Para responder a su primera pregunta: dónde obtener el conjunto de datos, es mucho más fácil de lo que solía ser. Si realiza una búsqueda rápida en Google sobre el conjunto de datos ML, puede obtener fácilmente toneladas de conjuntos de datos para usar. Al mismo tiempo, Kaggle también proporciona datos para que los use. Además, muchas empresas hoy en día dan acceso a parte de sus datos internos, por ejemplo, puede obtener el 1% de los datos de Twitter de forma gratuita. Por supuesto, depende de en qué proyectos desea trabajar, pero en general hay bastantes datos disponibles para el público.

En términos de qué herramientas construir, la publicación cubre mucho sobre estos temas. Además, hay muchas bibliotecas de ML como scikit-learn en Python que le permiten desarrollar un sistema de recomendación fácilmente. Hasta cierto punto, estas bibliotecas hacen que el sistema sea como una caja negra. Sin embargo, siempre es bueno si sabes cómo funciona en el interior para poder ajustar el sistema cuando las cosas salen mal.

Por último, para evaluar el sistema, hay varias formas. Por ejemplo, puede dividir su conjunto de datos en un conjunto de entrenamiento y un conjunto de pruebas, que es uno de los enfoques más comunes en ML. Además, si su aplicación tiene muchos usuarios, los datos reales del usuario son una excelente manera de verificar su sistema.

También compré el libro Programming Collective Intelligence y creo que el libro es muy completo. Construyo mi motor de recomendación usándolo. Así que lo llevaré al viaje sobre cómo lo construí y cómo lo entiendo. Algunas cosas que debe comprender antes de que necesita saber un poco sobre matemáticas y datos.

El motor de recomendaciones son de dos tipos.

  • Basado en el usuario : recomendación de cualquier cosa según sus datos o su perfil, como Facebook recomendándoles amigos (aunque es más una inteligencia colectiva) o Gmail mostrando anuncios en función de sus correos. También puede ser colaborativo. Colaborativo es cuando otros usuarios también son tomados en consideración para su recomendación, no solo su perfil.
  • Basado en elementos : recomendación de cualquier cosa según el elemento que está viendo. Por ejemplo: – Amazon le recomienda libros cuando revisaba los libros relacionados con inteligencia colectiva o recomendaciones.

Ahora, lo que desea recomendar depende de lo que desea mostrar. Las recomendaciones se basan en dos cosas:

  • Similitud : en general, esto es lo que se utiliza como base para la recomendación. Este método dice, como su nombre lo indica, calcular la similitud entre dos cosas. Los dos ejemplos anteriores que he dado se basan en la similitud. Para el ejemplo de Facebook, puede decir similitud como “común”, por lo que Facebook le sugiere personas que tienen intereses similares o tienen amigos comunes. Lo mismo ocurre con Amazon, le mostrará los libros similares. Ahora, cómo desea calcular el valor de similitud depende de lo que está recomendando. El primer ejemplo que puede implementar es un motor de recomendación de películas . Y te sugiero que hagas eso si no lo has hecho.

    Los datos que tiene son para cada calificación de usuario correspondiente a la película que han visto. La matemática que desea saber aquí es el coeficiente de correlación momento-producto de Pearson. Lo que esta fórmula nos dice es cuán similares son dos objetos o cuánto están relacionados entre sí. Entonces, dado que va a recomendar una película al usuario, existen tres posibilidades que puede hacer. Primero, recomendar sobre la base de similitud entre usuarios. En segundo lugar, en función de la similitud entre las películas (basadas en el género) y la última, utilizando ambas. Si bien el último puede ser más efectivo, aún usaremos un solo parámetro y serán los usuarios.

    Por lo tanto, calcularemos la similitud entre un usuario y el resto de los usuarios en función de la fórmula anterior. Ahora, dado que tiene los puntajes de similitud correspondientes a todos los usuarios, ahora puede recomendar las películas. En este punto, lo que verá un usuario son las películas del usuario con el que es más similar (obviamente, la que no ha visto). Pero hay un problema ya que estamos usando solo la similitud del usuario, entonces la peor película vista por el usuario también se encontrará en la lista en el nivel más alto. Podemos rectificar eso si mostramos la lista de acuerdo con las clasificaciones, pero eso todavía no es bueno.

    Entonces, lo que hacemos ahora es multiplicar el puntaje de similitud del usuario con la calificación de película que le ha dado a la película. A través de esto, podemos puntuar cada película y mostrar los 5 o 10 mejores según sus puntajes. Este es el primer ejemplo que intenta explicar. También puede crear utilizando el parámetro de género, que habría sido más efectivo.

    Otro tipo de calculadoras de similitud son:

  • Similitud de coseno: se puede utilizar para similitud de usuario en este caso.
  • Frecuencia de término: generalmente se usa para identificar la similitud de los contenidos. Tiene sus mejoras también.
  • Y hay más que puedes leer. A veces las cosas se complican y necesitas usar clasificación o agrupación o cosas por el estilo. Todo esto lo puedes aprender de ese libro.
  • Disimilitud : aunque no he trabajado con esto. Pero intentaremos darte la idea básica. Se usa igual que la similitud. Pero la disimilitud es opuesta a la similitud, intenta identificar si los dos objetos son diferentes o cuán diferentes son. Y use esta propiedad para recomendar.

    Se puede usar en algún lugar como recomendar libros en un sitio web de libros. Por ejemplo, tiene interés en los libros de ficción, pero para variar, le recomiendo libros que no sean de ficción. O su sitio me recomienda un destino de vacaciones como Suiza porque la última vez busqué en su sitio playas para vacaciones.

  • Entonces, ¿cómo proceder?
    Identifica lo que quieres recomendar. Entonces, ¿cuál es el tipo de motor de recomendación, y en qué se basa su recomendación? Después de todo esto, intenta utilizar los métodos adecuados.

    Sigue leyendo ese libro, aunque haya terminado con solo 2 capítulos. Es realmente un gran libro si quieres aprender alguna aplicación práctica. El libro trata sobre la inteligencia colectiva, por lo que aprenderá más sobre la colaboración, lo que también es complicado y se usa principalmente.

    Y Deepak Raj Kiran, ha dado algunas buenas maneras de implementar estas recomendaciones. Por ejemplo, su conocimiento de Python es suficiente.

    Puedo responder a su segunda pregunta con una descripción general de los principales algoritmos de sistemas de recomendación . Mi equipo ha preparado este estudio y compartiré aquí una de las técnicas solo para dar la idea de si nuestra publicación podría ser útil.

    Uno de los motores de recomendación más utilizados es el filtrado colaborativo (CF) y sus modificaciones.

    Filtración colaborativa

    Cuando queremos recomendar algo a un usuario, lo más lógico es encontrar personas con intereses similares, analizar su comportamiento y recomendar a nuestro usuario los mismos elementos. O podemos ver los artículos similares a los que el usuario compró anteriormente y recomendar productos similares.

    Estos son dos enfoques básicos en la FQ: el filtrado colaborativo basado en el usuario y el filtrado colaborativo basado en elementos, respectivamente.

    En ambos casos, este motor de recomendación tiene dos pasos:

    1. Descubra cuántos usuarios / elementos en la base de datos son similares al usuario / elemento dado.
    2. Evalúe a otros usuarios / artículos para predecir qué calificación le daría al usuario de este producto, dado el peso total de los usuarios / artículos que son más similares a este.

    ¿Qué significa “más similar” en este algoritmo?

    Todo lo que tenemos es un vector de preferencias para cada usuario (fila de la matriz R) y el vector de clasificaciones de usuario para cada producto (columnas de la matriz R).

    En primer lugar, dejemos solo los elementos para los que conocemos los valores en ambos vectores.

    Por ejemplo, si queremos comparar a Bill y Jane, podemos mencionar que Bill no ha visto Titanic y Jane no ha visto a Batman hasta este momento, por lo que podemos medir su similitud solo con Star Wars. ¿Cómo podría alguien no ver Star Wars, verdad? 🙂

    Las técnicas más populares para medir la similitud son la similitud de coseno o las correlaciones entre vectores de usuarios / elementos. El último paso es tomar la media aritmética ponderada de acuerdo con el grado de similitud para llenar celdas vacías en la tabla.

    La publicación original del blog: Algoritmos del sistema de recomendación: estadísticas y bots

    Uno sugeriría que, mientras se toma el tiempo para construir un motor de recomendación más robusto, su mejor opción es abandonar la página con la lista de los elementos más populares de todos los tiempos.

    Los problemas comunes que notarías después de hacer eso por algún tiempo:
    1. El contenido se vuelve viejo: los usuarios encuentran el mismo contenido cada vez que inician sesión en su servicio.
    2. Los elementos nuevos nunca salen a la superficie: dado que la tabla de clasificación puede no normalizar la popularidad por el tiempo transcurrido desde la publicación, los nuevos contenidos geniales tienen dificultades para lograrlo.
    3. No sabes cómo elegir tu batalla: si decides dejar que el nuevo contenido se haga cargo, tu conversión colapsada puede darte un ataque al corazón, especialmente si tienes una base de usuarios menos activa.

    ¿Cómo se crea un motor de recomendación simple con la tasa de toma más alta y una experiencia decente para el usuario? La respuesta está en comprender su comportamiento de usuario, en este caso particular: Cadencia.

    Esto es lo que puede hacer para crear un motor de recomendación simple pero de alto rendimiento.
    1. Mostrar solo elementos convertibles: elimine elementos de la lista de recomendaciones si el usuario ya lo ha tomado en el pasado, o si un usuario ha hecho clic antes y ha abandonado el flujo después.
    2. Segmente su base de usuarios: analice la distribución de la actividad de los usuarios en un período de tiempo razonable, digamos 4 semanas. Encontrar un límite para agrupar a los usuarios en una cohorte de alta actividad y una cohorte de baja actividad. Por ejemplo, las personas que están activas una vez cada dos días irán al segmento A y aquellas que están activas solo una vez a la semana o más, irán al segmento B. No existe una fórmula universal para eso porque varía según el negocio en el que se encuentre, así que piense en contexto de eso al mirar sus datos.
    3. Equilibre sus recomendaciones. Simplifiquemos el caso asumiendo que tiene dos listas de líderes, una de las estrellas más populares y la otra en ascenso. Desea darle más peso al popular de todos los tiempos para el Segmento B, donde los usuarios no inician sesión con tanta frecuencia, por lo que cuando lo hacen, tienen la mayor cantidad de ofertas a prueba de balas. Por otro lado, ofrezca nuevos contenidos a los usuarios que frecuentan su tienda en general, ya que probablemente hayan consumido una parte equitativa del contenido más popular.

    Los tres pasos anteriores para construir un motor de recomendación efectivo es para un catálogo de un número moderado de géneros y / o una base de usuarios relativamente homogénea. Para los usuarios que pueden ir desde jóvenes adolescentes hasta altos ejecutivos que podrían tener una superposición cero en su consumo, el enfoque anterior no es el mejor, sin embargo, dudo mucho que quieran servirles con un producto de todos modos.

    Comencé un blog sobre piratería de crecimiento, productos, marketing y análisis. Sígueme en Qindi (Cindy) Zhang.

    Respuesta parcial:

    1. MovieLens: contiene el popular conjunto de datos de clasificaciones de películas que básicamente se ha convertido en una especie de conjunto de datos estándar para construir y probar un sistema de recomendación.
    2. Te sugiero que hagas este curso en coursera: Sistemas de recomendación. Recomiendo este curso fuertemente (juego de palabras). Aquí hablan sobre la implementación de algoritmos en Java, pero seguí el curso implementando todos los ejercicios en Python (la desventaja es escribir mucho código de placa de caldera) y no me dolió. También puede consultar las bibliotecas Apache Mahout [1], Apache Spark [2] y python.

    Principalmente hay algoritmos de recomendación basados ​​en:

    • Similitud de contenido: recomiende elementos que sean similares al elemento actual
    • Filtrado colaborativo: recomiende artículos que fueron vistos / comprados por usuarios que vieron / compraron el artículo actual
    • recuentos de ocurrencia conjunta: recomiende artículos que se ven o compran junto con el artículo actual

    Notas al pie

    [1] Aprendizaje automático escalable y minería de datos

    [2] Filtrado colaborativo – MLlib – Documentación de Spark 1.5.2

    Hay muchas bibliotecas de código abierto, la mayoría están en java (apache mahout)
    cosas muy básicas que puedes leer aquí Generando recomendaciones con MapReduce y Scalding. En python Natural Language Toolkit es muy popular.
    Antes de la recomendación, es posible que deba comprender las técnicas de ML de clasificación de datos.

    Lea la publicación de blog de Toptal: Prediciendo Me gusta: Dentro de un motor de recomendación simple

    Los motores de recomendación permiten que los servicios web brinden a sus usuarios una experiencia más atractiva. Pero, ¿cómo funciona realmente un motor de recomendación?

    En este artículo, el ingeniero de Toptal, Mahmud Ridwan, explora una de las muchas formas de predecir los gustos y disgustos de un usuario, que es simple de implementar y efectivo cuando se hace correctamente.

    Construí un sistema de recomendación en la Asamblea. No había construido nada como esto antes; Hice lo que pensé que tenía sentido. Crea un espacio multidimensional de diferentes ‘características’ que yo llamo ‘marcas’. A partir del sitio de ensamblaje, identifica características, como vectores multidimensionales en ‘espacio de marca’ a partir de información contextual y comportamiento del usuario, así como etiquetado explícito.

    Luego optimizo las correlaciones (definidas como el producto de punto entre vectores) entre diferentes entidades en el sitio.

    El resultado final es que podemos sugerir productos y recompensas interesantes en el sitio a los usuarios. El modelo no es estocástico, lo que podría ser un punto débil. Y podríamos crear mejores pruebas para medir la eficacia. Pero fue un buen primer paso. Cualitativamente también, parece que funciona bastante bien.

    Como tampoco sabía nada acerca de los motores de recomendación antes de construirlo, puede que le guste leer mi explicación detallada de cómo lo construí.

    Construyendo un motor de recomendación

    ¿Sabe que los sistemas de recomendación basados ​​en la personalidad son la próxima generación de sistemas de recomendación porque funcionan mucho mejor que los de comportamiento (acciones pasadas y patrones de preferencias personales)
    Esa es la única forma de mejorar los sistemas de recomendación, para incluir los rasgos de personalidad de sus usuarios. Necesitan calcular la similitud de personalidad entre los usuarios, pero existen diferentes fórmulas para calcular la similitud. En caso de que no lo haya notado, los sistemas de recomendación se están transformando en ……… motores de compatibilidad compatibles, como los que se utilizan en la industria de citas en línea desde hace años, con bajas tasas de éxito hasta ahora porque utilizan principalmente BIG 5 para evaluar la personalidad y el coeficiente de correlación de Pearson para calcular la similitud.
    La prueba de personalidad normativa BIG 5 (Big Five) es obsoleta. El HEXACO (también conocido como Big Six) es otra simplificación excesiva. Los sitios de citas en línea tienen bases de datos muy grandes, en el rango de 20,000,000 (veinte millones) de perfiles, por lo que el modelo BIG 5 o el modelo HEXACO no son suficientes para fines predictivos. Es por eso que sugiero la prueba 16PF5 y otro método para calcular la similitud. Calculo la similitud en los patrones de personalidad con el reconocimiento de patrones (patentado) por el método de correlación. Tiene en cuenta la puntuación y la tendencia a puntuar de cualquier patrón. También tiene en cuenta a las mujeres bajo tratamiento hormonal porque varios estudios mostraron que las usuarias de píldoras anticonceptivas toman diferentes decisiones de pareja, en promedio, en comparación con las no usuarias. “Solo las preferencias de pareja a corto plazo pero no a largo plazo tienden a variar con el ciclo menstrual”.

    Si quiere ser el primero en la “arena de personalización” == Sistemas de recomendación basados ​​en la personalidad, debe comprender la ………… industria de citas en línea.
    Por favor lee:
    NUEVOS DOCUMENTOS Sistemas de recomendación / Motores de recomendación – 2014
    http: // onlinedating soundbarrier

    También es bastante fácil construir un sistema de recomendación simple sobre sistemas basados ​​en lucene como Solr o Elasticsearch. Aquí hay un ejemplo:

    Construyendo un motor de recomendación en tiempo real, alimentado por solr

    Kaggle ( http://www.kaggle.com/c/acm-sf-c …) recientemente realizó una competencia para construir un motor de recomendación basado en el comportamiento anterior del usuario (enlaces en los que los usuarios hicieron clic después de hacer una consulta).
    Todos los ganadores tuvieron que compartir el enfoque que adoptaron, por lo que debería ser un recurso interesante para varios algoritmos, aunque la mayoría resultó hacer aproximadamente lo mismo.
    También hay un conjunto de datos disponible que puede usar para realizar pruebas.
    Las entradas se clasificaron utilizando el algoritmo [protegido por correo electrónico] . Más información: https://www.kaggle.com/wiki/Mean

    Hay implementaciones basadas en hadoop para sistemas de recomendación en Mahout. Puede tomar conjuntos de datos del sitio de lente de película y ejecutar trabajos basados ​​en elementos o en recomendaciones de ALS para comenzar a recomendar productos a los usuarios que aprovechan el poder de hadoop. Este código fuente debería ser de alguna ayuda: Mahout

    Trate de pensar en el sistema como le gustaría que se hicieran las cosas. piense en sus preferencias y en cómo decide qué libro nuevo leer, qué película nueva ver, qué comida nueva probar, qué lugar nuevo visitar. es posible que no lo pienses y sigas tu instinto. pero la próxima vez que pruebe algo nuevo y le guste o lo odie, intente clasificar las cosas que le gustaron u odiaron. por ejemplo, si está haciendo un motor de recomendación de películas, piense en cosas que son comunes a todas las películas que le gustan y a todas las películas que no le gustan. Estas son propiedades que desea parametrizar. Ahora, una vez establecidos estos parámetros, piense en las escalas en las que puede medir cada uno de esos parámetros. como la cantidad de “acción”, la calidad de la “acción”, la cantidad de “comedia”, la calidad de la “comedia”, etc. todo eso en una escala del 1 al 10. ahora califica esas películas que has visto, y en cada uno de esos params. una vez que hagas eso, quieres saber en qué proporción alcanzas el punto óptimo de las películas increíbles. qué proporción de diferentes elementos de las películas funciona para usted, no será un solo punto sino una región, puede ser múltiples regiones en un espacio multidimensional donde cada dimensión representa uno de esos parámetros.

    Ahora se ha acercado a modelar a una persona, ahora tiene que hacer lo mismo para todos los usuarios que visitan su sitio. pero no puede hacerlo porque no tiene esos datos con usted. solo tiene unos pocos puntos de datos en ese grupo necesario. entonces, que haces. encontrará correlaciones entre diferentes usuarios. agrupa a los usuarios, y una vez que agrupa a 10-20 usuarios en un grupo, puede tomar sus datos acumulativos como datos para un solo usuario, lo que puede ser lo suficientemente bueno como para hacer un mejor modelo.

    Creo que el libro del que estamos hablando te dará los detalles para hacer esas correlaciones y ayudarte a parametrizar las cosas.

    1. Puede obtener datos iniciales de varios sitios. Este es solo un ejemplo: predicción de la tasa de clics

    2. En el corazón de todos los motores de recomendación hay alguna forma básica de contar. Por lo tanto, como recomendante básico (escrito desde cero), usted podría contar por su cuenta la correlación entre cada punto de datos y el resultado final y crear un recomendador básico como ese. El filtrado colaborativo es una técnica bastante simple pero muy poderosa para las recomendaciones: el filtrado colaborativo. Puede intentar implementar esto para su conjunto de datos.

    Sin embargo, si ha escrito un motor de recomendación desde cero, se dará cuenta de que puede agregar un ML adecuado a los datos que intentan ajustar los datos a una curva. Aquí es donde querría elegir un motor de recomendación existente, como los mencionados anteriormente, y usarlo tal como está.

    3. La mejor manera de probar si las cosas que construiste son buenas, mediante la realización de experimentos en vivo con los usuarios. Defina una métrica que le interese (por ejemplo, CTR para anuncios) y mida si sube o baja o se mantiene neutral en sus experimentos.

    More Interesting

    ¿Cómo se pueden utilizar los autoencoders apilados para preentrenar una red neuronal que tiene más neuronas en las capas ocultas que entradas? es posible?

    ¿Debería incluirse el error de salida en la retropropagación en el bucle?

    ¿Cuáles son algunos proyectos interesantes de minería de texto en análisis político?

    ¿Podemos obtener un intervalo de confianza para la salida de un clasificador en el aprendizaje supervisado?

    Quiero comprar una PC de segunda mano decente para comenzar con el aprendizaje profundo comprando una GeForce GTX 1070, ¿qué características me deberían interesar?

    ¿Existen métodos de aprendizaje automático además de los que requieren redes neuronales?

    ¿Cómo analizaría programáticamente una oración y decidiría si responde con "eso es lo que dijo"? Resuma un algoritmo que, dada una oración, devuelve verdadero o falso para determinar si la declaración es apropiada.

    ¿Qué es el Tanimoto Score y cuándo se usa?

    Hay muchas críticas positivas para Pytorch. Actualmente uso Keras y TensorFlow. ¿Recomienda hacer un cambio o apegarse a Tensorflow y dominarlo?

    ¿Cuáles son las funcionalidades clave que debe tener una biblioteca NLP mínima?

    ¿Qué es la programación probabilística?

    ¿Se utiliza R en la minería de datos a gran escala en grandes compañías de software como Facebook y LinkedIn?

    ¿Cuáles son los documentos más importantes en el aprendizaje activo?

    ¿Cuál es la intuición para usar tocones de decisión en el aprendizaje automático?

    ¿Cuáles son las desventajas de tener un tamaño de paso constante para el Descenso de gradiente estocástico?