Kmeans yönteminde optimal küme sayısının belirlenmesi (Elbow, Average Silhouette Indeks , GAP İstatistiği)

Bildiğiniz üzere, K means, bir kümeleme yöntemidir. Yani algoritma, istatistiksel olarak benzer nitelikteki verileri iteratif yöntemle gruplamaya çalışır. Algoritmanın birinci baş harfi olan K de küme sayısını belirtir. Bizim belirttiğimiz K merkezlerine göre yakınlık derecesine göre değerlendirilerek hangi verinin hangi kümede olacağına karar verir.

Temel Kuralımız:
Gruplar arası uzaklık maksimum, grup içi uzaklığı minimum

Küme Sayısının Belirlenmesi:
Şimdi biraz absürt düşünelim 😊 örneklem büyüklüğüm 25 olsun k (küme) sayısını 25 belirleyelim. Bu şekilde grupiçi uzaklığımda sıfır olur (Eee bu super fikir) ama burada biz gerçekten bunu mu bekliyoruz. Her bir örneklemi maksimum detaydaki farklılığına göre ayrıştırmak mı yoksa küçük detayları gözardı edip karmaşıklığı azaltıp gruplaştırmak mı istiyoruz. Bence asıl soru da budur… Sonuç olarak yaptığımız çalışmanın gerçek anlamda yorumlanabilirliliğini artırabilmek için k sayısının doğru belirlememiz önemlidir. Şimdi isterseniz optimal k sayısını nasıl belirliyoruz ona bakalım.

25 sample bir örnek veri seti oluşturdum. Müşteriler ve onların kullandığı Data, Voice, SMSdeğerleri olsun. Önce verimizi R’a okutalım ve descriptive analizini yapalım.

customer <- read.csv(“customer.csv”, header = TRUE, sep=”;”, row.names=1)

df <- customer
summary(df)
df <- scale(df)
as_tibble(df)
rownames(df)
library(funModeling)
profiling_num(customer)

Descriptive Analiz

