Dekomposisi nilai singular (Singular Value Decomposition/SVD) adalah teknik faktorisasi matriks dalam aljabar linear—merupakan generalisasi dari diagonalisasi matriks normal—yang mengurai matriks X menjadi tiga komponen: X = U S V'. SVD banyak digunakan dalam pemrosesan sinyal dan statistik.
Cara kerja
SVD memfaktorkan matriks input X (berukuran m baris × n kolom) menjadi tiga matriks output:
| Output | Dimensi | Deskripsi |
|---|---|---|
| U | m × sgNum | Vektor singular kiri (matriks uniter) |
| S | sgNum × sgNum | Matriks diagonal berisi nilai-nilai singular (matriks hamburan) |
| V | n × sgNum | Vektor singular kanan (matriks V) |
Di sini, sgNum adalah jumlah nilai singular yang benar-benar dihitung (yang mungkin kurang dari nilai k yang diminta), m adalah jumlah baris pada tabel input, dan n adalah jumlah kolom.
Konfigurasikan komponen
Gunakan Konsol Machine Learning Platform for AI
| Tab | Parameter | Deskripsi |
|---|---|---|
| Fields setting | Feature columns | Kolom yang menyimpan pasangan kunci-nilai. Pisahkan kunci dan nilai dengan tanda titik dua (:), dan pisahkan beberapa pasangan kunci-nilai dengan koma (,). |
| Parameters setting | Number of reserved singular values | N nilai singular teratas yang akan dihitung. Secara default menghitung semua nilai singular. |
| Parameters setting | Accuracy error | Presisi kesalahan yang diperbolehkan untuk konvergensi. |
| Tuning | Memory size per node | Memori yang dialokasikan untuk setiap node, dalam MB. Harus digunakan bersama dengan Number of nodes. Nilai valid: 1–9999 (bilangan bulat positif). |
| Tuning | Number of nodes | Jumlah node komputasi. Nilai valid: 1024–64 × 1024 (bilangan bulat positif). |
| Tuning | Lifetime | Siklus hidup tabel output, dalam hari. |
Gunakan perintah
Kirim pekerjaan SVD dari command line:
PAI -name svd
-project algo_public
-DinputTableName=bank_data
-DselectedColNames=col0
-DenableSparse=true
-Dk=5
-DoutputUTableName=u_table
-DoutputVTableName=v_table
-DoutputSTableName=s_table;Parameter input
| Parameter | Wajib | Default | Deskripsi |
|---|---|---|---|
inputTableName | Ya | — | Tabel input yang digunakan untuk pelatihan. |
selectedColNames | Tidak | Semua kolom | Daftar kolom yang dipisahkan koma untuk disertakan. Gunakan kolom STRING untuk input sparse; gunakan kolom INT atau DOUBLE untuk input dense. |
inputTablePartitions | Tidak | Semua partisi | Partisi yang dibaca dari tabel input. Format: partition_name=value. Untuk partisi multi-level: name1=value1/name2=value2;. Pisahkan beberapa partisi dengan koma. |
enableSparse | Tidak | false | Atur ke true jika data input dalam format sparse key-value. |
itemDelimiter | Tidak | Spasi | Pemisah antar pasangan kunci-nilai dalam format sparse. |
kvDelimiter | Tidak | : | Pemisah antara kunci dan nilai dalam format sparse. |
k | Ya | — | Jumlah nilai singular yang akan dihitung. Jumlah aktual yang dikembalikan mungkin kurang dari k. |
tol | Tidak | 1.0e-06 | Ambang kesalahan konvergensi. |
Parameter output
| Parameter | Wajib | Deskripsi |
|---|---|---|
outputUTableName | Ya | Tabel output untuk matriks U (m × sgNum). |
outputSTableName | Ya | Tabel output untuk matriks S (sgNum × sgNum). |
outputVTableName | Ya | Tabel output untuk matriks V (n × sgNum). |
Parameter sumber daya
| Parameter | Wajib | Default | Deskripsi |
|---|---|---|---|
coreNum | Tidak | Default sistem | Jumlah core. Harus digunakan bersama dengan memSizePerCore. Nilai valid: 1–9999 (bilangan bulat positif). |
memSizePerCore | Tidak | Default sistem | Memori per core, dalam MB. Harus digunakan bersama dengan coreNum. Nilai valid: 1024–64 × 1024 (bilangan bulat positif). |
lifecycle | Tidak | — | Siklus hidup tabel output, dalam hari (bilangan bulat positif). |
Contoh
Contoh ini menjalankan SVD pada tabel input sparse dengan enam baris dan hingga 100.000 kolom, serta menghitung lima nilai singular teratas.
Langkah 1: Buat tabel input.
DROP TABLE IF EXISTS svd_test_input;
CREATE TABLE svd_test_input
AS
SELECT *
FROM
(
SELECT '0:3.9079 2:0.0009 3:0.0416 4:0.17664 6:0.36460 8:0.091330' AS col0
UNION ALL
SELECT '0:0.09229 2:0.4872172 5:0.5267 8:0.4544 9:0.23317' AS col0
UNION ALL
SELECT '1:0.8312 3:0.9317 5:0.5680 7:0.5560 9:0.0508' AS col0
UNION ALL
SELECT '2:0.767 5:0.01891 8:0.25235' AS col0
UNION ALL
SELECT '0:0.29819 2:0.87598086 6:0.5315568' AS col0
UNION ALL
SELECT '0:0.920260 2:0.5154311513 4:0.8104 5:0.188420 8:0.88' AS col0
) a;Langkah 2: Jalankan pekerjaan SVD.
PAI -name svd
-project algo_public
-DinputTableName=svd_test_input
-DselectedColNames=col0
-DenableSparse=true
-Dk=5
-DoutputUTableName=u_table
-DoutputVTableName=v_table
-DoutputSTableName=s_table;