Bagaimana PCA Bekerja - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bagaimana PCA Bekerja

Principal Component Analysis (PCA) adalah algoritma pembelajaran yang mengurangi dimensi (jumlah fitur) dalam kumpulan data sambil tetap mempertahankan informasi sebanyak mungkin.

PCA mengurangi dimensi dengan menemukan serangkaian fitur baru yang disebut komponen, yang merupakan komposit dari fitur asli, tetapi tidak berkorelasi satu sama lain. Komponen pertama menyumbang variabilitas terbesar yang mungkin dalam data, komponen kedua adalah variabilitas terbanyak kedua, dan seterusnya.

Ini adalah algoritma pengurangan dimensi tanpa pengawasan. Dalam pembelajaran tanpa pengawasan, label yang mungkin terkait dengan objek dalam kumpulan data pelatihan tidak digunakan.

Mengingat masukan matriks dengan baris x_1,…,x_n masing-masing dimensi1 * d, data dipartisi menjadi mini-batch baris dan didistribusikan di antara node pelatihan (pekerja). Setiap pekerja kemudian menghitung ringkasan datanya. Ringkasan dari pekerja yang berbeda kemudian disatukan menjadi satu solusi pada akhir perhitungan.

Modus

Algoritma Amazon SageMaker PCA menggunakan salah satu dari dua mode untuk menghitung ringkasan ini, tergantung pada situasinya:

  • reguler: untuk kumpulan data dengan data yang jarang dan jumlah pengamatan dan fitur yang moderat.

  • acak: untuk kumpulan data dengan sejumlah besar pengamatan dan fitur. Mode ini menggunakan algoritma aproksimasi.

Sebagai langkah terakhir algoritma, ia melakukan dekomposisi nilai tunggal pada solusi terpadu, dari mana komponen utama kemudian diturunkan.

Mode 1: Reguler

Para pekerja bersama-sama menghitung keduanya \sum x_i^T x_i dan. \sum x_i

catatan

Karena x_i adalah vektor 1 * d baris, x_i^T x_i adalah matriks (bukan skalar). Menggunakan vektor baris dalam kode memungkinkan kita untuk mendapatkan caching yang efisien.

Matriks kovarians dihitung sebagai \sum x_i^T x_i - (1/n) (\sum x_i)^T \sum x_i , dan vektor num_components tunggal atasnya membentuk model.

catatan

Jika subtract_mean yaFalse, kami menghindari komputasi dan pengurangan \sum x_i .

Gunakan algoritma ini ketika d dimensi vektor cukup kecil sehingga d^2 dapat masuk ke dalam memori.

Mode 2: Acak

Ketika jumlah fitur dalam kumpulan data input besar, kami menggunakan metode untuk memperkirakan metrik kovarians. Untuk setiap mini-batch X_t dimensib * d, kami secara acak menginisialisasi (num_components + extra_components) * b matriks yang kami kalikan dengan setiap mini-batch, untuk membuat matriks. (num_components + extra_components) * d Jumlah matriks ini dihitung oleh pekerja, dan server melakukan SVD pada matriks akhir. (num_components + extra_components) * d Vektor num_components tunggal kanan atasnya adalah perkiraan vektor tunggal atas dari matriks input.

Biarkan \ell = num_components + extra_components. Diberikan kumpulan X_t dimensi minib * d, pekerja menggambar matriks H_t dimensi \ell * b acak. Tergantung pada apakah lingkungan menggunakan GPU atau CPU dan ukuran dimensi, matriks adalah matriks tanda acak di mana setiap entri +-1 atau FJLT (transformasi cepat Johnson Lindenstrauss; untuk informasi, lihat Transformasi FJLT dan makalah tindak lanjut). Pekerja kemudian menghitung H_t X_t dan memelihara B = \sum H_t X_t . Pekerja juga mempertahankan h^T , jumlah kolom H_1,..,H_T (Tmenjadi jumlah total mini-batch), dans, jumlah semua baris input. Setelah memproses seluruh pecahan data, pekerja mengirimkan serverB,, hs, dan n (jumlah baris input).

Menunjukkan input yang berbeda ke server sebagai Server B^1, h^1, s^1, n^1,… menghitungB,, hs, n jumlah input masing-masing. Kemudian menghitung C = B – (1/n) h^T s , dan menemukan dekomposisi nilai tunggalnya. Vektor tunggal kanan atas dan nilai tunggal C digunakan sebagai solusi perkiraan untuk masalah tersebut.