Anda di halaman 1dari 29

Penambangan Data

Penambangan data adalha proses memeriksa data dan menemukan aturan sedeharna
atau model yang meringkas data. Aturannya bisa berkisar dari yang umum, seperti sebagai
50% orang yang membeli hot dog juga membeli mustard”. Untuk yang sangat spesifik: “pola
pengeluaraan kartu kredit ketiga individu ini menunjukan bahwa mereka sedang menjalankan
sel teroris” kami berdiskusi tentang penambangan data yang akan berkonsentrasi pada
menambang semua informasi informasi dari penyimpanan yang sangat besar.
Kami mulai dengan melihat data ‘keranjang pasar’ catatan hal-hal orang beli secara
bersamaan, seperti di supermarket. Penelitian ini mengarah pada sejumlah algoritma yang
efisien untuk menemukan ‘intemset yang sering’’ dalam data besar termasuk algoritma “A-
Priori” dan ekstensinya.
Kami selanjutnya beralih menemukan item ‘serupa” dalam koleksi besar. Contoh
aplikasi termasuk menemukan dokumen di web yang berbagi jumlah yang signifikan teks
umum atau menemukan buku yang telah dibeli oleh banyak orang yang sama pelanggan
Amazon. Dua teknik utama untuk masalah ini adalah “minhasing”dan “hasing yang sensitif
terhadap lokalitas.
Kami mengakhiri bab ini dengan diskusi tentang masalah skala besar peneglompokan
dalam dimensi tinggi. Contoh aplikasi adalah pengelompokan halaman web dengan kata-kata
yang mereka gunakan. Dalam hal ini, setiap kata mungkin merupakan dimensi, dan dokumen
ditempatkan di ruang ini dengan menghitung kemunculan masing-masing kata.

22.1 Penambangan Frequent-Itemset


Ada keluarga masalah yang muncul dari upaya pemasar untuk menggunakan
penyimpanan besar pembelian pelanggan untuk mengektrak informasi tentang pembelian
pola. Masalah fundarnental disebut “item yang sering – apa yang mengatur dari barang-
barang yang sering dibeli bersamaan? Informasi ini terkadang lebih Jauh disempurnakan
menjadi “aturan asosiasi” – implikasi bahwa orang yang membeli satu set item cenderung
membeli item tertentu lainnya. Teknologi yang sama memeliki banyak kegunaan lain, dari
meneukan kombinasi gen yang terkait dengan penyakit tertentu untuk menemukan
plagiarisme diantara dokumen-dokumen web.
22.1.1 Model Keranjang Besar
Dalam beberpa aplikasi penting, data melibatkan satu set item , mugnkin semua
barang-barang yang dijual di supermarket, dan satu set kerangjang; setiap keranjang adalah
subset dari set item, biasanya subset kecil. Kerangjang masing-masing mewakili satu set
barang yang telah dibeli bersama-sama oleh seseorang. Berikut adalah dua contok tipikal dari
dimana data keranjang pasar muncul.
Pengeluaran Supermarket
Supermarket dapat menjual 10.000 item yang berbeda. Setiap hari, jutaan pelanggan
membawa keranjang mereka (“Keranjang Pasar”) ke kasir, dan mesin kasir mencatat set
barang mereka yang dibeli. Setiap set tersebutMesin kasir mencatat set barang yang mereka
beli. Setiap set tersebut adalah satu keranjang, dalam arti digunakan oleh model keranjang
pasar. Beberapa pelanggan mungkin telah mengidentifikasi diri mereka sendiri,
menggunakan kartu potongan harga yang banyak jaringan supermarket menyediakan, atau
dengan kartu kredit mereka. Namun, identitas pelanggan sering kali adalah tidak perlu
mendapatkan informasi yang berguna dari data.
Toko menganalisis data untuk mempelajari apa yang dibeli pelanggan biasa bersama-
sama. Bagi Contoh, jika sejumlah besar keranjang berisi hot dog dan mustard, Manajer
supermarket dapat menggunakan informasi ini dengan beberapa cara.
1. Rupanya, banyak orang berjalan dari tempat hot dog berada ke tempat mustard
adalah. Kita bisa menempatkan mereka berdekatan, dan menempatkan di antara
mereka yang lain makanan yang mungkin juga dibeli dengan hot dog dan mustard,
misalnya saus tomat atau keripik kentang. Melakukannya dapat menghasilkan
penjualan "impuls" tambahan.
2. Toko dapat menjalankan penjualan pada hot dog dan pada saat yang sama menaikkan
harga mustard (tanpa mengiklankan fakta itu, tentu saja). Orang-orang akan datang ke
Toko untuk hot dog murah, dan banyak yang membutuhkan mustard juga. Dia tidak
sepitaing dengan kesulitan untuk pergi ke toko lain untuk mustard yang lebih murah,
jadi mereka juga membelinya. Toko membuat kembali mustard apa yang hilang pada
hot dog, dan juga mendapatkan lebih banyak pelanggan ke toko.
Sementara hubungan antara hot dog dan mustard mungkin jelas bagi mereka yang
memikirkan masalah ini, bahkan jika mereka tidak memiliki data untuk dianalisis, di sana
adalah banyak pasang item yang terhubung tetapi mungkin kurang jelas. Paling banyak
contoh terkenal adalah popok dan bir.
Ada beberapa kondisi ketika fakta tentang ko-kejadian set item dapat bermanfaat.
Setiap pasangan yang berguna (atau set yang lebih besar) dari item harus dibeli oleh banyak
pelanggan. Bahkan tidak perlu ada koneksi apa pun di antara pembelian barang, selama kita
tahu banyak pelanggan yang membelinya.
I Satu teori: jika Anda membeli popok, Anda mungkin punya bayi di rumah. Jika demikian,
Anda tidak Pergi ke bar malam ini, jadi Anda lebih cenderung membeli bir di supermarket.

2.1. PENAMBANGAN FREQUENT-ITEMSET


Semua. Sebaliknya, sangat terkait, tetapi barang yang jarang dibeli (misalnya, kaviar dan
sampanye) tidak terlalu menarik bagi supermarket, karena tidak membayar untuk
mengiklankan hal-hal yang hanya sedikit pelanggan yang tertarik untuk membeli.
Pembelian Online
Amazon.com menawarkan beberapa juta item berbeda untuk dijual, dan memiliki beberapa
puluh jutaan pelanggan. Sementara toko fisik seperti supermarket dibahas di atas hanya
dapat menghasilkan uang dari kombinasi item yang besar jumlah orang yang membeli,
Amazon dan penjual online lainnya memiliki peluang untuk menyesuaikan penawaran
mereka kepada setiap pelanggan. Dengan demikian, pertanyaan yang menarik adalah
Temukan sepasang barang yang telah dibeli bersama oleh banyak pelanggan. Lalu, jika salah
satunya pelanggan telah membeli salah satu dari barang-barang ini tetapi tidak yang lain,
mungkin bagus bagi Amazon untuk mengiklankan item kedua saat pelanggan ini masuk
berikutnya. Kami dapat memperlakukan data pembelian sebagai masalah keranjang pasar, di
mana setiap "keranjang" adalah kumpulan barang yang pernah dibeli oleh satu pelanggan
tertentu.
Tetapi ada cara lain Amazon dapat menggunakan data yang sama. Approu:h ini,
Sering disebut "collaborative filtering", membuat kami mencari pelanggan yang bersamaan
dalam kebiasaan pembelian mereka. Misalnya, kita bisa mencari pasangan, atau bahkan lebih
besar set, dari pelanggan yang telah membeli banyak barang yang sama. Kemudian, jika
pelanggan masuk, Amazon mungkin mengajukan item yang dibeli pelanggan serupa, tetapi
ini pelanggan tidak. Menemukan pelanggan serupa juga dapat dianggap sebagai masalah
keranjang pasar. Di sini, bagaimanapun, "item" adalah pelanggan dan "keranjang" adalah
item dijual oleh Amazon. Artinya, untuk setiap item yang saya jual oleh Amazon ada
"keranjang" terdiri dari semua pelanggan yang membeli saya.
Perlu dicatat bahwa arti "banyak keranjang" berbeda dalam on-line dan situasi bata-
dan-mortir. Dalam kasus bata-dan-mortir, kita mungkin perlu ribuan keranjang berisi satu set
item sebelum kita dapat mengeksploitasi informasi yang menguntungkan. Untuk toko online,
kami membutuhkan lebih sedikit keranjang yang berisi kumpulan item, sebelum kita dapat
menggunakan informasi dalam konteks terbatas yang kita maksudkan (melempar satu item ke
satu pelanggan).
Di sisi lain, toko fisik tidak membutuhkan terlalu banyak contoh set barang yang
bagus untuk digunakan; mereka tidak dapat menjalankan penjualan pada jutaan item.
Dikontras, toko online membutuhkan jutaan pasangan yang baik untuk diajak bekerja sama
— setidaknya satu untuk setiap pelanggan. Akibatnya, teknik yang paling efektif untuk
menganalisis Pembelian online mungkin bukan pembelian online dari bagian ini, yang
mengeksploitasi asumsi bahwa banyak kejadian sepasang item busur diperlukan. Sebaliknya,
kami akan melanjutkan pembahasan kita tentang menemukan pasangan yang berkorelasi,
tetapi jarang, di Bagian 22.3.
22.1.2 Definisi Dasar
Misalkan kita diberi satu set item I dan satu set keranjang B. Setiap keranjang b dalam B
adalah bagian dari I. Untuk berbicara tentang set item frequ.nt, kami membutuhkan dukungan
ambang s, yang bilangan bulat. Kami menyimpan satu set item J C I sering jika ada
setidaknya keranjang s yang berisi semua item dalam J (mungkin bersama dengan barang
yang lain). Secara opsional, kita dapat menyatakan dukungan s sebagai persentase dari IBI,
jumlah keranjang di B.
Contoh 22.1 : Misalkan set item kita, saya terdiri dari enam film
(131, BS, BU, HPI, HP2,HP3)
singkatan dari Bourne Identity, Bourne Supremacy, Bourne Ultimatum, dan Harry Potter I,
11, dan 111. Tabel Gambar 22.1 menunjukkan delapan pemirsa (keranjang setiap item) dan
film-film yang telah mereka tonton. Menunjukkan mereka melihat film itu.

Gambar 22.1: Data keranjang pasar tentang pemirsa dan film


