# Filtrado colaborativo

El Filtrado colaborativo (FC) es una técnica utilizada por algunos sistemas recomendadores. En general, el filtrado colaborativo es el proceso de filtrado de información o modelos, que usa técnicas que implican la colaboración entre múltiples agentes, fuentes de datos, etc. Las aplicaciones del filtrado colaborativo suelen incluir conjuntos de datos muy grandes. Los métodos de filtrado colaborativo se han aplicado a muchos tipos de datos, incluyendo la detección y control de datos (como en la exploración mineral, sensores ambientales en áreas grandes o sensores múltiples, datos financieros) tales como instituciones de servicios financieros que integran diversas fuentes financieras, o en formato de comercio electrónico y aplicaciones web 2.0 donde el foco está en los datos del usuario, etc. Esta discusión se centra en el filtrado colaborativo para datos de usuario, aunque algunos de los métodos y enfoques pueden aplicarse a otras aplicaciones.
En el enfoque más reciente, el filtrado colaborativo es un método para hacer predicciones automáticas (filtrado) sobre los intereses de un usuario mediante la recopilación de las preferencias o gustos de información de muchos usuarios (colaborador). El Filtrado colaborativo se basa, en que si una persona A tiene la misma opinión que una persona B sobre un tema, A es más probable que tenga la misma opinión que B en otro tema diferente que la opinión que tendría una persona elegida azar. Por ejemplo, un sistema de recomendación basado en el filtrado colaborativo para televisión podría hacer predicciones acerca de los programas que le gustarían a un usuario a partir de una lista parcial de los gustos de ese usuario (gustos o disgustos). Nótese que estas predicciones son específicas para el usuario, pero utilizan la información obtenida de muchos usuarios. Esto difiere del enfoque más simple de otorgarle una puntuación promedio (poco específico) para cada elemento de interés, por ejemplo sobre la base de su número de votos.

## Introducción

El crecimiento de Internet y de la información disponible en línea ha hecho que sea mucho más difícil extraer información útil de manera efectiva. La abrumadora cantidad de datos requiere mecanismos de filtrado de información eficientes. Una de las técnicas utilizadas para hacer frente a este problema se denomina filtrado colaborativo. La motivación para el filtrado colaborativo proviene de la idea de que las personas a menudo obtienen la mejor recomendación de alguien con un gusto similar. El Filtrado colaborativo explora las técnicas para hacer coincidir a las personas con intereses similares y formular recomendaciones sobre esta base. Los algoritmos de filtrado colaborativo requieren (1) la participación activa de los usuarios, (2) una forma fácil para representar los intereses de usuarios para el sistema, y (3) los algoritmos que son capaces de encontrar a las personas con intereses similares. Típicamente, el flujo de trabajo de un sistema de filtrado colaborativo es:
* El usuario expresa sus preferencias evaluando elementos (por ejemplo, libros, películas o CDs) del sistema. Estas calificaciones pueden ser vistas como una representación aproximada del interés del usuario en el dominio correspondiente.
* El sistema compara las evaluaciones de este usuario con las de otros usuarios y encuentra las personas con gustos "similares".
* Con los usuarios similares, el sistema recomienda elementos que los estos han evaluado de su preferencia pero todavía no han sido evaluados por este usuario (la ausencia de evaluación es a menudo considerada como el desconocimiento de un elemento).
Un problema fundamental del filtrado colaborativo es cómo combinar y ponderar las preferencias de los vecinos de los usuarios. A veces, los usuarios pueden inmediatamente calificar los elementos recomendados. Como resultado, el sistema obtiene una representación cada vez más precisa de las preferencias del usuario con el tiempo.

## Metodología

