Elias Gamma & Delta Coding

Kompresi sangat bermanfaat karena kecepatan prosesor dalam melakukan encode dan decode jauh di atas kecapatan baca dan tulis dari disk ke memory. Apalagi jika kita menggunakan Single-Pass In Memory Indexing (SPIMI) dimana kita dapat melakukan kompresi pada Terms dan Postings. Berbagai metode dapat kita gunakan untuk melakukan kompresi pada Terms, sementara untuk Postings dapat kita lakukan dengan dua cara yaitu:

  1. Storing successive docIDs, dengan kata lain menggunakan offset. Misal dari pada kita menulis <1001,1010,1052,…> kita dapat menuliskannya dengan <1001,9,42,…> dimana menghasilkan angka yang jauh lebih kecil.
  2. Menggunakan variable size dari prefix code. Caranya adalah dengan melihat nilai maksimum dari sebaran angka, akibatnya terhindar dari pemborosan kapasitas byte tiap Posting. Nah, akan kita bahas penggunakaan variable size ini dengan kode Elias gama dan delta.

Elias Gamma Coding

Metode ini dikembangkan oleh Peter Elias. Dengan teknik pengkodean:

  1. Tulis dalam biner
  2. Jumlah bit pada proses no.1 dikurang satu untuk menentukan jumlah nol (zeros) yang harus ditambahkan di muka angka tersebut.

Contoh kita punya bilangan 11 langkah pertama adalah konversi 11 menjadi biner, yakni 1011. Langkah dua menghasilkan tiga yang berasal dari 4 bit dikurang satu. Hasilnya adalah 0001011. Deretan angka 11, 15, dan 27 dengan elias gamma code menjadi 00010110001111000011011.

Bagaimana dengan docede-nya? Caranya gampang, hitung jumah nol (zero) sebelum ditemukan bilangan 1, misalnya kita akan mendekode 0001011. Karena ada 3 zero maka (3+1) setelah zero itu adalah bilanganya, yaitu 1011, yang jika dikonversi ke desimal menjadi 11. Apa fungsi Elias Gamma Coding tersebut? Tentu saja manfaatnya adalah kita dapat mengirim tiga angka berjajar sekaligus, sebab jika kita hanya meng-concatenate tiga bilangan tersebut akan tidak bermakna, misalnya tiga bilangan tersebut di atas jika dikirim 1011111111011 ada berjuta2 variasi kombinasi biner tersebut yang setara dengan desimalnya.

Elias Delta Coding

Seperti Elias Gamma, kode ini ditemukan oleh Peter Elias. Kode ini menerapkan juga metode pada gamma coding, terutama di bagian kepala. Tekniknya adalah sebagai berikut:

  1. Cari pangkat tertinggi binernya, misalnya desimal 11 jika dibinerkan menjadi 1011 dimana pangkat tertingginya adalah 3. Jadi N’=3.
  2. Gunakan Gamma Coding untuk mengkodekan bilangan N dimana N=N’+1. Jadi untuk kasus desimal 11 maka kita harus membuat Gamma Coding dari 4 yaitu 00100.
  3. Tambahkan sisa N’ binary pada hasil no.2. Jadi diperoleh jawaban 00100011.

Berikutnya adalah medekode Elias Delta Coding, prinsipnya adalah kebalikan dari langkah satu sampai tiga di atas. Misalnya kita akan mendekode 00100011.

  1. Temukan jumlah zero sebelum ditemukan angka satu, yaitu 00, berjumlah dua. Berarti ada (2+1) angka yang harus diperhatikan setelah dua angka nol ini yaitu 100 yang dalam desimalnya berarti 4, jadi kita mendapatkan N’ dengan N-1 = 4-1 = 3.
  2. Jika N’ telah diketahui, yaitu 3 maka ada tiga bit tersisa yang menjadi bagian bilangan itu yakni 011. Jadi diperoleh jawaban 1011 yang artinya 11.

Jika kita diberikan rentetan biner sebagai berikut: 00110000110011110010100111110000 merupakan deretan angka 35, 101, dan 112. (Perhatikan warna biner di atas untuk memudahkan).

Reference

Manning, Christopher D., Prabhakar Raghavan and Hinrich Schütze (2008), Introduction to information retrieval, Cambridge: Stanford University.

Iklan

Mining Itemset using Vertical Data Format (Menghitung Closed Itemset )

Satu bab yang cukup rumit pada mata kuliah Data Mining adalah Mining Itemset using Vertical Data Format. Berikut ini adalah contoh soal dengan 5 buah transaksi:

  • T1: a,b,c
  • T2: a,b,c,d
  • T3: c,d
  • T4: a,e
  • T5: a,c

Pertanyaannya adalah:

  1. Cari closed sets!
  2. Jika minimum support =2, cari closed frequent dan maximal frequent set –nya.

annotsrc1410163109914

Cara mengerjakannya adalah mengikuti soal tersebut, karena pertanyaan 1 dan 2 merupakan urutannya. Pertama-tama kita rinci terlebih dahulu closed sets dari item-itemnya, dimulai dari yang set terkecil (satu).

Set    Support    closed set/tidak ?

  1. {a}    4        closed set
  2. {b}    2        bukan closed set
  3. {c}    4        closed set
  4. {d}    2        bukan closed set
  5. {e}    1        bukan closed set

Mengapa {b} bukan closed set? Karena dia memiliki super-itemset yang jumlahnya juga dua (yaitu {a,b,c} dan {a,b,c,d}). Syarat closed itemset adalah supportnya harus lebih besar dari super-itemsetnya. Untuk sementara diperoleh closed sets = {{a}, {c}} dan karena keduanya di atas nilai minimum support (dua), maka sets tersebut juga closed frequent.

Berikutnya untuk yang jumlah setnya dua.

Set    Support    closed set/tidak?

  1. {a,b}    2        bukan closed set
  2. {a,c}    3        closed set
  3. {a,d}    1        bukan closed set
  4. {a,e}    1        closed set
  5. {b,c}    2        bukan closed set
  6. {b,d}    1        bukan closed set
  7. {b,e}    –        bukan closed set
  8. {c,d}    2        closed set
  9. {c,e}    –        bukan closed set
  10. {d,e}    –        bukan closed set

Closed Frequent = {{a,c}, {c,d}}. Mengapa {a,e} walaupun closed set tetapi tidak frequent? Karena supportnya hanya satu maka tidak memenuhi persyaratan frequent yaitu lebih besar atau sama dengan minimum supportnya (dua). Berikutnya untuk jumlah item tiga.

  1. {a,b,c}    2
  2. {a,b,d}    1
  3. {a,c,d}    1
  4. {b,c,d}    1

Dan diperoleh Closed Frequent ={{a,b,c}} karena yang lainnya di bawah min_support. Jadi diperoleh Closed Frequent sets = {{a},{c},{a,c},{c,d},{a,b,c}}.

Untuk soal no.2 kita diminta mencari Maximal Frequent Sets yaitu sets yang frequent, misal X, dan tidak memiliki Super-Itemsets yg frequent juga, Y, dimana Y ᴐ X.

Jawabannya adalah {{c,d},{a,b,c}}.

Mengapa {c,d}? lihat di transaksi, {c,d} tidak memiliki super-itemset, dan item tersebut frequent, jadi {c,d} adalah maximal. Bagaimana dengan {a,b,c}? walaupun dia memiliki super-itemsets {a,b,c,d} tetapi itemset ini tidak frequent (di bawah min_support).

Untuk yang ingin mendalami lebih jauh, bisa baca jurnalnya di sini.