• Embed Doc
  • Readcast
  • Collections
  • CommentGo Back
Download
 
Paralel CLOSET+ Algoritması ile Sık Nesne Kümelerinin Bulunması
Tayfun Şen, Cevat Şener, İsmail Hakkı Toroslu
Bilgisayar Mühendisliği BölümüOrta Doğu Teknik Üniversitesi
{tayfun.sen, sener, toroslu}@ceng.metu.edu.tr
 
Öz
Veri madenciliği alanında ilişkisel kural madenciliğiözellikle pazar sepeti uygulamalave ziyareçözümlemeleri gibi yaygın kullanımları olması nedeniylesıklıkla incelenmiştir. Çoğu zaman daha ileri bir uygulamainşa edilirken ilk adım olarak ilişki kuralları bulunmakta, bubilgi kullanılarak katma değerli servisler hazırlanmaktadır. İşte bu nedenle ilişki kurallarını ortaya çıkarmak içingeliştirilen birçok algoritma bulunmaktadır. Sık nesnekümelerinin bulunması ise ilişki kuralları ortaya çıkarılırkenilk yapılması gereken iş olmuştur.Bu makalede k nesne melerinin bulunmasındakullalan seri bir veri madenciliği algoritması olanCLOSET+ algoritmasının paralel sürümündenbahsedilecektir. Bu algoritma birden fazla hesaplamaelemanı üzerinde aynı anda çalışacak şekilde tasarlanmış,daha hızlı sonuçlar elde etmek amaçlanmıştır. Algoritmanınuygulanmasında hesaplama uçları arasında iletişim için MPI kütüphanesi kullanılmış ve uygulama çeşitli sayılardakilara sahip melerde test edilmiştir. Sonuçlaralgoritmanın belirli eşik sınırdan yoğun veriler için serisürümden oldukça hızlı çalıştığını göstermektedir.
1.Giriş
Yaklaşık 15 sene önce ciddi olarak artırılmayabaşlanmasından itibaren [1] veri madenciliği alanında çokçeşitli gelişmeler yaşanmıştır. Örneğin, ilk ilişkisel kuralmadenciliği algoritmasının geliştirilmesinden sadece birkaçyıl sonra paralel bir sürümü çıkarılmıştı [2]. Bilgisayarlarınve bilgi işlem birimlerinin işletmelerde giderek daha dayaygınlaşmasıyla birlikte, bu alanda hiç olmadığı kadararaştırma ve geliştirme yapıldı.k nesne melerinin bulunması, ilkisel kuralmadenciliğinin ilk olarak yapılmagereken ve en fazlazaman alan paasıdır. Bundan dolabu bömaraştırmalarda genellikle öne çıkarılmıştır. Birçok algoritmasık nesne kümelerinin bulunması bölümünü geliştirmek içinçeşitli iyileştirmeler önermiş, ylece zaman ve bellekkaynaklarını daha verimli kullanmayı amaçlamıştır. Bununyanında verinin saklanma biçimi ile ilgili olarak da yeniteknikler geliştirilmiştir, buna örnek olarak dikey verisaklama biçimi kullanan CHARM algoritması [3]gösterilebilir. Son zamanlarda fp-tree (sık örüntü ağacı)biçimi özellikle yoğun (dense) veri melerinde yüksekkıştırma oranı sağlaması nedeniyle tercih edilmeyebaşlanmıştır.Bu makalede yüksek performanslı bir sık nesne kümelerimadenciliği algoritması olan CLOSET+ [4] algoritmasınınparalel bir uygulamasından bahsedilecektir. CLOSET+algoritması 2003 yılında Wang, Han ve diğerleri tarafındanileri lmüş ve şu ana kadar paralel bir uygulamabildiğimiz kadarıyla yapılmamıştır. CLOSET+ algoritmasıgeçmiş çalışmalar da dikkate alınarak geliştirilmiş, verisaklama yönteminde Han ve diğerleri tarafından geliştirilenfp-tree [5] biçimi kullanılmıştır. CLOSET+'da aynı zamandaaday budama ntemi gibi çeşitli iyiltirmeler dekullanılarak algoritma hızlandırılmıştır.Makalenin geri kalanı şöyle ayrılmıştır: Bunu izleyenbölümde sık nesne meleri madenciliği ana hatlarıylatanıtılacak, çözüm çerçevesi sunulacaktır. 3. lümdeCLOSET+ algoritması genel yapısı itibariyle tanıtılacak, 4.bölümde ise algoritmayı paralelleştirmede kullanılan araçlartanıtılacaktır. İki faz halinde geekleştirilen paralelalgoritma 5. bölümde detaylarıyla açıklanacaktır. Performanstestlerinin yer alğı 6. mden sonra sonuçlarınıklandığı m gelmektedir. Makale teşekkür vekaynakça ile son bulacaktır.
2.Sık nesne kümeleri madenciliği arka planı
İlişkisel kural madenciliği temel olarak belirli bir alanaözgü elemanların birbirleriyle ilişkilendirilmesi, bu konudakuralların ortaya çıkarılması ile ilgilenir. İlişkisel kuralmadencilinin ilk kulu k nesne kümelerininbulunmasıdır. Sık nesne kümelerinin bulunmasından sonra,bu melerden faydalanarak me indeki elemanlararasındaki, yani k nesne melerinin alt meleriarasındaki ilkiler ortaya çıkar. İlkisel kuralmadenciliğinin en fazla zaman alan paası sık nesnekümelerinin bulunması parçasıdır. Makalenin bu bölümündeilişkisel kural madenciliği ile ilgili “güven” gibi terimleredeğinilmeyecek, ancak sık nesne kümelerinin bulunmasındakullanılan “destek” gibi terimlerden ise bahsedilecektir.Sık nesne kümeleri açıklanırken en çok kullanılan veanlaşılmaen kolay olan örnek pazar sepeti analizialanındadır:
TID (sepettanımlayıcısı)Sepet içeriği
1Bisküvi, ekmek, su, süt2Ekmek, su3Bisküvi, gazete, süt4Gazete, meyve, reçel5EkmekTablo 1: Örnek bir pazar sepetiTablo 1'de görülen veri herhangi bir işletmenin satış veritabanı incelenerek çıkarılabilir. Bununla birlikte sık nesnekümeleri madenciliği pek çok başka alanda dakullanılmaktadır.Tablodaki ilk alan her tablo satırının tanımlayıcısını,ikinci alan ise herhangi bir satın alma kümesini, yani pazarsepetini stermektedir. Sepet erikleri herhangi bir
 
