Blog.

Alternating Least Square | ALS Recommender System


Autore
Andrea Provino
Data
Tempo di lettura
2 minuti
Categoria
AI, machine-learning

alternating-least-square-matrix-factorization-data-science-machine-learning-esempio-italiano

Il Alternating Least Square, abbreviato in ALS, è un algoritmo di fattorizzazione di matrice (Matrix Factorization algorithm) per il calcolo distribuito e parallelo.

E’ la soluzione stato dell’arte per problemi di Collaborative Filtering, nell’ambito dei sistemi di raccomandazione (Recommender System).

Procediamo con ordine.

Hai ripassato i termini tecnici per comprendere meglio i sistemi di raccomandazione?

Ottimo.

Devi sapere che nell’ultimo post abbiamo compreso e analizzato il Matrix Factorization, un algoritmo per la risoluzione di data scarsity problem.

Sono sicuro che ti ricorderai il problema in chiusura: la necessità di avere un framework per il calcolo distribuito.

Ecco qui per te, Alternating Least Square

ALS: Alternating Least Square

Questo algoritmo risolve i problemi che emergono dalla gestione di matrici sparse, molto comuni nel campo dei sistemi di raccomandazione in cui i dataset hanno spesso parecchi valori mancanti.

Esaminiamo ora alcune caratteristiche generali di Aternating Least Square.

In contrapposizione al Funk SVD (descritto nel post precedente), facente uso della regolarizzazione L1, ALS ricorre a quella L2.

Per non farsi mancare nulla, ALS minimizza poi due loss function alternativamente:

  • Prima, blocca la matrice user e usa la Discesa del Gradiente sulla quella item
  • Poi, blocca la matrice item e calcola la Discesa del Gradiente sulla matrice user

Concludendo, ALS esegue l’algoritmo di Gradient Descent in parallelo su partizioni multiple del training dataset da un cluster di macchine connesse.

Niente più problemi di scalabilità.

Ottimo risultato.

Così come ogni altro algoritmo di machine learning, anche l’ALS ha il suo set d’iperparametri da ottimizzare, sfruttando tecniche quali hold-out validation o cross-validation.

I più importanti sono tre:

  • maxIter: il numero massimo d’iterazioni da eseguire (default a 10)
  • rank: il numero di fattori latenti del modello (defautl a 10)
  • regParam: il parametro di regolarizzazione per ALS (default a 1.0 => L2 regularization)

Qualora fossi interessato ad approfondire le idee di fondo, ti rimando alla pubblicazione ufficiale.

Qui invece puoi trovare un’implementazione dell’algoritmo sfruttando la libreria di Apache Spark ML

Per il momento è tutto.

Un caldo abbraccio, Andrea.

Taggedmachine learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum