K, R'de Kümeleme Demektir: Örnekle Adım Adım Eğitim

Yayınlanan: 2020-02-17

Bir veri bilimcisi olarak çok fazla kümeleme yapacaksınız. Kullanılabilir birçok kümeleme algoritması türü vardır ve hepsini kullanma konusunda bilgili olmalısınız. Bu makalede, popüler bir kümeleme algoritması olan K-means'i tartışacağız ve R'de nasıl kullanıldığını göreceğiz.

R'de K-araç kümelemesinin arkasındaki temel teoriyi ve nasıl kullanıldığını öğreneceksiniz. Ayrıca makalenin ilerleyen kısımlarında pratik bir örnek tartıştık. Gelecekte başvurmak üzere bu makaleye yer işareti koyduğunuzdan emin olun. Veri Madenciliğinde kümeleme analizi hakkında daha fazla bilgi edinin.

K'nin R'de kümeleme anlamına geldiğini tartışmaya başlamadan önce, bu algoritmanın bunlarla nasıl ilgilendiğini daha iyi anlayabilmeniz için mevcut kümeleme algoritmalarının türlerine bir göz atmalıyız.

Okuyun: Veri Biliminde En İyi R Kitaplıkları

İçindekiler

Kümeleme Türleri

Birkaç nesneyi birbirine en çok benzeyen nesneler yakın bir kümede olacak şekilde grupladığınızda buna kümeleme denir. Nesneler arasındaki mesafe benzerlikleriyle ilgili olabilir. Benzerlik, veri biliminde iki farklı nesne arasındaki ilişkinin gücünü gösterir. Kümeleme, popüler bir veri madenciliği tekniğidir. Kümeleme, uygulamalarını görüntü analizi, makine öğrenimi, veri sıkıştırma, örüntü tanıma ve diğerleri dahil olmak üzere çok sayıda endüstride ve alanda bulur.

Kümeleme iki türdür – Sert ve Yumuşak. Her birini kısaca tartışalım.

  • Sabit bir kümede, bir veri noktası bir kümeye tamamen ait olur veya hiç ait olmaz. Arası yok.
  • Yumuşak bir kümede, bir veri nesnesi, bir olasılık veya olasılık nedeniyle aynı anda birden fazla kümeyle ilişkilendirilebilir.

Dünyanın en iyi Üniversitelerinden çevrimiçi veri bilimi kursu öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Kümeleme Algoritmaları Türleri

Farklı küme türleri olduğu gibi, farklı kümeleme algoritmaları da vardır. Algoritmaları küme modellerine göre ayırt edebilirsiniz. Bu, onları nasıl küme oluşturduklarına göre ayırt edebileceğiniz anlamına gelir. Her türlü kümeleme algoritmasından bahsetmeye başlarsak, bu kılavuz çok uzun ve ana noktadan uzaklaşacaktır. Bu nedenle, yalnızca birkaç belirgin kümeleme algoritması türünü tartışacağız. Bağlantı tabanlı, merkez tabanlı, yoğunluk tabanlı ve dağıtım tabanlı kümeleme algoritmaları vardır.

K-Ortalamaların Temel Kavramı

K-araçlarının temel konsepti oldukça basittir. K-ortalamaları, kümelerin toplam küme içi varyasyonun mümkün olduğu kadar minimum olması için tanımlanmasıyla ilgilidir. Çeşitli k-ortalama algoritmaları vardır. En yaygın k-ortalama algoritması, toplam küme içi varyasyonun, merkezler ve öğeleri arasındaki Öklid mesafelerinin karelerinin toplamına eşit olduğunu belirten Hartigan-Wong algoritmasıdır:

W( C k )= x ben C k ( x ben k ) 2

Burada x i , C k kümesine ait bir veri noktasını belirtir ve k , Ck kümesinde bulunan veri noktalarının ortalama değerini belirtir.

x i'nin değeri, x i ve k arasındaki uzaklığın karesinin toplamı minimum olacak şekilde olmalıdır.

K-ortalamalar Algoritması nedir?

Algoritmayı kullanmak için, önce sonucumuzda bulunacak olan kümelerin sayısını, K'yi belirtmemiz gerekecek. Algoritma, ilk küme merkezleri olarak hareket etmek için önce K nesnesini rastgele seçer. Bu nesnelere küme merkezleri veya araçları diyoruz. Ardından kalan nesneleri en yakın ağırlık merkezlerine atarız. Küme merkezleri ve nesneler arasındaki Öklid mesafesi, bunların ne kadar yakın olduklarını belirler.

Nesneleri ilgili merkezlerine atadıktan sonra, algoritma kümelerin ortalama değerini hesaplar. Bu yeniden hesaplamadan sonra, farklı bir kümeye daha yakın olup olmadıklarını görmek için gözlemleri yeniden kontrol ederiz. Ardından, nesneleri buna göre centroidlere yeniden atadık. Küme ataması durana kadar bu adımları tekrarlamaya devam ediyoruz. Bu, bir yinelemede oluşturulan kümeler önceki yinelemelerindeki kümelerle aynı olduğunda yinelemeleri tekrarlamayı bırakacağımız anlamına gelir.

K-Means Kümelemeyi Kullanma (Örnek)

Artık R'deki K-araç algoritmasının ne olduğunu ve nasıl çalıştığını bildiğinize göre, daha iyi açıklama için bir örnek tartışalım. Bu örnekte, toptan satış müşterileri veritabanını kullanarak bir kuruluşun müşterilerini kümeleyeceğiz. Bu soruna ilişkin veriler, Berkley UCI'nin makine öğrenimi deposunda mevcuttur. Buradan kontrol edebilirsiniz .

İlk önce verileri okuyacağız. Ve sonra bunun bir özetini alın. Verileri okuduktan ve özetini gördükten sonra, farklı kategorilerdeki en iyi tüketiciler arasında bazı belirgin farklılıklar olduğunu göreceksiniz. Normalleştirme (veya ölçekleme) ile kolayca kaldıramayacağınız bazı aykırı değerler bulacaksınız. Bu verilerle bir işletme, orta sınıf müşterilerinin çoğu zaman ne satın aldığını görmek ister. Bunun nedeni, bir şirketin en iyi müşterilerinin ne satın aldığına dair iyi bir fikre sahip olmasıdır.

Orta seviye müşterilerden oluşan bir küme oluşturmak için öncelikle her kategorideki en üst müşteri katmanından kurtulmalıyız. Bu yüzden ilk 5'i kaldıracağız ve yeni bir set oluşturacağız. İşte bunu nasıl yapacağız:

top.n.custs <- function (data,cols,n=5) { #Biraz veri çerçevesi ve kaldırmak için üst N gerektirir

idx.to.remove <-integer(0) #Kaldırılan müşterileri tutmak için bir vektör başlat

for (cols'de c){ # Bu fonksiyona aktardığımız verilerdeki her sütun için

col.order <-order(veri[,c],decreasing=T) #“c” sütununu azalan düzende sıralayın (üstte daha büyük)

#Order, sıralanan gerçek değerler yerine sıralanan dizini (örneğin satır 15, 3, 7, 1, …) döndürür.

idx <-head(col.order, n) #Sıralanmış C sütununun ilk n'sini al

idx.to.remove <-union(idx.to.remove,idx) #Kaldırılması gereken satır kimliklerini birleştirin ve tekilleştirin

}

return(idx.to.remove) #Kaldırılacak müşterilerin dizinlerini döndür

}

top.custs <-top.n.custs(data,cols=3:8,n=5)

uzunluk(top.custs) #Kaç Müşterinin Kaldırılması Gerekiyor?

data[top.custs,] #Mevcut müşterileri inceleyin

data.rm.top<-data[-c(top.custs),] #Gerekli Müşterileri kaldırın

Bu yeni dosya ile küme analizimiz üzerinde çalışmaya başlayabiliriz. Küme analizini gerçekleştirmek için aşağıdaki kodu kullanacağız:

set.seed(76964057) #Tekrarlanabilirlik için tohumu ayarla

k <-kmeans(data.rm.top[,-c(1,2)], center=5) #5 küme oluştur, 1. ve 2. sütunları kaldır

k$centers #Görüntüleme&nbsp;küme merkezleri

tablo(k$cluster) #Her kümedeki veri noktalarının sayısını ver

