Microsoft İş Zekası evreninde Veri Madenciliği işlemleri SQL Server 2005 / 2008 Analysis Service mimarisine göre gerçekleştirilmektedir. SSAS (SQL Server Analysis Services)’ in Veri Madenciliği disiplinini esas alarak oluşturmuş olduğu 9 Veri Madenciliği Modeli ve bunlar içerisindeki birçok algoritmayı kullanarak İş Zekası projeleri için gerekli analizleri gerçekleştirme imkanına sahibiz. Bu makalemizde Microsoft Clustering Modelini kapsamlı bir şekilde ele alacağız.
Clustering; türkçe anlamıyla gruplamak; demetlemek anlamına gelmektedir ve en temel İş Zekası görevlerinden birisidir. Aslında Clustering (kümeleme), hepimizin günlük hayatımızda fark etmeden gerçekleştirdiğimiz bir eylemdir. Örneğin bir havaalanında olduğumuzu ve etrafımızdaki kişileri gözlemlediğimizi düşünelim. Bazı yolcuların kalın kıyafetler giymiş olduğunu, bazı yolcuların da çok ince kıyafetler giymiş olduğunu gözlemlediğinizde, herhalde içinizden “kalın giyinmiş insanlar soğuk ülkelere seyahat edecek, ince giyinmiş insanlar da sıcak ülkelere seyahat edecek” diye düşünürsünüz. İşte bu örnek aslında , bu makalenin konusunu oluşturan Clustering’i çok iyi bir şekilde açıklamaktadır.
Clustering (kümeleme) özetle; elimizdeki dataset’den yola çıkarak datayı kümelemeyi, demetlemeyi amaçlamak olarak düşünülebilir. Bazı ingilizce kavramların türkçeye çevrilmesinde yanlışlıklar ortaya çıkabilmektedir. Burada da Clustering’in karşılığı olarak Sınıflandırma terimini düşünmek yanlış olacaktır. Sınıflandırma ile kümeleme türkçede yakın anlamları ifade etse de, İş Zekası dünyasında esasen farklı anlamlara ve karşılıklara sahiptirler.
Yukarda verilen örnekte, 2 farklı giyim tarzıyla, yolcuları gideceği yere göre kümeleyebildik. Peki 2’den fazla değerlendirilmesi gereken özellik ve milyonlarca yolcu olsaydı ? Bu durumda kümeleme işleminin gerçekleştirilmesinin ne kadar zor olduğunun farkına varmışsınızdır herhalde. İşte bu makalede, kurumlarda sık karşılaşılan İş Zekası probleminin SSAS (SQL Server Analysis Services) ‘da Microsoft Clustering Modelini kullanarak; nasıl başarılı bir şekilde çözümleneceğini detaylıca inceleyeceğiz.
Bu makalede Clustering (kümeleme) Algoritmasının teorik ve akademik tarafıyla ilgili çok uzun bilgiler verip de makaleyi uzatmak istemiyorum. Bir Veri Madenciliği algoritması olan Kümeleme hakkında daha fazla bilgi almak isteyenler www.iszekam.net adresinden kümeleme ile ilgili makalemi okuyabilirler. Ben burada sadece SSAS üzerinde ki Microsoft Clustering modelinin uygulamasına yönelik bilgiler vermeyi amaçlıyorum.
Hard Clustering ve Soft Clustering
EM (Expectation Maximization) Algoritması ise bir objenin hangi kümeye ait olduğunu belirlemede kesin mesafe ölçütlerini kullanmak yerine tahminsel ölçütleri kullanmayı tercih eder. EM Algoritması objelerin hangi kümeye yerleşeceğini, çan eğrisi şeklinde bir yapı içerisinde belirler.Bir nokta tahminsel olarak birçok kümenin elemanı olabilir ama büyük bir ihtimalle yerleştirildiği kümenin elemanıdır. Bu tekniğe de ”Soft Clustering ” denmektedir çünkü kümelerin ortak noktaları, geçiş noktaları, vardır ve birçok obje üst üste binmiş biçimdedir. Ayrıca bu algoritma kümede ki elemanların merkezden ayrık ve kopuk bir yapıda olmasına izin vermemektedir.
Buraya kadar sayısal verilerin birbirine göre mesafelerini (daha doğrusu seçilen merkezi bir noktaya göre mesafesini) esas alarak kümelemeye çalıştık. Eğer elimizde ki veriler sayısal değerlere değil de kategorik değerlere sahipse ne olacak ?
Scalable Clustering (Kümeleme’nin Ölçeklendirilmesi)
Clustering işleminde karşılaşılan problemlerden birisi, birden çok iterasyonun gerçekleştirileceği uygun bir segmente ait, eğitim datasının bulunamamasıdır. Küçük veri grupları için, bu problem olarak görünmese de, büyük veri grupları için mevcut kısıtlı donanım imkanlarını değerlendirebilmek için önemli olmaktadır. Belleğin algoritmaları başarılı bir şekilde çalıştırmada yeterli olmaması İş Zekası projelerinin en büyük zorluklarından bir tanesidir.
Böyle bir durum için, dataset’in boyutunu dikkate almaksızın başarılı bir clustering gerçekleştirebilmek amacıyla ölçeklendirilebilir bir framework imkanı ortaya çıkmaktadır. Scalable Framework olarak adlandırılan bu çalışma biçiminde, Microsoft Clustering algoritmalarının gerçekleştirilmesi aşamasında özetle dataset farklı alt gruplara bölünür ve daha sonrasında büyük resim tamamlanır. Örneğin 4000 adet kişiyi verilerine göre kümelemek istediğimizde; ilk 1000 adet kişi için kümeler belirlenir, daha sonrasında 1000’er 1000’er veriler alınarak kümeleme yapıldıktan sonra 4 tane sonuca göre bir kümeleme işlemi gerçekleştirilmiş olur.
Kümelemenin Tahmin Özelliği
Microsoft Clustering Modelinin Parametreleri
CLUSTERING_METHOD ; kümeleme işleminde hangi algoritmanın kullanılacağını seçmek içindir ve 4 farklı algoritmayı kullanabilme imkanımız vardır. Burada belirtilen “Vanilla” versiyonları sadece örnek bir data üzerinde kümeleme işlemini gerçekleştirmektedir. Seçilebilecek Clustering Methodları şunlardır.
1) Scalable EM (default)
2) Vanilla (non-scalable) EM
3) Scalable K – Means
4) Vanilla (non- scalable) K – Means
CLUSTER_COUNT ; küme sayısını ifade etmektedir. K – Means algoritması için K ifadesi, aynı zamanda da EM algoritması için de küme sayısını işaret etmektedir. Eğer probleminizin çözümü için 5 küme gerekiyorsa, bu değer 5 olarak seçilmelidir. Burada şunu da belirtmek gerekir ki ne kadar çok attribute varsa, kümelemenin doğru olabilmesi için, o kadar çok küme sayısı seçilmelidir (100 attribute için 100 küme olmalı anlamında anlaşılmasın , sadece doğru orantılı olmalı anlamında bir tavsiye) . Diğer taraftan, modelin çalışma süresini azaltmak için attribute sayısı daha önceden azaltılmış olmalıdır.
Varsayılan (default) değeri 10’dur. Eğer siz 0 değerini seçerseniz; model kendiliğinden tahminsel bir biçimde doğru küme sayısını data üzerinden bulmaya çalışacaktır.
MINIMUM_SUPPORT ; boş olan kümelerin bir daha ki hesaplamadan çıkartılmasını sağlayarak, boş bir kümenin sonuç olarak karşımıza çıkartılmasının önüne geçmektedir.
Varsayılan (default) değeri 1 dir ve değiştirilmesine pek gerek duyulmamaktadır. Eğer değişiklik yapılacaksa; çok büyük değerlerin kötü sonuçlar vereceğini bilmeniz gerekmektedir.
MODELLING_CARDINALITY ; değeri Clustering işlemi sırasında kaç adet aday kümenin oluşturulacağını belirlemektedir. Varsayılan(default) değeri 10’dur ve bu sayının azaltılmasının, performansı artıracağını belirtmek gerekir.
STOPPING_TOLERANCE ; algoritmanın tamamlanacağı aşamayı belirlemek için kullanılır. Varsayılan (default) değeri 10’dur ve bu değeri artırmak algoritmanın tamamlanmasını hızlandıracaktır. Değerini azaltmak ise daha sıkışık bir küme yapısına sahip olmamızı sağlamaktadır. Eğer küçük bir datasetiniz varsa veya dağınık bir kümeniz varsa bu değeri 1 olarak girmek faydanıza olacaktır.
SAMPLE_SIZE ; algoritmanın çalışması esnasında ele alınacak olan örnek sayısını vermektedir. Makalenin Scalable Clustering kısmında bahsetdiğim, Scalable Framework deki herbir aşamada ki durum sayısını belirtmektedir. Burada girilen sayısal değer azaltılırsa (çok büyük STOPPING_TOLERANCE sayısının da kullanımıyla birlikte) algoritma bütün bir datayı taramadan çabucak işlemini bitirecektir. Bu da çok büyük datasetler için hızlı bir clustering işleminin olmasını sağlamaktadır. Vanilla versiyonlarının kullanımında SAMPLE_SIZE toplam ele alınan, durumu ifade etmektedir.
Varsayılan (default) değeri 50 000 dir. Bu değerin 0 olarak girilmesi, Server’ınızdaki bütün Memory’inin kullanılmasına yol açacaktır.
CLUSTER_SEED ; parametresiyle oluşturulan kümeler içerisinde ki her bir üyenin, noktanın, hassasiyeti test edilmektedir. Aslında bu rastgele bir sayıyı ifade etmektedir. Bu değerin değişmesi durumunda bile modelinizde çok fazla değişiklik olmuyorsa, datanızın düzgün bir şekilde segemente (kümeleme ) edildiğinden emin olabilirsiniz.
Varsayılan (default) değeri 0 ‘dır.
MAXIMUM_INPUT_ATTRIBUTES ; Clustering işlemi esnasında en fazla kaç adet attribute’un hesaplamalara dahil edileceğini belirlemektedir. Datasetinizde burada girilen sayının üzerinde bir sayıda attribute varsa, sadece en çok kullanılan attribute’ların hesaplamaya katılacağını bilmeniz gerekir. Performans’a etkilerinden dolayı attribute sayıları üzerine böyle bir üst sınır koyma zorunluluğu doğmuştur.
Varsayılan (default) değeri 255’dir.
MAXIMUM_STATES ; tek bir attribute için kullanılacak en fazla state (durum) sayısını vermektedir. Eğer bir attribute burada girilen sayının üzerinde duruma sahipse sadece en çok kullanılan durum seçilir ve hesaplamaya dahil edilir.Dahil edilen bu fazla durumlar “other” etiketiyle hesaplama sonucunda gösterilir. State (durum) örneği olarak; elimizde ki müşteriler datasında ki yaş grubu’nun 3 farklı durumu gösterilebilir (20 - 40, 40 – 60 , 60 ve üzeri gibi)
Microsoft Clustering Modeliyle Gerçekleştirilebilecek Görevler
Microsoft Clustering algoritmalarıyla elinizde ki dataset üzerinde benzerlikleri ya da farklılıkları bulabilirsiniz. Microsoft Clustering algoritmalarıyla sıkça gerçekleştirilen görevlerin başında; dataset’i farklı özelliklerine, niteliklerine göre segmente etmek gelmektedir.
Başka bir İş Zekası makalesinde görüşmek dileğiyle... Bilgehan Gürünlü
www.gurunlu.com www.iszekam.net bilgehan@gurunlu.com
* Data Mining with Microsoft SQL Server 2008 - Books Online