Memahami Fitur Hashing

10

Wikipedia memberikan contoh berikut ketika menjelaskan hashing fitur ; tetapi pemetaan tampaknya tidak konsisten dengan kamus yang ditentukan

Misalnya, toharus dikonversi 3sesuai dengan kamus, tetapi dikodekan sebagai 1gantinya.

Apakah ada kesalahan dalam deskripsi? Bagaimana cara kerja hashing fitur?

Teks:

John likes to watch movies. Mary likes too.
John also likes to watch football games.

dapat dikonversi, menggunakan kamus

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, 
"football": 7, "games": 8, "Mary": 9, "too": 10}

ke matriks

[[1 2 1 1 1 0 0 0 1 1]
 [1 1 1 1 0 1 1 1 0 0]]
Josh
sumber

Jawaban:

10

Matriks dibangun dengan cara berikut:

  • baris mewakili garis
  • kolom mewakili fitur

dan setiap matriks entri (i, j) = k berarti:

Dalam baris i, kata dengan indeks j muncul k kali.

Jadi todipetakan ke indeks 3. Tampaknya tepat satu kali dalam baris 1. Jadi m (1,3) = 1.

Lebih banyak contoh

  • likesdipetakan ke indeks 2. Tampaknya tepat dua kali di baris pertama. Jadi m (1,2) = 2
  • also dipetakan ke indeks 6. Ini tidak muncul di baris 1, tetapi satu kali di baris 2. Jadi m (1,6) = 0 dan m (2,6) = 1.
steffen
sumber
Namun dalam konteks hashing fitur, kami tidak memiliki kamus. Kami hanya memiliki fungsi hash. Apakah ini bekerja sama dalam arti bahwa Anda (1) menghitung nilai hash dari fitur dan (2) menambah indeks yang diberikan oleh fungsi hash dengan 1 setiap kali Anda melihat titik data? Misalnya, seperti yang dinyatakan @ user20370 di bawah ini, jika Anda memutuskan untuk menyandikan fitur Anda dengan 13 bit dan nilai hash "suka" adalah 5674, maka apakah indeks 5674 akan bertambah 1? Dan jika Anda menggunakan bit lebih sedikit, apakah Anda hanya mod 5674 dengan 2 ^ (# bit) dan meningkatkan indeks itu?
Vivek Subramanian
1
@VivekSubramanian ya. Tantangannya adalah untuk menemukan fungsi hash tanpa tabrakan (yaitu kata-kata yang berbeda, tetapi nilai hash yang sama), atau dengan tabrakan yang jarang terjadi. Ini adalah area penelitian dalam ilmu komputer ( en.wikipedia.org/wiki/Perfect_hash_function ).
steffen
4

Seperti yang ditunjukkan Steffen, matriks contoh mengkodekan berapa kali sebuah kata muncul dalam sebuah teks. Posisi pengkodean ke dalam matriks diberikan oleh kata (posisi kolom pada matriks) dan oleh teks (posisi baris pada matriks).

Sekarang, Trik hashing bekerja dengan cara yang sama, meskipun pada awalnya Anda tidak harus mendefinisikan kamus yang berisi posisi kolom untuk setiap kata.

Sebenarnya itu adalah fungsi hashing yang akan memberi Anda berbagai posisi kolom yang memungkinkan (fungsi hashing akan memberi Anda nilai minimum dan maksimum yang mungkin) dan posisi tepat kata yang ingin Anda enkode ke dalam matriks. Jadi misalnya, mari kita bayangkan bahwa kata "suka" di hash dengan fungsi hashing kita ke angka 5674, maka kolom 5674 akan berisi pengkodean relatif terhadap kata "suka".

Sedemikian rupa Anda tidak perlu membangun kamus sebelum menganalisis teks. Jika Anda akan menggunakan matriks sparse sebagai matriks teks Anda, Anda bahkan tidak perlu mendefinisikan dengan tepat ukuran matriks apa yang harus dibuat. Hanya dengan memindai teks, dengan cepat, Anda akan mengonversi kata menjadi posisi kolom dengan fungsi hashing dan matriks teks Anda akan diisi data (frekuensi, yaitu) sesuai dengan dokumen apa yang Anda analisis secara progresif (posisi baris).

pengguna20370
sumber