Python ile Yapay Zekâ (Makine Öğrenmesi - K-MEANS Algoritması) #8

LEOHUNTERA

Üye
31 Ara 2018
79
3

Bu yazımızda Makine Öğrenmesi alanında kullanılan ve Kümeleme Algoritmalarından olan K-Means algoritmasına değineceğiz. K-Means Algoritmasının temellerine giriş yapmadan önce bazı kavramlara değinmekte yarar var.


KÜMELEME NEDİR

Kümeleme Algoritması, verilerin kendi içerisinde kümelenmelerine dayanan algoritmalara verilen genel isimdir. Kümeleme algoritmaların da sisteme sunulan veriler sınıflandırma(classification) algoritmalarında olduğu gibi eğitim için kullanılmaz. Bunun yerine, verilerin kendi içerisindeki benzerliklerden en uygun kümelemenin oluşmasına dayalıdır.

keylines-clustering-algorithm.png


Bir örnek vermek gerekirse:

Elma ve portakaldan oluşan bazı meyvelerin bulunduğu bir sepet düşünelim. Bu sepetin içerisindeki meyveleri ayrıştırarak, aynı türde olan meyveleri ayrı bir sepete koyacak olursak, bu ayrıştırmanın kümeleme veya sınıflandırma algoritmalarından hangisine örnek teşkil edebileceğini söyleyebilir misiniz?
Bu tür bir ayrıştırmayı şu şekilde yorumlayabiliriz; Elma ve Portakalı, Elma ve Portakal olarak ayırt etme işleminde, önceden bir eğitime ihtiyaç duyarız. Çünkü Elma ve Portakalın şekil, renk, koku ve tat gibi bazı özelliklerini kafamızda canlandırarak, yeni gelen bir meyvenin geçmişten öğrendiğimiz bilgilerimizi kullanarak Elma mı yoksa Portakal mı olduğunu anlayabiliriz. Bu tür bir ayrıştırma, geçmişteki bir bilgiden faydalanılarak şu anki verilerden çıkarım yapılmasına dayandığı için sınıflandırma algoritmalarına örnek olarak gösterilebilir. Yani işin içerisinden bir eğitim mekanizması vardır.

Bu örneği Kümeleme Algoritmaları için şöyle düşünebiliriz;

Elma ve Portakalı, doğrudan özelliklerine bakarak geçmişteki bilgilerden faydalanmadan şuan ki özelliklerine göre kümelere yerleştirme işlemine kümeleme denir. Biraz daha açıklayacak olursak, yeni bir meyve geldiğini düşünelim. Bu meyve kırmızı renkte olsun. Bu meyveyi bir kümeye yerleştiririz. Daha sonra gelen turuncu renkteki meyveyi farklı bir kümeye yerleştiririz. Gelen meyveleri renklerine göre bu şekilde kümelere ayrıştırarak, daha eğitime ihtiyaç duymadan doğrudan verilerin kendi içerisindeki benzerliklerini dikkate alarak kümelenme işlemini tamamlamış oluruz.

Bu şekilde herhangi bir eğitime ihtiyaç duymadan (UNSUPERVIZED) doğrudan verilerin kendi içerisindeki benzerliklerin kullanılmasıyla, yapılan ayrıştırma işlemlerine Kümeleme denir. Bu yapıların Algoritmik bir kalıp içerisine yerleştirilerek, algoritma ile ifade edilmesi ve çeşitli metod farklıları içeren algoritmalarada genel olarak Kümeleme Algoritmaları denir.

K-MEANS (K-ORTALAMA) Algoritması

K-Means Algoritması, Makine Öğrenmesi alanında kullanılan kümeleme algoritmalarındandır. Bu algoritma, verilen K (küme sayısı) değerine göre kümeleme işlemi yapmaktadır. Algoritma, verilen K sayısına göre rastgele kümeler oluşturmaktadır. Rastgele oluşturulan bu kümelerin orta noktaları belirlenerek, her bir verinin, ait olduğu kümenin orta noktasına olan uzaklıkların hesaplanmasıyla, verinin yer aldığı küme için hata hesabı yapılır. Bu hata hesabı verinin, yer aldığı kümeye uygunluğunu ölçtüğünü söyleyebiliriz.

Algoritma her defasında bu hata oranının azaltılmasını esas alarak çalışır. (Yani verilerin kendi içerisinde bir evrim geçirerek, en uygun kümeye yerleştirilmesini esas alır)

Hata oranı hesaplandıktan sonra veriler, kendisine en yakın olan kümeye yerleştirilir. Yeni küme yerleşimleri için hata oranı hesaplanır.

Bu işlemlerin her defasında tekrarlanmasıyla hata oranı düşürülerek, en optimum kümelenme yapısının elde edilmesi sağlanır. Hata oranının önceki hata oranına eşdeğer olması durumunda algoritma en iyi kümelenme seviyesine ulaşmış demektir.

K-Means Algoritmasının Algoritmik olarak ifade edilmesi şu şekildedir;
  1. K adet rastgele küme oluştur
  2. Kare hata oranını hesapla
  3. Verilerin kümelerin orta noktalarına olan uzaklıklarını bul
  4. Her veri için en yakın kümeyi, o verinin kümesi olarak belirle
  5. Yeni yerleşim düzenine göre hata oranını hesapla
  6. Eğer önceki hata oranı ile şimdiki hata oranı eşit değilse 2,3,4,5 ve 6. adımları tekrarla
  7. Eğer önceki hata oranı ile şimdiki hata oranı eşitse kümeleme işlemini sonlandır