Misalkan s 3. Artinya, agar satu set item dianggap sebagai itemset sering, itu harus
menjadi bagian dari setidaknya tiga keranjang. Secara teknis, set kosong adalah subset Dari
semua keranjang, jadi sering tetapi tidak menarik. Dalam hal ini contoh, semua set singleton
kecuali (HP3) muncul di setidaknya tiga keranjang. Bagi contoh, (BI) terdapat dalam VI, V3,
V4, 1/5, V6, dan Vs.
Sekarang, pertimbangkan set doubleton mana (pasangan item) yang sering terjadi.
Sejak HP3 tidak sering dengan sendirinya, itu tidak bisa menjadi bagian dari pasangan yang
sering. Namun, masing-masing 10 pasang yang melibatkan lima film lainnya mungkin sering
terjadi. Misalnya (BI, BSS) sering terjadi karena muncul di setidaknya tiga keranjang;
faktanya itu muncul dalam empat: VI, V4, V5, dan 1/8.
Juga:
• (BI, HPI) sering muncul di V3, V, , V5, dan V8.
• IBS, HPI) sering, muncul di 14, V5, 14, dan V8.
• (HPI, HP2) sering, muncul di V2, 14, V7, dan Vs.
TIDAK ADA Pasangan lain yang sering terjadi. Ada satu triple yang sering: (BI, BS, HPI).
Set ini adalah subset dari keranjang V4, V5, dan 14. Tidak ada itemset ukuran yang sering
lebih besar dari Tiga.
22.1. PENAMBANGAN FREQUENT-ITEMSET
22.1.3 Aturan Asosiasi
Pertanyaan alami tentang data keranjang pasar meminta implikasi di antara pembelian yang
dilakukan setiap orang. Artinya, kami ingin menemukan pasangan barang sedemikian rupa
sehingga orang yang membeli yang pertama cenderung membeli yang kedua juga. Lebih
umum, orang yang membeli satu set barang tertentu juga cenderung membeli barang tertentu.
Ide ini diformalkan oleh "aturan asosiasi."
Aturan asosiasi adalah pernyataan bentuk (il, i2, i dan j adalah item. Secara terpisah,
pernyataan seperti itu tidak menegaskan apa-apa. Namun Tiga properti yang mungkin kita
inginkan dalam aturan yang berguna dari formulir ini adalah:
1. Dukungan Tinggi: dukungan dari aturan asosiasi ini adalah dukungan dari Set Item
(i1, i2,… in.j)
2. Keyakinan Tinggi: probabilitas menemukan item j dalam b. Saya berada di atas
ambang batas tertentu, misalnya, 50%, misalnya, "Setidaknya semua 50% orang yang
membeli popok membeli bir."
3. Bunga: probabilitas menemukan item j dalam keranjang yang memiliki semua in)
secara signifikan lebih tinggi atau lebih rendah dari probabilitas menemukan- (i1,i2,...,
inj dalam keranjang acak. Dalam istilah statistik, j berkorelasi dengan

(i1,i2,.... in)

baik secara positif maupun negatif. Dugaan hubungan antara popok dan bir benar-
benar klaim yang dimiliki oleh aturan asosiasi (popok) bir minat tinggi ke arah positif.
Perhatikan bahwa meskipun aturan asosiasi memiliki keyakinan atau minat yang tinggi, itu
akan cenderung tidak berguna kecuali juga memiliki dukungan tinggi. Pasalnya, jika
dukungannya rendah, maka jumlah contoh aturannya tidak besar, yang membatasi manfaat
dari strategi yang mengeksploitasi aturan. Juga, penting untuk tidak untuk membingungkan
aturan asosiasi, bahkan dengan nilai tinggi untuk dukungan, kepercayaan diri, dan minat,
dengan aturan kausal. Misalnya, contoh "bir dan popok" disebutkan dalam Bagian 22.1. |
menunjukkan bahwa popok aturan asosiasi (bir) memiliki kepercayaan diri yang tinggi, tetapi
itu tidak berarti bir "menyebabkan" popok. Agar teori yang menyarankan ada bahwa
keduanya disebabkan oleh "variabel tersembunyi" - bayi di rumah.
Contoh 22.2 : Menggunakan data dari Gambar 22.1, pertimbangkan aturan asosiasi
{BI,BS} => BU
Dukungannya adalah 2, karena ada dua keranjang, VI dan V5 yang berisi ketiganya Film
"Bourne". Keyakinan aturan adalah 1/2, karena ada empat keranjang yang mengandung BI
dan BS, dan dua di antaranya juga mengandung BU. Aturannya adalah sedikit menarik ke
arah positif. Artinya, BU muncul dalam 3/8 dari semua keranjang, tetapi muncul dalam 1/2
keranjang yang berisi sisi kiri aturan asosiasi.
Selama dukungan tinggi adalah persyaratan yang signifikan untuk asosiasi yang
bermanfaat aturan, pencarian aturan asosiasi dengan keyakinan tinggi atau minat tinggi
benar-benar Cari itemset dukungan tinggi. Setelah kita memiliki itemset ini, kita dapat
mempertimbangkan setiap anggota itemset sebagai item di sebelah kanan aturan asosiasi.
Kami mungkin, sebagai bagian dari proses menemukan itemset yang sering, sudah dihitung
jumlah keranjang untuk subset dari itemset yang sering ini, karena mereka juga harus sering.
Jika demikian, kita dapat menghitung dengan mudah kepercayaan dan minat setiap aturan
asosiasi potensial. Dengan demikian, kita akan, dalam apa yang berikut, mengesampingkan
masalah menemukan aturan asosiasi dan berkonsentrasi pada metode yang efisien untuk
sering menemukan itemset.

22.1.4 Model Komputasi untuk Itemset yang Sering


Karena kita sedang mempelajari sistem basis data, pikiran pertama kita mungkin
adalah bahwa Data keranjang pasar disimpan dalam relasi seperti:
Keranjang (keranjang, barang) terdiri dari pasangan yang merupakan ID keranjang
dan ID dari salah satu item di keranjang itu. Pada prinsipnya, kita dapat menemukan itemset
yang sering dengan kueri SQL. Misalnya, kueri pada Gambar 22.2 menemukan semua
pasangan yang sering. Ini bergabung dengan Keranjang dengan sendirinya, mengelompokkan
tupel yang dihasilkan dengan dua item yang ditemukan dalam tupel itu, dan membuang
kelompok di mana jumlah keranjang di bawah dukungan ambang batas s. Perhatikan bahwa
kondisi I. item J . item dalam klausa WHERE adalah di sana untuk mencegah pasangan yang
sama dipertimbangkan dalam kedua pesanan, atau untuk "pasangan" yang terdiri dari item
yang sama dua kali dari dipertimbangkan sama sekali.
PILIH I. item, J.item, COUNT(1.keranjang)
DARI Keranjang I, Keranjang J
DIMANA l.basket - J.basket DAN
I. barang J. barang
KELOMPOKKAN MENURUT L.ITEM, J.ITEM
MEMILIKI HITUNGAN(1.keranjang) s;
Gambar 22.2: Cara naif untuk menemukan semua pasangan item dengan dukungan
tinggi
Namun, jika ukuran Keranjang sangat besar, bergabungnya hubungan dengan dirinya
sendiri akan terlalu besar untuk dibangun, atau setidaknya terlalu memakan waktu untuk
membangun. TIDAK peduli seberapa efisien kita menghitung gabungan, relasi hasil berisi
satu tupel untuk setiap pasang item dalam keranjang. Misalnya, jika ada adalah 1.000.000
keranjang, dan setiap keranjang berisi 20 item, maka akan ada (20) 1901. Kita akan lihat di
Bagian 22.2 190.000.000 tupel bergabung (sejak bahwa seringkali mungkin untuk melakukan
jauh lebih baik dengan memproses terlebih dahulu hubungan Keranjang. Namun pada
kenyataannya, tidak umum untuk menyimpan data keranjang pasar sebagai hubungan. Dia
jauh lebih efisien untuk menempatkan data dalam file atau file yang terdiri dari keranjang,
22.1. PENAMBANGAN FREQUENBITEMSET
Dalam beberapa urutan. Keranjang diwakili oleh daftar barang-barangnya, dan ada
beberapa
tanda baca antar keranjang.
Contoh 22.3: Data Gambar 22.1 dapat diwakili oleh file yang
Dimulai:
{Bl, BS, BU}{HP1, HP2, HP3}{B1, HP1}{BI, BS, HP1, HP2}{...
Di sini, kami menggunakan tanda kurung untuk mengelilingi keranjang dan koma untuk
memisahkan item di dalam keranjang.
Ketika data keranjang pasar direpresentasikan dengan cara ini, biaya algoritma relatif
mudah diperkirakan. Karena kami hanya tertarik pada di mana data terlalu besar untuk muat
di memori utama, kita dapat menghitung disk-I / O sebagai ukuran kita kompleksitas.
Namun, masalahnya bahkan lebih sederhana daripada disk-I/O. Semua yang berhasil
algoritma untuk menemukan iternsets sering membaca file data beberapa kali, dipesanan
yang diberikan. Dengan demikian mereka membuat beberapa melewati data, dan informasi
diawetkan dari satu lintasan ke lintasan berikutnya cukup kecil untuk muat dalam memori
utama. Jadi, kita bahkan tidak perlu menghitung disk-I/O; cukup untuk menghitung jumlah
lintasan melalui data.

22.1.5 Latihan untuk Bagian 22.1


Latihan 22.1.1: Misalkan kita diberi delapan "keranjang pasar" Gambar. 22.3.
B1 = (susu, coke, bir)
B2 = (susu, Pepsi, jus)
B3 = (susu, bir)
B4 = (Coke, jus)
B5 = (susu, Pepsi, bir)
B6 = (susu, bir, jus, Pepsi)
B7 = (Coke, Bir, Jus)
B8 = (bir, Pepsi)
Gambar 22.3 Contoh Data Keranjang Pasar

a) Sebagai persentase Dari keranjang, apa dukungan dari set (bir, jus)?
b) Apa dukungan dari itemset (coke, pepsi)?
c) Apa kepercayaan susu yang diberikan bir (yaitu, dari aturan asosiasi (bir) susu)?
d) Apa keyakinan jus yang diberikan susu?
e) Apa kepercayaan coke, diberi bir dan jus?
f) Jika ambang batas dukungan adalah 37,5% (yaitu, 3 dari delapan keranjang adalah
dibutuhkan), pasangan barang mana yang sering dikunjungi?
g) Jika ambang batas dukungan adalah 50%, pasangan item mana yang sering terjadi?
h) Apa aturan asosiasi yang paling menarik dengan satu set pada Kiri?
22.2 Algoritma untuk Menemukan Itemset yang Sering
Kita sekarang melihat berapa banyak pass yang diperlukan untuk menemukan itemset yang
sering dari ukuran tertentu. Pertama-tama kami berdebat mengapa, dalam praktiknya,
menemukan pasangan yang sering sering adalah Hambatan. Kemudian, kami menyajikan
Algoritma A-Priori, langkah kunci dalam meminimalkan jumlah memori utama yang
dibutuhkan untuk algoritma multipass. Beberapa perbaikan pada A-Priori memanfaatkan
memori utama dengan lebih baik pada lintasan pertama, agar lebih layak untuk
menyelesaikan algoritma tanpa melebihi kapasitas memori utama pada lintasan selanjutnya.

22.2.1 Distribusi Itemset yang Sering


Jika kita memilih ambang batas dukungan s 1, maka semua itemset yang muncul di
keranjang apa pun "sering," jadi hanya menghasilkan jawaban bisa jadi tidak mungkin.
Namun, dalam Aplikasi seperti mengelola penjualan di toko, ambang batas dukungan kecil
yang tidak bermanfaat. Ingatlah bahwa kita membutuhkan banyak pelanggan yang membeli
satu set barang sebelum kita bisa mengeksploitasi itemset itu. Selain itu, setiap penambangan
data dari data keranjang pasar harus menghasilkan sejumlah kecil jawaban, katakanlah
puluhan atau ratusan. Jika kita tidak mendapatkan jawaban, kita tidak dapat bertindak, tetapi
jika kita mendapatkan jutaan jawaban, kita tidak dapat membaca semuanya, biarkan sendirian
bertindak atas mereka semua.
Konsekuensi dari alasan ini adalah bahwa ambang batas dukungan harus atur cukup
tinggi untuk membuat beberapa itemset sering. Biasanya, ambang batas di sekitar 1% dari
keranjang digunakan. Karena probabilitas itemset sering terjadi turun dengan cepat dengan
ukuran, itemset yang paling sering akan kecil. Namun itemset Ukuran satu umumnya tidak
berguna; kita membutuhkan, setidaknya dua item di item yang sering digunakan untuk
menerapkan teknik pemasaran yang disebutkan dalam Bagian 22.1.1, misalnya.
Kesimpulan kami adalah bahwa dalam penggunaan praktis algoritma untuk
menemukan kumpulan itemset, kita perlu menggunakan ambang support sehingga akan ada
sejumlah kecil dari pasangan yang sering, dan sangat sedikit itemset yang sering yang lebih
besar. Dengan demikian, kami algoritma akan fokus pada bagaimana menemukan pasangan
yang sering dalam beberapa lintasan melalui data. Jika itemset sering yang lebih besar
diinginkan, sumber daya komputasi yang digunakan untuk menemukan pasangan yang sering
biasanya cukup untuk menemukan sejumlah kecil yang sering tiga kali lipat, empat kali lipat,
dan sebagainya.

