Saya mencoba membangun hash sensitif lokalitas kosinus sehingga saya dapat menemukan kandidat pasangan barang yang serupa tanpa harus membandingkan setiap pasangan yang memungkinkan. Saya memilikinya pada dasarnya bekerja, tetapi sebagian besar pasangan dalam data saya tampaknya memiliki kesamaan cosinus dalam kisaran -0,2 hingga +0,2 jadi saya mencoba untuk memotongnya dengan sangat halus dan memilih hal-hal dengan kesamaan cosinus 0,1 ke atas.
Saya telah membaca Mining Dataset Masif Bab 3. Ini berbicara tentang meningkatkan akurasi pemilihan pasangan kandidat dengan Memperkuat Keluarga Lokal-Sensitif. Saya pikir saya baru saja memahami penjelasan matematis, tetapi saya berjuang untuk melihat bagaimana saya menerapkannya secara praktis.
Apa yang saya miliki sejauh ini adalah sebagai berikut
- Saya telah mengatakan 1000 film masing-masing dengan peringkat dari beberapa pilihan pengguna 1M. Setiap film diwakili oleh vektor tipis skor pengguna (nomor baris = ID pengguna, nilai = skor pengguna)
- Saya membangun N vektor acak. Panjang vektor cocok dengan panjang vektor film (yaitu jumlah pengguna). Nilai vektor adalah +1 atau -1. Saya sebenarnya menyandikan vektor-vektor ini sebagai biner untuk menghemat ruang, dengan +1 dipetakan ke 1 dan -1 dipetakan ke 0
- Saya membuat vektor sketsa untuk setiap film dengan mengambil produk titik film dan masing-masing vektor acak N (atau lebih tepatnya, jika saya membuat matriks R dengan meletakkan vektor acak N secara horizontal dan meletakannya di atas satu sama lain maka sketsa untuk film m adalah R * m), lalu mengambil tanda setiap elemen dalam vektor yang dihasilkan, jadi saya akhiri dengan vektor sketsa untuk setiap film +1 dan -1, yang lagi-lagi saya encode sebagai biner. Setiap vektor berukuran panjang N bit.
- Selanjutnya saya mencari sketsa serupa dengan melakukan hal berikut
- Saya membagi vektor sketsa menjadi b band r bit
- Setiap band r bit adalah angka. Saya menggabungkan nomor itu dengan nomor band dan menambahkan film ke ember hash di bawah nomor itu. Setiap film dapat ditambahkan ke lebih dari satu ember.
- Saya kemudian mencari di setiap ember. Setiap film yang berada di ember yang sama adalah pasangan kandidat.
Membandingkan ini dengan 3.6.3 mmds, langkah AND saya adalah ketika saya melihat band r bit - sepasang film melewati langkah AND jika r bit memiliki nilai yang sama. Langkah ATAU saya terjadi di kotak: film adalah pasangan calon jika keduanya berada di salah satu kotak.
Buku ini menyarankan saya untuk "memperkuat" hasil saya dengan menambahkan lebih banyak langkah AND dan ATAU, tetapi saya bingung bagaimana melakukan ini secara praktis karena penjelasan proses konstruksi untuk lapisan selanjutnya adalah dalam hal memeriksa kesetaraan berpasangan daripada memeriksa datang dengan nomor ember.
Adakah yang bisa membantu saya memahami bagaimana melakukan ini?
sumber