ralamaya tabi dildir, düz bir me yapısındagösterilebilir. Sıraörüntü madenciliğinden farkolaraksepet-müşteri ilişkisi bulunmamaktadır, sık nesne kümelerimadenciliği in önemli olan herhangi bir satın almaişleminin kendisidir. İşlemlerin sırası ve dolayısıyla hangimüşteriye ait oldukları önemsizdir.Herhangi bir
e
elemanının veri tabanında bulunduğu sepetsayısına “destek” değeri denmektedir. Çıkacak sonuç sayısınıazaltmak için belirli bir minimum destek değeri kullanılaraksepet elemanlarından destek değeri bu eşik değerin üstündeolanlar dikkate alınmaktadır. Buna göre eşik değerin üstündedestek değerlerine sahip olan nesne meleri
sık nesnekümeleri
olarak adlandırılırlar.Yukarıdaki tabloyu veri tabanımız olarak alırsak veminimum destek değerini iki kabul edersek k nesnekümelerimiz ve destek değerleri şu şekilde çıkar:
{ ekmek : 3 }, { süt : 2 }, { su : 2 }, { bisküvi : 2 },{ gazete : 2 }.{ ekmek, su : 2 }, { bisküvi, süt : 2 }.
Parantezlerin içindeki rakam parantez içerisinde bulunannesnelerin birlikte destek değerini vermektedir. Örneğin{ ekmek, süt : 2 } değeri bize ekmek ve t'ün birlikteolduğu sepetlerin sayısının 2 olduğunu ylemektedir.Bazen destek değerleri yüzde olarak veri tabanındaki işlemsayısına oranlanarak verilir. Burada 2 olarak görünen destekdeğeri bu şekilde verildiğinde 2 / 5, yani %40'lık bir desteğiifade eder.Destek değerinin büyük olması bir nesne kümesinin sıkolarak veri tabanında geçtiğini gösterir. Bunun yanında,destek değerlerinde görülen doğal bir özellik de nesne sayısıarttıkça destek değerinin ya aynı kaldığı ya da azaldığıdır.Buradan, ilk olarak Pasquier ve diğerleri tarafından ortayaatılan [6]
kapalı sık nesne kümeleri
nin tanımına geçebiliriz.
Tanım 1.
 
 Kapalı sık nesne kümeleri