Bu kodu verilen veritabanında çalıştırdığınızda, şu sonuçları alacaksınız:

  • İlk küme, yüksek kaliteli deterjanlara ancak düşük miktarda taze gıda ürünlerine sahip olacaktır.
  • Üçüncü kümede daha taze ürün olur

Sonuçların ayrıntılı bir yorumu için iç ve araları kullanmanız gerekecek. k$inss, kümenin merkezinden her bir veri nesnesi arasındaki uzaklığın karesinin toplamına eşittir. Aralık ne kadar düşük olursa, sonuç o kadar iyi olur. Verilerinizde iç ölçü yüksekse, bu, çok sayıda aykırı değer olduğu ve veri temizliği yapmanız gerektiği anlamına gelir. k$beenss, kümelerin farklı merkezleri arasındaki uzaklığın karesinin toplamıdır. Küme merkezleri arasındaki mesafe mümkün olduğunca yüksek olmalıdır.

Okuyun: 6 R'de daha yaygın olarak kullanılan veri yapıları

En doğru sonuçları almak için deneme yanılma yönteminden yardım almalısınız. Bunu yapmak için, K için çeşitli değerleri denemeniz gerekir. Sonuçlarınızın grafiği kümelerinizin içinde artış göstermediğinde, bu nokta K için en uygun değer olacaktır. Değeri bulabilirsiniz. K'nin aşağıdaki kod aracılığıyla:

rng<-2:20 #K 2'den 20'ye

<-100 dener #K Means algoritmasını 100 kez çalıştırın

avg.totw.ss <-integer(uzunluk(rng)) #Tüm noktaları tutmak için boş bir vektör ayarlayın

for(v in rng){ # Aralık değişkeninin her değeri için

v.totw.ss <-integer(tries) #100 denemeyi tutmak için boş bir vektör oluştur

for(i in 1:dener){

k.temp <-kmeans(data.rm.top,centers=v) #Run kmeans

v.totw.ss[i] <-k.temp$tot.withinss#İçin toplamını depolayın

}

avg.totw.ss[v-1] <-mean(v.totw.ss) #İçindeki toplam 100'ün ortalaması

}

plot(rng,avg.totw.ss,type=”b”, main=”Çeşitli K bazında SS İçinde Toplam”,

ylab=”Kareler Toplamı İçinde Ortalama Toplam”,

xlab=”K Değeri”)

Bu kadar. Şimdi bu koddan elde ettiğiniz grafiği K için en iyi değeri elde etmek için kullanabilir ve gerekli sonuçları elde etmek için kullanabilirsiniz. R'de K-araç kümeleme bilginizi denemek için bu örneği kullanın. Örnekte kullandığımız tüm kodlar aşağıdadır:

data <-read.csv(“Toptan müşteriler data.csv”,başlık=T)

özet(veri)

top.n.custs <- function (data,cols,n=5) { #Biraz veri çerçevesi ve kaldırmak için üst N gerektirir

idx.to.remove <-integer(0) #Kaldırılan müşterileri tutmak için bir vektör başlat

for (cols'de c){ # Bu fonksiyona aktardığımız verilerdeki her sütun için

col.order <-order(veri[,c],decreasing=T) #“c” sütununu azalan düzende sıralayın (üstte daha büyük)

#Order, sıralanan gerçek değerler yerine sıralanan dizini (örneğin satır 15, 3, 7, 1, …) döndürür.

idx <-head(col.order, n) #Sıralanmış C sütununun ilk n'sini al

idx.to.remove <-union(idx.to.remove,idx) #Kaldırılması gereken satır kimliklerini birleştirin ve tekilleştirin

}

return(idx.to.remove) #Kaldırılacak müşterilerin dizinlerini döndür

}

top.custs <-top.n.custs(data,cols=3:8,n=5)

uzunluk(top.custs) #Kaç Müşteri Kaldırılacak?

data[top.custs,] #Müşterileri inceleyin

data.rm.top <-data[-c(top.custs),] #Müşterileri Kaldır

set.seed(76964057) #Tekrarlanabilirlik için tohumu ayarla

k <-kmeans(data.rm.top[,-c(1,2)], center=5) #5 küme oluştur, 1. ve 2. sütunları kaldır

