K-Means Algoritması

Şevket Ay
Deep Learning Türkiye
7 min readOct 28, 2019

Hiç kitaplığınızı, aynı konulara ait kitapların aynı raflarda veya aynı blokta olacak şekilde organize ettiniz mi? Muhtemelen ettiniz. Benzer nesneleri birlikte gruplamayı zaten biliyorsunuz. Fikir çok basit olsa da, bu fikirden etkilenen kullanım durumlarının miktarı muazzamdır. Makine öğrenmesi literatüründe buna genellikle kümeleme denir — benzer nesneleri otomatik olarak aynı gruplara gruplandırır.

Kümeleme, verilerin yapısı hakkında bir sezgiyi elde etmek için kullanılan en yaygın keşifsel veri analizi tekniklerinden biridir. Farklı kümelerdeki veri noktaları çok farklıyken, aynı alt gruptaki (küme) veri noktalarının çok benzer olması nedeniyle verilerdeki alt grupların belirlenmesi görevi olarak tanımlanabilir. Bu yazıda, sadeliği nedeniyle en çok kullanılan kümeleme algoritmalarından biri olarak kabul edilen K-means algoritmasını ele alacağız.

K-Means’ı Nerede Uygulayabilirim?

Öncelikle bu algoritmayı nerelerde, hangi amaçlarda kullanabiliriz bunlara göz atalım. Bana göre bir algoritmayı incelemeye başlamadan önce onun neye hizmet ettiğini bilmek bizim çalışma verimimizi arttırır.

→Belge Sınıflandırması
Belgeleri etiketlere, konulara ve belgenin içeriğine göre birden fazla kategoride kümeleyin. Bu çok standart bir sınıflandırma problemidir ve k-means aracı bu amaç için oldukça uygun bir algoritmadır.

→Suç Yerlerinin Belirlenmesi
Bir şehirdeki belirli bölgelerde mevcut olan suçlarla ilgili veriler, suç kategorisi, suç alanı ve ikisi arasındaki ilişki, bir şehirdeki ya da bölgedeki suça eğilimli alanlara ilişkin kaliteli bilgiler verebilir. İşte bununla ilgili güzel bir makale..

→Müşteri Segmentasyonu
Kümeleme, pazarlamacıların müşteri tabanını geliştirmelerine, hedef alanlarda çalışmasına ve müşterileri satın alma geçmişine, ilgi alanlarına veya etkinlik izlemeye göre segmentlere ayırmasına yardımcı olur. Sınıflandırma, şirketin belirli kampanyalar için belirli müşteri kümelerini hedeflemesine yardımcı olur.

→Oyuncu Analizi
Oyuncu istatistiklerini analiz etmek, spor dünyasının her zaman kritik bir unsuru olmuştur ve artan rekabetle birlikte, makine öğrenmenin burada oynayacağı kritik bir rol vardır. Ayrıntılar ve örnek bir uygulama için bu makaleye göz atın.

→Dolandırıcılık Tespiti
Makine öğrenimi sahtekarlık tespitinde önemli bir rol oynar ve otomobil, sağlık ve sigorta sahtekarlığı tespitinde sayısız uygulamaya sahiptir. Sahte iddialarla ilgili geçmiş verileri kullanarak, yeni iddiaları , sahte kalıpları belirten kümelere yakınlığına dayanarak izole etmek mümkündür.

→Çağrı Kaydı Detay Analizi
Bir çağrı detay kaydı (CDR), telekom şirketleri tarafından bir müşterinin araması, SMS ve internet etkinliği sırasında elde edilen bilgilerdir. Bu bilgiler, müşteri demografisiyle birlikte kullanıldığında, müşterinin ihtiyaçları hakkında daha fazla bilgi sağlar. Bu makalede, denetlenmeyen k-means kümeleme algoritmasını kullanarak müşteri faaliyetlerini 24 saat boyunca nasıl kümelendirebileceğinizi anlayacaksınız. Müşteri segmentlerini saatlerce kullanımlarına göre anlamak için kullanılır.