22.2. ALGORITMA UNTUK MENEMUKAN ITEMSET YANG SERING

Bagaimana jika item tidak diberi nomor dengan mudah kami


berasumsi bahwa item memiliki ID bilangan bulat mulai dari 0. Namun,
dalam praktiknya, item dapat diwakili oleh ID panjang atau dengan nama
lengkapnya. Jika demikian, kami perlu menyimpan di memori utama tabel
hash yang memetakan setiap item-ID yang sebenarnya ke bilangan bulat
unik dalam rentang O hingga k — 1. Tabel ini mengkonsumsi utama
Memori sepitaing dengan jumlah item K. Tidak ada algoritma untuk
menemukan Pasangan yang sering atau itemset yang lebih besar berfungsi
jika jumlah item tidak sedikit dipitaingkan dengan memori utama yang
tersedia. Dengan demikian, kami mengabaikan kemungkinan perlu tabel
memori utama yang ukurannya sepitaing dengan jumlah item.

22.2.2 Algoritma Naif untuk Sering Menemukan


Kumpulan item mari kita misalkan ada beberapa jumlah tetap byte memori utama M,
mungkin gigabyte, atau 16 gigabyte, atau apa pun yang dimiliki mesin kami. Biar ada k item
yang berbeda dalam himpunan data keranjang pasar kami, dan asumsikan bahwa item
tersebut diberi nomor 0,1,... K - L. Akhirnya, seperti yang disarankan dalam Bagian 22.21,
kita akan fokus pada menghitung pasangan, dengan asumsi itu adalah hambatan untuk
penggunaan memori.
Jika ada cukup ruang di memori utama untuk menghitung semua pasangan item
sebagai satu operan di atas keranjang kami, maka kami dapat menyelesaikan pasangan yang
sering masalah dalam satu lintasan. Dalam pass itu, kita membaca satu blok file data di setiap
waktu. Kami akan mengabaikan jumlah memori utama yang dibutuhkan untuk menahan blok
ini (atau bahkan beberapa blok jika keranjang mencakup dua blok atau lebih), karena kita
dapat berasumsi bahwa ruang yang dibutuhkan untuk mewakili keranjang sangat kecil
dipitaingkan dengan M. Untuk masing-masing keranjang ditemukan di blok ini, kami
mengeksekusi loop ganda melalui item-itemnya dan untuk Setiap pasangan item dalam
keranjang, kami menambahkan satu perhitungan untuk pasangan itu.
Masalah esensial yang kita hadapi, kemudian, adalah bagaimana kita menyimpan
hitungan dari pasangan item dalam M byte memori. Ada dua cara yang masuk akal untuk
dilakukan Jadi, dan mana yang lebih baik tergantung pada apakah itu umum atau tidak
mungkin bahwa pasangan item yang diberikan terjadi di setidaknya satu keranjang. Berikut
ini, kami akan membuat asumsi penyederhanaan bahwa semua bilangan bulat, baik
digunakan untuk hitungan atau untuk asumsi penyederhanaan bahwa semua bilangan bulat,
baik digunakan untuk hitungan atau untuk mewakili item, membutuhkan empat byte. Berikut
adalah dua pendekatan yang bersaing untuk mempertahankan hitungan.
Matriks Mangular
Jika sebagian besar pasangan item yang mungkin diharapkan muncul setidaknya
dihimpunan data, maka penggunaan memori utama yang paling efisien adalah array
Triangulu. Artinya, biarkan array bilangan bulat satu dimensi menempati semua utama yang
tersedia pada penyimpanan. Kami menghitung pasangan (i, j), di mana 0 ≤ i < j < k
didala006D a (n), di mana:
2
n=( i+ j ) /4+ i=1/4 jika i+ j adalah ganjil
2
n=( i+ j ) / 4+ i jika i + j adalah genap

Selama M ≥ 2k 2, ada cukup ruang untuk menyimpan array a , dengan empat byte
perhitungan. Perhatikan bahwa metode ini hanya membutuhkan setengah ruang yang akan
digunakan dengan array persegi, yang kami hanya menggunakan segitiga atas atau bawah
untuk menghitung pasangan (i, j) di mana i < j.

Tabel Hitungan
Jika probabilitas sepasang item pernah terjadi kecil, maka kita bisa melakukannya dengan
spasi kurang dari O(k 2). Kami malah membuat tabel hash tiga kali lipat (i, j, c), di mana i c: j
dan (i, j) adalah salah satu itemset yang benar-benar terjadi di onc atau lebih dari keranjang.
Di sini, c adalah hitungan untuk pasangan itu. Kami hash pasangan (i, j) untuk menemukan
wadah tempat hitungan untuk itemset itu disimpan.
Triple (i , j ,c )membutuhkan 12 byte, sehingga kita dapat mempertahankan jumlah
untuk pasangan M /122 Dengan kata lain, jika p pair pernah terjadi dalam data, kita
membutuhkan memori utama di paling sedikit M ≥12p.
Perhatikan bahwa ada sekitar k 2 /2 pasangan yang mungkin jika ada k di item yang
berbeda. Jika jumlah pasangan p k 2 /2 , maka tabel hitungan membutuhkan tiga kali lebih
banyak memori utama sebagai matriks segitiga. Namun, jika saja 1/3 dari semua pasangan
yang ungkin terjadi, maka kedua metode memiliki memori yang sama persyaratan, dan jika
probabilitas bahwa pasangan tertentu terjadi kurang dari 1/3, maka tabel hitungan lebih
disukai.
Komentar tambahan tentang algoritma naif
Singkatnya, wc dapat menggunakan algoritma one-pass yang naif untuk menemukan
semua pasangan yang sering jika jumlah byte Memori utama M melebihi 2k2 atau 12p, di
mana k berada Jumlah item yang berbeda dan p adalah jumlah pasangan item yang terjadi di
setidaknya satu keranjang himpunan data.
Pendekatan yang sama dapat digunakan untuk menghitung tiga kali lipat, asalkan ada
memori yang cukup untuk menghitung semua kemungkinan tiga kali lipat atau semua tiga
kali lipat yang sebenarnya terjadi dalam data. Demikian juga, kita dapat menghitung empat
kali lipat atau itemset dari berbagai ukuran, meskipun kemungkinan kita memiliki cukup
memori turun seiring berjalannya ukuran ke atas. Kami meninggalkan formula untuk berapa
banyak memori yang dibutuhkan sebagai latihan.
22.2.3 Algoritma A-Priori
Algoritma A-Priori adalah metode untuk menemukan itemset yang sering berukuran n, untuk
setiap n, dalam n lulus. Biasanya menggunakan memori utama yang jauh lebih sedikit
daripada algoritma naif, dan pasti akan menggunakan lebih sedikit memori jika ambang batas
dukungan cukup tinggi sehingga beberapa set singleton tidak sering. Yang penting Apa pun
jenis tabel yang kita gunakan, akan ada beberapa overhead tambahan, yang kita akan
mengabaikan. Misalnya, jika kita menggunakan pengalamatan terbuka, maka umumnya
untuk pergi sebagian kecil dari wadah tidak terisi, untuk membatasi pencarian rata-rata untuk
tiga kali lipat.
22.2. ALGORITMA UNTUK MENEMUKAN ITEMSET YANG SERING
wawasan yang membuat algoritma bekerja adalah monotonisitas dari properti menjadi
Sering. Yaitu:
• Jika itemset S sering terjadi, begitu juga masing-masing subsetnya.
Kebenaran pernyataan di atas mudah dilihat. Jika S adalah subset dari setidaknya s keranjang,
di mana s adalah ambang batas dukungan, dan T C S, maka T juga merupakan subset dari
keranjang yang sama yang berisi S, dan mungkin T adalah bagian dari keranjang lainjuga.
Penggunaan monotonisitas sebenarnya dalam bentuk kontrapositifnya:
• Jika S bukan itemset yang sering, maka tidak ada superset S yang sering terjadi.
Pada lintasan pertama, algoritma a-priori hanya menghitung set singleton Item. Jika
beberapa set itu tidak sering sendiri, maka barang-barangnya tidak dapat menjadi bagian dari
pasangan yang sering. Dengan demikian, barang-barang yang tidak sering dapat diabaikan
pada detik melewati data, dan hanya pasangan yang terdiri dari dua yang sering pada item
perlu dihitung. Misalnya, jika hanya setengah item yang sering, maka kita hanya perlu
menghitung 1/4 dari jumlah pasangan, sehingga kita dapat menggunakan 1/4 banyak memori
utama. Atau dengan kata lain, dengan jumlah memori utama yang tetap, kami dapat
menangani himpunan data yang memiliki item dua kali lebih banyak.
Kita dapat membangun frekuensi tiga kali lipat pada lintasan lain pada operan
keempat, dan seterusnya, setinggi yang kita suka dan itu Itemset yang sering ada.
Generalisasinya adalah bahwa untuk lulus ke-n kita mulai dengan satu set kandidat itemset
C n dan kami menghasilkan subset F n dari C n yang terdiri- ing dari itemset sering ukuran n.
Artinya, C 1 adalah himpunan semua singleton, dan apakah singleton yang sering terjadi. C 2
adalah himpunan pasangan item, keduanya yang ada di F 1, dan F 2,adalah pasangan yang
sering terjadi. Calon kandidat pada lintasan ketiga, C 3, adalah triple (i, j, k) sedemikian rupa
sehingga setiap subset doubleton, (i, j), (i, k), dan (j, k), berada di F 2. Berikut ini mwadahikan
algoritma secara formal.

Algoritma 22.4: Algoritma A-Priori.


INPUT : File D yang terdiri dari keranjang item, ambang batas dukungan s, dan a
batas ukuran Q untuk ukuran itemset yang sering.
OUTPUT : Set Itemsets , F 2, ... , F g, di mana F i adalah set dari semua itemset dari
ukuran i yang muncul di setidaknya s keranjang D.
METODE : Jalankan algoritma Gambar 22.4 dan output setiap set F n barang yang sering
untuk n = 1,2,….,q
Contoh 22.5 : Mari kita jalankan Algoritma A-Priori pada data Gambar 22.1 dengan
dukungan s 4. Awalnya, C 1 adalah set dari keenam film. Yang pertama hitung set tunggal,
dan kami menemukan bahwa DI, BS, HPI, dan HP2 terjadi setidaknya empat kali; dua film
lainnya tidak. Dengan demikian, , F 1 (BI,BS, HPI, HP2), dan , C 2 adalah himpunan enam
pasang yang dapat dibentuk dengan memilih dua dari empat film tersebut.
1. LET c1 = all items that appear in file F.
2. FOR n := 1 tT q D0 BEGIN.
3. F n : = those sets in C n that occur at least s times in D;
4. IF n = q BREAK;
5. LET C n+1 = all itemsets S of size n+1 such that
every subset of S of size n is in fn;
END
Gambar 22.4: Algoritma A-Priori

