Come funziona PCA - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come funziona PCA

Principal Component Analysis (PCA) è un algoritmo di apprendimento che riduce la dimensionalità (numero di funzionalità) all'interno di un set di dati pur conservando quante più informazioni possibili.

PCAriduce la dimensionalità trovando un nuovo set di funzionalità chiamate componenti, che sono composte delle caratteristiche originali, ma non sono correlate tra loro. La prima componente rappresenta la maggiore variabilità possibile nei dati, la seconda componente la seconda maggiore variabilità e così via.

Si tratta di un algoritmo di riduzione dimensionale non supervisionata. Nell'apprendimento non supervisionato, le etichette che possono essere associate con gli oggetti nel set di dati di addestramento non verranno utilizzate.

Considerato l'input di una matrice con righe x_1,…,x_n ciascuna con dimensione 1 * d, i dati vengono partizionati in mini-batch di righe e distribuiti tra i nodi di addestramento (worker). Quindi, ogni worker calcola un riepilogo dei propri dati. I riepiloghi dei diversi worker vengono quindi uniti in un'unica soluzione al termine del calcolo.

Modalità

L' SageMaker PCAalgoritmo Amazon utilizza una delle due modalità per calcolare questi riepiloghi, a seconda della situazione:

  • regular (normale): per i set di dati con dati a densità bassa e un numero modesto di osservazioni e caratteristiche.

  • randomized (randomizzata): per i set di dati con un elevato numero di osservazioni e caratteristiche. Questo modo adotta un algoritmo di approssimazione.

Come ultima fase, l'algoritmo esegue la decomposizione dei singoli valori sulla soluzione unificata, dalla quale derivano le componenti principali.

Modalità 1: regular (normale)

I worker calcolano insieme Equation in text-form: \sum x_i^T x_i e Equation in text-form: \sum x_i .

Nota

Poiché Equation in text-form: x_i sono vettori della riga 1 * d, Equation in text-form: x_i^T x_i è una matrice (non un valore scalare). L'utilizzo dei vettori delle righe nel codice permette di ottenere il caching efficiente.

La matrice di covarianza viene calcolata come Equation in text-form: \sum x_i^T x_i - (1/n) (\sum x_i)^T \sum x_i e i relativi vettori delle singole num_components superiori formano il modello.

Nota

Se subtract_mean è False, si evita di calcolare e sottrarre Equation in text-form: \sum x_i .

Utilizza questo algoritmo quando la dimensione d dei vettori è sufficientemente piccola affinché Equation in text-form: d^2 rientri in memoria.

Modalità 2: randomized (randomizzata)

Quando il numero di caratteristiche nel set di dati di input è elevato, si utilizza un metodo di approssimazione del parametro di covarianza. Per ogni mini-batch Equation in text-form: X_t di dimensione b * d, si inizializza in modo casuale una matrice (num_components + extra_components) * b da moltiplicare per ogni mini-batch per creare una matrice (num_components + extra_components) * d. La somma di queste matrici viene calcolata dai lavoratori e i server eseguono le operazioni SVD sulla matrice finale. (num_components + extra_components) * d I vettori delle singole num_components in alto a destra sono l'approssimazione dei vettori singoli superiori della matrice di input.

Consenti Equation in text-form: \ell = num_components + extra_components. Considerato un mini-batch Equation in text-form: X_t di dimensione b * d, il worker disegna una matrice casuale Equation in text-form: H_t di dimensione Equation in text-form: \ell * b . A seconda che l'ambiente utilizzi un GPU o CPU e la dimensione della dimensione, la matrice è una matrice di segni casuali in cui si trova ogni voce +-1 o una FJLT(trasformata rapida di Johnson Lindenstrauss; per informazioni, vedere FJLTTransforms e i documenti di follow-up). Quindi, il worker calcola Equation in text-form: H_t X_t e mantiene Equation in text-form: B = \sum H_t X_t . Il worker mantiene anche Equation in text-form: h^T , la somma delle colonne di Equation in text-form: H_1,..,H_T (dove T è il numero totale di mini-batch) e s, la somma di tutte le righe di input. Dopo l'elaborazione dell'intero shard di dati, il worker invia al server B, h, s e n (il numero di righe di input).

Indica i diversi input al server come Equation in text-form: B^1, h^1, s^1, n^1,… Il server calcola B, h, s, n le somme dei rispettivi input. Quindi, calcola Equation in text-form: C = B – (1/n) h^T s e rileva la relativa decomposizione dei singoli valori. I vettori singoli in alto a destra e i valori singoli di C vengono utilizzati come soluzione approssimativa del problema.