distance <- get_dist(df)
fviz_dist(distance, gradient = list(low = “#00AFBB”, mid = “white”, high = “#FC4E07”))

Noktaların birbirlerine göre uzaklıkları – Heatmap

k2 <- kmeans(df, centers = 2, nstart = 25)
fviz_cluster(k2, data = df)

Küme sayısını 2 seçtiğimizdeki örnek plot gösterim

k2
k3 <- kmeans(df , centers = 3, nstart = 25)
k4 <- kmeans(df , centers = 4, nstart = 25)
k5 <- kmeans(df , centers = 5, nstart = 25)
p1 <- fviz_cluster(k2, geom = “point”, data = df) + ggtitle(“k=2”)
p2 <- fviz_cluster(k3, geom = “point”, data = df) + ggtitle(“k=3”)
p3 <- fviz_cluster(k4, geom = “point”, data = df) + ggtitle(“k=4”)
p4 <- fviz_cluster(k5, geom = “point”, data = df) + ggtitle(“k=5”)
library(gridExtra)
grid.arrange(p1, p2, p3, p4, nrow = 2)

K sayısını 2-5 arasında örnek olarak gösterimleri

Elbow Metodu

Bu method en çok tercih edilen bize büyük resmi gösteren bir yöntemdir. WCSS (Within Cluster Sum of Square) her bir noktanın küme merkezine olan uzaklığının karesinin toplamını alınarak hesaplanır. Elbow Metodu, WCSS deki değişim miktarının azaldığı nokta yani dirsek noktası optimum noktadır der.

Eminim aklımıza şu soru geliyordur. Aşağıdaki grafikte de görüldüğü üzere cluster sayım artıkça WCSS azalıyor peki, Optimum cluster 5 seçtik ama ben 6 cluster bölmek istedim. Çok büyük bir ihtimalle, bir cluster’a benzer alt bir cluster oluşturdunuz. Yani veri setinize göre cluster:1-2-3-4-5 olması gerekirken siz cluster_1_1 gibi cluster_1 altında türev bir cluster oluşturdunuz. Örnek vermek gerekirse değişkenleri yordayıp, ülkeleri cluster ederken (Almanya, Türkiye, Fransa vs.) biz yine Türkiye grubunun altında belki Marmara bölgesi diye bir alt cluster oluşturduk. WCSS’de de anlamlı bir değişiklik olmadı. O sebeple de optimum küme sayısı önemlidir ki yaptığınız çalışmayı doğru yorumlayabilelim.

set.seed(123)
fviz_nbclust(df, kmeans, method = “wss”)

Elbow metoduna göre anlamlı küme sayısı 5 dir

Average Silhouette Indeks

Rousseeuw (1987), her bir birimin kendi kümesine uygunluğunu tanımlayacak bir Silhouette indeksi önermiştir. a(i) ; i. birimin kendi kümesindeki tüm noktalara olan ortalama uzaklıklarını (benzerliğini) ve b(i); i. birimin diğer kümelerdeki tüm noktalara olan ortalama uzaklıkların minimumunu göstersin. Buradan i. birim için Silhouette indeksi;

Sil(i) = (b(i) – a(i)) / max (a(i),b(i))

olarak tanımlanır. Eğer sil(i) değeri 1’e yaklaşırsa i. birimin atandığı kümeye daha uygun olduğu, sil (i) değeri 0’a yaklaşırsa veya negatif olursa i. birimin atandığı kümeye uygun olmadığı sonucuna varılır. Negatif değerler yalnızca bir birim en uygun kümesine atanamadığında ortaya çıkar.

Olayı biraz daha basitleştirirsek;
K=2 olsun. cluster_1 içindeki bir noktanın a(i): Küme içindeki her bir noktaya uzaklığının ortalaması. b(i) cluster_2 her bir noktalara olan ort. uzaklığıdır. Eğer cluster_3 olsaydı aralarında karşılaştırıp min. seçecektik.

Sil(i) = (b(i) – a(i)) / max (a(i),b(i)) formulünde yerine koyulur, Çıkan sonuç, o noktanın silület skorudur. Bu değer + 1 ne kadar yakın ise o kadar doğru gruplamışız demektir. Ama eksi çıkıyor ise demekki o nokta yanlış clusterda yer almıştır yorumunu yapacağız.

fviz_nbclust(df, kmeans, method = “silhouette”)

Optimal Küme Saysı 5’dir

GAP istatistiği

Kümelerin, gerçekleşen değerlerinin karelerinin toplamlarının, beklenen değerlerine göre log() değerce farkını karşılaştırıyor. Bunun içinde ikinci bir bootstrapping yöntemiyle örneklem oluşturuluyor. Bu iki değer arasındaki gap büyüklüğü, random uniform dağılımdan o kadar uzakta olduğu ve bizim için de bir o kadar anlamlı olduğunu gösteriyor.

set.seed(123)
gap_stat <- clusGap(df, FUN = kmeans, nstart = 25, K.max = 5, B = 25)
print(gap_stat, method = “firstmax”)

Optimal 1 olur dese de aslında maks gap 2.tepe noktası olarak 5 seçilebilir.

K=5 seçtiğimiz de Özet Gösterim:

set.seed(123)
final <- kmeans(df, 5, nstart = 25)
print(final)
customer %>%
mutate(Cluster = final$cluster) %>%
group_by(Cluster) %>%
summarise_all(“mean”)

Yukarıdaki özet tabloda k=5 seçildiğinde değişkenlerin cluster’ın merkez değerleri gösterilmiştir. Her ne kadar da gerçek hayatta böyle olmasa da sensitivity açısında önce Voice sonra da SMS değişkeninden dolayı müşteriler 5 farklı clusterda olması gerektiği görülmüştür.

Bu ve buna benzer birçok method var önemli olan çalışma mantıklarını bilip, sizin için en anlamlı olanı seçip nedenleriyle açıklayabilmektir.

Herkesin çalışmasında kolaylıklar dilerim 😉

Gurkan.

Coffee Break

Çay mı kahve mı sorusunun cevabını bu sefer kahve diye cevapladığınızı varsayarak sizlere kahvenin kısa tarihini ve kahve çekirdeklerinden bahsedeceğim.

Evet şimdi parmakları çıtlatalım ve Kahvenin tarihine giriş yapalım:

Kahve, M.S. 800 yıllarına dayanmaktadır. Etiyopda “Kaldi” adında bir çobanın güttüğü keçilerin kahve meyvesini yedikten sonra canlanmalarını fark etmesiyle başlamış sonra kendisi de bu meyveyi denemeye karar vermiş ve yedikten sonra tıpkı keçiler gibi hissettiği güç ve mutlulukla o da yerinde duramamış hatta taklalar atıvermiş (“Keçilerini mi kaçırdın!” deyimi de herhalde ilk defa o zaman söylenmiş 😊) Çoban Kaldi uzun süre ibadet eden keşişlerin çok seveceğini düşünmüş ve onlara vermiş, onlar da bu gizemli meyvenin tadını bahsedilen kadar beğenmediklerinden hepsini ateşe atmışlar. Kısa süre sonra lezzetli aroma, burun deliklerine dolunca keşişler meraklanmışlar ve kavrulmuş meyvelerden bir içecek demlemişler. Aromalı kokusu ve tadını o kadar çok beğenmişler ki, bunu Tanrı’nın bir hediyesi olarak görmüşler; Kahve sayesinde bütün gece ayık kalmışlar. Böylece kahve tohumunun ünü, kısa süre içinde bölgede yayılmaya başlamış.

Kahvenin Osmanlı Devleti ile tanışması….

Osmanlı İmparatorluğu Yemen’e doğru genişledikçe, biraz geç de olsa 1500 yıllarında, Yemen Valisi, kahveyi İstanbul’a getirmiş ve Kanuni Sultan Süleymanı kahveyle tanıştırmıştır. Artık o andan itibaren Türk kahvesi, sarayın görkemli salonlarında, kırk kişilik kahveci ustaları tarafından sultana servis edilecek bir içeçek olur, hatta haremde cariyelere de doğru kahve pişirme dersleri verilir. Buraya küçük bir detay daha eklemekte fayda var. Pera müzesini gezenler elbette hatırlacaktır, Yemen valisi İstanbuldan geri döndüğünde şöyle demiştir, bir gün kulpsuz fincan ile servis yapan yaverine sen bunu en iyisi İstanbul’a götür orada ne de olsa buna bir kulp takarlar demiştir. İşte “Kulp takma” deyiminin nereden gelmiş olduğunu da ben de orada öğrendim 😊 Artık Valiyi ne kadar zorladılarsa 🙂 … Neyse lafı çok da uzatmadan; ilk kahvehane yine o yıllarda tahtakalede açılmıştır ve kısa sürede kahvehaneler, insanların bir araya gelerek kahve içtikleri, tartıştıkları, fikir alışverişinde bulundukları mekânlar oluvermiştir (Yani ilk starbucks fikri de bizden çıktı 😉)

Kahvenin Avrupa’ya Yolculuğu

Evet Kahve ile Osmanlıları da fethettikten sonra, şimdi sırada Avrupa var. Tarihte ilk kez, Venedikli tacirlerin 1600 yıllarında, ilk kahve tohumlarını Venedik’e götürmeleriyle gerçekleşmiştir. Böylelikle İtalyanlar’ın da asla vazgeçemedikleri kahve tutkuları başlamış olur 😊 . Daha sonraki yıllarda Batı Avrupa’nın büyük bir bölümü de kahvehanelerle dolup taşmaya başlar. Hatta içinde büyük yazarların, bestecilerin ve aydın kesimin de toplanma yeri olmuştur kahvehaneler.(Voltaire, Beethoven ve Mozart).Bugün İtalya’da günde otuz sekiz milyon fincan kahve tüketildiği söylenmektedir.

Kahvenin Orta ve Latin Amerika’ya Yolculuğu

18. yy Amsterdam valisi, Fransız Kralına hediye olarak küçük bir kahve bitkisi armağan eder. Kral da bitkinin Paris’teki Royal Botanik Bahçesi’ne dikilmesini emreder. Yine o yıllarda Fransız donanması sömürge birlikleriyle birlikte bitkiden tohum alarak, oldukça zorlu bir yolculuğa çıkarlar. Sonunda Fransız sömürgesindeki Karayiplerdeki adaya kahve tohumunu dikerler. Tohum, 50 yıl içerisinde adada toplam 18 milyon kahve ağacı yetiştirilmesini sağlar. Getirilen bu tohum; aynı zamanda Güney ve Orta Amerika’da yetiştirilen tüm kahve ağaçlarının da atası kabul edilir. Böylece kahve tüm dünyaya yayılmış olur.

2 tür Kahve Çekirdeği: Arabica mı Robusta mı

Bir coffeshop’a gittiğinizde çeşit çeşit kahve çekirdekleri görürsünüz, vay arkadaş dersiniz amma da çok çeşit varmış dedirttir (Guatamala, Kenya, etiyopia vs.) , oysa bütün kahveler %99+ oranda iki ana tip altında toplanır. Robusta ve Arabica. Dünya üretiminin yaklaşık %75’ini Arabica çekirdekleri oluştururken, %25’i ise Robusta’dır. Gelelim aralarındaki ana farklara.

TAT:

Arabica çekirdekleri, yumuşak içimlidir, damakta genelde meyve aromalı bir tat bırakırlar.Robusta çekirdekleri, sert ve yoğun, damakta genelde topraksı tat bırakan çekirdeklerdir

ÜRETİM KOLAYLIĞI:

Robusta çekirdekleri doğa şartları ve iklim koşullarına daha dayanıklıdır bu nedenle üretilmeleri daha kolaydır. Düşük rakımlarda rahatlıkla yetişebilir. Robusta kahve ağacı, Arabica kahve ağacına göre daha fazla ürün verir.

ŞEKİL:

Robusta çekirdekleri, Arabica çekirdeklerine göre daha yuvarlaktır. Arabica çekirdeklerinin görünümü daha çok oval yapıdadır.

BÖLGE:

Robusta çekirdekleri genellikle, doğu yarım küre de yetişirler. Vietnam, Endonezya, Hindistan ve kısmen Afrika’nın doğusundaki ülkeler en bilinen Robusta yetiştiricileridir.
Arabica çekirdekleri ise Afrika, Papua Yeni Gine’nin yanı sıra asıl olarak Güney Amerika’da üretilir. Kolombiya aldığı son kararla Robusta çekirdeği yetiştirmeyi bırakmıştır.

TERCİH:

Genelde Arabica çekirdekleri tercih edilir. Robusta çekirdeğinin satıldığına genelde denk gelmezsiniz. Bunun ana sebebi tek içiminin tat ve sertlik nedeniyle zor olmasıdır, bu nedenle daha çok düşük oranda harman kahvelerde kullanılır. Eğer doğru harmanlanırsa Arabica çekirdeklerinin verdiği tat altında bıraktığı sertlikle hem tadı güçlendirir hem de ortalama kafein miktarını artırır ama ikinci bardağı içmek yine de çok içinizden gelmeyebilir. 😊

Neyse efendim ben lafı fazla uzatmayayım:

İçtiğiniz kahveler hep forest gump tadında olsun.

Yani biraz tatlı-hüzünlü ama güldüren saf ve temiz bir film tadında olsun.

Afiyet olsun… 🙂

Mutlu Bayramlar :)

Şarkı: “Donna Donna”
Bu parça beni bayağı bir dumura uğratmıştı: Ortaokulda dinlediğimde, bunun çok acıklı bir aşk hikâyesi, Donna’nın da bu hikâyenin kahraman kızı olduğunu düşünmüştüm. Sonra yıllar geçtikten sonra bir şekilde aklıma geldi bu parça… Bir de baktım ki anlatılanlar bir aşkın değil bir dananın hikâyesi imiş :). Bugün yine Kurban Bayramında aklıma geldi bu parça ve araştırdığımda puzzle’ın bir başka parçasını buldum. 2. Dünya savaşı yıllarında fabl tarzda yazılmış, toplama kamplarına gönderilen musevilerin trenlerde söyledikleri bir özgürlük şarkısı olduğunu öğrendim. Galiba yazıldığı dönemden kaynaklandığı için hikayeler, şarkılar fabl tarzda yazılmak zorunda kalmış. George Orwell’ın Hayvan Çiftliği kitabı da bunun en güzel örneklerinden bence…

