Saat membangun model rekomendasi atau peringkat, data pelatihan umumnya disimpan dalam bentuk tabel tripel (baris, kolom, nilai)—misalnya, ID pengguna, ID item, dan jumlah klik. Komponen Convert Row, Column, and Value to KV Pair di Machine Learning Designer mengubah format ini menjadi tabel kunci-nilai jarang (baris, [col_id:nilai]) beserta tabel indeks yang sesuai untuk memetakan nama kolom ke ID bilangan bulat. Ini merupakan langkah prapemrosesan standar guna menyediakan data fitur jarang kepada model yang memerlukan input berupa vektor berindeks.
Cara kerja
Komponen ini menerima tabel tripel yang kolom-kolomnya merepresentasikan pengenal baris, nama kolom, dan nilai numerik, lalu melakukan hal berikut:
Menetapkan ID bilangan bulat unik (
col_id) untuk setiap nama kolom yang berbeda dan mencatat pemetaannya dalam tabel indeks.Mengelompokkan baris berdasarkan pengenal baris dan menggabungkan seluruh pasangan
col_id:nilaimenjadi satu string kunci-nilai.
Persyaratan tipe data input
Tabel tripel input harus mengikuti salah satu dari dua pola tipe kolom berikut:
| Pola | Tipe kolom | Tipe kolom nilai |
|---|---|---|
XXD | Baris: apa saja, Kolom: apa saja | DOUBLE |
XXL | Baris: apa saja, Kolom: apa saja | BIGINT |
Pada tabel kunci-nilai output, kolom baris dan nilai mempertahankan tipe data aslinya. Kolom col_id pada tabel indeks selalu bertipe BIGINT.
Contoh
Tabel tripel input:
| id | word | count |
|---|---|---|
| 01 | a | 10 |
| 01 | b | 20 |
| 01 | c | 30 |
Komponen ini menghasilkan dua tabel output:
Tabel kunci-nilai — nilai kolom setiap baris digabungkan menjadi satu string col_id:value:
| id | key_value |
|---|---|
| 01 | 1:10;2:20;3:30 |
Tabel indeks — memetakan setiap nama kolom asli ke ID bilangan bulat yang ditetapkan:
| key | key_id |
|---|---|
| a | 1 |
| b | 2 |
| c | 3 |
Pembatas antara kunci dan nilainya, serta pembatas antar pasangan kunci-nilai, keduanya dapat dikustomisasi.
Konfigurasi komponen
Opsi 1: Konfigurasi pada kanvas pipeline
Pada kanvas pipeline Machine Learning Designer, klik komponen untuk membuka panel pengaturannya. Tabel berikut menjelaskan parameter-parameter tersebut.
Fields Setting tab
| Parameter | Wajib | Deskripsi | Bawaan |
|---|---|---|---|
| Columns reserved during KV conversion | Ya | Kolom yang tetap tidak berubah setelah konversi (pengenal baris). | — |
| Output keys | Ya | Kolom yang nilainya menjadi kunci dalam tabel kunci-nilai. | — |
| Output values | Ya | Kolom yang nilainya menjadi nilai dalam tabel kunci-nilai. | — |
| Key column in input index table | Tidak | Kolom kunci dalam tabel indeks yang sudah ada. Wajib jika Anda menyediakan tabel indeks. | — |
| Index ID column of key in input index table | Tidak | Kolom ID indeks dalam tabel indeks yang sudah ada. Wajib jika Anda menyediakan tabel indeks. | — |
| KV delimiter | Tidak | Pembatas antara kunci dan nilainya. | : (titik dua) |
| KV pair delimiter | Tidak | Pembatas antar pasangan kunci-nilai. | , (koma) |
Tuning tab
| Parameter | Wajib | Deskripsi | Bawaan |
|---|---|---|---|
| Total number of instances | Tidak | Jumlah instans komputasi. Harus berupa bilangan bulat positif. | Dihitung otomatis dari data input |
| Memory size (MB) | Tidak | Total memori. Harus berupa bilangan bulat positif. | Dihitung otomatis dari data input |
Opsi 2: Gunakan perintah PAI
Jalankan komponen melalui perintah PAI di komponen SQL Script.
PAI -name triple_to_kv
-project algo_public
-DinputTableName=test_data
-DoutputTableName=test_kv_out
-DindexOutputTableName=test_index_out
-DidColName=id
-DkeyColName=word
-DvalueColName=count
-DinputTablePartitions=ds=test1
-DindexInputTableName=test_index_input
-DindexInputKeyColName=word
-DindexInputKeyIdColName=word_id
-DkvDelimiter=:
-DpairDelimiter=;
-Dlifecycle=3Parameter
| Parameter | Wajib | Deskripsi | Bawaan |
|---|---|---|---|
inputTableName | Ya | Nama tabel tripel input. | — |
idColName | Ya | Kolom pengenal baris—tetap tidak berubah pada output. | — |
keyColName | Ya | Kolom yang nilainya menjadi kunci. | — |
valueColName | Ya | Kolom yang nilainya menjadi nilai. | — |
outputTableName | Ya | Nama tabel kunci-nilai output. | — |
indexOutputTableName | Ya | Nama tabel indeks output. | — |
indexInputTableName | Tidak | Tabel indeks yang sudah ada untuk digunakan. Harus berisi data. | — |
indexInputKeyColName | Tidak | Kolom kunci dalam tabel indeks yang sudah ada. Wajib jika indexInputTableName ditentukan. | — |
indexInputKeyIdColName | Tidak | Kolom ID indeks dalam tabel indeks yang sudah ada. Wajib jika indexInputTableName ditentukan. | — |
inputTablePartitions | Tidak | Partisi dari tabel input. Hanya satu nama partisi yang didukung. | — |
kvDelimiter | Tidak | Pembatas antara kunci dan nilainya. | : (titik dua) |
pairDelimiter | Tidak | Pembatas antar pasangan kunci-nilai. | , (koma) |
lifecycle | Tidak | Siklus hidup tabel output. | — |
coreNum | Tidak | Jumlah instans komputasi. Harus berupa bilangan bulat positif. | Dihitung otomatis dari data input |
memSizePerCore | Tidak | Total memori. Harus berupa bilangan bulat positif. | Dihitung otomatis dari data input |
Contoh
Contoh berikut mengonversi tabel tripel yang berisi catatan interaksi dua pengguna menjadi tabel kunci-nilai dan tabel indeks.
Langkah 1: Buat tabel input (triple2kv_test_input)
drop table if exists triple2kv_test_input;
create table triple2kv_test_input as
select * from (
select '01' as id, 'a' as word, 10 as count
union all select '01' as id, 'b' as word, 20 as count
union all select '01' as id, 'c' as word, 30 as count
union all select '02' as id, 'a' as word, 100 as count
union all select '02' as id, 'd' as word, 200 as count
union all select '02' as id, 'e' as word, 300 as count
) tmp;Langkah 2: Jalankan perintah PAI
PAI -name triple_to_kv
-project algo_public
-DinputTableName=triple2kv_test_input
-DoutputTableName=triple2kv_test_input_out
-DindexOutputTableName=triple2kv_test_input_index_out
-DidColName=id
-DkeyColName=word
-DvalueColName=count
-Dlifecycle=1;Output
Nama kolom a, b, c, d, e diberi ID 1–5. Tabel kunci-nilai (triple2kv_test_input_out) menggabungkan interaksi setiap pengguna menjadi satu string:
+----+-------------------+
| id | key_value |
+----+-------------------+
| 01 | 1:10;2:20;3:30 |
| 02 | 1:100;4:200;5:300 |
+----+-------------------+Tabel indeks (triple2kv_test_input_index_out) mencatat pemetaan nama kolom ke ID:
+-----+--------+
| key | key_id |
+-----+--------+
| a | 1 |
| b | 2 |
| c | 3 |
| d | 4 |
| e | 5 |
+-----+--------+