k$centers #Görüntüleme küme merkezleri

tablo(k$cluster) #Her kümedeki veri noktalarının sayısını ver

rng<-2:20 #K 2'den 20'ye

dener<-100 #K Means algoritmasını 100 kez çalıştırın

avg.totw.ss<-integer(uzunluk(rng)) #Tüm noktaları tutmak için boş bir vektör ayarlayın

for(v in rng){ # Aralık değişkeninin her değeri için

v.totw.ss<-integer(tries) #100 denemeyi tutmak için boş bir vektör oluştur

for(i in 1:dener){

k.temp<-kmeans(data.rm.top,centers=v) #Kmeans'i çalıştır

v.totw.ss[i]<-k.temp$tot.withinss#İçin toplamını depolayın

}

avg.totw.ss[v-1]<-mean(v.totw.ss) #İçindeki toplam 100'ün ortalaması

}

plot(rng,avg.totw.ss,type=”b”, main=”Çeşitli K bazında SS İçinde Toplam”,

ylab=”Kareler Toplamı İçinde Ortalama Toplam”,

xlab=”K Değeri”)

Çözüm

Umarız bu kılavuzu beğenmişsinizdir. Kısa ve kapsamlı tutmaya çalıştık. K-araç algoritması hakkında herhangi bir sorunuz varsa, bize sormaktan çekinmeyin. Sorularınıza cevap vermeyi çok isteriz.

Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulmuş ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk, 1 Endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.

K-araçlarını kullanmanın dezavantajları nelerdir?

Aykırı değerler, merkezleri çekebilir veya aykırı değerler göz ardı edilmek yerine kendi kümeleri verilebilir. K-ortalamaları stokastik olduğundan, küresel optimal kümeleme çözümünün bulunacağını garanti edemez. Gerçekte, aykırı değerler ve gürültülü veriler, algoritmayı oldukça hassas hale getirebilir. Gruplandırmadan önce, aykırı değerleri ortadan kaldırmayı veya kesmeyi düşünün. Değişken boyut ve yoğunluktaki verileri gruplandırırken, K-ortalama güçlükleri vardır. Bu tür verileri kümelemek için K-araçlarını genelleştirmelisiniz. Açıkça aynı kümeye ait olsalar bile, k-ortalama algoritması, birbirinden çok uzak olan veri noktalarının aynı kümeyi paylaşmasına izin vermez.

K-araçlarında dirsek yöntemi nedir?

K-ortalamalar yöntemi, büyük ölçüde uygun sayıda kümeyi bulmaya dayanır. Dirsek Yaklaşımı, en iyi K değerini belirlemek için yaygın olarak kullanılan bir yöntemdir. Dirsek tekniği, grafikteki bir dizi K değeri için veri kümesinde K-araç kümelemesi gerçekleştirir ve ardından her K değeri için tüm kümeler için bir ortalama puan hesaplar. Her noktadan uzaklıkların karelerinin toplamı olan bozulma puanı atanan merkezine, varsayılan olarak hesaplanır. Bir veri kümesini karakterize etmek için ana bileşenlerin sayısı gibi diğer veriye dayalı modeller, parametre sayısını belirlemek için aynı tekniği kullanabilir.

K-araçlarında aykırı değerleri nasıl bulabiliriz?

K-Ortalamalar kümelemesindeki aykırı değerler, hem uzaklığa dayalı hem de kümeye dayalı bir teknik kullanılarak keşfedilebilir. Aykırı değerler, hiyerarşik kümeleme durumunda dendrogramlar kullanılarak keşfedilir. Projenin amacı, kümelemeyi daha doğru hale getirmek için aykırı değerleri keşfetmek ve ortadan kaldırmaktır. Veriler, K-ortalamalara dayalı aykırı değer tanımlama yaklaşımında en yakın küme merkezlerine atanarak K gruplarına bölünür. Daha sonra her bir öğe ile küme merkezi arasındaki uzaklığı veya farklılığı hesaplayabilir ve en büyük uzaklıklara sahip aykırı değerleri seçebiliriz. Uç değerler bir ortalamayı hızla etkileyebileceğinden, K-ortalamalar kümeleme yöntemi aykırı değerlere duyarlıdır.