FPGrowth, sık sık kalıp madenciliğinde hala “son teknoloji” olarak kabul ediliyor mu?


12

Sıkça Desen Madenciliği (FPM) problemini çözmek için algoritma geliştirmeyi bildiğim kadarıyla, iyileştirme yolunun bazı ana kontrol noktaları var. İlk olarak, Apriori algoritması 1993 yılında Agrawal ve ark. , sorunun resmileştirilmesiyle birlikte. Algoritma mümkün şerit kapalı bir miktar setleri 2^n - 1setleri (Powerset) verileri korumak için bir kafes kullanılarak gerçekleştirilir. Yaklaşmanın bir dezavantajı, genişletilmiş her kümenin frekansını hesaplamak için veritabanını yeniden okuma gereksinimidir.

Daha sonra 1997 yılında Zaki ve ark. algoritması önerilmiştir Eclat , eklenen kafes içinde her bir kümenin elde edilen frekans. Bu, kafesin her bir düğümüne, öğeler kökten belirtilen düğüme sahip olan işlem kimlikleri kümesi eklenerek yapıldı. Başlıca katkı, her kümenin sıklığını bilmek için tüm veri kümesini yeniden okumak zorunda olmamasıdır, ancak bu tür veri yapısını inşa etmek için gereken bellek veri kümesinin boyutunu aşabilir.

2000 yılında Han ve ark. FPTree adlı bir önek ağacı veri yapısı ile birlikte FPGrowth adlı bir algoritma önerdi . Algoritma, önemli veri sıkıştırması sunarken, aynı zamanda sadece sık öğe kümelerinin (aday öğe kümesi oluşturma olmadan) verileceğini de sağlamıştır. Bu, esas olarak her işlemin öğelerini azalan düzende sıralayarak yapıldı, böylece en sık kullanılan öğeler ağaç veri yapısında en az tekrarlanan öğelerdir. Frekans sadece ağacı derinlemesine gezerken azaldığından, algoritma sık olmayan öğe kümelerini çıkarabilir .

Düzenle :

Bildiğim kadarıyla, bu son teknoloji bir algoritma olarak kabul edilebilir, ancak önerilen diğer çözümler hakkında bilmek istiyorum. FPM için başka hangi algoritmalar "en gelişmiş" olarak kabul edilir? Bu algoritmaların sezgisi / ana katkısı nedir?

FPGrowth algoritması sık kalıp madenciliğinde hala "son teknoloji" olarak kabul ediliyor mu? Değilse, hangi algoritma (lar) büyük veri kümelerinden sık veri kümelerini daha verimli bir şekilde çıkarabilir?


Bu yazı iyi araştırılmış ve sunulmuştur. Bir SE ağ sitesi için kötü bir soru soruyor, ancak bir tartışma forumuna başlamak harika bir konu olurdu.
Air

@AirThomas Uyarı için teşekkürler. Gönderiyi uygun bir soru yaparak kurtarmaya çalıştım.
Rubens

Yanıtlar:


9

En son teknoloji: Uygulamada mı yoksa teoride üzerinde mi çalışıldı?

APRIORI, yeni sık kullanılan öğe kümesi algoritmaları geliştirmek dışında her yerde kullanılır. Uygulanması ve çok farklı alanlarda yeniden kullanımı kolaydır. Değişken kalitede yüzlerce APRIORI uygulaması bulacaksınız. APRIORI'yi yanlış yapmak aslında çok kolay.

FPgrowth'un uygulanması çok daha zor, ama aynı zamanda çok daha ilginç. Akademik bir bakış açısıyla, herkes FPgrowth'u geliştirmeye çalışır - APRIORI tarafından kabul edilen işleri almak şimdiye kadar çok zor olacaktır.

İyi bir uygulamanız varsa, her algoritmanın iyi olduğunu düşünüyorum ve bence kötü durumlar. İyi bir APRIORI uygulaması olacak sadece veritabanı taramak gerekir k uzunluğu tüm sık itemsets bulmak kere k . Özellikle verileriniz ana belleğe sığarsa bu ucuzdur. APRIORI'yi öldürebilecek şey çok sık 2 öğe setidir (özellikle bir Trie ve benzeri hızlandırma teknikleri vb. Kullanmadığınızda). Az sayıda sık öğe kümesiyle büyük veriler üzerinde en iyi sonucu verir.

Eclat sütunlar üzerinde çalışır; ancak her sütunu daha sık okuması gerekir. Bu işi azaltmak için fark setleri üzerinde bazı çalışmalar var. Verileriniz ana belleğe uymuyorsa, Eclat muhtemelen Apriori'den daha fazla acı çekiyor. Önce derinliğe giderek, Apriori'den çok daha erken bir ilk ilginç sonuç döndürebilir ve bu sonuçları parametreleri ayarlamak için kullanabilirsiniz; iyi parametreler bulmak için daha az yinelemeye ihtiyacınız vardır. Ancak tasarım gereği budamayı Apriori'nin yaptığı gibi düzgün bir şekilde kullanamaz.

FPGrowth veri kümesini ağaca sıkıştırır. Çok sayıda yinelenen kaydınız olduğunda bu en iyi sonucu verir. Verilerinizi sunup kopyaları ağırlıklı vektörlerle birleştirebiliyorsanız, Apriori ve Eclat için de bazı kazançlar elde edebilirsiniz. FPGrowth bunu aşırı düzeyde yapıyor. Dezavantajı, uygulamanın çok daha zor olmasıdır; ve bu ağaç artık belleğe sığmazsa, uygulamak bir karışıklık olur.

Performans sonuçları ve karşılaştırmalar gelince, onlara güvenmeyin. Yanlış uygulanacak çok şey var. 10 farklı uygulamayı deneyin ve 10 farklı performans sonucu elde edin. Özellikle APRIORI için, APRIORI'nin ana katkılarından bazılarını kaçırmak anlamında çoğu uygulamanın bozulduğu izlenimine sahibim ... ve bu kısımları doğru olanların optimizasyon kalitesi çok değişiyor.

Aslında bu algoritmaların verimli bir şekilde nasıl uygulanacağına dair yazılar bile var:

Apriori ve Eclat'ın Verimli Uygulamaları.
Christian Borgelt
Sık Öğe Set Madenciliği Uygulamaları Çalıştayı (FIMI 2003, Melbourne, FL, ABD).

Bu anketleri şu alan adında da okumak isteyebilirsiniz:

  • Goethals, Bart. "Sık kalıp madenciliği üzerine araştırma." Üniv. Helsinki (2003).

  • Ferenc Bodon, Sık Öğe Kümesi Madenciliği Üzerine Bir Araştırma, Teknik Rapor, Budapeşte Teknoloji ve Ekonomik Üniversitesi, 2006,

  • Sık Öğe Set Madenciliği
    Christian Borgelt
    Wiley Disiplinlerarası İncelemeler: Veri Madenciliği ve Bilgi Keşfi 2 (6): 437-456. 2012


2

Literatürde gördüğüm son model kalıp yaklaşımlarının çoğu FPGrowth'u optimize etmeye dayanmaktadır. İtiraf etmeliyim ki, yıllardır FPM'de literatürde pek fazla gelişme görmedim.

Bu wikibook, FPGrowth'daki birçok varyantı vurgular.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.