Benzer bir örnek, farklı döneme gelse de kral’a karşı hicivlerin yer aldığı “Alice Harikalar Diyarında” masal kitabıdır 🙂 Bence çocuklardan ziyade biz büyüklerin tekrar tekrar okuyup anlaması gerekir 😉 Kitabın yazarı Carroll’un yazarken ki amacı şuydu: Kalıplar ve kurallarla çevrili insanı, dünyanın dışına çıkarıp özgürleştirmek. İnsanlarda merak uyandırıp akla gelebilecek her şeyle ilgili soru sormalarını ve çok iyi bildiklerini sandıkları kavramları (iyi-kötü, doğru-yanlış, güzel-çirkin, hızlı-yavaş vb.) sorgulamalarını sağlamaktı. Carroll’un, “hayat” dediğimiz balonda, sonsuzluğa açtığı bir delikti “Alice Harikalar Diyarında”. Eğer her şey bulunduğumuz yere göre değişiyorsa ve anladığımız kadarsa “gerçek” diye bir şey yoktu. Dünya “anladığımız kadar”lardan oluşuyordu ve belki de biz birçok şeyi -belki de her şeyi- yanlış anlıyor ve aktarıyorduk. Her şeyi “usa vuruyor”, sınırsız varoluşu sınırlı bir akılla anlamaya çalışıyorduk.

