Algoritma Behavior Sequence Transformer (BST) menggunakan Kerangka Transformer yang kuat untuk menangkap informasi deret waktu jangka panjang dari urutan perilaku pengguna. BST dapat mengekstrak fitur implisit dari urutan perilaku dan membuat prediksi, memberikan manfaat signifikan dalam skenario bisnis terkait urutan perilaku seperti Sistem rekomendasi dan penambangan nilai siklus hidup pengguna.
Skenario
Algoritma BST dirancang untuk mendukung berbagai tugas prediksi, termasuk klasifikasi dan regresi.
Data input algoritma BST adalah urutan perilaku dengan fitur deret waktu. Data ini disimpan dalam format
LONGTEXTdi database, misalnya perilaku klik pengguna selama tujuh hari sebelumnya.Output algoritma BST adalah prediksi berupa bilangan bulat atau bilangan titik mengambang, seperti jumlah yang diperkirakan dibayar oleh pengguna, churn pengguna, atau status pembayaran.
Contoh skenario klasifikasi:
Prediksi jumlah pengguna baru yang membayar serta potensi churn pengguna rutin dan pengguna dengan pembayaran tinggi dalam skenario permainan. Sebagai contoh, perilaku dalam game dari pengguna yang membayar selama 14 hari sebelumnya dalam skenario operasi game digunakan sebagai input urutan perilaku algoritma BST. Algoritma BST mengekstrak fitur relevan dari urutan perilaku untuk memprediksi potensi churn dalam 14 hari berikutnya. Pengguna dianggap telah churn jika tidak masuk selama 14 hari berturut-turut.
Contoh skenario regresi:
Prediksi total pengeluaran pengguna baru dalam skenario permainan. Sebagai contoh, perilaku dalam game dari pengguna baru dalam 24 jam pertama dalam skenario operasi game digunakan sebagai input urutan perilaku algoritma BST. Algoritma BST mengekstrak fitur relevan dari urutan perilaku untuk memprediksi total pengeluaran pengguna baru dalam tujuh hari berikutnya.
Batasan
Algoritma BST bekerja efektif ketika data input memiliki distribusi kelas yang seimbang. Jika data input tidak seimbang, seperti ketika kelas mayoritas memiliki lebih dari 20 kali jumlah sampel dari kelas minoritas, disarankan untuk menggunakan algoritma pengelompokan K-means yang disediakan di PolarDB untuk AI guna memproses kelas yang tidak seimbang, seperti kelompok non-pembayar, dan menyediakan distribusi data keseluruhan yang seimbang di seluruh kelas. Untuk informasi lebih lanjut, lihat algoritma pengelompokan K-means.
Format tabel data untuk pembuatan model algoritma
Kolom | Diperlukan | Tipe data | Deskripsi | Contoh |
uid | Ya | VARCHAR | ID setiap entri data, seperti ID pengguna atau ID produk. | 253460731706911258 |
event_list | Ya | LONGTEXT | Urutan perilaku untuk pembuatan model. Setiap perilaku dalam urutan direpresentasikan oleh ID integer unik. Perilaku dalam urutan dipisahkan oleh koma (,) dan diurutkan berdasarkan timestamp mereka secara menaik. | "[183, 238, 153, 152]" |
target | Ya | INT, FLOAT, dan DOUBLE | Label yang mengukur metrik model algoritma. | 0 |
val_row | Tidak | INT | Untuk mencegah model overfitting, Anda dapat menentukan set validasi. Nilai valid:
Catatan Dalam kebanyakan kasus, parameter ini digunakan bersama dengan parameter pembuatan model version dan val_flag.
| 1 |
other_feature | Tidak | INT, FLOAT, DOUBLE, dan LONGTEXT | Fitur lain dari model. Untuk menggunakan fitur, sertakan nama kolom fitur dalam parameter pembuatan model x_value_cols dan x_statics_cols. Catatan
| 2 |
val_x_cols | Tidak | LONGTEXT | Urutan perilaku untuk validasi model dan penyetelan parameter. Setiap perilaku dalam urutan direpresentasikan oleh ID integer unik. Perilaku dalam urutan dipisahkan oleh koma (,) dan diurutkan berdasarkan timestamp mereka secara menaik. Catatan Parameter ini hanya berlaku jika Anda mengatur parameter version ke | "[183, 238, 153, 152]" |
val_y_cols | Tidak | INT, FLOAT, dan DOUBLE | Label dari urutan perilaku yang digunakan untuk menyetel parameter. Catatan Parameter ini hanya berlaku jika Anda mengatur parameter version ke | 1 |
Anda dapat menjalankan pernyataan CREATE MODEL untuk membuat model algoritma. Tabel berikut menjelaskan opsi konfigurasi untuk parameter model_parameter dalam pernyataan CREATE MODEL.
Parameter | Deskripsi |
version | Versi model. Kami sarankan Anda menentukan versi baru. Nilai valid:
Catatan Dalam versi lama, parameter val_x_cols dan val_y_cols berlaku dan parameter val_row tidak berlaku untuk pembuatan tabel data model. Tugas klasifikasi multi-kelas dan fitur fusi/penumpukan model tidak didukung. |
model_task_type | Tipe tugas. Nilai valid:
|
num_classes | Jumlah kelas yang diprediksi dalam tugas klasifikasi multi-kelas. Nilai default: 2. Untuk menggunakan parameter ini, pastikan label adalah bilangan bulat berturut-turut mulai dari 0. Jumlah label unik dalam dataset Anda tidak boleh melebihi nilai parameter ini. Contoh: Jika Anda mengatur num_classes ke 3, label valid adalah {0, 1, 2}. |
batch_size | Ukuran batch. Ukuran batch kecil dapat meningkatkan risiko overfitting dalam model. Nilai default: 16. |
window_size | Digunakan untuk penyandian tertanam ID perilaku. Nilainya harus lebih besar dari atau sama dengan nilai maksimum ID perilaku ditambah satu. Jika tidak, terjadi kesalahan parsing. |
sequence_length | Panjang urutan perilaku yang terlibat dalam perhitungan model algoritma. Nilainya tidak boleh melebihi 3000. Jika parameter window_size lebih besar dari 900, jangan atur parameter sequence_length ke nilai yang terlalu besar. |
success_id | ID perilaku yang diprediksi oleh model. |
max_epoch | Jumlah maksimum iterasi. Nilai default: 1. |
learning_rate | Tingkat pembelajaran. Nilai default: 0.0002. |
loss | Fungsi loss. Nilai valid:
|
val_flag | Menentukan apakah akan melakukan validasi setelah setiap iterasi model. Nilai valid:
|
val_metric | Metrik yang digunakan untuk validasi. Nilai valid:
|
auto_data_statics | Menentukan apakah akan secara otomatis menghasilkan fitur statistik. Nilai valid:
|
auto_heads | Menentukan apakah akan secara otomatis menentukan jumlah header multi-perhatian. Nilai valid:
Catatan
|
num_heads | Jika Anda mengatur parameter auto_heads ke 0, Anda harus menentukan parameter ini. Nilai default: 4. |
x_value_cols | Menentukan kolom tertentu sebagai fitur diskrit numerik. Nilainya tidak boleh kosong. Catatan
|
x_statics_cols | Menentukan kolom tertentu sebagai fitur statistik. Nilainya tidak boleh kosong. Panjang data di setiap baris kolom yang ditentukan tetap. Catatan
|
x_seq_cols | Menentukan kolom tertentu sebagai fitur urutan. Catatan
|
data_normalization | Menentukan apakah akan menormalisasi data di kolom yang ditentukan oleh parameter x_value_cols. Nilai valid:
|
remove_seq_adjacent_duplicates | Menentukan apakah akan menghapus nilai duplikat berdekatan dari kolom yang ditentukan oleh parameter x_seq_cols. Nilai valid:
|
stacking | Menentukan apakah akan melakukan fusi model BST. Parameter ini hanya berlaku jika Anda mengatur model_task_type ke klasifikasi.
|
stacking_model | Model yang termasuk dalam proses fusi. Parameter ini hanya berlaku jika Anda mengatur stacking ke on. Model yang valid adalah bst, gbdt, svc, dan rt. Nilai default: gbdt, svc, dan rt. |
Format tabel data untuk evaluasi model algoritma
Kolom | Diperlukan | Tipe data | Deskripsi | Contoh |
uid | Ya | VARCHAR(255) | ID setiap entri data, seperti ID pengguna atau ID produk. | 123213 |
event_list | Ya | LONGTEXT | Urutan perilaku untuk pembuatan model. Setiap perilaku dalam urutan direpresentasikan oleh ID integer unik. Perilaku dalam urutan dipisahkan oleh koma (,) dan diurutkan berdasarkan timestamp mereka secara menaik. | "[183, 238, 153, 152]" |
target | Ya | INT, FLOAT, dan DOUBLE | Label sampel yang digunakan untuk menghitung kesalahan model algoritma. | 0 |
other_feature | Tidak | INT, FLOAT, DOUBLE, dan LONGTEXT | Fitur lain dari model, yang sama dengan yang ada di tabel data pembuatan model. Untuk menggunakan fitur, sertakan nama kolom fitur dalam parameter pembuatan model x_value_cols dan x_statics_cols. Catatan
| 2 |
Anda dapat menjalankan pernyataan EVALUATE untuk mengevaluasi model algoritma. Tabel berikut menjelaskan opsi konfigurasi untuk parameter metrics dalam pernyataan EVALUATE.
Parameter | Deskripsi |
metrics | Metrik yang digunakan untuk validasi. Nilai valid:
|
Format tabel data untuk prediksi model algoritma
Kolom | Diperlukan | Tipe data | Deskripsi | Contoh |
uid | Ya | VARCHAR(255) | ID setiap entri data, seperti ID pengguna atau ID produk. | 123213 |
event_list | Ya | LONGTEXT | Urutan perilaku untuk pembuatan model. Setiap perilaku dalam urutan direpresentasikan oleh ID integer unik. Perilaku dalam urutan dipisahkan oleh koma (,) dan diurutkan berdasarkan timestamp mereka secara menaik. | "[183, 238, 153, 152]" |
other_feature | Tidak | INT, FLOAT, DOUBLE, dan LONGTEXT | Fitur lain dari model, yang sama dengan yang ada di tabel data pembuatan model. Untuk menggunakan fitur, sertakan nama kolom fitur dalam parameter pembuatan model x_value_cols dan x_statics_cols. Catatan
| 2 |
Contoh
Tugas klasifikasi digunakan dalam contoh-contoh berikut. Untuk informasi lebih lanjut tentang jenis tugas, lihat deskripsi parameter model_task_type dalam topik ini.
Buat model BST
/*polar4ai*/CREATE MODEL sequential_bst WITH (
model_class = 'bst',
x_cols = 'event_list,other_feature1',
y_cols='target',
model_parameter=(
batch_size=128,
window_size=900,
sequence_length=3000,
success_id=900,
max_epoch=2,
learning_rate=0.0008,
val_flag=1,
x_seq_cols='event_list',
x_value_cols='other_feature1',
val_metric='f1score',
auto_data_statics='on',
data_normalization=1,
remove_seq_adjacent_duplicates='on',
version=1)) AS (SELECT * FROM seqential_train);sequential_train adalah nama tabel data sampel yang digunakan untuk pembuatan model algoritma.
Evaluasi model
/*polar4ai*/SELECT uid,target FROM evaluate(MODEL sequential_bst,
SELECT * FROM seqential_eval) WITH
(x_cols = 'event_list,other_feature1', y_cols='target', metrics='Fscore');sequential_eval adalah nama tabel data sampel untuk evaluasi model algoritma.
Buat prediksi menggunakan model
/*polar4ai*/SELECT uid,target FROM PREDICT(MODEL sequential_bst, SELECT * FROM seqential_test) WITH
(x_cols= 'event_list,other_feature1',mode='async');seqential_test adalah nama tabel data sampel untuk prediksi model algoritma.