# Sistema de recomanació

Els sistemes de recomanació són sistemes intel·ligents que proporcionen als usuaris un seguit de suggeriments personalitzats (recomanacions) sobre un determinat tipus d'elements (ítems) que poden interessar a l'usuari basant-se en les preferències que ha expressat de forma implícita o explícita.
Així doncs, dona suport a l'usuari a l'hora de prendre decisions mentre interactua amb una massa important d'informació, emprant diversos mètodes per fer aquesta tria automàtica. De manera que permeten que a l'usuari li arribi allò que li interessa de manera més ràpida i eficaç.

## Motivacions

Un dels principals reptes que avui dia han d'afrontar els sistemes d'informació és la gestió eficaç del gran volum de documents que emmagatzemen per poder facilitar l'accés a la informació i a recursos que satisfacin les seves necessitats d'una manera senzilla i àgil. Aquesta necessitat es torna més apressant en una societat com l'actual on el nivell d'exigència dels usuaris és cada vegada major.
Tradicionalment, en l'àmbit de les biblioteques el problema de la sobrecàrrega d'informació s'ha abordat adoptant diferents mesures, com per exemple la creació de serveis de difusió selectiva d'informació (DSI), en els quals, d'acord amb el perfil dels usuaris subscrits al servei, es generen periòdicament (o a petició del mateix usuari) una sèrie d'alertes en les quals se'ls notifica de l'existència de recursos que s'adeqüen als seus interessos.
La Web, encara que presenta característiques pròpies que la diferencien clarament de les biblioteques, pateix, en essència, el mateix problema i els esforços per atenuar-ho se centren en l'aplicació de solucions similars, com és el cas dels sistemes de filtratge d'informació (també coneguts com a sistemes de recomanació). De fet, els sistemes de recomanació podrien considerar-se sistemes de DSI aplicats a la Web però, lògicament, amb unes capacitats de filtratge infinitament més potents i sofisticades. Aquests sistemes apliquen tècniques de filtratge d'informació que faciliten l'accés dels usuaris a la informació que necessiten. En dominis textuals, els sistemes de filtratge avaluen i garbellen els recursos disponibles en la Web (normalment en format HTML o XML) bàsicament per assistir als usuaris en tasques de recuperació d'informació (principalment mitjançant l'ús d'agents de filtratge), encara que també s'utilitzen per predir la valoració dels usuaris sobre ítems que encara no han avaluat.
L'origen d'aquest tipus de sistemes es remunta a principis de la dècada dels 90 del passat segle, quan comencen a sorgir dins dels serveis de newsgroups (grups de notícies) serveis de filtratge de notícies que permetien a la seva comunitat d'usuaris accedir exclusivament a aquelles que potencialment podien ser del seu interès.
En l'actualitat els sistemes de recomanació han evolucionat i és possible trobar-los en diversos àmbits d'aplicació com en el comerç electrònic, on s'han convertit en una eina fonamental per als proveïdors en línia o en els serveis d'informació científica.
No obstant això, en cada domini es presenten diferents problemes als quals cal donar diferents solucions. La necessària capacitat d'evolució ha implicat que els sistemes de recomanació s'hagin diversificat. Els sistemes de recomanació són la peça clau de les xarxes socials i de la indústria de l'entreteniment.

## Tipus de sistemes de recomanació

Els sistemes de recomanació necessiten principalment dades de l'usuari perquè les recomanacions siguin encertades. Se solen classificar per si utilitzen preferències explícites, implícites o una combinació d'ambdues per calcular les recomanacions:

### Informació explícita

