Matrix factorization

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:

È possibile variare il potere espressivo del modello cambiando il numero di fattori latenti. È stato dimostrato[4] che una matrix factorization con un solo fattore latente è equivalente a un algoritmo most popular o top popular (es. raccomando gli item più popolari, senza alcuna personalizzazione). Aumentare 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. È 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]

Deep-Learning Matrix factorization[modifica | modifica wikitesto]

Negli ultimi anni sono stati proposti un cospicuo numero di algoritmi neurali o basati su deep-learning, alcuni dei quali generalizzano il tradizionale problema di Matrix factorization tramite una architettura neurale non lineare[15]. Sebbene il deep-learning sia stato applicato in molteplici scenari: context-aware, sequence-aware, tagging su social network etc. la sua reale efficacia quando applicato ad un semplice problema di Collaborative filtering è stata messa in dubbio. Una analisi sistematica di pubblicazioni che propongono nuovi algoritmi di deep-learning o neurali applicati ad un problema di raccomandazioni top-k, pubblicati in conferenze di alto livello (SIGIR, KDD, WWW, RecSys), ha mostrato come, mediamente, meno del 40% degli articoli abbia risultati riproducibili, con un minimo del 14% in alcune conferenze. Complessivamente, lo studio identifica 18 articoli, solo 7 dei quali hanno risultati riproducibili e ben 6 di tali algoritmi possono essere superati da tecniche molto più semplici e vecchie, quando ottimizzate correttamente. L'articolo evidenzia diversi potenziali problemi nella ricerca scientifica attuale nel settore dei sistemi di raccomandazione e invita a rafforzare le pratiche sperimentali utilizzate.[16] Osservazioni simili sono state presentate anche nel caso dei sistemi di raccomandazioni basati su sequenze.[17]

Note[modifica | modifica wikitesto]

  1. ^ Yehuda Koren, Robert Bell e Chris Volinsky, Matrix Factorization Techniques for Recommender Systems, in Computer, vol. 42, n. 8, agosto 2009, pp. 30–37, DOI:10.1109/MC.2009.263.
  2. ^ Simon Funk, FunkSVD proposal, su sifter.org.
  3. ^ Deepak Agarwal e Bee-Chung Chen, Regression-based latent factor models, ACM, 28 giugno 2009, pp. 19–28, DOI:10.1145/1557019.1557029.
  4. ^ (EN) Dietmar Jannach, Lukas Lerche, Fatih Gedikli e Geoffray Bonnin, 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. ^ Arkadiusz Paterek, Improving regularized singular value decomposition for collaborative filtering (PDF), in Proceedings of KDD cup and workshop, 2007.
  6. ^ (EN) Jian Cao, Hengkui Hu, Tianyan Luo, Jia Wang, May Huang, Karl Wang, Zhonghai Wu e Xing Zhang, 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. ^ Yancheng Jia, Users' brands preference based on SVD++ in recommender systems, in 2014 IEEE Workshop on Advanced Research and Technology in Industry Applications (WARTIA), IEEE, settembre 2014, DOI:10.1109/wartia.2014.6976489.
  8. ^ Daniel Kluver e Joseph A. Konstan, Evaluating recommender behavior for new users, ACM, 6 ottobre 2014, pp. 121–128, DOI:10.1145/2645710.2645742.
  9. ^ Yong Zheng, Bamshad Mobasher e Robin Burke, CSLIM: contextual SLIM recommendation algorithms, ACM, 6 ottobre 2014, pp. 301–304, DOI:10.1145/2645710.2645756.
  10. ^ Li Pu e Boi Faltings, Understanding and improving relational matrix factorization in recommender systems, ACM, 12 ottobre 2013, pp. 41–48, DOI:10.1145/2507157.2507178.
  11. ^ Changwei Zhao, Suhuan Sun, Linqian Han e Qinke Peng, 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. ^ Tinghui Zhou, Hanhuai Shan, Arindam Banerjee e Guillermo Sapiro, 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 aprile 2012, pp. 403–414, DOI:10.1137/1.9781611972825.35.
  13. ^ Ryan Prescott Adams, George E. Dahl e Iain Murray, Incorporating Side Information in Probabilistic Matrix Factorization with Gaussian Processes, in arXiv:1003.4944 [cs, stat], 25 marzo 2010.
  14. ^ Yi Fang e Luo Si, Matrix co-factorization for recommendation with rich side information and implicit feedback, ACM, 27 ottobre 2011, pp. 65–69, DOI:10.1145/2039320.2039330.
  15. ^ Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu e Tat-Seng Chua, Neural Collaborative Filtering, in Proceedings of the 26th International Conference on World Wide Web, International World Wide Web Conferences Steering Committee, 2017, pp. 173–182, DOI:10.1145/3038912.3052569. URL consultato il 16 ottobre 2019.
  16. ^ Maurizio Ferrari Dacrema, Paolo Cremonesi e Dietmar Jannach, Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches, in Proceedings of the 13th ACM Conference on Recommender Systems, ACM, 2019, pp. 101–109, DOI:10.1145/3298689.3347058. URL consultato il 16 ottobre 2019.
  17. ^ Malte Ludewig, Noemi Mauro, Sara Latifi e Dietmar Jannach, Performance Comparison of Neural and Non-neural Approaches to Session-based Recommendation, in Proceedings of the 13th ACM Conference on Recommender Systems, ACM, 2019, pp. 462–466, DOI:10.1145/3298689.3347041. URL consultato il 16 ottobre 2019.

Voci correlate[modifica | modifica wikitesto]