Los sistemas de filtrado colaborativos tienen muchas variantes, pero muchos sistemas comunes pueden reducirse a dos pasos:
* Búsqueda de usuarios que comparten los mismos patrones de evaluación con el usuario activo (el usuario para el que se está haciendo la predicción).
* Utilizar las evaluaciones por parte de aquellos usuarios afines que se encuentran en el paso 1 para calcular una predicción para el usuario activo
Esto entra en la categoría del filtrado colaborativo basado en el usuario. Una aplicación específica de ello es el algoritmo del vecino más cercano basado en el usuario.
Como alternativa, el filtrado colaborativo basado en elementos inventado por Amazon.com (usuarios que compraron x, también han comprado y), procede de manera centrada en los elementos:
* Construir una matriz de elemento-elemento que determina las relaciones entre pares de elementos
* Usando la matriz, y los datos sobre el usuario actual, inferir sus gustos
Véase, por ejemplo, la familia de filtros colaborativos basados en elementos Slope One.
Otra forma de filtrado de colaboración pueden estar basadas en observaciones implícitas del comportamiento del usuario (en oposición al comportamiento artificial impuesta por una tarea de calificación). En estos sistemas se observa lo que un usuario ha hecho junto con lo que todos los usuarios han hecho (la música que han escuchado, qué artículos se han comprado) y utilizar esos datos para predecir el comportamiento del usuario en el futuro o para predecir cómo un usuario puede comportarse si sólo se le dio una oportunidad. Estas predicciones tienen entonces que ser filtrados a través de la lógica de negocio para determinar cómo estas predicciones podrían afectar el desempeño del sistema de negocios. Por ejemplo, no es útil ofrecer a alguien la venta de música si ya han demostrado que la tienen, o no es útil para sugerir más guías de viaje a París a alguien que ya ha comprado una guía de viaje para esta ciudad. Basándose en un sistema de puntuación o puntuaciones que se promedia entre todos los usuarios ignora las demandas específicas de un usuario, y es particularmente pobre en tareas en las que existe una gran variación de interés, por ejemplo en la recomendación de música. Sin embargo, hay otros métodos para luchar contra el gran despliegue de la información, por ejemplo búsquedas web, algoritmos de agrupamiento, y más.

## Tipos
### Basado en memoria

Este mecanismo utiliza los datos de las evaluaciones de los usuarios para calcular la similitud entre los usuarios o elementos. Esto se utiliza para hacer recomendaciones. Este fue de los primeros mecanismos y se usa en muchos sistemas comerciales. Es fácil de implementar y es eficaz. Ejemplos típicos de este mecanismo son los FC basados en el vecino más cercano y recomendaciones de los N-primeros basadas en elementos o usuarios. Por ejemplo, en los enfoques basados en el usuario, el valor de la evaluación del usuario u con respecto al elemento i se calcula como una agregación de las evaluaciones de usuarios similares para el elemento:
    $r_{u,i}=agrr_{u^{\prime }\in U}r_{u^{\prime },i}$
Donde U denota el conjunto de los mejores N usuarios que son más similares al usuario u con respecto a i. Algunos ejemplos de la función de agregación incluye:
    $r_{u,i}={\frac {1}{N}}\sum \limits _{u^{\prime }\in U}r_{u^{\prime },i}$
    $r_{u,i}=k\sum \limits _{u^{\prime }\in U}sim(u,u^{\prime })r_{u^{\prime },i}$
    $r_{u,i}={\bar {r_{u}}}+k\sum \limits _{u^{\prime }\in U}sim(u,u^{\prime })(r_{u^{\prime },i}-{\bar {r_{u^{\prime }}}})$
Donde k es un factor de normalización se define como $k=1/\sum _{u^{\prime }\in U}|sim(u,u^{\prime })|$. y ${\bar {r_{u}}}$ es el promedio de las evaluaciones del usuario u para todos los elementos que ha evaluado.
El algoritmo basado en vecindad calcula la similitud entre dos usuarios o elementos, produce una predicción para el usuario tomando el promedio ponderado de todas las evaluaciones. Calcular la similitud entre los elementos o usuarios es una parte importante de este enfoque. Múltiples mecanismos tales como la correlación de Pearson y la similitud basada en el coseno entre vectores sirven para esto. La similitud de correlación de Pearson de dos usuarios x, y se define como
    $sim(x,y)={\frac {\sum \limits _{i\in I_{xy}}(r_{x,i}-{\bar {r_{x}}})(r_{y,i}-{\bar {r_{y}}})}{\sqrt {\sum \limits _{i\in I_{xy}}(r_{x,i}-{\bar {r_{x}}})^{2}\sum \limits _{i\in I_{xy}}(r_{y,i}-{\bar {r_{y}}})^{2}}}}$
donde I$_{xy}$ es el conjunto de elementos evaluados por ambos usuarios. El enfoque basado en coseno define la similitud entre dos usuarios x e y como:
    $\operatorname {sim} (x,y)=\cos({\vec {x}},{\vec {y}})={\frac {{\vec {x}}\cdot {\vec {y}}}{||{\vec {x}}||\times ||{\vec {y}}||}}={\frac {\sum \limits _{i\in I_{xy}}r_{x,i}r_{y,i}}{{\sqrt {\sum \limits _{i\in I_{x}}r_{x,i}^{2}}}{\sqrt {\sum \limits _{i\in I_{y}}r_{y,i}^{2}}}}}$
