Evaluasi Recall Berbasis Vektor adalah algoritma pembelajaran mesin yang digunakan untuk menilai kinerja sistem pengambilan vektor, terutama dalam mengukur akurasi dan efektivitas hasil pengambilan. Algoritma ini mengevaluasi kemampuan sistem untuk mengambil item relevan dalam ruang vektor berdimensi tinggi dengan menghitung metrik seperti recall dan presisi. Evaluasi Recall Berbasis Vektor banyak diterapkan dalam sistem rekomendasi dan pengambilan informasi, membantu mengoptimalkan kinerja pengambilan serta meningkatkan kepuasan pengguna model.
Cara kerjanya
Komponen Evaluasi Recall Berbasis Vektor mendukung u2i recalls dan i2i recalls. Pada u2i recalls, vektor pengguna digunakan untuk mengambil K item teratas. Pada i2i recalls, vektor item digunakan untuk mengambil K item teratas. Tingkat hit dihitung menggunakan metode berikut: Misalnya, koleksi item relevan (vektor pengguna untuk u2i recalls dan vektor item untuk i2i recalls) yang memicu recall adalah M. K item teratas yang mirip dengan item pemicu diambil. N item yang di-recall termasuk dalam koleksi M. Dalam skenario ini, tingkat hit top K dihitung berdasarkan rumus |N|/|M|. Komponen ini juga mengeluarkan item yang tidak termasuk dalam koleksi M beserta nilai jarak yang sesuai untuk analisis kasus buruk. Komponen Evaluasi Recall Berbasis Vektor dapat berjalan dalam mode mandiri atau mode terdistribusi. Prosedur:
Semua pekerja memuat tabel penyematan pengguna atau tabel penyematan item untuk membangun indeks yang diperlukan oleh k-tetangga terdekat (KNN).
Pekerja mencari tabel urutan sebenarnya untuk K tetangga terdekat secara batch berdasarkan tabel penyematan, lalu mengembalikan K item teratas.
Komponen menghitung tingkat hit dengan membandingkan nilai urutan item dalam tabel urutan sebenarnya dengan nilai urutan K item teratas.
Komponen menggabungkan hasil dan mengeluarkan hasil ke tabel MaxCompute.
Input
Tabel penyematan item
Tabel penyematan yang menyimpan vektor item. Tabel penyematan item biasanya dihasilkan oleh algoritma pelatihan seperti GraphSAGE. Contoh:
item id (bigint) | item embeddings (string) |
23456677 | 0.1,0.2,0.3.... |
Tabel penyematan pengguna
Tabel penyematan yang menyimpan vektor pengguna. Tabel penyematan pengguna biasanya dihasilkan oleh algoritma pelatihan seperti GraphSAGE. Contoh:
user id (bigint) | user embeddings (string) |
12345 | 0.1,0.2,0.3.... |
Tabel urutan sebenarnya
Tabel sebenarnya yang menyimpan pemicu dan item relevan. Tabel ini digunakan sebagai ground truth. Untuk u2i recalls, kolom trigger id dipetakan ke kolom user id. Untuk i2i recalls, kolom trigger id dipetakan ke kolom item id. Dalam tabel urutan sebenarnya berikut, kolom trigger id dipetakan ke kolom item id.
trigger id (bigint) | item ids (string) |
12345 | 23456677,2233445,6837292,... |
Output
tabel total_hitrate
Tabel yang menyimpan nilai total hit rate. Contoh:
hitrate(double) |
0.4 |
tabel hitrate_details
Tabel yang menyimpan detail hit rate. Tabel hitrate_details berisi jumlah baris yang sama dengan tabel urutan sebenarnya. Contoh:
id (bigint) | topk_ids (string) | topk_dists (string) | hitrate (double) | bad_ids (string) | bad_dists (string) |
1123 | 2345,2367,2483,2567 | 0.8,0.7,0.2,0.1 | 0.39 | 2483,2567 | 0.2,0.1 |
Jumlah baris dalam tabel ini sama dengan tabel urutan sebenarnya.
Untuk u2i recalls, kolom id dipetakan ke kolom user_id. Untuk i2i recalls, kolom id dipetakan ke kolom item_id.
Kolom topk_ids menampilkan ID dari K item teratas yang relevan dengan item pemicu. ID item dipisahkan oleh koma (,).
Kolom topk_dists menampilkan jarak ke item dalam kolom topk_ids.
Kolom hitrate menampilkan tingkat hit item yang di-recall yang sesuai dengan setiap pemicu.
Kolom bad_ids menampilkan item yang di-recall tetapi tidak relevan.
Kolom bad_dists menampilkan jarak ke item dalam kolom bad_cases.
Parameter komponen
Anda dapat mengonfigurasi komponen Evaluasi Recall Berbasis Vektor di konsol atau menggunakan CLI. Parameter di konsol dan CLI sama. Tabel berikut menjelaskan parameter.
Parameter | Tipe | Deskripsi | |
Input | item_emb_table (Tabel vektor item) | string | Tabel penyematan item. |
true_seq_table (Tabel urutan sebenarnya) | string | Tabel urutan sebenarnya. Untuk u2i recalls, tabel berisi pengguna dan item relevan pengguna. Untuk i2i recalls, tabel berisi item dan item relevan item. null Saat Anda mengevaluasi presisi recall, jika data dalam tabel penyematan dikumpulkan pada titik waktu T, data dalam tabel urutan sebenarnya harus dikumpulkan pada titik waktu T+1. Jika tidak, tingkat hit aktual akan lebih tinggi dari nilai yang diharapkan. | |
user_emb_table (Tabel vektor pengguna) | String (opsional) | Tabel penyematan pengguna. Anda hanya perlu memberikan tabel ini untuk u2i recalls. | |
Output | total_hitrate (Tingkat hit recall berbasis vektor) | string | Tabel keluaran yang berisi nilai total hit rate. |
hitrate_details (Detail tingkat hit recall berbasis vektor) | string | Tabel keluaran yang berisi detail tingkat hit. | |
Parameter | recall_type (Jenis recall) | string | Jenis recall, yang bisa 'u2i' atau 'i2i'. |
emb_dim (Dimensi fitur tabel vektor) | int | Dimensi penyematan dari tabel penyematan. | |
k (Jumlah item yang di-recall) | int | Jumlah item yang di-recall. | |
metric (Pengukuran kesamaan) | int (Opsional. Nilai default: 1) | Metode yang digunakan untuk mengukur kesamaan. Jika Anda mengatur parameter ini ke 0, jarak L2 digunakan untuk mengukur kesamaan. Jika Anda mengatur parameter ini ke 1, produk dalam digunakan untuk mengukur kesamaan. Jika jarak L2 digunakan, K item teratas dengan jarak terpendek dikembalikan. Jika produk dalam digunakan, K item teratas dengan produk dalam terbesar dikembalikan. | |
strict (Apakah mengaktifkan mode ketat) | bool (Opsional. Nilai default: False) | Deviasi ada dalam perhitungan kesamaan. Jika Anda mengatur parameter strict ke True, sistem membandingkan kesamaan vektor dalam mode ketat. Namun, perhitungan kesamaan dalam mode ini memakan waktu. | |
lifecycle | int (Opsional. Nilai default: 7) | Keluaran Siklus hidup tabel dalam hari. | |
Pengaturan | batch_size | int (Opsional. Nilai default: 1024) | Jumlah sampel per batch. Atur parameter ini ke nilai kecil jika sumber daya memori terbatas. |
worker_count (Inti Komputasi) | int (Opsional. Nilai default: 1) | Jumlah pekerja yang digunakan untuk melatih model. Atur parameter ini ke nilai besar saat ukuran tabel input besar atau satu pekerja tidak cukup untuk melatih model secara efisien. | |
worker_memory (Memori Per inti) | int (Opsional. Nilai default: 20000) | Jumlah memori yang dialokasikan untuk setiap pekerja. Satuan: megabyte. Default: 20000 MB. | |
Contoh perintah
pai -name hitrate_gl_ext
-Ditem_emb_table='item_emb_table'
-Duser_emb_table='user_emb_table'
-Dtrue_seq_table='true_seq_table'
-Dhitrate_details='hitrate_details'
-Dtotal_hitrate='total_hitrate'
-Drecall_type='u2i'
-Dk=5
-Demb_dim=10
-Dmetric=1
-Dstrict=False
-Dbatch_size=1024
-Dworker_count=1
-Dworker_memory=20000
-Dlifecycle=7;Contoh di atas menunjukkan cara menghitung tingkat hit u2i recalls. Produk dalam digunakan untuk mengukur kesamaan (jarak) vektor, mode ketat dinonaktifkan, dan perhitungan dilakukan dalam batch. Satu pekerja digunakan untuk memproses 1.024 item dari tabel true_seq_table untuk setiap batch. Pekerja dialokasikan 20 GB memori, dan siklus hidup tabel keluaran hitrate_details dan total_hitrate adalah tujuh hari.