Pada lintasan yang kedua, kami hanya menghitung enam pasang ini, dan kami menemukan
bahwa F 2= {{BI,BS}, {HPI, HP2}, {BI,HPI}, {BS, HPI}; dua pasang lainnya tidak sering.
Dengan asumsi q 2, kami mencoba menemukan triple yang sering. C 3, hanya terdiri dari
triple {BI , BS, HPI}, karena itu adalah satu-satunya set dari tiga film, semua pasangan yang
ada di F,. Namun, ketiga film ini hanya muncul bersama tiga baris: V, , V5, dan V8. Dengan
demikian, F 3 kosong, dan tidak ada yang lebih sering dari itemset, tidak peduli seberapa
besar q. Algoritma mengembalikan F i F 2.
2.2.4 Implementasi Algoritma A-Priori
Gambar 22.4 hanyalah garis besar algoritma. Kita harus mempertimbangkan dengan hati-hati
bagaimana caranya langkah-langkahnya diterapkan. Inti dari algoritma adalah garis (3), yang
kita harus mengimplementasikan, setiap kali, dengan satu lintasan melalui data input.
Pernyataan baris (I) dan (5) hanyalah definisi dari apa itu C n, bukan daripada penugasan yang
akan dilaksanakan. Artinya, saat kita berlari melalui keranjang dibaris (3), definisi C n
mwadahi tahu kita set ukuran n mana yang perlu dihitung dalam memori utama, dan yang
tidak perlu dihitung.
Algoritma harus digunakan hanya jika ada cukup memori utama untuk memuaskan
persyaratan untuk menghitung semua kandidat yang ditetapkan pada setiap lulus. Jika tidak
ada memori yang cukup, maka algoritma yang lebih hemat ruang harus digunakan, atau
beberapa pass harus digunakan untuk satu nilai n. Jika tidak, sistem akan "sampah," dengan
halaman yang dipindahkan masuk dan keluar dari memori utama selama pass, sehingga
sangat meningkatkan waktu berjalan.
Kita dapat menggunakan salah satu metode yang dibahas dalam Bagian 22.2.2 untuk
mengatur utama- memori yang ditetapkan pada setiap lintasan. Mungkin tidak jelas bahwa
matriks segitiga metode dapat digunakan dengan a-priori pada lintasan kedua, karena item
yang sering tidak mungkin memiliki angka 0, 1, ... hingga barang yang sering ada disana.
Namun, setelah menemukan item yang sering ada di lintasan 1, kita dapat membuat tabel
memori utama kecil, tidak lebih besar dari set item itu sendiri, yang diterjemahkan item asli
berjumlah menjadi angka berurutan hanya untuk item yang sering.
22.2. ALGORITMA UNTUK MENEMUKAN ITEMSET YANG SERING
22.2.5 Memanfaatkan Memori Utama dengan Lebih Baik
Kami berharap bahwa kemacetan memori datang pada lintasan kedua algoritma 22.4, yaitu
pada eksekusi baris (3) dari Gambar 22.4 dengan n = 2. Yaitu kami berasumsi bahwa
menghitung pasangan kandidat membutuhkan lebih banyak ruang daripada menghitung
kandidat tiga kali lipat, empat kali lipat, dan seterusnya. Jadi, mari kita berkonsentrasi pada
bagaimana kita bisa mengurangi jumlah pasangan calon untuk lolos kedua. Untuk memulai,
penggunaan khas memori utama pada dua lintasan pertama Algoritma A-Priori disarankan
oleh Gambar 22.5.

Lintasan 1 Lintasan 2

Gambar 22.5: Penggunaan memori utama oleh Algoritma A-Priori


Pada pass pertama (n = 1), yang kita butuhkan hanyalah ruang untuk menghitung
semua item, yang biasanya sangat kecil dipitaingkan dengan jumlah memori yang dibutuhkan
untuk menghitung pasangan. Pada pass kedua (n = 2), hitungan diganti dengan daftar barang
yang sering, yang diperkirakan akan memakan lebih sedikit ruang daripada hitungan yang
dibutuhkan pada operan pertama. Semua memori yang tersedia dikhususkan, sesuai
kebutuhan, untuk menghitung pasangan calon.
Bisakah kita melakukan apa saja dengan memori yang tidak digunakan pada pass
pertama, untuk mengurangi jumlah pasangan kandidat pada lulus kedua? Jika demikian,
kumpulan data dengan Jumlah pasangan yang lebih besar dapat ditangani pada mesin dengan
tetap jumlah memori utama. Algoritma PCY mengeksploitasi memori yang tidak digunakan
dengan mengisinya sepenuhnya dengan semacam tabel hash yang tidak biasa. "keranjang"
dari tabel ini j h angan memegang pasangan atau elemen lainnya. Sebaliknya, setiap tempat
adalah bilangan bulat tunggal hitung, dan dengan demikian hanya menempati empat byte.
Kita bahkan bisa menggunakan wadah dua byte jika ambang support kurang dari 216, karena
sekali hitungan berada di atas ambang batas, kita tidak perlu melihat seberapa besar hasilnya.
Selama pass pertama, saat kami memeriksa setiap keranjang, kami tidak hanya
menambahkan satu kehitungan untuk setiap item dalam keranjang, tetapi kami juga hash
setiap pasangan item untuk wadahnya di tabel hash dan tambahkan satu ke hitungan di tempat
itu. Apa yang kami 3 Untuk penulis, J. S. Park, M.-S. Chen, dan P. S. Yu. Harapan untuk
adalah bahwa beberapa wadah akan berakhir dengan hitungan kurang dari s, dukungan
ambang. Jika demikian, kita tahu bahwa tidak ada pasangan (i, j) yang hash ke tempat itu bisa
sering, bahkan jika i dan j tersendiri.
Lintasan 1 Lintasan 2
Gambar 22.6: Penggunaan memori utama oleh Algoritma PCY
Antara lintasan pertama dan kedua, kami mengganti tempat dengan bitmap dengan
satu bit per satuan. Bitnya adalah 1 jika satuanr yang sesuai adalah satuan yang sering; yaitu,
hitungannya setidaknya adalah ambang batas dukungan s; jika tidak, bitnya adalah 0. Sebuah
tempat, menempati 32 bit (4 byte) diganti dengan satu bit, sehingga bitmap Menempati
sekitar 1/32 dari memori utama pada pass kedua. Dengan demikian hampir ada sebanyak
mungkin ruang yang tersedia untuk mengandalkan pass kedua dari Algoritma PCY sebagai
ada untuk Algoritma A-Priori. Gambar 22.6 mengilustrasikan penggunaan memori selama
dua lintasan pertama PCY.
Pada pass kedua, (i, j) adalah pasangan calon jika dan hanya jika berikut ini Kondisi
terpenuhi:
1. Baik i dan j adalah barang yang sering terjadi.
2. (i, j) hash ke tempat yang menurut bitmap adalah tempat yang sering
Kemudian, pada pass kedua, kita hanya dapat menghitung kumpulan pasangan kandidat ini,
bukan daripada semua pasangan yang memenuhi kondisi pertama, seperti pada Algoritma A-
Priori.

22.2.6 Kapan Menggunakan Algoritma PCY


Dalam Algoritma PCY, himpunan pasangan kandidat cukup tidak teratur bahwa kita tidak
dapat menggunakan metode matriks segitiga untuk mengatur hitungan; kita harus
menggunakan tabel hitungan. Dengan demikian, tidak masuk akal untuk menggunakan PCY
kecuali nomornya pasangan kandidat dikurangi menjadi paling banyak 1/3 dari semua
pasangan yang mungkin. Lintasan Algoritma PCY setelah yang kedua dapat dilanjutkan
seperti pada Algoritma A-priori, jika mereka dibutuhkan.
22.2. ALGORITMA UNTUK SET ITEM SERING FLVDLVG
Selanjutnya, agar PCY menjadi peningkatan dari A-Priori, yang baik fraksi wadah pada
lintasan pertama tidak boleh sering. Untuk jika sebagian besar Wadah sering terjadi, kondisi
(3) di atas tidak menghilangkan banyak pasangan. Setiap satuan yang bahkan satu hash
pasangan sering akan sering terjadi. Namun tempat yang tidak sering memasangkan hash
masih bisa sering terjadi jika jumlah pasangan yang melakukan hash di sana melebihi
ambang batas s. Untuk yang pertama perkiraan, jika jumlah rata-rata tempat kurang dari s,
kita dapat mengharapkan pada setidaknya setengah wadah tidak sering, yang menunjukkan
beberapa manfaat dari Pendekatan PCY. Namun, jika wadah rata-rata memiliki hitungan di
atas s, maka sebagian besar keranjang akan sering terjadi.
Misalkan jumlah total kemunculan pasangan item di antara semua keranjang dalam
himpunan data adalah P. Karena sebagian besar memori utama M dapat dikhususkan untuk
wadah, jumlah wadah akan menjadi sekitar M/4. Rata-rata jumlah wadah kemudian akan
menjadi 4P / M. Agar ada banyak wadah yang tidak sering, kita membutuhkan 4P/M s, atau
M 4P/8. Latihan ini memungkinkan Anda untuk Jelajahi beberapa contoh yang lebih konkret.

22.2.7 Algoritma Multistage


Alih-alih menghitung pasangan pada pass kedua, kami melakukannya di A-Priori atau PCY,
kita bisa menggunakan teknik tempating yang sama (dengan fungsi hash yang berbeda) pada
pass kedua. Untuk membuat jumlah rata-rata lebih kecil pada pass kedua, kita bahkan tidak
perlu mempertimbangkan sepasang pada pa.ss kedua kecuali jika itu akan terjadi
mengandalkan PCY kedua; yaitu, pasangan terdiri dari dua sering item dan juga hashed ke
wadah fr«luent Pada pass pertama.

Gambar 22.7: Penggunaan memori utama dalam versi tiga-pass dari algoritma bertingkat.
Ide ini mengarah ke versi tiga lintasan thc dari Algoritma Bertingkat untuk menemukan
pasangan yang sering. Algoritma ini dibuat sketsa pada Gambar 22.7. Lintasan 1 hanya
seperti Pass 2 Of PC Y, dan antara lintasan 1 dan 2 kami meruntuhkan tempat menjadi bit dan
pilih item yang sering, juga seperti di PCY.
Namun, pada lintasan 2, kami kembali menggunakan semua memori yang tersedia untuk
melakukan pasangan hash ke dalam wadah sebanyak mungkin. Karena ada bitmap untuk
disimpan di memori utama pada lintasan kedua, dan bitmap ini memampatkan bilangan bulat
4-byte (32-bit) menjadi Satu bit, akan ada sekitar 31/32 wadah sebanyak pada lintasan
keduaseperti pada yang pertama. Pada pass kedua, kita menggunakan fungsi hash yang
berbeda dari itu digunakan pada Pass 2. Kami hash sepasang (i, j) ke wadah dan
menambahkan satu ke hitungan di sana jika dan hanya jika:
1. Baik i dan j adalah barang yang sering terjadi.
2. (i, j) di-hash ke wadah yang sering pada lintasan pertama. Keputusan ini dibuat
dengan berkonsultasi dengan bitmap.
Artinya, kita hanya memiliki pasangan-pasangan yang akan kita andalkan pada lintasan
kedua dari Algoritma PCY. Antara lintasan kedua dan ketiga, kami memadatkan wadah yang
kedua masuk ke bitmap lain, yang harus disimpan dalam memori utama bersama dengan
bitmap pertama dan kumpulan item yang sering. Pada pass ketiga, kami akhirnya menghitung
pasangan calon. Untuk menjadi kandidat, pasangan (i, j) harus memuaskan semua arab:
1. Baik i dan j adalah barang yang sering terjadi.
2. (i, j) di-hash ke wadah yang sering pada pass pertama. Keputusan ini dibuat dengan
berkonsultasi dengan bitmap pertama.
3. (i, j) di-hash ke wadah yang sering pada pass kedua. Keputusan ini adalah dibuat
dengan berkonsultasi dengan bitmap kedua.
Yaitu, kami hanya meng-hash pasangan yang akan kami andalkan pada lintasan kedua dari
Algoritma PCY.
Kondisi ketiga sering menghilangkan banyak pasangan yang dua kondisi pertama
biarkan lewat. Salah satu alasannya adalah bahwa pada lintasan kedua, tidak setiap pasangan
di-hash, jadi jumlah wadah cenderung lebih kecil daripada pada lintasan pertama,
menghasilkan banyak wadah yang lebih jarang. Selain itu, karena hash berfungsi pada yang
pertama dua lintasan berbeda, pasangan yang jarang terjadi pada hash ke sering tempat pada
pass pertama memiliki peluang bagus untuk melakukan hashing ke tempat yang jarang pada
lintasan kedua. Algoritma Multistage tidak terbatas pada tiga lintasan untuk komputasi dari
pasangan yang sering. Kita dapat memiliki sejumlah besar tiket pengisian wadah, masing-
masing menggunakan fungsi hash yang berbeda. Selama operan pertama menghilangkan
beberapa pasangan karena mereka milik wadah yang tidak jarang, maka operan selanjutnya
akan menghilangkan fraksi pasangan yang tumbuh dengan cepat, sampai sangat tidak
mungkin bahwa Setiap pasangan calon akan menjadi tidak sering. Namun, ada benarnya
pengembalian yang semakin berkurang, karena setiap bitmap membutuhkan sekitar 1/32 dari
memori.
22.2. ALGORITMA UNTUK MENEMUKAN ITEMSET YANG SERING
Jika kita menggunakan terlalu banyak operan, algoritma tidak hanya akan membutuhkan
lebih banyak waktu, tetapi kita dapat menemukan diri kita dengan memori utama yang
tersedia yang terlalu kecil untuk dihitung semua pasangan yang sering.
22.2.8 Latihan untuk Bagian 22.2
Latihan 22.2.1 : Simulasikan Algoritma A-Priori Pada data Gambar 22.3, dengan 8 3.
! Latihan 22.2.2: Misalkan kita ingin menghitung semua itemset ukuran n menggunakan satu
melewati data.
a) Apa generalisasi metode matriks segitiga untuk n 2? Mwadahikan rumus untuk
menemukan elemen array yang menghitung satu set tertentu n elemen (i 1, i 2 …i n
b) Berapa banyak memori utama yang dilakukan metode matriks segitiga generalimd
ambil jika ada item K?
c) Apa generalisasi metode tabel hitungan untuk n 2?
d) Berapa banyak memori utama yang diambil oleh metode table-of-counts umum
Jika ada item P ukuran N yang muncul dalam data?
Latihan 22.2.3; Bayangkan ada 1100 item, 100 di antaranya "besar" dan 1000 adalah
"sedikit." Keranjang dibentuk dengan menambahkan setiap item besar dengan kemungkinan
1/10, dan setiap item kecil dengan probabilitas 1/100. Asumsikan jumlah keranjang cukup
besar sehingga setiap itemset muncul dalam sebagian kecil keranjang itu sama dengan
kemungkinannya berada di keranjang tertentu. Misalnya, setiap pasangan yang terdiri dari
item besar dan item kecil muncul di 1/1000 keranjang. Biarkan s menjadi ambang batas
dukungan, tetapi dinyatakan sebagai pecahan dari jumlah total keranjang daripada sebagai
angka absolut. Mwadahi, sebagai fungsi dari s ranging dari O 1, jumlah item yang sering
pada Pass 1 dari Algoritma A-Priori. Juga, berikan jumlah pasangan kandidat pada kelulusan
kedua.
! Latihan 22.2.4: Pertimbangkan untuk menjalankan Algoritma PCY pada data latihan
22.2.3, dengan 100.000 wadah pada lintasan pertama. Asumsikan bahwa hash fungsi yang
digunakan mendistribusikan pasangan ke wadah dalam fash acak yang nyaman- ion. Secara
khusus, 499.500 pasangan kecil-kecil dibagi a.s secara merata mungkin (sekitar 5 hingga satu
wadah). Salah satu dari 100.000 pasangan besar-kecil ada di masing-masing wadah, dan 4950
pasangan besar-besar masing-masing masuk ke wadah yang berbeda.
a) Sebagai fungsi dari s, rasio ambang batas dukungan terhadap jumlah total
keranjang (seperti dalam Latihan 22.2.3), berapa banyak wadah yang sering ada
pada pass pertama?
b) Sebagai fungsi dari s, berapa banyak pasangan yang harus dihitung pada lintasan
kedua?
! Latihan 22.2.5 : Menggunakan asumsi Latihan 222.4, misalkan kita menjalankan
Algoritma Multistage tiga-pass pada himpunan data. Dengan asumsi bahwa pada detik
Lewati ada lagi 100.000 tempat, dan fungsi hash mendistribusikan pasangan Secara acak di
antara wadah, jawab pertanyaan-pertanyaan berikut, semua dalam hal s rasio ambang batas
dukungan dengan jumlah Keranjang.
a) Kira-kira berapa banyak wadah yang sering ada pada wadah kedua
b) Kira-kira berapa banyak pasangan yang dihitung pada lintasan ketiga?
Latihan 22.2.6: Misalkan keranjang berada dalam file yang didistribusikan ke banyak
Prosesor. Perlihatkan bagaimana Anda akan menggunakan kerangka kerja pengurangan peta
dari Bagian 20.2
ke:
a) Temukan hitungan semua item.
! b) Temukan hitungan Semua pasang barang.
22.3 Menemukan Item Serupa
Kita sekarang beralih ke versi masalah frequent-itemsets yang mendukung kegiatan
pemasaran untuk merchant on-line dan sejumlah hal menarik lainnya aplikasi seperti
menemukan dokumen serupa di Web. Kita bisa mulai dengan model data pasar-keranjang,
tetapi sekarang kita mencari pasangan item yang muncul bersama-sama sebagian besar waktu
yang muncul, bahkan jika keduanya tidak item muncul di sangat banyak buket. Barang-
barang seperti itu dikatakan serupa. Kuncinya tekniknya adalah membuat "tanda tangan"
pendek untuk setiap item, sehingga perbedaannya antara tanda tangan mwadahi tahu kita
perbedaan antara item itu sendiri.
22.3.1 Ukuran Kesamaan Jaccard
Titik awal kami adalah mendefinisikan dengan tepat apa yang kami maksud dengan item
"serupa". Sejak kami tertarik untuk menemukan item yang cenderung muncul bersama dalam
hal yang sama keranjang, sudut pandang alami adalah bahwa setiap item adalah satu set: set
keranjang di yang tampaknya. Jadi, kita perlu definisi tentang seberapa mirip dua set.
Kesamaan Jaccard (atau hanya kesamaan, jika ukuran kesamaan ini tidak- derstood)
dari set S dan T adalah |S n T| / |S U T / , yaitu, rasio ukuran persimpangan dan persatuan
mereka. Dengan demikian, himpunan terputus-putus memiliki kesamaan (), dan kesamaan
himpunan dengan dirinya sendiri adalah 1. Sebagai contoh lain, kesamaan set(1, 2, 3) dan 11,
3, 4, 5) adalah 2/5, karena ada dua elemen di persimpangan dan lima elemen dalam serikat
pekerja.
22.3.2 Aplikasi Kesamaan J accard
Sejumlah masalah penambangan data penting dapat dinyatakan sebagai kumpulan temuan
dengan kesamaan Jaccard yang tinggi. Kami akan membahas dua di antaranya secara rinci di
sini.
22.3. MENEMUKAN BARANG SERUPA
Pemfilteran Kolaboratif
Misalkan kita diberi data tentang pembelian online pelanggan. Salah satu cara untuk Beri
tahu item apa yang akan diajukan kepada pelanggan adalah menemukan pasangan pelanggan
yang membeli set item serupa. Saat pelanggan masuk, mereka dapat mengajukan item yang
Pelanggan serupa membeli, tetapi mereka tidak membeli. Untuk mempitaingkan pelanggan,
mewakili pelanggan dengan set item yang mereka beli, dan menghitung Jaccard kesamaan
untuk setiap pasangan pelanggan.
Ada tampilan ganda dari data yang sama. Kita mungkin ingin tahu yang mana
pasangan barang serupa, berdasarkan mereka telah dibeli oleh set serupa dari pelanggan. Kita
dapat membingkai masalah ini dalam istilah yang sama dengan menemukan yang serupa
pelanggan.
Sekarang, barang-barang tersebut diwakili oleh sekumpulan pelanggan yang membeli
mereka, dan kita perlu menemukan pasangan barang yang memiliki set pelanggan yang
serupa- Perhatikan, kebetulan, bahwa data yang sama dapat dilihat sebagai keranjang pasar
data dalam dua cara berbeda. Produk dapat menjadi "item" dan pelanggan "keranjang," atau
sebaliknya. Anda seharusnya tidak terkejut. Banyak-banyak hubungan dapat dilihat sebagai
data keranjang pasar dalam dua cara. Dalam Bagian 22.1 Kami melihat data hanya dalam satu
cara, karena ketika "keranjang" benar-benar keranjang belanja di stand checkout toko, tidak
ada minat nyata untuk menemukan keranjang belanja serupa atau keranjang yang berisi
banyak item yang sama.

