Gözetimsiz Öğrenme (K-Merkezli Öbekleme)

Şimdiye kadar incelediğimiz makine öğrenmesi algoritmaları, etiketli (labeled) eğitim kümeleri üzerinde çalışıyorlardı. Ancak, etiketli veri setleri elde etmek her zaman mümkün olmayabilir. Peki eğitim kümelerimiz etiket içermiyorsa ne olacak?

Gözetimsiz öğrenme, konsept olarak gözetimli öğrenmeden çok daha farklıdır. Regresyon işlemi gerçekleştiremeyiz, çünkü giriş verilerimize karşılık gelen hedef verilerimiz yok. Sınıflandırma işlemini de Öbekleme (Clustering) algoritmalarıyla gerçekleştireceğiz.

Gözetimli öğrenme algoritmaları, bir hatayı minimize etmeye çalışıyorlardı. Ancak gözetimsiz öğrenmede hedef (target) değerlerimiz olmadığı için bunu da gerçekleştiremeyiz. Bu nedenle gözetimsiz öğrenme için başka bir yol bulmalıyız.

Bunlardan bahsetdikten sonra ilk inceleyeceğimiz gözetimsiz öğrenme algoritmasına bakalım.

K-Merkezli Öbekleme (K-Means Clustering)

Verilerimizi k-kategoriye ayırmak istediğimizi düşünelim. Verilerimiz için k-tane öbek merkezi belirleyeceğiz. Ancak, öbeklerin nerelerde olduğunu bilmiyoruz. Ayrıca, algoritmamız için bir hata kriteri belirlememiz gerekiyor. Bunun için iki tane tanım verelim:

Tanım 1 (Distance measure). Noktalar arası uzaklıktan bahsedebilmek için, bir “metrik” tanımlamamız gerekiyor. Daha önceki bir yazıda en çok kullanılan metriklerden bahsetmiştim.

Tanım 2 (Mean average). Elimizde bir metrik olduktan sonra, bir grup veri noktasının merkezini belirleyebiriz. Bu merkez “mean average” olarak adlandırılır. Aslında bu söylediklerimiz, sadece, çalıştığımız uzay Öklid uzayı ise geçerlidir. Ancak bunun için endişelenmemize gerek yok, çalıştığımız uzayın düz olduğunu varsayacağız.

Artık öbek merkezlerini belirlemek için, her bir öbeğin ortalama noktasını bulacağız ve öbek merkezini buraya yerleştireceğiz. Peki noktaların hangi öbeklere ait olduğunu nasıl belirleyeceğiz? Akla ilk gelen çözüm, her bir noktayı en yakın öbek merkezi ile eşleştirmektir.

K-Merkezli öbekleme algoritmasında:

İlk olarak öbek merkezleri rastgele olarak yerleştirilir. Daha sonra, elimizdeki her veri noktasının öbek merkezlerine olan uzaklıkları hesaplanır ve veri noktası en yakın öbek ile eşleştirilir. Her bir öbek merkezi için de, öbeklerin ortalaması hesaplanır ve öbek merkezi o noktaya yerleştirilir. Bu işlemler, öbek merkezleri sabit olana kadar devam ettirilir.

Ayrıca, k sayısını belirlemek için kullanılabilecek yöntemler de vardır. En sık kullanılan yöntem “elbow” metodudur. Kabaca açıklarsak, bir kaç k değeri (örneğin, k= 2, 4, 6, 8) için aşağıdaki formül hesaplanır ve k’ya göre grafiği çizilir:

formül1.png

grafik1.png

Grafikte dirsek, n=6 değerine karşılık gelmektedir. O halde k değerini 6 olarak seçeriz.

Şimdi Scikit-Learn ile bir örnek yapalım.

from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt

Gerekli fonksiyonları ve modülleri import ettik.

df = pd.read_csv("data_1024.csv", sep='\t')
del df['Driver_ID']

Verisetimizi içeri aktardık ve gerekli olmayan bir sütunu sildik.

wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)
    kmeans.fit(df)
    wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('Within Clusters Sum of Squares')
plt.show()

Elbow metodunu gerçekleştirdik:

indir

kmeans = KMeans(n_clusters = 2, init = 'k-means++')
y_kmeans = kmeans.fit_predict(df)
plt.scatter(df[y_kmeans==0]['Distance_Feature'], df[y_kmeans==0]['Speeding_Feature'], c = 'red', label = 'Cluster 1')
plt.scatter(df[y_kmeans==1]['Distance_Feature'], df[y_kmeans==1]['Speeding_Feature'], c = 'blue', label = 'Cluster 2')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c = 'yellow', label = 'Centroids')
plt.legend()

k-Merkezli öbekleme algoritmamızı çalıştırdık ve grafiğini çizdirdik:

indir (1).pngBir sonraki yazıda görüşmek üzere.

Kaynaklar

  1. Marsland, S. (2015). Machine learning: an algorithmic perspective. Boca Raton: CRC Press.
  2. introduction-to-k-means-clustering-algorithm-learn-data-science-tutorials
  3. How-can-we-choose-a-good-K-for-K-means-clustering
Reklamlar

Gözetimsiz Öğrenme (K-Merkezli Öbekleme)” için bir yorum

  1. Makaleniz ve seçtiğiniz kaynaklar çok güzel olmuş. Türkçe kaynağın kısıtlı olduğu bu alanda daha çok bilgi paylaşmanızı temenni ederim. Teşekkürler.

    Liked by 1 kişi

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s