Şimdi, anladıklarımızı pekiştirmek ve anlamlandırmak için bir örnek üzerinde K-Means Algoritmasının nasıl çalıştığını inceleyelim:

K-Means (K-Ortalama) Algoritmasının Uygulanması

K-Means Algoritması için kullanılacak olan veri seti şu şekildedir;

Capture.jpg

Gördüğünüz gibi veri seti 5 tane gözlem değeri ve bu gözlem değerinin sahip olduğu 2 tane nitelikten oluşmaktadır.

  • Bu veri setine K-Means Algoritmasını uygulayacağız. K (Küme sayısı) değeri olarak 2 değerini seçelim ve veri setimizdeki rastgele elemanlardan oluşan 2 adet küme belirleyelim:

    C1 = {X1, X2, X3}
    C2 = {X4, X5}
  • Belirlediğimiz kümelerin orta noktasını belirliyoruz. Her bir nitelik için küme içerisindeki her bir elemanın mevcut değerlerini toplayıp, topladığımız değer sayısına bölerek ortalamasını alıyoruz:

    M1 = {(5 + 2 + 4) / 3 , (6 + 3 + 1) / 3} = {3.67 , 3.33}
    M2 = {(8 + 11) / 2 , (5 + 9) / 2} = {9.5 , 7}
  • Yaptığımız kümeleme için hata değerlerini hesaplayarak, toplam hata değerini bulalım. (Her bir verinin bütün nitelikleri için kendi değeri ile, ait olduğu kümenin ortalama değerinin farkı hesaplanarak karesi alınıp, elde edilen sonuçlar toplanır):

    e1^2 = [(5 - 3.67)^2 + (6 - 3.33)^2] + [(2 - 3.67)^2 + (3 - 3.33)^2] + [(4 - 3.67)^2 + (1 - 3.33)^2] = 17.33
    e2^2 = [(8 - 9.5)^2 + (5 - 7)^2] + [(11 - 9.5)^2 + (9 - 7)^2] = 12.5
    E^2 = 17.33 + 12.5 = 29.83
  • Her bir verinin var olan kümelere olan uzaklıklarını bulalım (Uzaklık hesaplamasında öklid bağıntısı kullanılmıştır):

    Capture.jpg
X1 verisi için konuşacak olursak; gördüğünüz gibi C1 kümesinin merkezine, C2 kümesinin merkezinden daha yakın mesafededir. Bundan kaynaklı olarak, X1 verisini C1 kümesine dahil ederiz.

Diğer veriler içinde, ölçülen mesafeye göre en yakın kümeye yerleştirme işlemini yaparsak kümelenmenin şu şekilde olduğunu görebiliriz:

C1 = {X1, X2, X3}
C2 = {X4, X5}

gördüğünüz gibi kümelenme işlemi, baştaki kümelenme işlemi ile aynıdır. Bundan dolayı iterasyonun devam ettirilmesine gerek yoktur ama öğrenme aşamasında olduğumuz için işlem adımlarını açıkça belirtelim:
  • Tekrardan küme merkezleri belirlenir:

    M1 = {(5 + 2 + 4) / 3 , (6 + 3 + 1) / 3} = {3.67 , 3.33}
    M2 = {(8 + 11) / 2 , (5 + 9) / 2} = {9.5 , 7}
  • Yeni kümelenme için hata değerlerini hesaplayarak, toplam hata değerini bulalım:

    e1^2 = [(5 - 3.67)^2 + (6 - 3.33)^2] + [(2 - 3.67)^2 + (3 - 3.33)^2] + [(4 - 3.67)^2 + (1 - 3.33)^2] = 17.33
    e2^2 = [(8 - 9.5)^2 + (5 - 7)^2] + [(11 - 9.5)^2 + (9 - 7)^2] = 12.5
    E^2 = 17.33 + 12.5 = 29.83

Gördüğünüz gibi önceki hata değeri ile bu iterasyondaki hata değeri birbirine eşit olduğu için en iyi seviyede kümelenme işlemi gerçekleştirilmiştir. Bu aşamadan sonra Algoritma sonlandırılmış olur.

Tesadüfi olarak, bu veri seti için ilk iterasyonda optimum kümelenme işleminin gerçekleştirilmiş olmasına karşın, çoğu zaman birden fazla iterasyon da işlemler tekrar eder. İşlemlerin birden fazla iterasyona yayılması durumunda, hata değeri en düşük seviyeye çekilene kadar iterasyona devam edilir.

ÖZET

Kümeleme Algoritmaları denetimsiz (UNSUPERVIZED) Makine Öğrenmesi Algoritmalarındandır. Bu tür algoritmalarda verilerin kendi içerisindeki benzerliklerden faydalanılarak, kümeler oluşturulur. Yeni gelen kümeler, özelliklerine göre en uygun kümeye yerleştirilir.

K-Means Algoritması kümeleme algoritmalarındandır. Bu algoritma ile seçilen K değerine göre, K tane rastgele küme oluşturulur. Daha sonra her defasında verilerin kümelere olan mesafe ölçümü yapılarak, en uygun kümeleme işlemi gerçekleştirilmeye çalışılır. En uygun değere ulaşmak için karesel hata ölçümü yapılır. Bu karesel hata, verilerin kümelere yayılma doğruluklarını belirttiği için, her iterasyonda verilerin ait oldukları kümeler için güncellemeler yapılarak bu hata oranı en düşük seviyeye çekilmeye çalışılır. Hata oranının en düşük seviyede olması durumunda işlemler tamamlanarak, en uygun kümeleme işlemi yapılmış olur.
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.