, herhangi bir altmesi aydestek değerine sahip olmayan sık nesnekümeleridir. Bu kümelerin önemi kapsayıcı olmalarından vesonucu büyük ölçüde sıkıştırmalarından gelir.
Örnek 1.
Tablomuza geri dönecek olursak, kapalı sıknesne kümelerimiz şöyle bulunurdu:
{ ekmek : 3 }, { gazete : 2 }, { bisküvi, süt : 2 }, { ekmek,su : 2 }.
ldüğü üzere nesne melerinin saazal,“bisküvi”, “su” ve “süt” nesneleri daha geniş nesne kümeleritarandan aydestek değeri ile kapsankları inbudandılar ve sonuçtan çıkarıldılar. Kapak nesnekümelerinden sık nesne kümelerine erişilebileceğine dikkatediniz. { bisküvi, süt : 2 } kümesinden hem { bisküvi : 2 }hem de { süt : 2 } çıkarılabilir. Hem daha az yer kaplaması,hem de cevabın tamamıkapsaması nedeniyle kapalı sıknesne meleri son yıllardaki araştırmaların temel sonifade biçimi haline geldiler.
3. CLOSET+ algoritması
Agrawal ve diğerleri [1] ilişkisel kural madenciliğiaraştırmalarının yolunu açan makalelerini yayınladıklarındaalgoritmalarını ikiye bölmüşlerdi: sık nesne melerininçıkarılması ve bundan yola çıkarak ilişkisel kurallarınbulunması. Bu teknik halen büyük ölçüde kullanılmaktadır.Yeni algoritmalar ortaya çıktıklarında, eskiye oranla gelişimiçin kullandıkları en önemli tekniklerden biri probleminsteriliş biçimi oldu. Veri tabanları çeşitli şekillerdegösterilmeye başlandı (dikey format bunlardan biri), sorunfarklı çözüm uzaylarına aktarılmaya çalışıldı. Bunlardan endikkat çeken gelişmelerden biri küme biçimi ile sunulanproblemin zaman geçtikçe ağaç ve sonra da çizge (graph)yapılarına dönüşmesi, sorun düzleminin matematiğin dahageniş ifade gücü bulunan alanlarına kaydırılması oldu.CLOSET+ algoritması da bu evrimden ayrı bir yöndeilerlememiştir. Hem veri tabanının biçimi hem de çözüm içinkullanılan araç uzailk kullanılan küme yapılarındanoldua gelişmiştir. Veri tabatemel olarak bir şeklinde tutulmakta, çözüm bulunurken çizge algoritmalarıile veri üzerinde gezinilmekte ve madencilik yapılmaktadır.İleriki bölümlerde paralel CLOSET+ anlatılmadan öncebu bölümde algoritmanın seri halinin özetlenmesi faydaolacaktır.
3.1.Kapak nesne melerinin zlı bir şekildebulunması: CLOSET+
CLOSET+ algoritması ilk olarak Pei ve diğerleritarafından önerilen CLOSET algoritmasına [7] iyileştirmeleryapılarak Wang ve diğerleri tarafından [4] yayınlanmıştır.Kullanılan veri saklama biçimi olan fp-tree (sık örüntüacı) şekli, veri tabaoldua k miktarlardasıkıştırabilmesi nedeniyle tercih edilmiştir. Fp-tree biçimiözellikle yoğun veri tabanlarında büyük sıkıştırma oranlarısağlamakta, algoritma da özellikle bu tür verilerde hızçalışmaktadır. CLOSET+ algoritması esas olarak iki fazdanoluşmaktadır. İlk fazda veri tabanı sıkıştırılıp fp-tree inşaedildikten sonra asıl veri madenciliği ikinci fazda ağaçüzerinde gezinerek yapılmaktadır. Bundan sonraki ikibölümde bu iki faz kısaca açıklanacaktır.
3.2.İlk faz: fp-tree'lerin inşası
İlk fazın amacı veri tabanısıkıştırmak ve böylece belkibelleğe sığabilecek büyüklüğe indirmek, ve aynı zamandaüzerinde işlem yapabilmeyi kolaylaştırmaktır. Fp-tree yapısıönek (prefix) ağaç yapısı şeklindedir, yani benzer nesneleriiçeren nesne meleri bu açta aynı ana dal üzerindebulunurlar. Ağaçtaki uçlar nesneleri temsil ederler ve uçlardaaynı zamanda destek değerleri de bulunur. Destek değerlerikökten bir uca kadar inildiğinde rastlanan nesnelerin birliktebulunma destek değerleridir. Kökten aşağıya inildikçe nesnekümeleri ortak uçları paylaşırlar, dolayısıyla nesnelerinfarkmelerde tekrarlanmaazaltılmış olur. Sonuçözellikle yoğun verilerde çok büyük sıkıştırma oranlarıdır.Fp-tree yapıları oluşturulurken atılan adımlar şunlardır:1.Veri tabanı bir kez tarar, her nesnenin destekdeğeri bulunur.2.Destek değeri eşik değerin altında olan nesnelerveri tabanından atılır.3.Destek değerleri sıralanır ve bu temel alınarak veritabandaki nesne listeleri destek değerleriartandan azalana doğru olmak üzere sıralanır.4.Sıralı nesne listeleri ağaca yerleştirilir.Ağaca yerleştirme işlemi sırasında nesnelerin ilk olarakhangi uca yerleştirildiği bilgisi bir işaretçi dizisi ile başlıktablosunda saklanmaktadır. Bunun yanında aynı nesne tekrarbaşka bir ağaç ucu olarak yerleştirildiğinde bir önceki uçtanbir işaretçi ile bağlantı sağlanmaktadır. Yani, herhangi birnesnenin ağaçta hangi uçlarda olduğu bilgisi hızlı bir şekildeerişilebilir şekilde saklanmaktadır.
 
