PLDA adalah komponen PAI untuk pemodelan topik. Komponen ini menjalankan Latent Dirichlet Allocation (LDA)—algoritma unsupervised yang mengidentifikasi cara kata-kata dikelompokkan ke dalam topik abstrak di seluruh kumpulan dokumen. Dengan menentukan jumlah topik K, LDA akan menginferensi struktur topik tanpa memerlukan data pelatihan berlabel.
LDA dikembangkan oleh David M. Blei, Andrew Y. Ng, dan Michael I. Jordan pada tahun 2003. Algoritma ini banyak digunakan dalam pengenalan teks, klasifikasi, dan perhitungan kemiripan di bidang text mining.
Cara kerja
LDA memperlakukan setiap dokumen sebagai campuran dari beberapa topik, dan setiap topik sebagai distribusi probabilitas atas kata-kata. Diberikan sebuah korpus, algoritma ini menginferensi:
Topik-topik yang dimiliki oleh setiap dokumen—P(z|d), yaitu distribusi dokumen-topik
Kata-kata yang menjadi ciri khas setiap topik—P(w|z), yaitu distribusi topik-kata
Sebagai contoh konkret, diberikan dokumen-dokumen yang berisi kata-kata _eat_, _sleep_, _play_, _meow_, dan _bark_, LDA mungkin menghasilkan:
| Topik | eat | sleep | play | meow | bark |
|---|---|---|---|---|---|
| Topik 1 | 0,1 | 0,3 | 0,2 | 0,4 | 0,0 |
| Topik 2 | 0,2 | 0,1 | 0,4 | 0,0 | 0,3 |
Topik 1 (bobot tinggi pada _meow_ dan _sleep_) kemungkinan besar merepresentasikan kucing; Topik 2 (bobot tinggi pada _play_ dan _bark_) kemungkinan besar merepresentasikan anjing. Seperti inilah cara menafsirkan tabel probabilitas dalam output.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Ruang kerja PAI dengan akses Machine Learning Designer
Data masukan dalam format matriks jarang (pasangan kunci-nilai berupa ID kata dan frekuensinya)
(Opsional) Komponen Convert Row, Column, and Value to KV Pair, jika data Anda belum dalam format pasangan kunci-nilai
Konfigurasi komponen
Gunakan salah satu metode berikut untuk mengonfigurasi PLDA.
Metode 1: Machine Learning Designer
Pada kanvas pipeline, klik komponen PLDA dan konfigurasikan parameter pada panel kanan. Machine Learning Designer sebelumnya dikenal sebagai Machine Learning Studio.
Fields Setting tab
| Parameter | Deskripsi |
|---|---|
| Feature columns | Kolom yang digunakan sebagai input untuk pelatihan LDA |
Parameters Setting tab
| Parameter | Deskripsi | Default |
|---|---|---|
| Topics | Jumlah topik (K). Nilai valid: 2–500. Mulailah dengan nilai antara 10 dan 50, lalu sesuaikan berdasarkan ukuran korpus dan koherensi topik yang dihasilkan. | — |
| Alpha | Parameter prior Dirichlet untuk distribusi dokumen-topik P(z/d). Nilai yang lebih kecil menghasilkan campuran yang lebih sparse — setiap dokumen fokus pada lebih sedikit topik. Nilai yang lebih besar menghasilkan campuran yang lebih seragam di seluruh topik. | — |
| Beta | Parameter prior Dirichlet untuk distribusi topik-kata P(w/z). Nilai yang lebih kecil menghasilkan topik yang lebih tajam dan berbeda. Nilai yang lebih besar membuat topik lebih tersebar. | — |
| Burn-in iterations | Iterasi pemanasan sebelum pengambilan sampel dimulai. Harus lebih kecil dari Total iterations. Nilai default umumnya sudah cukup baik dan tidak perlu disesuaikan. | 100 |
| Total iterations | Jumlah total iterasi Gibbs sampling. Tingkatkan nilai ini jika model belum konvergen. | 150 |
Metode 2: Perintah PAI
Gunakan komponen SQL Script untuk menjalankan PLDA dengan perintah PAI. Untuk informasi lebih lanjut, lihat SQL Script.
pai -name PLDA
-project algo_public
-DinputTableName=lda_input
-DtopicNum=10
-topicWordTableName=lda_output;Tabel berikut mencantumkan semua parameter yang tersedia.
| Parameter | Wajib | Tipe | Default | Deskripsi |
|---|---|---|---|---|
inputTableName | Ya | STRING | — | Nama tabel input |
inputTablePartitions | Tidak | STRING | Semua partisi | Partisi yang digunakan untuk pelatihan. Format: partition_name=value. Untuk partisi multi-level: name1=value1/name2=value2. Pisahkan beberapa partisi dengan koma. |
selectedColNames | Tidak | STRING | Semua kolom | Nama kolom yang digunakan sebagai input untuk LDA |
topicNum | Ya | Bilangan bulat positif | — | Jumlah topik. Nilai valid: 2–500 |
kvDelimiter | Tidak | STRING | : | Pemisah antara kunci dan nilai. Nilai valid: spasi, ,, : |
itemDelimiter | Tidak | STRING | spasi | Pemisah antara pasangan kunci-nilai. Nilai valid: spasi, ,, : |
alpha | Tidak | FLOAT | 0,1 | Parameter prior Dirichlet dari P(z/d). Nilai valid: (0, ∞). Nilai yang lebih kecil menghasilkan campuran topik yang lebih sparse; nilai yang lebih besar menghasilkan campuran yang lebih seragam. |
beta | Tidak | FLOAT | 0,01 | Parameter prior Dirichlet dari P(w/z). Nilai valid: (0, ∞). Nilai yang lebih kecil menghasilkan topik yang lebih tajam dan berbeda; nilai yang lebih besar menghasilkan topik yang lebih tersebar. |
topicWordTableName | Ya | STRING | — | Tabel output untuk kontribusi frekuensi kata per topik |
pwzTableName | Tidak | STRING | Tidak dihasilkan | Tabel output untuk P(w/z) |
pzwTableName | Tidak | STRING | Tidak dihasilkan | Tabel output untuk P(z/w) |
pdzTableName | Tidak | STRING | Tidak dihasilkan | Tabel output untuk P(d/z) |
pzdTableName | Tidak | STRING | Tidak dihasilkan | Tabel output untuk P(z/d) |
pzTableName | Tidak | STRING | Tidak dihasilkan | Tabel output untuk P(z) |
burnInIterations | Tidak | Bilangan bulat positif | 100 | Iterasi pemanasan sebelum pengambilan sampel dimulai. Harus lebih kecil dari totalIterations. Nilai default umumnya sudah cukup baik. |
totalIterations | Tidak | Bilangan bulat positif | 150 | Total iterasi Gibbs sampling. z = topik, w = kata, d = dokumen. |
enableSparse | Tidak | BOOL | true | Format data input: true untuk pasangan kunci-nilai, false untuk hasil segmentasi kata |
coreNum | Tidak | Bilangan bulat positif | -1 (otomatis) | Jumlah core. Harus diatur bersamaan dengan memSizePerCore. Sistem menentukan nilai ini secara otomatis berdasarkan ukuran data input. |
memSizePerCore | Tidak | Bilangan bulat positif | -1 (otomatis) | Memori per core dalam MB. Nilai valid: 1024–65536. Sistem menentukan nilai ini secara otomatis. |
Input dan output
Input
Data input harus dalam format matriks jarang, dengan satu baris per dokumen:
Kolom 1: ID dokumen
Kolom 2: pasangan kunci-nilai berupa ID kata dan frekuensi kata
Jika data Anda belum dalam format ini, gunakan komponen Convert Row, Column, and Value to KV Pair untuk mengonversinya.

Output
PLDA menghasilkan tabel-tabel berikut secara berurutan. Hanya tabel kontribusi frekuensi kata per topik (topicWordTableName) yang wajib. Tabel-tabel lain bersifat opsional dan hanya dihasilkan jika Anda menentukan nama tabel output-nya.
| Tabel | Parameter | Deskripsi |
|---|---|---|
| Tabel kontribusi frekuensi kata per topik | topicWordTableName | Wajib. Kontribusi frekuensi kata per topik. |
| Tabel P(w/z) | pwzTableName | Probabilitas setiap kata diberikan suatu topik |
| Tabel P(z/w) | pzwTableName | Probabilitas setiap topik diberikan suatu kata |
| Tabel P(d/z) | pdzTableName | Probabilitas setiap dokumen diberikan suatu topik |
| Tabel P(z/d) | pzdTableName | Probabilitas setiap topik diberikan suatu dokumen |
| Tabel P(z) | pzTableName | Probabilitas marjinal setiap topik |

Langkah selanjutnya
SQL Script — pelajari cara menjalankan perintah PAI menggunakan komponen SQL Script