Dokumen Serupa
Ada banyak alasan kami ingin menemukan pasangan dokumen yang mirip secara tekstual.
Jika kita melihat Web, dokumen yang sangat mirip mungkin cermin Satu sama lain, mungkin
hanya berbeda dalam tautan ke dokumen lain di situs lokal. Mesin pencari tidak ingin
menawarkan kedua situs sebagai tanggapan terhadap query pencarian. Pasangan serupa
lainnya mungkin mewakili contoh plagiarisme. Perhatikan bahwa satu dokumen dl mungkin
berisi kutipan dari dokumen lain D2, namun DL dan D2 identik hanya dalam 10% dari
masing-masing; Itu masih bisa menjadi contoh plagiat.
Mwadahi tahu apakah dokumen identik dengan karakter demi karakter itu mudah; saja
Pitaingkan karakter hingga Anda menemukan ketidakcocokan atau mencapai ujung dokumen
menemukan apakah sebuah kalimat atau potongan pendek teks muncul karakter dalam
dokumen tidak jauh lebih sulit. Maka Anda harus semua tempat dalam dokumen di mana
kalimat fragmen mungkin dimulai, tapi dari tempat-tempat itu akan memiliki ketidakcocokan
dengan sangat cepat. Apa yang lebih sulit ditemukan dokumen yang serupa, tetapi bukan
salinan persis dalam bentangan panjang. Bagi misalnya, draf dokumen dan versi yang diedit
mungkin memiliki sedikit hampir setiap kalimat. Teknik yang hampir kebal terhadap
sejumlah besar perubahan kecil adalah untuk mewakili dokumen dengan himpunan k-
gramnya, yaitu, dengan himpunan substrinv panjangnya k. k-Shingle adalah kata lain untuk
k-gram. Misalnya, set 3 gram yang kita temukan dalam kalimat pertama Bagian 22.3.2
("sejumlah nomer dari …. ", dan sebagainya. Jika kita memilih k cukup berisi "A n", " nu",
"num", dan sebagainya. Jika kita memilih k cukup besar sehingga probabilitas k-gram yang
dipilih secara acak muncul dalam dokumen kecil,

Herpes zoster terkompresi

Agar dokumen dicirikan oleh himpunan k-herpes zosternya, kami memiliki untuk memilih k cukup
besar sehingga jarang ada sirap yang diberikan muncul di sebuah dokumen. k 5 adalah tentang
yang terkecil yang bisa kita pilih, dan itu tidak tidak biasa memiliki k sekitar 10. Namun, maka ada
begitu banyak kemungkinan herpes zoster, dan herpes zosternya sangat panjang, sehingga
algoritma tertentu membutuhkan lebih banyak waktu dari yang diperlukan. Oleh karena itu,
adalah umum untuk hash herpes zoster untuk bilangan bulat 32 bit atau kurang. Nilai hash ini
masih cukup banyak bahwa mereka membedakan antara dokumen, tetapi mereka dapat
dipitaingkan dan diproses dengan cepat.

Kemudian kesamaan Jaccard yang tinggi dari set k-gram yang mewakili sepasang dokumen adalah
indikasi kuat bahwa dokumen itu sendiri serupa.

22.3.3 Memperkecil
Menghitung kesamaan Jaccard dari dua set besar memakan waktu. Bahkan jika kita Dapat
menghitung Kesamaan secara efisien, himpunan data yang besar memiliki terlalu banyak
pasangan set bagi kita untuk menghitung kesamaan Setiap pasangan. Dengan demikian, ada
dua "trik" kita perlu belajar mengekstrak hanya pasangan serupa dari himpunan data besar.
Keduanya adalah bentuk "hashing," meskipun tekniknya sangat berbeda penggunaan hashing.
1. Minhashing adalah teknik yang memungkinkan kita membentuk tanda tangan pendek
untuk masing-masing mengeset. Kita dapat menghitung kesamaan Jaccard Dari set
dengan mengukur kesamaan tanda tangan. Seperti yang akan kita lihat, "kesamaan"
untuk tanda tangan mudah dihitung, tetapi bukan kesamaan Jaccard. Kami mengambil
minhashing di bagian ini.
2. Locality-Sensitive Hashing adalah teknik yang memungkinkan kita fokus pada
pasangan tanda tangan yang set yang mendasarinya cenderung serupa, tanpa
memeriksa semua pasang tanda tangan. Kami menggunakan hashing yang sensitif
terhadap lokalitas di Bagian 22.4. ,k
Untuk memperkenalkan minhashing, misalkan elemen dari setiap set dipilih dari himpunan
"keseluruhan" n elemen eo,el, , en—l. Pilih permuta acak- tion Dari n elemen. Kemudian
nilai minhash dari himpunan S adalah elemen pertama, dalam urutan permutasi, yaitu anggota
S.
Contoh 22.6 : Misalkan himpunan elemen universal adalah (1, 2, 3, 4, 5) dan Urutan
permutasi yang kita pilih adalah (3, 5, 4, 2, 1). Kemudian nilai hash dari setiap set yang berisi
3, seperti (2, 3, 5) adalah 3. Satu set yang berisi 5 tetapi tidak 3, seperti (1, 2, 5), hæhes ke 5.
Untuk contoh lain, (1, 2) hash ke 2, karena 2 muncul sebelum 1 dalam urutan permutasi.

22.3. MENEMUKAN BARANG SERUPA


Misalkan kita memiliki koleksi set. Misalnya, kita mungkin diberi pengumpulan dokumen
dan pikirkan setiap dokumen seperti yang diwakili oleh set 10 gram. Kami menghitung tanda
tangan untuk set dengan memilih daftar m permutasi dari semua elemen yang mungkin
(misalnya, semua string karakter yang mungkin panjang 10, jika elemennya adalah I (J-
gram). Biasanya, m akan menjadi sekitar 100. Tanda tangan dari himpunan S adalah daftar
nilai minhash dari S, untuk masing-masing permutasi m, secara berurutan.
Contoh 22.7: Misalkan himpunan elemen keselurahan lagi dan Pilih m 3, yaitu, Dari tiga
nilai minhash. Biarkan permutasi menjadi π 1 = (1,2,3,4,5), π 2 = (5,4,3,2,1), dan π 3 =
(3,5,1,4,2). Tanda Tangan S (2, 3, 4) adalah (2, 4, 3). Untuk melihat mengapa, pertama-tama
perhatikan bahwa dalam urutan 2 muncul sebelum 3 dan 4, jadi 2 adalah nilai minhash
pertama. Dalam 4 muncul sebelum 2 dan 3, jadi 4 adalah nilai minhash kedua. Dalam π 3, 3
muncul sebelum 2 dan 4, jadi 3 adalah nilai minhash ketiga.
22.3.4 Minhashing dan Jarak Jaccard
Ada hubungan yang mengejutkan antara nilai-nilai minhash dan Jaccard Kesamaan:
 Jika kita memilih permutasi secara acak, kemungkinan itu akan menghasilkan nilai
minhash yang sama untuk dua set sama dengan kesamaan Jaccard dari set tersebut.
Jadi, jika kita memiliki tanda tangan dari dua set S dan T, kita dapat memperkirakan Jaccard
kesamaan S dan T dengan pecahan nilai minhash yang sesuai untuk dua set yang setuju.
Contoh 22.8: Biarkan permutasi menjadi seperti pada Contoh 22.7, dan pertimbangkan set
lain, T (1, 2, 3). Tanda tangan untuk T adalah (1,3,3). Jika kita pitaingkan tanda tangan ini
dengan (2, 4, 3), tanda tangan Dari set S (2, 3, 4), kita melihat bahwa tanda tangan hanya
setuju dalam yang terakhir dari tiga komponen. Oleh karena itu kami perkirakan kesamaan
Jaccard dari S dan T menjadi 1/3. Perhatikan bahwa yang benar kesamaan Jaccard dari S dan
T adalah I /2.
Agar tanda tangan sangat mungkin untuk memperkirakan kesamaan dengan cermat,
Kita perlu memilih lebih dari tiga permutasi. Kami menyarankan bahwa 100 permutasi
mungkin cukup untuk dipegang oleh "hukum jumlah besar". Namun, jumlah pasti tanda
tangan yang dibutuhkan tergantung pada seberapa dekat kita perlu untuk memperkirakan
kesamaan.
22.3.5 Mengapa Minhashing Bekerja
Untuk melihat mengapa kesamaan Jaccard adalah probabilitas bahwa dua set memiliki yang
sama nilai minhash sesuai dengan permutasi elemen yang dipilih secara acak, biarkan S dan
T menjadi dua set. Bayangkan akan turun daftar elemen dalam permutasi urutan, sampai
Anda menemukan elemen e yang muncul di setidaknya satu dari S dan T. Ada dua kasus:
1. Jika e muncul di S dan T, maka kedua set memiliki nilai minhash yang sama, yaitu e.
2. Tetapi jika e muncul di salah satu S dan T tetapi tidak yang lain, maka satu set akan
mendapat minhash nilai e dan yang lainnya pasti mendapat beberapa nilai minhash
lainnya.
Kami tidak bertemu e sampai pertama kali kami menemukan, dalam urutan permutasi, sebuah
elemen yang ada di S ∪ T. Probabilitas Kasus 1 terjadi adalah fraksi anggota S ∪ T yang
berada di S ∩ T. Fraksi itu persis Jaccard kesamaan S dan T. Tetapi Kasus 1 juga persis
ketika S dan T memiliki hal yang sama nilai minhash, yang membuktikan hubungan.
22.3.6 Menerapkan Minhashing
Sementara kita telah berbicara tentang memilih permutasi acak dari semua kemungkinan
elemen, tidak layak untuk melakukannya. Itu akan memakan waktu terlalu lama, dan kita
mungkin memilikinya untuk menangani elemen yang tidak muncul di satu set kami.
Sebaliknya, kami mensimulasikan Pilihan permutasi acak dengan memilih fungsi hash acak h
dari elemen ke beberapa urutan besar bilangan bulat 0, 1,... , B - 1 (yaitu, wadah angka).
Kami berpura-pura bahwa permutasi yang h mewakili elemen tempat e pada posisi h(e).
Tentu saja, beberapa elemen mungkin berakhir di posisi yang sama, tetapi selama B besar,
kita dapat memutuskan ikatan sesuka kita, dan permutasi yang disimulasikan akan sangat
acak bahwa hubungan antara tanda tangan dan kesamaan masih berlaku.
Misalkan himpunan data kita disajikan satu set pada satu waktu. Untuk menghitung
minhash nilai untuk himpunan S (a 1, a 2,... , a n menggunakan fungsi hash h, kita dapat
mengeksekusi.
V :=∞ ;
FOR i:=1 ¿ n DO ;
IF h(a i ¿<V maka V :=h ( ai ) ;

Akibatnya, V akan diatur ke nilai hæh dari elemen S yang memiliki nilai hash terkecil. Nilai
hash ini mungkin tidak mengidentifikasi elemen unik, karena beberapa elemen di alam
semesta dari elemen yang mungkin dapat hash ke nilai ini, tetapi selama h hash ke sejumlah
besar nilai yang mungkin, kemungkinan a kebetulan itu kecil, dan kita mungkin terus
berasumsi bahwa minhash umum nilai menunjukkan dua set memiliki elemen yang sama.
Jika kita ingin menghitung tidak hanya satu nilai minhash tetapi minhash untuk set S sesuai
dengan fungsi hash m h1 , h2 ,... , h m maka kita bisa menghitung m minhash nilai secara paralel,
saat kami memproses setiap anggota S. Kodenya adalah disarankan pada Gambar 22.8
22.3. MENEMUKAN BARANG SERUPA
FOR j:=1T 0 m D 0
V j :=∞ ;
FOR i:=1 T 0 n D 0
FOR j:=1T 0 m D 0
IF h(a i ¿<V maka V :=h ( ai ) ;

Gambar 22.8: Menghitung nilai m minhash sekaligus

Kemungkinan sulit untuk menghitung tanda tangan jika data disajikan keranjang demi
keranjang seperti dalam Bagian 22.1. Artinya, misalkan kita ingin menghitung tandatangan
"item" tetapi data kami ada dalam file yang terdiri dari keranjang. Kesamaan item adalah
kesamaan Jaccard dari set keranjang di mana item ini muncul.
Misalkan ada item k, dan kita ingin membangun tandatangan minhash mereka
menggunakan m fungsi hash yang berbeda h1 , h2 ,... , h m. Maka kita perlu mempertahankan
nilai, yang masing-masing akan berakhir menjadi nilai minhash untuk salah satu item sesuai
dengan salah satu fungsi hash. Biarkan V ij , menjadi nilai untuk item i dan fungsi hash hi .
Awalnya, atur semua V ij ke tak terbatas. Ketika kita membaca b, kami menghitung h j(b)
untuk semua j = 1,2,.. , m. Namun, kami menyesuaikan nilai hanya untuk barang-barang i
yang ada di b. Algoritma ini dibuat sketsa pada Gambar 22.9. Pada akhirnya, Vij memegang
nilai jth minhash untuk item i.
FOR i:=1 T 0 k D 0
FOR j:=1T 0 m D 0
V j :=∞ ;
FOR EACH basket b D0 BEGIN
FOR j :=1T 0 k D 0
Compute h j(b);
FOR EACH itemi∈b D 0
FOR j:=1T 0 m D 0
IF h j ( b ) <V i j THEN V ij :=h j ( b )
END
Gambar 22.9: Menghitung nilai minhash untuk semua item dan fungsi hash
22.3.7 Latihan untuk Bagian 22.3
Latihan 22.3.1 : Hitung kesamaan Jaccard dari setiap pasangan berikut ini
set: {1.2.3.4.5}, {1,6,7 }, {2,4,6.8}.
Latihan 22.3.2: Apa saja 4 gram dari string berikut:
"abc def ghi"

Jangan menghitung tanda kutip sebagai bagian dari string, tetapi ingatlah bahwa kosong
memang dihitung.
Latihan 22.3.3: Misalkan himpunan universal adalah (I, 2,.., 10), dan tandatangan untuk set
dibangun menggunakan daftar permutasi berikut:
1. (1, 2, 6, 10)
2. (10, 8, 6, 4, 2, 9, 7, 5,3, 1)
3. (4, 10, 6,8)
Buat tanda tangan minhash untuk set berikut:
a) {3,6,9}
b) {2,4,6,8}
c) {2,3,4}
Bagaimana perkiraan kesamaan Jaccard untuk setiap pasangan, yang berasal dari tanda
tangan, pitaingkan dengan kesamaan Jaccard yang sebenarnya?
Latihan 22.3.4: Misalkan alih-alih menggunakan permutasi tertentu untuk membangun tanda
tangan untuk tiga set Latihan 22.3.3, kami menggunakan fungsi hash untuk membangun
tanda tangan. Tiga fungsi hash yang kami gunakan adalah:
f ( δ )=δ mod 10
g ( δ )=(2 δ +1)mod 10
h ( δ )=(3 δ+1)mod 10
Hitung tanda tangan untuk tiga set, dan pitaingkan perkiraan yang dihasilkan kesamaan
Jaccard dari masing-masing pasangan dengan kesamaan Jaccard yang sebenarnya.
! Latihan 22.3.5: Misalkan data ada dalam file yang didistribusikan ke banyak penyelamat.
Tunjukkan bagaimana Anda akan menggunakan kerangka kerja pengurangan peta dari
Bagian 20.2 untuk Hitung nilai minhash, menggunakan satu fungsi hash, dengan asumsi:
a) File harus dipartisi berdasarkan baris.
b) File harus dipartisi berdasarkan kolom.
22.4 Hashing yang Peka terhadap Lokalitas
Sekarang, kami mengambil masalah yang tidak benar-benar diselesaikan dengan
mengambil minhash Tanda tangan. Memang benar bahwa tanda tangan ini mungkin
membuatnya lebih cepat untuk kesamaan dari setiap pasangan set, tetapi mungkin masih
ada terlalu banyak pasangan set untuk menemukan semua pasangan yang memenuhi
ambang kesamaan yang diberikan. Teknik yang disebut "hashing yang sensitif terhadap
lokalitas," atau LSH, mungkin tampak ajaib; itu memungkinkan kita, dalam arti tertentu,
untuk set hash atau elemen lain ke tempat sehingga elemen "serupa" ditugaskan ke tempat
yang sama. Tentu saja ada trade-off. Ada (biasanya kecil) probabilitas bahwa kita akan
kehilangan sepasang elemen serupa, dan Semakin rendah kemungkinan itu, semakin
banyak pekerjaan yang harus kita lakukan. Sesudah beberapa contoh, kita akan mengambil
teori umum.
22.4.1 Resolusi Entitas sebagai Contoh LSH
Ingat kembali pembahasan kita tentang resolusi entitas di Bagian 21.7. Di sana, kami I
memiliki besar koleksicatatan, dan kami perlu menemukan pasangan yang serupa. Gagasan
"similaritas" bukanlah kesamaan Jaccard, dan sebenarnya kami membiarkan "kesamaan"
apa yang dimaksudkan. Apa pun definisi yang kami gunakan untuk kesamaan catatan,
mungkin ada juga banyak pasangan untuk mengukur semuanya. Misalnya, jika ada satu
juta catatan — Lalu ada sekitar 500 miliar pasang catatan. bukan jumlah yang sangat besar
Algoritma seperti R-Swoosh dapat memungkinkan penggabungan dengan kurang dari
angka itu Dari perpitaingan, asalkan ada banyak set besar catatan serupa, tetapi jika tidak
catatan mirip dengan catatan lain, maka tidak mungkin kita dapat menemukan bahwa fakta
tanpa melakukan semua perpitaingan yang mungkin. Akan sangat menyenangkan memiliki
cara untuk "hash" catatan sehingga serupa bukan jumlah yang sangat besar maka ada
sekitar 500 miliar pasang rekaman.Algoritma seperti R-Swoosh dapat memungkinkan
penggabungan dengan kurang dari angka itu perpitaingan, asalkan ada banyak set besar
catatan serupa, tetapi jika catatan mirip dengan catatan lain, maka tidak mungkin kita bisa
mendiskreditkan itu fakta tanpa melakukan semua perpitaingan yang mungkin.
Akan sangat menyenangkan memiliki cara untuk "hash" catatan sehingga serupa
catatan jatuh ke dalam wadah yang sama, dan pasangan yang tidak serupa tidak pernah
melakukannya, atau jarang melakukannya. Kemudian, kita dapat membatasi pemeriksaan
pasangan kita pada mereka yang berada dalam kelompok yang sama wadah. Jika,
katakanlah, ada 1000 wadah, dan catatan didistribusikan secara merata, kita hanya perlu
mempitaingkan 1/1000 dari pasangan. Kita tidak bisa melakukan apa yang sebenarnya
terancam di atas, tetapi kita bisa sangat dekat.
Contoh 22.9: Misalkan untuk konkret bahwa catatan seperti dalam menjalankan contoh
Bagian 21.7: nama-alamat-telepon tiga kali lipat, di mana masing-masing dari ketiganya
bidang adalah string karakter. Misalkan juga kita mendefinisikan catatan menjadi serupa
jika jumlah jarak edit dari tiga pasangan bidang yang sesuai adalah tidak lebih besar dari 5.
Mari kita gunakan fungsi hash h yang meng-hash bidang nama rekaman ke salah satu dari
satu juta wadah. Cara kerja h tidak penting, kecuali bahwa itu harus menjadi fungsi hash
yang baik — fungsi yang mendistribusikan nama secara kasar seragam di antara wadah.
Tapi kami tidak berhenti di sini. Kami juga mengurai catatan ke satu set satu juta
lainnya tempat, kali ini menggunakan alamat, dan fungsi hash yang sesuai pada alamat.
Jika h beroperasi pada string apa pun, kita bahkan dapat menggunakan h. Kemudian, kami
hash mencatat sepertiga waktu ke sejuta wadah usin nomor asah.
Akhirnya, kami memeriksa setiap tempat di masing-masing dari tiga tabel hash, total
3.000.000 wadah. Untuk setiap tempat, kami mempitaingkan setiap pasangan catatan di
setiap tempat, dan kami melaporkan pasangan apa pun yang memiliki total jarak edit 5 atau
kurang. Kira Ada n catatan. Dengan asumsi distribusi rekaman yang merata di setiap tabel
hash, ada catatan n / 106 di setiap wadah. Jumlah pasangan catatan di masing-masing Tempat
kira-kira n2 / (2 x 101 2). Karena ada 3 x 106 wadah, Jumlah total perpitaingan adalah sekitar
1.5n2/106. Dan karena ada sekitar n2 / 2 pasang catatan, kami telah berhasil melihat hanya
pecahan 3 x 106 dari catatan, peningkatan besar. Bahkan, karena jumlah wadah dipilih secara
sewenang-wenang, itu membuat kita dapat mengurangi jumlah perpitaingan ke tingkat apa
pun yang kita inginkan.
Ada keterbatasan, tentu saja. Jika kita memilih wadah dalam jumlah terlalu besar, kita
kehabisan ruang memori utama, dan terlepas dari berapa banyak wadah yang kami gunakan,
kami dapat melakukannya hindari pasangan catatan yang benar-benar mirip.
Sudahkah kita menyerahkan sesuatu? Ya, kami memiliki; kita akan kehilangan
beberapa yang serupa pasangan catatan yang memenuhi ambang kesamaan, karena mereka
berbeda oleh beberapa karakter di masing-masing Dari tiga bidang, namun totalnya tidak
lebih dari lima karakter. Berapa fraksi dari pasangan yang benar-benar serupa yang kita
hilangkan tergantung pada distribusi perbedaan di antara bidang catatan yang benar-benar
mewakili entitas yang sama. Namun, jika ambang batas untuk total jarak edit adalah 5, kami
tidak berharap untuk salah terlalu banyak pasangan yang benar-benar mirip.
Tetapi bagaimana jika ambang batas pada jarak edit dalam Contoh 22.9 bukan 5, Tapi
20? Mungkin ada banyak pasangan catatan serupa yang tidak memiliki satu bidang identik.
Untuk mengatasi masalah ini, kita perlu:
1. Tingkatkan jumlah fungsi hash dan tabel hash.
2. Dasarkan setiap fungsi hash pada sebagian kecil bidang.
Contoh 22.10: Kita bisa memecah nama menjadi nama depan, tengah, dan belakang, dan
hash masing-masing ke tempat. Kita bisa memecah alamat menjadi nomor rumah, jalan
nama, nama kota, negara bagian, dan kode pos. Nomor telepon dapat dipecah menjadi kode
area, pertukaran, dan empat digit terakhir. Karena telepon adalah nomor, kami bahkan dapat
memilih subset dari sepuluh digit dalam nomor telepon, dan hash pada mereka. Sayangnya,
karena kami sekarang melakukan hashing subbidang pendek, kami terbatas dalam jumlah
wadah yang bisa kita gunakan. Jika kita memetik terlalu banyak wadah, sebagian besar akan
kosong.
Setelah hashing record berkali-kali, kita kembali melihat di setiap tempat masing-
masing tabel hash, dan kami mempitaingkan setiap pasangan catatan yang jatuh ke dalam
yang sama wadah setidaknya sekali. Namun, total waktu berjalan jauh lebih tinggi daripada
untuk contoh pertama kami, karena dua alasan. Pertama, jumlah kejadian rekaman di antara
semua tempat sepitaing dengan jumlah fungsi hash yang kita gunakan. Kedua, fungsi hash
berdasarkan potongan kecil data tidak dapat membagi catatan ke dalam wadah sebanyak
dalam Contoh 22.9.
22.4.2 Hashing Tanda Tangan yang Sensitif terhadap Lokalitas
Penggunaan hashing sensitif lokalitas dalam contoh 22.10 relatif mudah. Untuk penerapan
ide umum yang lebih halus, mari kita kembali kemasalah yang diperkenalkan di Bagian 22.3,
di mana kami melihat keuntungan dari penggantian ditetapkan dengan tanda tangan mereka.
Ketika kita perlu menemukan pasangan set serupa yang diwakili oleh tanda tangan, ada cara
untuk membangun fungsi hash untuk suatu daerah hashing sensitif, untuk ambang kesamaan
yang diinginkan. Pikirkan tanda tangannya Dari berbagai set sebagai matriks, dengan kolom
untuk setiap tanda tangan set dan baris untuk setiap fungsi hash. Bagilah matriks menjadi b
pita masing-masing baris r, di mana br adalah panjang tanda tangan. Pengaturan ini
disarankan oleh Gambar 22.10.
Wadah