→BT Uyarılarının Otomatik Kümelenmesi
Ağ, depolama veya veritabanı gibi büyük kurumsal BT altyapı teknolojisi bileşenleri büyük hacimli uyarı mesajları üretir. Uyarı mesajları potansiyel olarak operasyonel sorunlara işaret ettiğinden, sonraki işlemler için önceliklendirme için manuel olarak taranmaları gerekir. Verilerin kümelenmesi, uyarı kategorileri hakkında bilgi verebilir ve ortalama onarım süresi ve arıza tahminlerinde yardımcı olabilir.

→Burada yazmayan daha birçok ugulamadada (Görüntü Tanıma gibi) K-Means algoritması kullanılabilir.

Denetimsiz Öğrenmenin(Unsupervised Learning) Anlamı

K-Means algoritması bir unsupervised learning(gözetimsiz öğrenme) ve kümeleme algoritmasıdır.

Denetimsiz öğrenme, modeli denetlemeniz gerekmeyen bir makine öğrenme tekniğidir. Bunun yerine, modelin bilgi keşfetmek için kendi başına çalışmasına izin vermeniz gerekir. Temel olarak etiketlenmemiş verilerle ilgilenir.Denetimsiz öğrenme algoritmaları, denetimli öğrenmeye kıyasla daha karmaşık işlem görevlerini gerçekleştirmenizi sağlar.

Gelin,günlük hayatımızdan bir örnek ile Denetimsiz Öğrenmeyi pekiştirelim.

Bebek,bu köpeği tanıyor ve biliyor,onlar çok yakın iki arkadaş.

Bir gün,bir aile arkadaşı ziyarete gelirken kendi köpeğini de getirir ve bebekle oynamaya çalışır.

Bebek bu köpeği daha önce görmedi. Ancak birçok özelliğini tanıdı. (2 kulak, göz, 4 ayak üzerinde yürümek).Evcil köpeğine benziyor.Ve yeni hayvanı köpek olarak tanımlar. Bu, sizin ona öğretmediğiniz, ancak onun kendi verilerden öğrendiği (bu durumda bir köpek hakkındaki veriler), denetlenmeyen bir öğrenmedir. Bu, denetlenen bir öğrenim olsaydı, aile dostu, bebeğe köpek olduğunu söylerdi.

Denetimsiz Öğrenimi kullanmanın başlıca nedenleri

  • Denetimsiz makine öğrenmesi, verilerde her türlü bilinmeyen kalıpları bulur.
  • Denetimsiz yöntemler, kategorizasyon için faydalı olabilecek özellikleri bulmanıza yardımcı olur.
  • Gerçek zamanlı olarak gerçekleşir, bu nedenle tüm girdi verileri öğrenilenlerin varlığında analiz edilir ve etiketlenir.
  • Etiketlenmemiş verileri bilgisayardan elde etmek, elle müdahale gerektiren etiketli verilerden daha kolaydır.

Kümeleme Yöntemleri

Kümelerin verilerden oluşturulma şekline bağlı olarak, farklı kümeleme yöntemleri olabilir. Kurumlar tarafından yoğun olarak kullanılan en popüler kümelenme tekniklerine bir göz atalım. Bu türler:

  • Bölümleme yöntemleri(Partitioning methods)

Bölüm tabanlı kümeleme yöntemleri, verilen nesneleri, n boyutlu bir düzlemde rastgele veya belirli bazı nesnelerden uzaklıklarını ölçerek kümeler. Bu nedenle, bu yöntemler aynı zamanda mesafeye dayalı yöntemler olarak da bilinir.

  • Hiyerarşik yöntemler(Hierarchical methods)

Hiyerarşik kümeleme yöntemleri, bölümleme yöntemlerinden farklıdır. Veri noktalarını benzerliklerine göre seviyelere / hiyerarşilere ayırırlar. Bu seviyeler birlikte ağaç benzeri bir yapı oluşturur (dendrogram). Bu bölünme iki şekilde gerçekleşebilir — yukarıdan aşağıya ve aşağıdan yukarıya.