El algoritmo de recomendación basado en los N-primeros usuarios identifica los k más similares al usuarios actual usando el modelo de similitud basado en vectores. Después de que los k usuarios más similares se encuentran, sus correspondientes matrices de usuario- elementos se agregan para identificar el conjunto de elementos que se recomiendan. Un método popular para encontrar a los usuarios similares es el, que implementa el en tiempo lineal. Las ventajas de este enfoque incluyen: la interpretación de los resultados, lo cual es un aspecto importante de los sistemas de recomendación, es fácil de crear y utilizar; los nuevos datos se pueden agregar fácilmente y de forma incremental, no es necesario considerar el contenido de los elementos que se recomiendan, y mecanismo escala adecuadamente con elementos revaluados. Hay varias desventajas con este enfoque. En primer lugar, depende de las puntuaciones de las personas. En segundo lugar, su rendimiento disminuye cuando los datos son dispersos, lo cual es frecuente en elementos relacionados con la web. Esto evita la escalabilidad de este enfoque y tiene problemas con grandes conjuntos de datos. A pesar de que puede manejar eficientemente los nuevos usuarios porque cuenta con una estructura de datos, añadiendo nuevos elementos se hace más complicada, ya que la representación general se basa en un espacio vectorial específico. Para ello sería necesario incluir el nuevo elemento y volver a insertar todos los elementos de la estructura.

### Basado en modelo

Los modelos se desarrollan utilizando la minería de datos, algoritmos de aprendizaje automático para encontrar patrones basados en los datos de entrenamiento. Estos se utilizan para realizar predicciones de datos reales. Hay muchos algoritmos de FC basados en modelos. Estos incluyen redes bayesianas, modelos de clustering, modelos de semántica latente tales como la descomposición de valor singular, el análisis semántico latente probabilístico, Multiple Multiplicative Factor, Latent Dirichlet allocation y markov decision process basados en modelos.
Este enfoque tiene un objetivo más holístico para descubrir los factores latentes que explican las evaluaciones observadas. La mayoría de los modelos se basan en técnicas de clasificación o clustering para identificar al usuario basándose en el conjunto de datos de prueba. El número de los parámetros puede reducirse utilizando el análisis de componentes principales. Hay varias ventajas con este paradigma. Maneja los datos esparcidos mejor que los basados en memoria. Esto ayuda con la escalabilidad con grandes conjuntos de datos. Se mejora el rendimiento de la predicción. Da un fundamento intuitivo para las recomendaciones. Las desventajas de este método es el costo de la construcción del modelo. Uno tiene que tener un compromiso entre el rendimiento de la predicción y la escalabilidad. Se puede perder información útil debido a la reducción del modelo. Un número de modelos tienen dificultad para explicar las predicciones.

### Híbridos

Una serie de aplicaciones combina los algoritmos basados en memoria y basado los basados en modelos. Estos superan las limitaciones de los enfoques nativos. Se mejora el rendimiento de predicción. Es importante destacar, que supera los problemas tales como dispersión y pérdida de información. Sin embargo, han aumentado la complejidad y son costosos de implementar.

## Aplicación en la red social

Servicios como Reddit, YouTube y Last.fm son un ejemplo típico de los medios de comunicación basados en filtrado colaborativo. Un escenario de aplicación del filtrado colaborativo es recomendar información interesante o popular, a juzgar por la comunidad. Las cosas que aparecen en la portada de Digg o Reddit puede ser un ejemplo típico, ya que son evaluados por la comunidad. A medida que la diversidad y el tamaño aumentan se puede reflejar mejor el interés promedio de los miembros de la comunidad. Otro aspecto del sistema de filtrado colaborativo es que puede hacer recomendaciones más personalizada analizando información de su actividad pasada o la historia de otros usuarios de gusto similares. Estos recursos se utilizan como perfiles de usuario y ayuda al sitio a recomendar contenidos que se envían a otros usuarios con gustos similares, o que le parezcan interesantes, así como los temas que son evaluados. Cuanto más utilice el sistema, mejor se realiza la recomendación para usted.

### Problemas

El resultado de un sistema de filtrado colaborativo no coincide automáticamente con las propias preferencias. A menos que se logre una buena diversidad de opiniones y la independencia, un punto de vista siempre dominara a otro en una comunidad en particular. Al igual que en el escenario de recomendación personalizado, el usuario nuevo o un nuevo elemento siempre puede causar un problema, ya que no habrá datos suficientes para que el filtrado colaborativo pueda trabajar. Con el fin de hacer recomendaciones precisas, el sistema debe primero aprender las preferencias del usuario con evaluaciones anteriores o realizando evaluaciones. Para un nuevo elemento añadido, el sistema de filtrado colaborativo no sería capaz de recomendarlo hasta que es evaluado por un número sustancial de usuarios.