Es considera que un sistema de recomanació utilitza preferències explícites, quan l'usuari expressa de forma clara les seves preferències conscientment en el perfil, sent una tècnica molt potent en la qualitat d'informació que s'obté.
Per exemple, el cas de valorar un contingut (on la valoració consisteix a donar un valor numèric dins d'un rang definit), preguntes personals i socials, etc.
Alguns exemples de recol·lecció de dades de forma explícita són:
* Sol·licitar a l'usuari que ponderi basant-se en una escala proporcionada, algun tema en particular.
* Sol·licitar a l'usuari que ponderi un conjunt de temes d'una llista de temes favorits.
* Presentar a l'usuari dos temes, i sol·licitar que en seleccioni un d'ells.
* Sol·licitar a l'usuari que generi una llista de temes amb les seves preferències.
* Com la informació s'obté directament des de l'usuari, es redueix el marge d'error. Tot i així, aquestes tècniques requereixen l'atenció de l'usuari, per tant, la interrupció de la seva activitat habitual en l'aplicació, cosa que pot resultar un inconvenient.

### Informació implícita

Sistemes que dedueixen les preferències a partir del comportament de l'usuari i del seu historial, així permetent que en la majoria dels casos no sigui necessari demanar a l'usuari gran quantitat d'informació sobre les seves preferències perquè pugui ser recomanat. Solen ser els preferits, ja que tenen un impacte molt reduït o inexistent en la interacció habitual de l'usuari amb l'aplicació.
Per exemple, el passat d'usuaris amb perfil semblant al subjecte en qüestió, sistemes d'aprenentatge, etc.
Aquestes tècniques requereixen un grau d'interpretació per part de l'expert per entendre els objectius reals de l'usuari i per tant, es genera un possible error que afectarà la creació dels perfils d'usuari. Alguns exemples de recol·lecció de dades de forma implícita són:
* Guardar un registre dels temes que l'usuari ha vist a una botiga online.
* Analitzar el nombre de visites que rep un article.
* Guardar un registre dels articles que l'usuari ha seleccionat.
* Obtenir un llistat dels articles que l'usuari ha seleccionat o vist al seu ordinador.
* Analitzar les xarxes socials a les quals l'usuari pertany, i d'aquesta forma es poden esbrinar els seus gustos i preferències.
En general, els sistemes de recomanació combinen aquestes preferències per construir els perfils d'usuari, utilitzant inicialment mètodes explícits per obtenir la informació bàsica del perfil, i a mesura que l'usuari interacciona amb el sistema de recomanació, utilitzar preferències implícites amb la finalitat de refinar el perfil inicial i millorar les seves prediccions.
La forma més coneguda de classificar als sistemes de recomanació és segons la metodologia que utilitzen per resoldre el problema de la recomanació. En la literatura trobem diferents metodologies: basada en el contingut, basada en coneixement, en filtre cooperatiu, en mètodes demogràfics i finalment la metodologia híbrida, basada en la combinació de les anteriors.

## Mètodes de recomanació

Per dur a terme la cerca idònia, el perfil de l'usuari és contrastat amb les característiques dels ítems. Hi ha diversos mètodes:

### Sistemes de recomanació basats en contingut

Els sistemes basats en contingut, consisteixen en la recerca d'objectes basant-se en el coneixement que es té sobre les valoracions de l'usuari, així recomanant ítems que s'adaptin millor a les seves preferències, sent similars, de manera que li puguin agradar o interessar.
Utilitza tècniques d'aprenentatge tal com els Decision Trees, els Neural Networks o les representacions basades en vectors.
Avantatjes
* Fa recomanacions per continguts i no per opinions subjectives d'altres usuaris.
* El sistema pot generar explicacions sobre les recomanacions que ha fet sobre la base de l'historial de l'usuari.
* No hi ha cap mena de dispersió, ja que el modelat de la informació està present en les característiques del document i no necessiten proveir-les altres usuaris.
Problemes
* Arrencada en fred pels usuaris.
* La qualitat de la recomandació depèn de la mida de l'historial de valoracions.
* Sobre aprenentatje (resultats molt similars a la cerca) - Absència de serendipitat
* Sobre especialització, ón l'usuari està limitat al fet que li recomanin ítems similars als que ell ha recomanat.
* Subjectivitat dels continguts, és a dir, dificultat als dominis amb contingut difícil d'analitzar (àudios, gràfics, imatges, video…)
* Problemes d'usuari nou, on l'usuari ha de valorar un nombre suficient d'ítems perquè el sistema pugui realment entendre les seves preferències.
* Representació del perfil d'ítem, on per cada ítem s'extreuen certes característiques sobre les quals s'avalua la similitud.
* Efecte Portfolio, es dona en dominis com en recomanació de notícies, ja que és possible descartar notícies que poden ser molt similars a les prèvies, presentant al mateix temps fets nous i importants.
* Escalabilitat vs. plasticitat: Difícil adaptació del sistema als canvis dins el perfil de l'usuari fins no haver recol·lectat un nombre suficient de ratings (classificacions) actualitzades.
* Tasca onerosa (pesada) de valorar.

### Sistemes de recomanació basats en filtratge col·laboratiu

Els sistemes de recomanació basats en el filtratge col·laboratiu són aquells en els que les recomanacions es realitzen basant-se únicament en els termes de similitud entre els usuaris. Aquesta similitud la determinarà el perfil de cada usuari. Els usuaris d'un sistema col·laboratiu comparteixen les seves valoracions i opinions respecte als ítems que coneixen.
La base teòrica d'aquests sistemes de recomanació és bastant senzilla: es formen grups d'usuaris més propers (aquells que els seus perfils són més semblants) i se li recomanen aquells objectes que són més similars a ell.
Shardaham i Maes van distingir tres fases fonamentals en el funcionament d'aquests sistemes:
1. El sistema guarda el perfil de cada usuari amb les seves preferències dins d'una base de dades.
2. Es creen grups d'usuaris amb les característiques semblants mitjançant el grau de similitud entre els usuaris que hi ha a la base de dades.
3. El sistema utilitza la informació obtinguda anteriorment per poder realitzar les recomanacions.
Per la realització d'un bon sistema de recomanació col·laboratiu és necessari utilitzar un bon algoritme de filtratge col·laboratiu. Aquests algoritmes es poden separar en dues categories:

#### Basat en memòria o usuari

Aquests algoritmes utilitzen tota la base de dades per tal de generar una predicció. S'utilitzen tècniques de similitud per trobar les semblances entre una parella d'usuaris. Posteriorment, s'utilitza una sèrie d'algoritmes que combinen les preferències de tots dos per realitzar les prediccions i les recomanacions.
Aquests algoritmes són molt populars i d'èxit a la pràctica però també són els que tenen més problemes d'escassetat i escalabilitat a la base de dades.

#### Basat en el model o element

Aquests algoritmes proporcionen recomanacions d'ítems desenvolupant primer un model de les puntuacions dels usuaris sobre aquests ítems. S'utilitza una aproximació probabilística que calcula el valor esperat d'una predicció de l'usuari donades les seves puntuacions sobre altres ítems.
Avantatges
* Permet recomanar continguts difícils d'analitzar.
* Recomana ítems basats en les preferències de l'usuari.
* Realitza recomanacions vàlides però no esperades, la qual cosa pot ser de gran utilitat.
Problemes
* Dispersió (Sparsity): el baix nombre d'usuaris en relació a la gran quantitat d'informació en el sistema…
* Arrencada en fred: el sistema no podrà obtenir recomanacions fins que l'usuari no tingui un perfil suficientment ampli per poder trobar el seu grup de veïns propers
* Escalabilitat: a mesura que la quantitat d'ítems i usuaris creix, també creix la quantitat de veïns més propers per la determinació d'usuaris similars. Como els càlculs es fan a temps real, el sistema es pot col·lapsar
* Gray sheep: fa referència a aquells usuaris que no es poden relacionar amb cap grup en concret i que, per tant, no beneficien al sistema col·laboratiu
* Sinonímia: es produeix per l'escassetat de qualsevol forma d'interpretació semàntica
* Subjectivitat: respecte a la naturalesa de les classificacions

### Sistemes de recomanació basats en coneixement

Els sistemes de recomanació basats en coneixement pretenen profunditzar en el coneixement dels usuaris i els ítems (majoritàriament de domini complex) per a l'elaboració de les recomanacions que encaixin de forma adequada amb els requisits de l'usuari. És a dir, quan no és suficient establir propietats de l'ítem sinó que s'ha de tenir en compte altres aspectes com l'experiència o les expectatives de l'usuari en el domini a tractar.
Aquests sistemes creen una representació explícita sobre el producte així com les oportunitats que l'envolten, permetent:
* La recomanació d'ítems que satisfan certs requisits de qualitat
* L'explicació del perquè de la recomanació realitzada.
* El suport dels usuaris quan no es pot trobar solució o recomanació adequada per a l'usuari
Avantatges
* Manca del problema d'arrancada en fred, ja que les seves recomanacions no depenen de les valoracions dels usuaris.
* No necessiten emmagatzemar la informació sobre un usuari en particular perquè les similituds entre les preferències dels usuaris són independents les unes de les altres. No obstant l'usuari sí que ha d'informar quines són les seves necessitats.
Problemes
* Requereix un procés d'enginyeria del coneixement.
* Les recomanacions són del tipus estàtic, és a dir, per als mateixos casos, es realitzen les mateixes recomanacions. Per als usuaris que tenen les mateixes necessitats, es realitzen les mateixes recomanacions. Això no ocorre per exemple als sistemes de recomanació de filtre col·laboratiu.

### Sistemes de recomanació demogràfics

Són sistemes de recomanació similars als col·laboratius, però en el càlcul dels veïns propers utilitzen informació demogràfica (edat, sexe, etc.).
Avantatge
* Comparant amb els sistemes de recomanació col·laboratius, els demogràfics no necessiten un llarg historial de valoracions per fer recomanacions a un usuari.
Problemes
* Els mateixos que en els sistemes de recomanació col·laboratius.
* L'usuari pot no sentir-se còmode en proporcionar les seves dades personals.

### Sistemes de recomanació híbrids

El sistema de recomanació híbrid combina dos o més tècniques per a obtenir millors resultats. Així doncs, com a conseqüència s'atenuen els desavantatges de cada un dels sistemes i es combinen els beneficis.
Diferenciem en 7 estratègies d'hibridació (segons Burke 2002), les quals es poden sub agrupar en 3 dissenys generals (Jannach 2012):

#### Paral·lel

Ponderat (weighted): El valor de la recomanació d'un ítem s'obté ponderant els diferents resultats obtinguts pels sistemes de recomanació.
Commutació (switching): El sistema en lloc d'executar totes les estratègies simultàniament, té en compte algun criteri per a commutar entre elles. Quan es compleixen certes condicions el sistema fa ús d'una estratègia, i en cas contrari, recorre a les restants.
Mixt (mixed): Executa més d'un mètode de recomanació simultàniament. Es presenten les diferents recomanacions al mateix moment.

#### Monolitic

Combinació de característiques: En aquest model s'uneixen en un únic conjunt les dades que utilitzen les diferents estratègies i amb aquest nou conjunt s'executa un sol algoritme de recomanació.

#### Pipeline

Cascada: Aquest mètode es divideix en dues etapes. Primer s'executa una de les estratègies de recomanació i obté un primer conjunt de productes candidats per tal d'executar una recomanació final, la qual refina el resultat
Meta-nivell: En aquest mètode el model après per un sistema de recomanació és usat com a font d'entrada per un altre sistema de recomanació. En aquest cas, la contribució del primer sistema de recomanació reemplaça completament la font original de coneixement.

## Avaluació dels Sistemes de Recomanació

En els sistemes de recomanació s'han utilitzat diferents tipus de mètriques per avaluar com d'exactes són les prediccions. Avaluar el rendiment dels algoritmes de recomanació no és fàcil, perquè diferents algoritmes poden ser millors o pitjors depenent de la base de dades escollida. Segons Herlocker, una mètrica per a l'exactitud d'un sistema de recomanació mesura, empíricament, com és de proper l'ordre d'ítems predits per a un usuari del sistema respecte al veritable ordre que faria l'usuari.

### Mètriques d'exactitud predictiva

Són aquelles mètriques que mesuren com de prop estan les puntuacions predites pel sistema respecte a les puntuacions reals de dades per l'usuari. Entre aquestes mètriques destaquen les estadístiques com: l'error mig absolut (MAE per les seves sigles en anglès) i altres mètriques relacionades com l'error mig absolut normalitzat i l'error mig quadrat (Salazar G 2006)

#### Error mig absolut

Mesura la desviació de les recomanacions predites i els valores reals. A menor MAE millor prediu el sistema les avaluacions dels usuaris.
Fórmula utilitzada:
MAE = $\sum _{i=1}^{N}{\frac {|p_{i}-q_{i}|}{N}},$

#### Error mig absolut normalitzat

Per tindre en compte el pes de l'error al valor de la variable mitjana, es normalitza el valor absolut, tenint en compte en valor absolut mig normalitzat.
Fórmula utilitzada:
MAE = $\sum _{i=1}^{N}{\frac {(|p_{i}-q_{i}|)/q_{i}}{N}},$

#### Error mig quadràtic

Utilitzat pel càlcul de precisió. Proporciona la mitja de les diferències en mitjana entre els valors pronosticats i els observats.
Fórmula utilitzada:
EMC = $\sum _{i=1}^{N}{\sqrt {\frac {(|p_{i}-q_{i}|)^{2}}{N}}},$

## Motors de cerca i sistemes de recomanació

Tenen com a principal objectiu trobar allò que l'usuari busca, però també cal destacar que hi ha diferències significatives entre ambdós.
Per una banda, un motor de cerca està orientat a oferir respostes concretes a les necessitats puntuals dels usuaris. Aquestes necessitats s'expressen en forma de consulta de text, i a partir d'aquestes consultes, els cercadors són capaços d'oferir continguts que estiguin relacionats amb les necessitats expressades a la consulta. D'aquesta manera, s'ajuda als usuaris a solucionar, almenys en part, el creixent problema de sobresaturació d'informació al que ens veiem sotmesos avui dia. Els cercadors més populars acostumen a oferir serveis addicionals a la cerca d'enllaços web, com per exemple la cerca de continguts audiovisuals, mapes o per exemple la traducció de texts.
D'altra banda, un sistema de recomanació s'encarrega d'obtenir informació de l'usuari de la forma més transparent possible, analitzant el seu comportament i sent capaç de detectar articles, productes o continguts que resultin interessants per l'usuari. Aquest, proporciona la informació necessària al sistema sense que pràcticament se n'adoni. Aquests sistemes poden i acostumen a utilitzar-se per enviar publicitat, i és per això que estan despertant l'interès de multitud d'empreses.

### Futur dels sistemes de recomanació

Actualment, l'evolució d'aquests sistemes va encaminada a la fusió entre cercadors i recomanadors. Per una banda, als motors de cerca, la interacció (usuari/servei), es produeix sobretot de l'usuari cap al servei. És l'usuari el que introdueix la informació a cercar, el cercador es limita a oferir el tipus d'informació seleccionada per l'usuari.
Per contra, als sistemes de recomanació, la interacció (usuari/servei), es produeix del servei cap a l'usuari en major mesura. L'usuari es registra i no introdueix més informació de forma explícita.
Es pot dir que aquests sistemes tenen poca interactivitat. La tendència actual és aprofitar els avantatges dels dos sistemes per tal d'oferir una major interactivitat a on la interacció (usuari/servei) es du a terme de forma bidireccional. Un clar exemple d'aquesta tendència és el creixent nombre de xarxes socials que hi ha hagut en els últims anys, aquestes utilitzen motors de cerca i sistemes de recomanació conjuntament. En un futur pròxim, gràcies a l'espectacular creixement d'Internet, s'espera que aquests sistemes s'acabin integrant amb els navegadors web, i que aquests alhora s'integrin amb els sistemes operatius existents per tal d'oferir un servei únic.

## Exemples

Alguns exemples de llocs web que utilitzen els sistemes de recomanació com a eina principal:
* Amazon (Pàgina per comprar per Internet, inclou recomanacions de productes).
* Amie Street (Serveis de música).
* Baynote (Servei de recomanació vía web).
* ChoiceStream (Sistema de recomanació de productes).
* Collarity (Plataforma multimedia de recomanció).
* Digg.com (Servei web).
* Daily me (Sistema de recomanació de notícies).
* eBay (Pàgina de compravenda per Internet, inclou recomanacions de productes).
* Heeii (Servei web).
* Hulu (Sistema de recomanació de pel·lícules, series i TV en general).
* iLike (Serveis de música).
* Internet Movie Database (Plataforma de recomanació de pel·lícules).
* iTunes (Serveis de música).
* Last.fm (Sistema de música).
* Loomia (Motor de contingut).
* Librofilia (Sistema de llibres online).
* LibraryThing (Sistema de llibres en línia).
* Musicmatch (Servei de música).
* MovieFinder (Recomanació de pel·lícules).
* Movielens (Recomanació de pel·lícules).
* Strands (Tecnologia de recomanació social).
* Netflix (Servei de lloguer de DVD).
* Pandora (Servei de música).
* Reddit (Sistema de recomanació de notícies).
* Slacker (Servei de música).
* StumbleUpon (Servei web) .
* Style Feeder (Cerca personalitzada de compres).
* Facebook (Tecnologia de recomanació social).
* Tuenti (Tecnologia de recomanació social).
* Spotify (Sistema de recomanació de música).
* Stevie (recomanacio de canals socials).

## Referències

* Sistemas de Recomendación - Mengisoft, Ingeniería Informática
* Capítulo 4. Sistemas de Recomendación Arxivat 2014-12-20 a Wayback Machine.
* Sistemas de Recomendación Semánticos. Un análisis del estado de la cuestión - UPF Arxivat 2014-11-07 a Wayback Machine.
* Filtrado Colaborativo y Sistemas de Recomendación - Ingeniería de la Telecomunicación, Madrid Arxivat 2015-11-06 a Wayback Machine.
* SISTEMA DE RECOMENDACIÓN COLABORATIVO BASADO EN ALGORITMOS DE FILTRADO MEJORADOS Arxivat 2013-06-23 a Wayback Machine.
* Sistemas de Recomendación - Universidad Computense de Madrid Arxivat 2013-10-08 a Wayback Machine.
* SR-REJA. SISTEMA DE RECOMENDACIÓN HÍBRIDO. GEORREFERENCIADO Arxivat 2012-06-18 a Wayback Machine.
* Filtros colaborativos y Sistemas de Recomendación
* Personalización y los Sistemas de Recomendación - Universidad de Jaén Arxivat 2014-11-29 a Wayback Machine.
* TESI DE MÀSTER, Sistemas de recomendación para webs de información sobre la salud - UPC Commons
* Evaluación del Sistema de Recomendación de Patrones Pedagógicos (SRPP) en cursos de Geometría Euclidiana
* Desenvolupament d'un motor de recomanació social per una web de tendències - UPC Commons