Fp-tree biçimi hakkında daha detaylı bilgiyi kaynakmakaleden [5] elde edebilirsiniz.
3.3.İkinci faz: asıl madencilik
İlk fazda inşa edilen fp-tree veri tabanının sıkıştırılmış birkopyasıdır, fp-tree inşa edildikten sonra bir daha veritabanına bakmaya gerek yoktur. Fp-tree, yapısı itibariyleikinci fazdaki madenciliği yönlendirecektir. Bu açıdan veribiçimi ve madencilik ayrı düşünülemez.Kapalı sık nesne meleri bulunurken ağaç üzerindeaşağıdan yukarıya bir gezinme yapılmakta, nesnelere özel fp-tree'ler ana açtan yansıtılmaktadır. Nesnelerin hangisırayla çıkarılmaya başlanacağı başlık tablosundan tespitedilmektedir, başlık tablosu ıdan yukarıya doğruçözülmektedir. Ağacın yapısından dolayı, aşağıdan yukarıyadoğru bir çözümleme yapıldığı sürece bulunan sık nesnekümeleri öncekiler tarafından kapsanıyor olabilir, ama aslaöncekileri kapsıyor olamaz. Bu özellik kullanılarak alt kümekontroyapılmakta, ylece bulunan kapalı sık nesnekümelerinin gerçekten kapalı olması sağlanmaktadır.Fp-tree'deki gezinme sonucu ortaya çıkan sık nesnekümeleri ne yapılmaktadır? Bunlar fp-tree'ye benzer birağaçta tutulmaktadır. Sonağacının fp-tree benzeri biryapıda olması sayesinde bu sonuç kümesi de sıkıştırılmış birbiçimde olmaktadır. Fp-tree yapısındaki başlık tablosundanfarkolarak burada iki seviyeli bir hash indeksbulunmaktadır. Bu iki indeks sık nesne kümesindeki en sonnesneden ve onun destek değerinden oluşmaktadır. Bu indekssayesinde aynı destek değerine sahip olan ve kapsayan birkümenin varlığı kontrol edilebilmektedir.Asıl madencilik hakkında daha detaylı bilgiyi kaynakmakaleden [4] elde edebilirsiniz.
4.Paralel CLOSET+: Arka plan
Bu makalenin ana konusu olan paralel CLOSET+uygulamasındaki bazı tasarım seçimleri ve nedenleri bubölümde anlatılacaktır.
4.1.Hangi dil?
CLOSET+ algoritması ağaç ve çizge benzeri yapılariçermekte olduğu için üst seviyeden bir programlama diliprogramcının ini kolaylracaktır. Ama seviyeyükseldikçe dilin sunduğu esneklik de azalmaktadır. Ruby,Python, Java gibi dillerin sağladığı nesneye nelikprogramlama deneyimi oldukça iyidir, ama bu diller MPIkonusuna ne kadar destek vermektedirler? MPI'ın tünbüyük uygulamaları -doğal olarak- C'de yazıldılar. Bundandolayı C ve C++ dilleri ile MPI standartlarında bulunanhemen hemen her özellik kullanılabilmektedir. Diğer üstseviye dillerin MPI uygulamaları çeşitli şekillerde vardırlar.Bir kısmı tamamen o dille yazılmışken (native) bir kısmısadece C phanesi uygulamasısarma (wrapper)görevini görmekteler. İncelenen birçok kütüphanede sadeceMPI standardının alt kümesi kadar özelliğe destek verildiğigörüldü. Bu dillerin C ve C++'dan daha yavaş olacağını dahesaba katmak gerek. n ana ölçüt olduğu ksekperformanslı uygulamalarda bu çok büyük bir dezavantajasebep olmaktadır. Öte yandan programlamaya yeni başlayanbirisi için C ve C++ zor bir giriş yaşatabilir ve deneyimli birprogramcı bile ruby veya python gibi bir dilde yazmatercih edebilir.Bu iki şüncenin de kendine has avantajları vedezavantajları var. Bu makalede anlattığımız uygulama içinseçim C++ oldu, nesneye yönelik programlama yaparak altseviye C dilinden daha rahat programlama yapıldı. Bununlabirlikte C++ kullanıldığı için MPI konusunda oldukçaesneklik sağlandı.
4.2.Telden (veya havadan) nesne geçirmek?
C dili ile programlama yapıldığında çoğu işlem içinseçenekleriniz bellidir. Nesneleri direk olarak iletemezsinizve MPI_Pack gibi metodları kullanmak, nesnelerinizikendiniz serialize edip diğer işlem uçlarına iletmeniz gerekir.C++ ile nesneye yönelik programlama yaparken alt seviyesihirbazlıklara başvurmak uygun olmazdı, ve bu yüzdenbunun için bir kütüphane kullanıldı: Boost kütüphaneleri.Tansey ve diğerleri 2008'de yayınladıkları makalelerinde[8] serialization zorluklarına dikkat çekmekte, var olançömlerin kaılaştırmasını yapmaktadırlar. Varılansonuçlara re Boost phanesi bu i en iyi yapankütüphanelerdendir. Tansey ve diğerleri makalelerinde kendigeliştirdikleri bir araçtan bahsetmektedirler, makaledeanlatıldığına göre bu araç serialization için gerekli koduotomatik olarak üretebilmektedir. Ancak bu program Ocak2009 itibariyle halen genel kullanıma sunulmamıştır.Boost kütüphaneleri [9] C++'nın STL iletamamlanamamış noktaları için kaliteli ve sıkı standartlarasahip phaneler ermektedir. Boost'ta yer alankütüphanelerin bir kısmı ileride C++ standartlarına eklenmeküzere kabul görmüştür.Boost kütüphaneleri içinde yer alan MPI kütüphanesinesneye yönelik programlama yöntemlerini C++ dilinegetirmiştir. Örneğin
MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &procID);
gibi fonksiyon çağrıları yerini şunlara bırakmaktadırlar:
mpi::environment env(argc, argv);mpi::communicator world;if (world.rank() == 0) {...
Boost phanesi üst seviye özellikler sağlarkenesneklikten ödün vermemektedir. C'de bulunan hemenhemen tüm MPI özellikleri Boost kütüphanelerinin C++arayüzünde de bulunmaktadır. Eğer bunları kullanmakistemezseniz, C'deki MPI fonksiyonlarına da geri dönmeşansına sahipsiniz.Boost kütüphanesi ile C++'da var olan pek çok üst seviyeveriyi otomatik olarak karşıya yollayabilirsiniz. Buna örnekolarak string, hash_map, vector, list gibi veri yalarıverilebilir. Ağaç gibi kendinize özgü veri yapılarınız varsabu yapılara çok küçük değişiklikler ekleyerek bunların dailetilebilir olmasını sağlayabilirsiniz. Boost otomatik olarakişaretçileri izleyecek, tüm ağaç yapınızı doğru olarak karşıyaultıracaktır. Boost m bunları yaparken kendi MPIphanesinin yanda yine Boost'a dahil başka birphane olan Serialization phanesini kullanır.Serialization kullanarak serialize edebileceğiniz mnesneleri tel üzerinden karşıya geçirebilirsiniz.
4.3.Hangi MPI?
Boost kütüphanelerinin esnek olduğundan bir öncekibölümde bahsetmiştik. Boost kütüphaneleri için alt katmandahangi MPI kütüphanelerinin kullanıldığının hiçbir önemiyoktur. C'de yazılmış MPI kütüphaneleri sıkı bir şekilde
of 00

Leave a Comment

You must be to leave a comment.
Submit
Characters: ...
You must be to leave a comment.
Submit
Characters: ...