Tamr (sebelumnya Data Tamer) melakukan deduplikasi basis data dalam skala besar. Bayes naif dan pengelompokan grafik terlibat.
Saya percaya algoritma sebagian besar diimplementasikan dalam SQL, yang agak aneh, tetapi penulis utama dari whitepaper mereka adalah Michael Stonebraker, yang membantu memimpin penciptaan PostgreSQL.
Lihatlah whitepaper di sini .
Sunting: Saya telah merangkum langkah-langkah yang diambil makalah mereka di bawah ini. Beberapa kata-kata saya hampir sama dengan di makalah mereka.
Sistem deduplikasi Tamr memiliki dua langkah utama untuk menangani sumber data baru: (1) Identifikasi Atribut dan (2) Konsolidasi Entitas. Ini kira-kira setara dengan deduplikasi kolom dan deduplikasi baris.
1) Membandingkan sumber data baru dengan yang sudah ada, langkah pertama adalah Atribut Identifcation.
Atribut (kolom) dari sumber baru dipetakan ke atribut dari sumber yang ada dengan empat algoritma:
- Bandingkan nama atribut dengan perbandingan string fuzzy (trigram cosine similarity)
- Pertimbangkan seluruh kolom sebagai dokumen, tokenize, ukur frekuensi total / frekuensi dokumen terbalik (TF-IDF) cosine similarity antara itu dan kolom lainnya.
- Panjang deskriptif minimum: bandingkan dua kolom berdasarkan ukuran persimpangan dan gabungannya dengan pencocokan tepat.
- Untuk kolom numerik, lakukan uji-t antara kolom baru dan kolom numerik yang ada untuk menentukan apakah kolom tersebut berasal dari distribusi yang sama.
2) Konsolidasi Entitas (Deduplikasi Baris)
Setelah Identifikasi Atribut telah dilakukan, kami ingin mendeduplikasi baris (catatan).
Kategorisasi dengan pengelompokan
Catatan pertama kali dikelompokkan ke dalam kategori berdasarkan kesamaan, dan kemudian aturan deduplikasi dipelajari di tingkat kategori. Contoh yang mereka berikan dari kategorisasi adalah untuk database resor ski, di mana resor ski barat harus kategori yang berbeda dari resor ski timur, karena fitur-fitur seperti elevasi pangkalan sangat dipisahkan oleh apakah resor itu timur atau barat. Kategorisasi dilakukan dengan algoritma clustering, dengan k-means diberikan sebagai contoh.
Deduplicating dengan Naif Bayes
Setelah atribut diidentifikasi dan catatan telah dikelompokkan ke dalam kategori, kami mempelajari aturan deduplikasi untuk setiap kategori berdasarkan pada set pelatihan dupes dan non-dupes.
Ada dua jenis aturan deduplikasi:
- Ambang batas untuk persamaan atribut sehubungan dengan fungsi jarak yang masuk akal untuk atribut. (Makalah ini tidak jelas tentang bagaimana ambang ini dipelajari.)
- Distribusi probabilitas untuk dupe dan non-dupes di setiap atribut. misalnya
P("Title" values similar | duplicate) ~ 1
dan
Pr("State" values are different | duplicate) ~ 0
Untuk setiap pasangan rekaman, kami menghitung kesamaan setiap atributnya dengan metrik jarak yang sesuai. Jika ada atribut yang memiliki kesamaan di atas ambangnya, pasangan catatan diumpankan melalui pengklasifikasi Naif Bayes untuk diklasifikasikan sebagai dupe atau non-dupe.
Asumsi saya adalah bahwa untuk catatan X1 = (a1,b1,c1,d1)
,, X2 = (a2,b2,c2,d2)
mereka menghitung vektor kesamaan di S = (s_a, s_b, s_c, s_d)
mana s_i
kesamaan untuk atribut wrt ke metrik jarak yang benar.
Saya menganggap classifier Naif Bayes mereka memiliki struktur ini:
P(dupe|S) = P(dupe)P(s_a|dupe)(s_b|dupe)(s_c|dupe)P(s_d|dupe) / P(S)
Resolusi entitas dengan pengelompokan grafik
Setelah langkah klasifikasi, kami memiliki subset rekaman dari kategori tertentu yang diyakini merupakan duplikat berpasangan. Ini sekarang perlu diselesaikan menjadi entitas yang berbeda . Ini memecahkan masalah transitivitas: jika record t1 adalah dupe dari t2 dan t2 adalah dupe dari t3, maka t1 juga harus merupakan dupe dari t3. Ini untuk mengatakan t1, t2, dan t3 mewakili entitas yang sama .
Sebuah struktur grafik digunakan untuk langkah ini. Dalam kategori tersebut, setiap rekaman yang mungkin merupakan dupe adalah sebuah simpul. Node yang diduga saling menipu memiliki tepi di antara mereka. Cluster kemudian ditemukan dalam grafik dan kemudian digabung bersama berdasarkan ambang batas tentang seberapa kuat satu cluster terhubung ke yang lain. Berikut adalah tiga contoh pasangan kluster yang mungkin atau mungkin tidak digabungkan berdasarkan keterhubungannya:
c1 c2
x-x-x-----y-y-y
|\|/| |\|/|
x-x-x-----y-y-y Meets similiarity threshold
|/|\| |/|\|
x-x-x-----y-y-y
x-x-x y-y-y
|\|/| |\|/|
x-x-x-----y-y-y Does not meet similarity threshold
|/|\| |/|\|
x-x-x y-y-y
x y
| |
x-----y Meets similarity threshold
| |
x y
Ketika algoritma berakhir, masing-masing cluster harus mewakili entitas yang berbeda dalam kategori . Untuk menyelesaikan proses, atribut entitas ini harus ditentukan dari atribut catatan di dalamnya . Null dibuang terlebih dahulu, kemudian metode termasuk frekuensi, rata-rata, median, dan terpanjang digunakan.
Makalah ini juga mengembangkan beberapa metode untuk menggunakan pakar domain untuk membantu ketika algoritma tidak yakin, dan bagaimana menggunakan beberapa pakar dengan tingkat keahlian yang berbeda.