r rows
b rows

Gambar 22.10: Membagi tanda tangan menjadi pita dan hashing berdasarkan nilainya

Untuk setiap pita kita memilih fungsi hash yang memetakan bagian dari tanda tangan
di pita itu untuk sejumlah besar wadah, B. Artinya, fungsi hash berlaku untuk urutan bilangan
bulat r dan menghasilkan satu bilangan bulat dalam rentang 0 hingga B — 1. Dalam Gambar
22.10, B = 4. Jika dua tanda tangan setuju di semua baris dari satu pita, maka mereka pasti
akan berakhir di wadah yang sama. Ada kemungkinan kecil bahwa mereka akan berada di
wadah yang sama bahkan jika mereka tidak setuju, tetapi dengan menggunakan yang sangat
sejumlah besar wadah B , kita dapat memastikan ada sangat sedikit "positif palsu." Setiap
bucket dari setiap fungsi hash memiliki anggotanya dipitaingkan untuk kesamaan, jadi
sepasang tanda tangan yang setuju bahkan dalam satu pita akan dipitaingkan. Tanda tangan
yang tidak setuju di pita mana pun mungkin tidak akan dipitaingkan, meskipun sebagai kami
menyebutkan, ada kemungkinan kecil mereka akan hash ke tempat yang sama bagaimanapun
dan itu akan dipitaingkan.
Sepasang tanda tangan yang setuju bahkan dalam satu pita akan dipitaingkan. Tanda
tangan yang tidak setuju di pita mana pun mungkin tidak akan dipitaingkan, meskipun
sebagai kami menyebutkan, ada kemungkinan kecil mereka akan hash ke yang sama
Bagaimanapun, dan karena itu akan dipitaingkan. Mari kita hitung probabilitas bahwa
sepasang minhash signatur€s akan menjadi dipitaingkan, sebagai fungsi dari kesamaan
Jaccard δ dari set yang mendasarinya, jumlah Pita b, dan jumlah baris r dalam satu pita. Untuk
kesederhanaan, kami akan æsume bahwa jumlah wadah sangat besar sehingga tidak ada tanda
tangan hash ke wadah yang sama jika dan hanya jika mereka memiliki nilai yang sama di
seluruh pita yang menjadi dasar fungsi hash.
Pertama, probabilitas bahwa tanda tangan setuju pada satu baris adalah s, seperti yang
kita lihat di bagian 22.3.5. Probabilitas bahwa mereka menyetujui semua baris r dari pita
yang diberikan sr . Kemungkinan bahwa mereka tidak menyetujui semua baris pita adalah 1 -
r
s , dan probabilitas bahwa untuk tidak ada pita b yang mereka setujui di semua baris pita
adalah (1 - sr ¿b . Akhirnya, probabilitas bahwa tanda tangan akan setuju dalam semua baris
setidaknya satu pita adalah 1 - (1 - sr ¿b . fungsi ini adalah probabilitas bahwa tanda tangan
akan dibandingkan untuk kesamaan.
Contoh 22.11 : Misalkan r = 5 dan b = 20; yaitu, kami memiliki 100 bilangan bulat, dibagi
menjadi 20 pita masing-masing lima baris. Rumus untuk probabilitas bahwa dua tanda tangan
kesamaan s akan dibandingkan menjadi 1 - (1 - s5 ¿20 , Misalkan s = 0,8; yaitu, set yang
mendasarinya memiliki kesamaan Jaccard 80%. s5 = 0,328. Artinya, kemungkinan bahwa
kedua tanda tangan setuju dalam pita kecil tertentu, hanya sekitar 1/3. Namun, kita memiliki
20 peluang untuk "menang," dan (1—0,328¿20 sangat kecil, hanya sekitar 0,00035. Dengan
demikian, kemungkinan kita menemukan sepasang tanda tangan ini bersama-sama dalam
setidaknya satu wadah adalah 1 - 0,00035, atau 0,99965.
Di sisi lain, misalkan s 0, 4. Kemudian 1 – (1 - (0,4)5 ¿20 = (1 - 0,1 ¿20 , atau sekitar
20%. Jika 8 jauh lebih kecil dari 0,4, probabilitas bahwa tanda tangan akan dibandingkan
turun di bawah 20% dengan sangat cepat. Kami menyimpulkan bahwa pilihan b = 20 dan r =
5 adalah pilihan yang bagus jika kita mencari pasangan dengan yang sangat kesamaan tinggi,
katakanlah 80% atau lebih, meskipun itu tidak akan menjadi pilihan yang baik jika ambang
batas kesamaan sekecil 40%.

probabilitas
setidaknya satu
wadah yang
sama

Kesamaan s
Gambar 22.11 : Probalitas bahwa sepasang tandatangan akan muncul bersama-sama
di setidaknya satu wadah.
Fungsi 1 - (1 - sr ¿b terlihat pada Gambarb 22.11, tetapi titik secepatnya transisi dari
nilai yang sangat kecil ke Wue yang dekat dengan 1 bervariasi, tergantung pada b dan r.
Secara kasar, breakpoint berada pada kesamaan s = (l/b¿1 /r .
22.4.3 Menggabungkan Minhashing dan Sensitif terhadap Lokalitas Hashing
Dua ide tersebut, minhashing dan ISH. harus digabungkan dengan benar untuk
menyelesaikan semacam masalah yang kami diskuskan dalam 22.3.2. Misalkan, misalnya,
bahwa kita memiliki repositori dokumen yang besaryang telah kami wakili dengan rangkaian
sirap yang panjang. Kami ingin menemukan dokumen-dokumen yang kumpulan sirapnya
memiliki kesamaan jaccard paling tidak s.
1. Mulai dengan menghitung tanda tangan minhash untuk setiap dokumen; berapa
banyak fungsi hash bagi kami tergantung pada akurasi yang diinginkan, tetapi
beberapa ratus sudah cukup untuk sebagian besar tujuan
2. Lakukan hashing yang peka terhadap lokalitas untuk mendapatkan kandidat pasangan
tanda tangan yang di-hash ke bucket yang sama untuk setidaknya satu pita. berapa
banyak pita dan berapa banyak baris pernamd bergantung pada ambang kesamaan s,
seperti yang dibahas di bagian 22.4.2.
3. Untuk setiap pasangan kandidat, hitung perkiraan kesamaan jaccard mereka dengan
menghitung jumlah komponen yang disetujui oleh tanda tangan mereka.
4. Opsional, untuk setiap pasangan yang tanda tangannya cukup mirip, hitung kesamaan
jaccard mereka yang sebenarnya dengan memeriksa set itu sendiri.
Tentu saja, metode ini memperkenalkan false positive - pasangan kandidat yang
tersingkir di langkah (2). (3), atau (4). namun, langkah kedua dan ketiga juga memungkinkan
beberapa negatif palsu - pasangan dengan kesamaan jaccard yang cukup tinggi yang bukan
kandidat atau dihilangkan dari kumpulan kandidat.
a) Pada step (2), sepasang dapat memiliki tanda tangan yang sangat mirip, namun
kebetulan tidak ada pita di mana tanda tangan cocok di semua baris pita.
b) Pada langkah (3), pasangan dapat memiliki kesamaan jaccard setidaknya s, tetapi
tanda tangan mereka tidak setuju dengan fraksi s dari komponen.
Salah satu cara untuk mengurangi jumlah negatif palsu adalah dengan menurunkan
ambang kesamaan pada tahap awal. pada langkah 2, pilih jumlah baris r yang lebih kecil atau
jumlah pita b yang lebih banyak daripada yang ditunjukkan oleh kemiripan target s. pada
langkah 3, pilih pecahan yang lebih kecil dari s dari komponen tanda tangan yang sesuai yang
memungkinkan pasangan untuk melanjutkan ke langkah 4. Sayangnya, perubahan ini masing-
masing meningkatkan jumlah positif palsu, jadi Anda harus mempertimbangkan dengan hati-
hati seberapa kecil anda mampu membuat nya.
Cara lain yang mungkin untuk menghindari negatif palsu adalah dengan melewati
langkah (3) dan langsung ke langkah (4) untuk setiap pasangan calon. yaitu, kami
menghitung kesamaan jaccard sebenarnya dari setiap pasangan kandidat. Kerugian dari
melakukannya bahwa tanda tangan minhash dirancang untuk membuatnya lebih mudah untuk
membandingkan set yang mendasarinya. Misalnya, jika objek yang dibandingkan sebenarnya
besar dokumen, membandingkan set lengkap k-herpes zoster jauh lebih memakan waktu
daripada mencocokkan beberapa ratus komponen tanda tangan.
Dalam beberapa aplikasi, negatif palsu tidak menjadi masalah, jadi kita dapat
membuka LSH untuk memungkinkan sebagian kecil negatif palsu yang signifikan, untuk
mengurangi negatif palsu positif dan dengan demikian mempercepat seluruh proses.
Misalnya, jika pengecer mencari pasangan pelanggan serupa, untuk memilih item yang akan
pitch ke setiap pelanggan, tidak perlu menemukan setiap pasangan yang serupa pelanggan
adalah baik untuk menemukan beberapa pelanggan yang sangat mirip untuk setiap pelanggan.
! Latihan 22.4.1 : Latihan ini didasarkan pada masalah entitas-resolutin Contoh 22.9. Untuk
konkret, misalkan satu-satunya pasangan mencatat yang bisa mungkin total edit jarak 5 atau
kurang dari satu sama lain terdiri dari salinan yang benar catatan dan versi catatan lain yang
rusak. Dalam versi yang rusak, masing-masing dari tiga bidang diubah secara independen.
50% dari waktu, bidang memiliki tidak ada perubahan. 20% dari waktu, ada perubahan yang
mengakibatkan jarak edit 1 untuk bidang itu. Ada kemungkinan 20% untuk mengedit jarak 2
dan kemungkinan mengedit Jarak 10. Misalkan ada satu juta pasang semacam ini dalam
himpunan data.
a) Berapa banyak dari jutaan pasangan yang berada dalam total jarak edit 5 dari masing-
masing Lainnya?
b) Jika kita hash setiap bidang ke sejumlah besar wadah, seperti yang disarankan oleh
contoh 22,9, berapa banyak dari satu juta pasangan ini akan hash yang sama wadah
untuk setidaknya satu dari tiga hashing?
c) Berapa banyak negatif palsu yang akan ada; yaitu, berapa banyak dari yang satu juta
pasang berada dalam total jarak edit 5, tetapi tidak akan hash ke wadah yang sama
untuk salah satu dari tiga hashing?
Latihan 22.4.2: Fungsi p = 1 - (1 - sr ¿b mwadahikan probabilitas p bahwa dua tanda tangan
minhash yang berasal dari set dengan kesamaan Jaccard s akan hash ke wadah yang sama
setidaknya sekali, jika kita menggunakan skema ISH dengan pita b r
baris masing-masing. Untuk ambang batas kesamaan yang diberikan s, kami ingin memilih b
dan sedemikian rupa sehingga p 1/2 pada s. kami menyarankan bahwa kira-kira s (l/b¿1 /r
adalah dimana p 1/2, tapi itu hanya perkiraan. Misalkan tanda tangan memiliki panjang 24.
Kita bisa pilih bilangan bulat b dan r yang produknya 24. Artinya, pilihan untuk r adalah 1, 2,
3, 4, 6, 8, 12, atau 24, dan b kemudian harus 24/r.
a) Jika s 1/2, tentukan nilai p untuk setiap pilihan b dan r. Yang mana apakah Anda
akan memilih, jika 1/2 adalah ambang kesamaan?
! b) Untuk setiap pilihan b dan r, tentukan nilai s yang membuat p: 1/2.

Anda mungkin juga menyukai