Regressione lineare e metodi per il suo ripristino

Regressione lineare e metodi per il suo ripristino
Fonte: xkcd

La regressione lineare è uno degli algoritmi fondamentali per molte aree legate all'analisi dei dati. La ragione è ovvia: è un algoritmo molto semplice e comprensibile, che ne facilita l'ampio utilizzo da decenni, se non da secoli. L'idea è che si presume una dipendenza lineare di una variabile da un insieme di altre variabili, e poi si cerca di ripristinare questa dipendenza.

Ma in questo articolo non si parlerà dell'applicazione della regressione lineare per risolvere problemi pratici. Verranno esaminate caratteristiche interessanti dell'implementazione di algoritmi distribuiti per il suo ripristino, con cui ci siamo imbattuti durante la scrittura di un modulo di machine learning in Apache Ignite. Un po' di matematica di base, nozioni fondamentali di machine learning e calcolo distribuito aiuteranno a comprendere come ripristinare la regressione lineare, anche quando i dati sono distribuiti tra migliaia di nodi.

Di cosa si tratta?

La nostra sfida è ricostruire una dipendenza lineare. I dati in ingresso consistono in un insieme di vettori di variabili presumibilmente indipendenti, ciascuno dei quali è associato a un certo valore di una variabile dipendente. Questi dati possono essere rappresentati sotto forma di due matrici:

Regressione lineare e metodi per il suo ripristino

Ora, dato che si presume una dipendenza, e inoltre lineare, esprimiamo la nostra ipotesi come un prodotto di matrici (per semplificare la notazione, si presume che il termine costante dell'equazione sia nascosto da Regressione lineare e metodi per il suo ripristino, e l'ultima colonna della matrice Regressione lineare e metodi per il suo ripristino contiene delle unità):

Regressione lineare e metodi per il suo ripristino

Ricorda molto un sistema di equazioni lineari, vero? Sembra così, ma è probabile che tale sistema di equazioni non abbia soluzioni. La causa è il rumore, presente praticamente in tutti i dati reali. Inoltre, potrebbe mancare una dipendenza lineare a cui si possa tentare di ovviare introducendo variabili aggiuntive che dipendono in modo non lineare dalle originali. Consideriamo il seguente esempio:
Regressione lineare e metodi per il suo ripristino
Fonte: Wikipedia

