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

PROGRAMLAMA Python ile Yapay Zekâ (Makine Öğrenmesi - K-MEANS Algoritması)
0
655
Forum sitemizde mesaj sayısı kasmak için oto mesaj yanıtlayıcı programlar kullanmak kesinlikle yasaktır.
Lütfen yorum yaparken ( ty,tyty, +++++, up up, asasdasf ) vb. anlamsız ifadeler kullanmayalım. Bu şekilde yorum yapan üyelerin üyelikleri durdurulacaktır.
Spam mesajlar atan kişileri RAPOR butonu ile bize bildiriniz!

Mia

28 Nis 2020
930
188
314

ile Yapay Zekâ


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.



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;


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):

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.
 
Forum sitemizde mesaj sayısı kasmak için oto mesaj yanıtlayıcı programlar kullanmak kesinlikle yasaktır.
Lütfen yorum yaparken ( ty,tyty, +++++, up up, asasdasf ) vb. anlamsız ifadeler kullanmayalım. Bu şekilde yorum yapan üyelerin üyelikleri durdurulacaktır.
Spam mesajlar atan kişileri RAPOR butonu ile bize bildiriniz!