Data Mining’den alınmıştır.
  • Yoğunluk bazlı yöntemler(Density-based methods)

Veri noktalarının mesafesini göz önünde bulundurmak yerine, yoğunluğa dayalı kümeleme yöntemlerinde, bir mahalle kümeleri oluşturduğu düşünülmektedir. Komşuluk, verilen verilerden bir küme oluşturmak için ilgilenilen bir bölgede (tipik olarak başka bir veri noktası) bulunması gereken buradaki veri noktalarının sayısını ifade eder.

Data Mining’den alınmıştır.

Artık sektörde yoğun olarak uygulanan yaygın kümelenme yöntemlerine genel bir bakış var. Şimdi Python’da K-Means kümeleme algoritmasını kullanacağımız bir problemi ele alalım.

Şimdi pazar segmentasyonunun bir örneğini ele alacağız. Piyasadaki müşteri türlerini özelliklere göre analiz etmeye çalışacağız.Veri seti 30 örneklemden oluşmakta ve özellikleri sırasıyla memnuniyet ve bağlılıktır. Yani basitçe söylemek gerekirse elimizdeki müşteri verileriyle , müşterileri memnuniyet ve bağlılıklarına göre kümelendireceğiz.

#Adım adım giderek kodlarımızı yazmaya başlayalım.

#1. İlk olarak her zamanki gibi K-means Clustering’i gerçekleştirmek için gereken kütüphaneleri import edeceğiz.

  • Numpy: Çok boyutlu dizilerle başa çıkmamıza yardımcı olan üçüncü taraf bir pakettir.
  • Pandas: Verileri tablo şeklinde düzenlememize izin verir.
  • Matplotlib: Numpy hesaplamasını görselleştirmeye yardımcı olur.
  • Seaborn: Bu aynı zamanda Matplotlib’in görselleştirilmesine de katkıda bulunur.
  • Scikit-learn: Bu, en yaygın kullanılan makine öğrenme kütüphanesidir.

#2.Bu adımda pandas veri çerçevesini kullanarak değişken veri setine veri yükleyeceğiz.Müşteri memnuniyeti ve bağlılığını içeren 30 gözlem vardır. Buradaki veriler .csv formatındadır. Pandas, verileri tablo şeklinde düzenlememize yardımcı olur, bunu unutmayın.

#3.Şimdi plot komutu ile verilen verinin dağılım grafiğini çizeceğiz.

#4.Bu adımda ise kümeleme modelimizi oluşturuyoruz. Öncelikle sadece verilerimizin bir kopyasını oluşturuyoruz ve onu x değişkeninde saklıyoruz.
Şimdi değişken k-means yaratacağız ve K-Means argümanı 2 olsun dedik.Yani 2 küme oluşturmak istediğimizi söyledik. Bu basit kod satırını k-means algoritmasını uygulayacak ve verilerimizi iki kümeye ayıracaktır.
Aşağıdaki açıklamaya bakarsak arka planda 300 adet iterasyon gerçekleştiğini görebilirsiniz.

#5.Tekrar x’in bir kopyasını oluşturacağız ve kümelerde saklayacağız. K-means algoritmamızın predict ettiği yani tahmin ettiği değere sahip olan cluster_predict adlı yeni bir sütun oluşturacağız. Daha sonra kümelenmiş verileri çizeceğiz, burada “Memnuniyet” ve “Bağlılık” olmak üzere iki parametremiz olduğunu unutmayın. İki kümeyi, biri kırmızı, diğeri mor olmak üzere ayıralım.

