Utente:MaurizioFD/Matrix factorization (sistema di raccomandazione)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

La Matrix factorization (MF), o fattorizzazione di matrice, è una classe di algoritmi collaborative filtering usata nei sistemi di raccomandazione. Gli algoritmi di matrix factorization operano decomponendo la matrice di interazioni user-item nel prodotto di due matrici rettangolari dalla dimensionalità inferiore. [1] Questa famiglia di metodi divenne nota durante la Netflix Prize challenge, grazie alla sua efficacia dimostrata da Simon Funk in un post sul suo blog datato 2006.[2]

Tecniche[modifica | modifica wikitesto]

L'idea alla base della matrix factorization è di rappresentare utenti e item in uno spazio latente di dimensionalità inferiore. Dall'iniziale proposta di Simon Funk risalente al 2006 una moltitudine di varianti sono state proposte. Alcune delle più note e semplici sono illustrate nelle sezioni seguenti.

Funk SVD[modifica | modifica wikitesto]

L'algoritmo originale proposto da Simon Funk nel suo blog post fattorizzava la matrice dei rating user-item come il prodotto di due matrici rettangolari dalla dimensionalità inferiore, la prima ha una riga per ogni utente mentre la seconda una colonna per ogni item. La riga associata ad uno specifico utente e la colonna associata ad uno specifico item è detta contenere i suoi fattori latenti.[3] Si noti che, nonostante il nome, FunkSVD non utilizza la decomposizione ai valori singolari SVD. I rating predetti possono essere calcolati come  , dove è la matrice di interazioni utente-item, contiene i fattori latenti dell'utente e  i fattori latenti dell'item.

Nello specifico, la predizione del rating che l'utente u darà all' item i è calcolata come:

E' possibile variare il potere espressivo del modello cambiando il numero di fattori latenti. E' stato dimostrato [4] che una matrix factorization con un solo fattore latente è equivalente ad un algoritmo most popular o top popular  (es. raccomando gli item più popolari, senza alcuna personalizzazione). Aumentar il numero di fattori latenti permette di migliorare la personalizzazione, quindi la qualità delle raccomandazioni, finchè il loro numero diventerà troppo alto e il modello incorrerà in overfitting. Una strategia comune per evitare l'overfitting è di aggiungere dei termini di regolarizzazione alla funzione obiettivo. FunkSVD fu sviluppato per la predizione di rating, pertanto rappresenta le interazioni utente-item come valori numerici.

Nel complesso, FunkSVD minimizza la funzione obiettivo seguente:

Dove  è la norma frobenius mentre le altre norme possono essere frobenius o meno a seconda di cosa funzioni meglio per quello specifico contesto. [5]

SVD++[modifica | modifica wikitesto]

Sebbene FunkSVD riesca a fornire raccomandazioni di buona qualità, la sua capacità di gestire solo interazioni user-item esplicite numeriche costituisce una limitazione. I sistemi di raccomandazione utilizzati al giorno d'oggi devono riuscire a sfruttare tutti i tipi di interazione, sia espliciti (es. ratings numerici) che impliciti (es. likes, acquisti, preferiti). SVD++ fu sviluppato per prendere in considerazione anche interazioni di tipo implicito.[6] [7] Inoltre rispetto a  FunkSVD, SVD++ considera anche il bias di item e utente.

Nello specifico, la predizione del rating che l'utente u darà all' item i è calcolata come:

SVD++ ha però alcuni svantaggi, il principale è il non essere model-based, ciò significa che, se un nuovo utente si iscrive, l'algoritmo non è in grado di raccomandargli nulla a meno che l'intero modello sia riaddestrato. Nonostante il sistema possa aver raccolto alcune interazioni per quell'utente, i suoi fattori latenti non sono comunque disponibili e quindi nessuna raccomandazione può essere calcolata. Ciò è un esempio di cold-start, ossia il sistema di raccomandazione non riesce a gestire efficacemente nuovi item o utenti, pertanto sono necessarie delle misure ad-hoc. [8]

Una possibilità per affrontare il cold start è di modificare SVD++ in modo che diventi model-based, affinchè possa gestire più agevolmente nuovi item o utenti.