## Desafíos del filtrado colaborativo
### Escasez de datos

En la práctica, muchos sistemas de recomendación comerciales se basan en conjuntos de datos de gran tamaño. Como resultado, la matriz usuario elemento utilizada para el filtrado colaborativo podría ser muy grande y dispersa, lo que provoca desafíos en la realización de la recomendación. Un problema típico causado por la escasez de datos es el arranque en frío. Como los métodos de filtrado colaborativo recomiendan artículos basados en las preferencias anteriores de los usuarios, los nuevos usuarios necesitan evaluar el suficiente número de elementos para permitir que el sistema pueda recopilar sus preferencias con precisión y por lo tanto proporcionar recomendaciones fiables. Del mismo modo, los elementos nuevos también tienen el mismo problema. Cuando se agregan nuevos elementos al sistema, tienen que ser valorados por un gran número de usuarios antes de que se pueda recomendar a los usuarios que tienen gustos similares a los que calificaron. El problema de un nuevo elemento no afecta a la recomendación basada en contenido, ya que la recomendación de un elemento se basa en su conjunto discreto de cualidades descriptivas más que sus evaluaciones.

### Escalabilidad

Cuando el número de usuarios y elementos aumentan demasiado los algoritmos tradicionales FC sufren serios problemas de escalabilidad. Por ejemplo, con decenas de millones de clientes y millones de elementos, un algoritmo de FC con la complejidad de O(N) ya es demasiado grande. Además, muchos sistemas tienen que reaccionar inmediatamente a los requerimientos en línea y hacer recomendaciones para todos los usuarios, independientemente de sus compras y la historia de las evaluaciones, lo que exige una mayor escalabilidad de un sistema de FC.

### Sinónimos

Sinonimia refiere a la tendencia de un número de elementos iguales o muy similares a tener diferentes nombres o entradas. La mayoría de los sistemas de recomendación son incapaces de descubrir esta asociación latente y por lo tanto el trata a estos productos de manera diferente. Por ejemplo, los elementos aparentemente diferentes "películas infantiles" y "filmes infantiles" se refiere en realidad al mismo elemento. Ciertamente, el grado de variabilidad en el uso descriptivo de términos es mayor que lo que comúnmente se sospecha. La prevalencia de sinónimos disminuye el rendimiento de los sistemas de recomendación de FC. Modelar tópicos (utilizando técnicas como Latent Dirichlet Allocation) podría resolver esto agrupando palabras diferentes pertenecientes a un mismo tema.

### Grey Sheep

La oveja gris (Grey sheep) se refiere a los usuarios cuyas opiniones no están de acuerdo o en desacuerdo con algún grupo de personas y por lo tanto no se benefician del filtrado colaborativo. Las ovejas negras (black sheep) son el grupo con gustos a los que hacer recomendaciones es casi imposible. Aunque se trata de un fallo en el sistema de recomendación, los recomendadores no-electrónicos también tienen grandes problemas en estos casos, las ovejas negras es un fallo aceptable.

### Shilling attacks

En un sistema de recomendación donde todo el mundo puede evaluar, la gente puede dar un montón de opiniones positivas para sus propios artículos y clasificaciones negativas para sus competidores. A menudo es necesario que los sistemas de filtrado colaborativo introduzcan precauciones para impedir este tipo de manipulaciones.

### Diversidad

Con los Filtros colaborativos se espera que aumente la diversidad porque nos ayudan a descubrir nuevos productos entre opciones múltiples. Algunos de los algoritmos, sin embargo, sin querer pueden hacer lo contrario. Como los filtros colaborativos recomiendan productos basados en las ventas o calificaciones, por lo general no pueden recomendar productos con escasos datos históricos. Esto crea un efecto que ayuda a los productos populares, dando lugar a una menor diversidad. Un estudio Wharton detalla este fenómeno y varias ideas que pueden promover la diversidad en la recomendación de los sistemas de filtrado colaborativo.

## Innovaciones

Nuevos algoritmos se han desarrollado para la FC como resultado del premio Netflix. Sistemas de filtrado colaborativo cruzados donde los perfiles de usuario son combinados a través de múltiples sistemas de recomendación preservando la privacidad. Filtrados colaborativos robustos, donde la recomendación es estable frente a esfuerzos de manipulación. Esta línea de investigación está todavía en activo y no está resuelta completamente.