Microsoft Clustering Modeli -- 1

Yazar: Bilgehan GÜRÜNLÜ
Kategori: SQL Server
Eklenme Tarihi: 14.8.2009 20:39:31



Microsoft İş Zekası evreninde, Veri Madenciliği görevleri 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 ve Modelin parametreleri hakkında detaylı bilgilere ulaşacağız.

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

Clustering Algoritmaları arasında en önemli farklılıklardan bir tanesi; data’nın hangi kümeye dahil edilmesi gerektiğinin nasıl belirlendiğidir. Bu noktada Microsoft Clustering modeli 2 farklı method ile karşımıza çıkmaktadır. Bunlar K-Means Algoritması ve Expectation Maximization Algoritması (kısaca EM, maksimum beklenti olarak türkçeleştirilebilir).

K-Means Algoritması, Clustering işlemini Öklit uzaklığına göre gerçekleştirmektedir. Bu algoritma üyeleri k adet kümeye bölmek için belirsiz sayıda; üyeleri kümelere dahil etme işlemini,bir sonra ki iterasyonda kümelerin üyelerinin yerleri değişmeyene kadar sürdürür. Bu tekniğe “hard clustering” ismi verilmektedir çünkü her bir obje sadece ve sadece bir tane kümeye dahil olabilir. Bu kümeler kopukturlar ve ortak noktaları yoktur. 5 farklı küme için 3 iterasyonda K-Means algoritmasının uygulamasının örneğine aşağıda ki şekilden ulaşılabilir.


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.

Aşağıda ki şekilde bir grup noktanın; K-Means Algoritması ve EM Algoritması ile Clustering işlemine sokulmasının sonuçları görülebilir. Şekilde de görüleceği üzere K-Means Algoritmasında daha uniform ve belirgin bir sonuç varken, EM Algoritmasında daha dağınık ve kümeler arasında daha açık bir diyagram söz konusudur.



Discrete Clustering (Sürekli Olmayan Değerlerin Kümelemesi)

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 ?

İşte bu noktada Microsoft Clustering modelinin kategorik verileri de kümeleme işlemine sokabileceğini belirtmek gerekir. Örneğin elimizde ki müşteri grubunun farklı farklı şehirlerde yaşadığını düşünelim. Öncelikle herbir şehiri bulunduğu bölgeye göre gruplarız daha sonra herbir cografi bölge için bir numara belirleriz (Marmara = 1 , Akdeniz = 2 , gibi). Sonrasında oluşturulan bu özellikte, kategorik bir özellik olmasına rağmen, clustering işlemine sokulabilir.


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


Clustering modeli’nin kullanıldığı çok önemli bir nokta ise; data’nın eksik bir özelliğinin bulunması durumudur. Örneğin elimizdeki X ürününe ait 1000 adet verilik datasetimiz olsun. Bu dataset içerisindeki 10 adet ürünün renginin bilinmediğini varsayalım. Elimizde ki bu ürünlerin diğer özelliklerine göre  kümelere dahil edersek, dahil ettiğimiz kümelerin üyelerinin özelliklerinden, 10 adet ürünün renkleri hakkında bir öngörüde bulunma şansımız olabilir. ( 3 tanesi beyaz, 4 tanesi siyah, 3 tanesi mavi gibi)


Microsoft Clustering Modelinin Parametreleri


Microsoft Clustering Modelinin elinizdeki dataset’e göre düzgün ve başarılı bir şekilde kümeleme işlemini gerçekleştirebilmesi için buradaki modele ait parametrelerin çok iyi bir şekilde ayarlanması gerekmektedir. Bu parametrelerin doğru uyarlanması bazı durumlarda doğru sonuç bulunana kadar değişiklik yapmaktan geçebilmektedir.


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)

Varsayılan (default ) değeri 100’dür.


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.



Bu makaleye bağlı 2. Makalemizde; BIDS geliştirme ortamında AdventureworksDW veritabanı
 
üzerinde bir Müşteri Segmentasyonu projesini gerçekleştiriyor olacağız.


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