Come menzionato in precedenza in SVD++ non sono disponibili i fattori latenti per nuovi utenti, pertanto è necessario rappresentarli in modo diverso. I fattori latenti dell'utente rappresentano la sua preferenza per i corrispondenti fattori latenti dell'item, pertanto i fattori latenti dell'utente possono essere stimati in base alle sue passate interazioni. Se il sistema è in grado di raccogliere delle interazioni, allora è possibile stimare i suoi fattori latenti. Si noti che questo non risolve completamente il problema del cold-start, in quanto il sistema di raccomandazione comunque richiede delle interazioni per i nuovi utenti, ma almeno non è più necessario riaddestrare l'intero modello ogni volta. E' stato dimostrato che questa formulazione è quasi equivalente ad un modello di tipo SLIM[9], ossia un recommender item-item model based.

In questa formulazione, il recommender item-item recommender corrispondente sarebbe . Pertanto la similarity matrix S è simmetrica.

Asymmetric SVD[modifica | modifica wikitesto]

Asymmetric SVD cerca di conservare i vantaggi di SVD++ pur essendo model based, quindi in grado di gestire nuovi utenti purchè essi abbiano almeno qualche interazione.  Rispetto alla versione model based di SVD++ la matrice di fattori latenti H è sostituita da Q, in quanto è diverso quanto si vuole rappresentare, la preferenza dell'utente come funzione dei suoi rating. [10]

Nello specifico, la predizione del rating che l'utente u darà all' item i è calcolata come:

In questa formulazione, il recommender item-item recommender corrispondente è . Poichè le matrici Q e W sono diverse, la matrice di similarità S sarà asimmetrica, da ciò deriva il nome del modello.

Matrix factorization ibrido[modifica | modifica wikitesto]

Recentemente molti altri modelli di fattorizzazione sono stati sviluppati per sfruttare il sempre crescente volume e varietà di interazioni e casi d'uso. Gli algoritmi ibridi di matrix factorization sono in grado di fondere interazioni implicite ed esplicite [11] o informazioni di tipo collaborativo e content [12] [13] [14]

Note[modifica | modifica wikitesto]

  1. ^ Matrix Factorization Techniques for Recommender Systems, in Computer, vol. 42, n. 8, August 2009, pp. 30–37, DOI:10.1109/MC.2009.263.
  2. ^ FunkSVD proposal, su sifter.org.
  3. ^ Regression-based latent factor models, ACM, 28 June 2009, pp. 19–28, DOI:10.1145/1557019.1557029.
  4. ^ (EN) What Recommenders Recommend – An Analysis of Accuracy, Popularity, and Sales Diversity Effects, in User Modeling, Adaptation, and Personalization, Springer Berlin Heidelberg, 2013, pp. 25–37, DOI:10.1007/978-3-642-38844-6_3.
  5. ^ Improving regularized singular value decomposition for collaborative filtering (PDF), in Proceedings of KDD cup and workshop, 2007.
  6. ^ (EN) Distributed Design and Implementation of SVD++ Algorithm for E-commerce Personalized Recommender System, in Communications in Computer and Information Science, Springer Singapore, 2015, pp. 30–44, DOI:10.1007/978-981-10-0421-6_4.
  7. ^ Users' brands preference based on SVD++ in recommender systems, in 2014 IEEE Workshop on Advanced Research and Technology in Industry Applications (WARTIA), IEEE, September 2014, DOI:10.1109/wartia.2014.6976489.
  8. ^ Evaluating recommender behavior for new users, ACM, 6 October 2014, pp. 121–128, DOI:10.1145/2645710.2645742.
  9. ^ CSLIM: contextual SLIM recommendation algorithms, ACM, 6 October 2014, pp. 301–304, DOI:10.1145/2645710.2645756.
  10. ^ Understanding and improving relational matrix factorization in recommender systems, ACM, 12 October 2013, pp. 41–48, DOI:10.1145/2507157.2507178.
  11. ^ HYBRID MATRIX FACTORIZATION FOR RECOMMENDER SYSTEMS IN SOCIAL NETWORKS, in Neural Network World, vol. 26, n. 6, 2016, pp. 559–569, DOI:10.14311/NNW.2016.26.032.
  12. ^ Kernelized Probabilistic Matrix Factorization: Exploiting Graphs and Side Information, in Proceedings of the 2012 SIAM International Conference on Data Mining, Society for Industrial and Applied Mathematics, 26 April 2012, pp. 403–414, DOI:10.1137/1.9781611972825.35.
  13. ^ Incorporating Side Information in Probabilistic Matrix Factorization with Gaussian Processes, in arXiv:1003.4944 [cs, stat], 25 March 2010.
  14. ^ Matrix co-factorization for recommendation with rich side information and implicit feedback, ACM, 27 October 2011, pp. 65–69, DOI:10.1145/2039320.2039330.

Vedi anche[modifica | modifica wikitesto]

Categoria:Sistemi informativi