İşte tıpkı Alice Harikalar Masalındaki gibi Donna Donna şarkısını da her dinlediğimde hikayenin altını tekrar tekrar kazıyorum, araştırıyorum, bulmacayı çözmeye çalışıyorum ve her yaşımda yeni şeyler öğreniyorum. Ortaokulda iken Donna’nın bir aşk hikayesi olduğunu zannederken sözlerini okuduğumda yaşlı bir dananın özgürlüğünü anlattığını öğrenmiş hatta kendi kendime gülmüştüm, sonra yıllar geçtikçe yine dinleyip araştırdığımda 1945’li yıllarında musevilerin mutlak otoriteye karşı söylediği bir halk şarkısı olduğunu öğrendim. Eminim bir başka sefer dinlediğimde tıpkı Alice Harikalar masalındaki gibi arkasındaki felsefik simgeleri, imgeleri de anlacayacağım. Kim bilir….

Donna Donna

Pazara giden bir vagonda bağlanmış
Bir buzağı var, hüzünlü gözlerle bakan.
Ve çok yukarılarda bir kırlangıç ,​
Gökyüzünde hızla kanat çırpan…
 
Rüzgarlar nasıl da gülüyor…
Olanca gücleriyle gülüyorlar.
Gülüyorlar tüm gün boyunca
Bütün yaz gece yarısına kadar.
 
“Şikayeti kes artık” dedi çiftçi,
“Kim sana bir buzağı ol dedi?
Neden uçmak için kanatların yok
Şöyle hür ve gururlu bu kırlangıç ​​gibi ? “
 
Rüzgarlar nasıl da gülüyor …
 
Buzağılar kolayca bağlanır ve kesilir
Asla bilmezler nedenini.
Ama özgürlüğe değer verenler,
Uçmayı öğrendiler şu kırlangıç gibi !