#6. Şimdi standartlaştırma yapmamız gerekiyor. Standartlaştırma , bizim daha sağlıklı ve doğru işlemler yapmamızı sağlar. Datamızda gördüğünüz üzere “Memnuniyet” değerleri “Bağlılık” değerlerinden çok daha büyüktür. Bu bizim algoritmamızın “Bağlılık” değerlerini görmezden gelmesine sebep olabilir,bu yüzden “Memnuniyet” değerlerini “Bağlılık” seviyesine indirmemiz gerekiyor.

STANDARTLAŞTIRMA

Veriler sıfır ortalama civarında ölçeklenir. Şimdi her iki verinin de eşit şekilde ölçeklendiğini ve şimdi ikisinin de özellik olarak seçilme şansının eşit olacağını görebiliyoruz.

#7.Dirsek Yöntemi

Neden sadece 2 küme ile k-means başlattığımızı hiç merak ettiniz mi?
Herhangi bir sayıda kümeye sahip olabilmeyi isteyip herhangi bir değerle başlatabilirdik. Ancak çok sayıda küme olduğu zaman analizler zorlaşmaktadır. Öyleyse, başlatılacak küme sayısını tam olarak nasıl bileceğiz? Elinizdeki problemlere göre K değeri değişeceği için kesin bir rakam söylenemez. Farklı problemlerde farklı değerler çıkacaktır.

Şimdi de görselleştirelim..

Burada dirsek yöntemi, kümelere nasıl ihtiyaç duyacağımız konusunda kafamız karıştığında kullanışlı olur. Grafiğimiz dirseğe benziyor ve bu dirsek noktasını belirlemek zorundayız.
Burada dirsek noktası 4 civarındadır ve bu, seçmemiz gereken yukarıdaki veriler için optimal küme sayımızdır.
Küme sayısını arttırmaya devam ettiğimizde 4'ten sonra dikkatle bakarsak wcss’lerde büyük bir değişiklik olmaz ve sabit kalır.

#8.Sorunumuz için optimal sayıda kümeye sahibiz.
Şimdi 4 sayıdaki yeni kümelenmelerle birlikte kümelemeleri hızla gerçekleştireceğiz ve daha sonra bazı analizlere geçeceğiz.

Bu, 4 kümeyle kümelemeyi gerçekleştiren basit bir koddur. Burada dört küme vardır, bu yüzden tüm verilerimiz 0,1,2 veya 3 olarak sınıflandırılır.

#9.Yeni kümelerin çizilmesi

#10.Analiz

  1. Mavi noktalar, daha az memnun ve daha az bağlı olan ve bu nedenle yabancılaşmış olarak adlandırılabilecek insanlardır.
  2. Kırmızı noktalar, bağlılığı yüksek ve memnuniyeti az olan insanlardır.
  3. Mor noktalar yüksek bağlılık ve memnuniyeti olan insanlardır.
  4. Açık yeşil noktalar, yüksek memnuniyet fakat orta derece bağlılıkta olan insanlardır.

Bir kurumun amacı daha fazla insanı mor nokta seviyesine getirmektir. Özellikle mavi noktalardaki insanların şikayetlerini analiz ve tespit edip düzeltebilirler. Böylece müşteri memnuniyeti ve bağlılığı artmış olur.

Evet,böylece yazımızın sonuna geldik. Bu yazımız da ;

  • Kümeleme Nedir?Başlıca kullanılan kümeleme yöntemleri nelerdir?
  • K-Means algoritması hangi alanlarda kullanılır? Unsupervised learning nedir ve neden kullanılır?
  • Ve son olarak K-Means Algoritması ile bir uygulama gerçekleştirerek bazı incelikleri öğrenmiş olduk.

Umarım size faydalı bir yazı hazırlayabilmişimdir. Elimden geldiğince sade ve adım adım açıklamaya çalıştım. Herkese iyi çalışmalar diliyorum.

Yararlanılan Kaynaklar :

→https://arxiv.org/ftp/arxiv/papers/1002/1002.2425.pdf

https://dzone.com/articles/10-interesting-use-cases-for-the-k-means-algorithm

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/unsupervised.pdf

--

--