Questo è un semplice esempio di regressione lineare che dimostra la dipendenza di una variabile (sull'asse Regressione lineare e metodi per il suo ripristino) da un'altra variabile (sull'asse Regressione lineare e metodi per il suo ripristino). Affinché il sistema di equazioni lineari corrispondente a questo esempio abbia una soluzione, tutti i punti devono trovarsi esattamente sulla stessa retta. Ma non è così. Non si trovano sulla stessa retta proprio a causa del rumore (o perché l'ipotesi di una dipendenza lineare era errata). Pertanto, per ripristinare la dipendenza lineare dai dati reali, di solito è necessario introdurre un'altra ipotesi: i dati in ingresso contengono rumore e questo rumore ha distribuzione normale. Si possono fare ipotesi anche su altri tipi di distribuzione del rumore, ma nella stragrande maggioranza dei casi si considera proprio la distribuzione normale, di cui parleremo in seguito.

Metodo di massima verosimiglianza

Quindi, abbiamo ipotizzato la presenza di rumore casuale normalmente distribuito. Come comportarsi in questa situazione? A questo scopo, in matematica esiste e viene ampiamente utilizzato metodo di massima verosimiglianza. In breve, esso consiste nella scelta di una funzione di verosimiglianza e nella successiva massimizzazione.

Torniamo all'analisi della dipendenza lineare basata su dati con rumore normale. Notiamo che la dipendenza lineare prevista è l'aspettativa matematica Regressione lineare e metodi per il suo ripristino di una distribuzione normale esistente. Allo stesso tempo, la probabilità che Regressione lineare e metodi per il suo ripristino prenda un certo valore, a condizione che siano osservabili Regressione lineare e metodi per il suo ripristino, appare nel modo seguente:

Regressione lineare e metodi per il suo ripristino

Sostituiamo ora Regressione lineare e metodi per il suo ripristino e Regressione lineare e metodi per il suo ripristino le variabili di cui abbiamo bisogno:

Regressione lineare e metodi per il suo ripristino

Restiamo solo da trovare il vettore Regressione lineare e metodi per il suo ripristino, per cui questa probabilità è massima. Per massimizzare una tale funzione, è conveniente prima logaritmarla (il logaritmo della funzione raggiungerà il massimo nello stesso punto della funzione stessa):

Regressione lineare e metodi per il suo ripristino

Il che, a sua volta, si riduce a minimizzare la seguente funzione:

Regressione lineare e metodi per il suo ripristino

A proposito, questo è conosciuto come il metodo dei minimi quadrati. Spesso tutte le considerazioni sopra citate vengono trascurate e si utilizza semplicemente questo metodo.

Decomposizione QR

Il minimo della funzione sopra citata può essere trovato individuando il punto in cui il gradiente di questa funzione è zero. E il gradiente verrà scritto come segue:

Regressione lineare e metodi per il suo ripristino

Decomposizione QR è un metodo matriciale per risolvere il problema della minimizzazione utilizzato nel metodo dei minimi quadrati. Pertanto, riscriveremo l'equazione in forma matriciale:

Regressione lineare e metodi per il suo ripristino

Quindi, decomponiamo la matrice Regressione lineare e metodi per il suo ripristino in matrici Regressione lineare e metodi per il suo ripristino e Regressione lineare e metodi per il suo ripristino e eseguiamo una serie di trasformazioni (l'algoritmo di decomposizione QR non verrà trattato qui, solo il suo utilizzo rispetto al problema proposto):

Regressione lineare e metodi per il suo ripristino

La matrice Regressione lineare e metodi per il suo ripristino è ortogonale. Questo ci permette di eliminare il prodotto di Regressione lineare e metodi per il suo ripristino:

Regressione lineare e metodi per il suo ripristino

E se sostituiamo Regressione lineare e metodi per il suo ripristino con Regressione lineare e metodi per il suo ripristino, otterremo Regressione lineare e metodi per il suo ripristino. Considerando che Regressione lineare e metodi per il suo ripristino è una matrice triangolare superiore, appare in questo modo:

Regressione lineare e metodi per il suo ripristino

Questo può essere risolto mediante sostituzione. L'elemento Regressione lineare e metodi per il suo ripristino si trova come Regressione lineare e metodi per il suo ripristino, elemento precedente Regressione lineare e metodi per il suo ripristino si trova come Regressione lineare e metodi per il suo ripristino e così via.

Vale la pena notare che la complessità dell'algoritmo risultante, grazie all'utilizzo della decomposizione QR, è Regressione lineare e metodi per il suo ripristino. Tuttavia, nonostante l'operazione di moltiplicazione delle matrici si presti bene alla parallelizzazione, non è possibile scrivere una versione distribuita efficace di questo algoritmo.

Discesa del gradiente

Parlando della minimizzazione di una certa funzione, è sempre utile ricordare il metodo del (gradiant descent) stocastico. Questo è un metodo semplice ed efficace di minimizzazione, basato sul calcolo iterativo del gradiente della funzione in un punto e sul successivo spostamento in direzione opposta al gradiente. Ogni passo avvicina la soluzione al minimo. Il gradiente rimane lo stesso:

Regressione lineare e metodi per il suo ripristino

Inoltre, questo metodo si presta bene alla parallelizzazione e alla distribuzione grazie alle proprietà lineari dell'operatore gradiente. Notiamo che nella formula sopra menzionata, sotto il segno di somma, ci sono termini indipendenti. In altre parole, possiamo calcolare il gradiente in modo indipendente per tutti gli indici. Regressione lineare e metodi per il suo ripristino da primo a Regressione lineare e metodi per il suo ripristino, parallelamente, possiamo calcolare il gradiente per gli indici da Regressione lineare e metodi per il suo ripristino fino a Regressione lineare e metodi per il suo ripristino. Poi sommiamo i gradienti ottenuti. Il risultato della somma sarà lo stesso come se avessimo calcolato direttamente il gradiente per gli indici da primo a Regressione lineare e metodi per il suo ripristino. Pertanto, se i dati sono distribuiti tra più parti, il gradiente può essere calcolato indipendentemente su ogni parte, e poi i risultati di questi calcoli possono essere sommati per ottenere il risultato finale:

Regressione lineare e metodi per il suo ripristino

Dal punto di vista dell'implementazione, questo rientra nella paradigmaticità MapReduce. Ad ogni passo della discesa del gradiente, un compito per il calcolo del gradiente viene inviato a ciascun nodo di dati, quindi i gradienti calcolati vengono raccolti insieme e il risultato della loro somma è utilizzato per migliorare il risultato.

Nonostante la semplicità di implementazione e la possibilità di esecuzione nella paradigmaticità MapReduce, la discesa del gradiente ha anche i suoi svantaggi. In particolare, il numero di passaggi necessari per raggiungere la convergenza è notevolmente maggiore rispetto ad altri metodi più specializzati.

LSQR

LSQR è un altro metodo per risolvere il problema, adatto sia per il recupero della regressione lineare che per la risoluzione di sistemi di equazioni lineari. La sua principale caratteristica è che combina i vantaggi dei metodi matriciali e dell'approccio iterativo. Le implementazioni di questo metodo possono essere trovate sia nelle librerie SciPy, sia in MATLAB. Non verrà fornita una descrizione di questo metodo (può essere trovata nell'articolo LSQR: An algorithm for sparse linear equations and sparse least squares). Invece, verrà mostrato un approccio che consente di adattare LSQR per l'esecuzione in un ambiente distribuito.

Alla base del metodo LSQR c'è la procedura di bidiagonalizzazione. Si tratta di una procedura iterativa, ogni iterazione consiste nei seguenti passi:
Regressione lineare e metodi per il suo ripristino

Ma se si considera che la matrice Regressione lineare e metodi per il suo ripristino è partizionata orizzontalmente, allora ogni iterazione può essere rappresentata come due passi di MapReduce. In questo modo si riesce a minimizzare il trasferimento di dati durante ciascuna delle iterazioni (solo vettori della lunghezza pari al numero di incognite):

Regressione lineare e metodi per il suo ripristino

È proprio questo approccio che viene usato nell'implementazione della regressione lineare in Apache Ignite ML.

Conclusione

Esistono molti algoritmi per la regressione lineare, ma non tutti possono essere applicati in qualsiasi condizione. Ad esempio, la decomposizione QR è particolarmente adatta per risolvere con precisione piccole quantità di dati. Il metodo del gradiente è facilmente implementabile e consente di trovare rapidamente una soluzione approssimativa. LSQR combina le migliori proprietà dei due algoritmi precedenti, poiché può essere distribuito, converge più rapidamente rispetto al metodo del gradiente e consente un'interruzione anticipata dell'algoritmo, a differenza della decomposizione QR per trovare una soluzione approssimativa.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster