TrendifyAnalytics
Published in

TrendifyAnalytics

Ürün/ SKU Segmentasyonu 5

TRENDIFY SEGMENTASYON ÇÖZÜMLERİ

9. Kümeleme Algoritmaları

Bu yazımızda bazı kümeleme algoritmalarından bahsedeceğiz. Algoritmaların çalışma yapısını ve mantığını anlattıktan sonra algoritmaları birer örnek vererek göstereceğiz.

Ürün/SKU Segmentasyonu-4 blog yazımızdan ise kümeleme algoritmalarının genel anlatımına göz atabilirsiniz.

K-means

K-means algoritması centroid based bir kümeleme algoritmasıdır. K-means algoritmasının temel amacı, her noktanın küme merkezlerine olan uzaklıklarının karesine hesaplayarak veriyi k tane optimum kümeye ayırmaya çalışmaktır. Burada ki problemlerden bir tanesi ilk iterasyonda küme merkezlerini belirlemektir. İlk merkez noktalarının belirlenmesi için K-means++ algoritması tercih edilir. K-means++’, yakınsamayı hızlandırmak için akıllı bir şekilde k-means kümeleme algoritması için ilk küme merkezlerini seçer.

Aşağıda ki resimde k-means algoritmasının örnek iterasyonları gösterilmiştir. İlk iterasyonda küme merkezleri kmeans++ algoritmasına göre belirlendi. İkinci iterasyonda belirlenen küme merkezlerine göre her bir eleman bir küme merkezine atandı ve yeni küme merkezleri atanan küme elemanlarına göre yeniden hesaplandı. Bundan sonra ki her iterasyon bu şekilde devam etti. İterasyonu tamamlamak için belli bir sayıya kadar devam etti ve son iterasyona geldiğinde kümeler belirlenmiş oldu.

(Şekil-1) K-means algoritması örnek iterasyon süreci

Şimdi de kmeans algoritmasının python ile uygulamasını gerçekleştirelim.

(Şekil -2) K-means algoritmasının python uygulama örneği

Yukarıda ki kod parçasında ilk önce örnek bir veri oluşturmak için sklearn kütüphanesinde ki make blobs metodunu kullandık. Daha sonra ürettiğimiz veriyi Kmeans algoritması ile kümelere bölmek için fit işlemi gerçekleştirdik. Fit işleminin sonucunda oluşan kümeleri ve küme merkezlerini matplotlib kütüphanesi yardımıyla çizdirdik. Küme elemanları gözle ayrıabilir ve düşük boyutlu olduğu için k-means yardımıyla kolayca ayrıldı.

Dbscan

Dbscan algoritması yoğunluk tabanlı algoritmalardan bir tanesidir. Dbscan algoritmasının çalışma mantığı belirli bir alanda ve belirli sayıda veriyi aynı kümeye atama üzerinedir. Bu algortima da her şey yoğunluğa bağlı olarak belirlendiği için K-means algoritmasında ki gibi küme sayısını önceden belli etmeye gerek olmamaktadır.

Dbscan algoritmasının aldığı iki önemli parametre vardır. Bunlardan bir tanesi epsilon (ε) bir tanesi de min_sample parametresidir. Epsilon parametresi küme elemanlarının belirlenebilmesi için gereken merkeze olan uzaklığı ifade eder. Min_sample parametresi adından da anlaşılacağı üzere kümenin alması gereken minimum eleman sayısını ifade eder. Min sample parametresi sayesinde minimum sample sayısından az ve birbirine yakın olan elemanlar aynı kümeye atanmaz. Kümeleme işlemi tamamlandıktan sonra bir kümeye atanmayan elemanlar ise outlier (ayrık değer) olarak değerlendirilir.

(Şekil-3) K-means ve Dbscan karşılaştırması

Yukarıda ki resimde de Dbscan ve Kmeans algoritmalarının aynı veri setlerinde nasıl sonuç verdiği gösteriliyor. Bu tarz veri setlerinde Dbcan ile kümelemenin daha iyi çıktığı gözleniyor. Çünkü veri setlerinde yoğun alanlar birlikte bulunuyor. Bu yüzden her zaman birisi iyi gibi bir yorum yapmak söz konusu değildir. Yukarıda ki gibi veri kümelerinin benzer yoğunluğa sahip alanları bir arada toplanmışsa Dbscan algoritmasını kullanmak mantıklı bir seçenek olabilir.

Şimdi de dbscan algoritmasının python ile uygulamasını gerçekleştirelim.

(Şekil-4) Dbscan algoritması python uygulaması

Yukarıda resimde ki grafikte görüldüğü üzere yoğun alanlara sahip olan kümeler DBSCAN kümeleme algoritması tarafından başarıyla tespit edildi.

Gaussian Mixture Models (GMM)

Birçok veri seti Gauss Dağılımıyla modellenebilir. Bu nedenle, veri setlerindeki kümelerin farklı Gauss Dağılımlarından geldiğini varsaymak oldukça olağandır. Yani GMM, veri setini, normallik varsayımı altında, k-adet Gauss Dağılımının bir karışımı olarak açıklanan modeldir. Bu modelin ana fikri budur. Yani verilen örneklerin kaynaklarının k-adet Gauss dağılımı olduğunu varsayıp, bu kaynaklara ait Gauss parametrelerinin, karışımın olasılık yoğunluk işlevini maksimize (Expectation-Maximization -EM) edecek optimizasyonudur.

Böylece, veri setinin tek dağılımdan üretildiğinin varsayılıp modelleme yapan algoritmaların çıkmaza girdiği yerlerde bile GMM başarılıdır. Olasılık temelli yaklaşımı veri setindeki her örneğin tüm kümelere aidiyet olasılığını verir. Çok kullanılan kümeleme algoritmaları gibi (örn: k-means) kümelemeyi dairesel yapmaz. Kümeler daha çok elipse yatkındır.

(Şekil-5) K-means ve GMM kümelemeleri

Şimdi de GMM algoritmasının python ile uygulamasını gerçekleştirelim.

(Şekil-6) GMM Python uygulaması

GMM algoritması ile kümeleme işlemi için çokça tercih edilen wine veri setini kullandık. Veriyi fit etmeden önce Standard Scaling işlemi gerçekleştirdik.

Agglomerative Kümeleme

Agglomerative kümeleme algoritması bir hiyerarşik küme algoritmasıdır. Tüme varım (bottom up) olarak da bilinen Agglomerative kümeleme algoritmasında, başlangıçta tüm nesneler birbirlerinden ayrıdır. Yani eldeki verinin her biri ayrı bir küme olarak kabul edilerek işe başlanır. Ardından benzer özniteliklere sahip kümeler bir araya gelerek tek bir küme elde edilmeye çalışılır. Süreç sonucunda her veri bir küme olur. Bu algoritmanın avantajlarından bir tanesi küme sayısını belirtmek gerekmez. Ayrıca algoritma sonucunda üretilen dendogram adı verilen ağaçlar veriyi ve bölünme noktalarını anlamamıza yardımcı olur.

Agglomerative kümeleme algoritmasının aldığı en önemli parametrelerden bir tanesi linkage parametresidir. Linkage türlerinden bazıları Single linkage, complete linkage veya average linkage‘dir. Single linkage uzaklık matrisinden yararlanarak birbirine en yakın iki yapı veya küme birleştirilmeyi amaçlar. Complete linkage’da yapılar arasındaki en büyük uzaklık dikkate alınarak birleştirme işlemi gerçekleşmektedir. Average linkage ise iki yapı içerisindeki verilerin birbirleri arasındaki uzaklıkların ortalama değerini dikkate alarak gerçekleşen birleşme işlemidir.

Şimdi de Agglomerative kümeleme algoritmasının python ile uygulamasını gerçekleştirelim.

(Şekil-7) Agglomerative kümeleme Python uygulaması

Aşağıdaki resimde farklı kümeleme algoritmalarının veri setlerinde aldığı sonuçlar gösterilmektedir. Her algoritma o veri setinde en uygun parametreleri bulacak şekilde ayarlandı. Burada ki görsel sonuçlar algoritmalar hakkında fikir sahibi olmamıza ve veri tiplerine göre algoritma seçmemize yardımcı olabilir. Bu resim ön fikir oluşturması açısından iyi olmasına rağmen kendi verimizde daha dikkatli olmalıyız.

(Şekil-8) Farklı data setler için farklı kümeleme algoritmasu karşılaştırması

Segment Oluşturmada Önemli Olan Faktörler Nelerdir?

Verinizi makine öğrenmesi ile yapılacak ürün segmentasyonuna hazırlarken dikkat edilmesi gereken pek çok durum var. Bunlar;

10. Eksik verinin doldurulması

Öncelikle eksik verinin ne olduğunun doğru anlaşılması gerekmektedir. Her olmayan veri eksik veri anlamına gelmemektedir. Bazı veriler doğası itibari ile yoktur ve onu doldurmak sonucu anlamsızlaştırır. Bazı veriler ise veri toplanmadığı için yoktur ve bu verileri diğer verilere bakarak doldurmak, sonucu anlamlandırmaya yardımcı olur. Bahsedilen iki durum için farklı yaklaşımlar ve yöntemler uygulanması gerekmektedir.

Bir ürün segmentasyonu yaptığınızı varsayalım. Değişkenlerden bir tanesinin Eski Sezon Satış olduğunu varsayalım. Elimizdeki ürün listesinden geçmiş sezonlarda hiç olmayan ürünler için bu değişkenin dolu olmasını bekleyemeyiz. Çünkü ürün zaten o sezonda yok. Dolayısı ile bunu eksik veri olarak kabul edip, diğer verilerin niceliksel değerlerine bakarak(mean, median, mod, KNN Imputer) doldurduğumuzda, yanlı bir sonuç vermiş oluruz. Bu durumda, olmayan veriyi etiketlemek ve diğerlerinden ayrı bir gruba ayrıştırmak için veri etiketleme / ayrıştırma teknikleri kullanılabilir. Bu teknik ile amaç, olmayan veriyi olanlardan olabildiğince ayrı bir noktaya toplamaktır.

Aynı ürün segmentasyonunda, Eski Sezon Satış değişkeni boş olan ve geçmiş sezonlarda olan ürünlerin olduğunu varsayalım. Bu durumda veri toplanmamasından kaynaklı boşluklar vardır. Bu boşlukları, dolu olan diğer veriler ile doldurmak, sonucu anlamlandırmada fayda yaratacaktır. Doldurma yöntemi olarak, verinin tipine göre, iş bilgisinin yönlendirmesine göre karar verilebilmektedir. Eksik verileri işlemenin birçok yolu vardır. Bunlardan bazıları,

  • Ortalama (Mean)
  • Medyan (Median)
  • Mod
  • KNN Imputer
(Şekil-9) Eksik veri içeren örnek bir tablo

Yukarıda ki örnekte görüldüğü üzere kolonlar içerisinde bazı değerler eksik olarak verilmiştir. Bu değerleri tamamlamak için bahsedilen yöntemlerden bir tanesi kullanılabilir. Eğer veri nümerik değerlerden oluşuyor ise ortalama veya medyan tercih edilebilir. Eğer veri kategorik değerlerden oluşuyor ise mod tercih edilebilir. Ayrıca eksik veriyi doldurmak için çok farklı seçenekler bulunmaktadır. Bunlardan bazıları ise modeli kullanarak tahmin etme veya KNN Imputer metodu olarak örnek verilebilir. KNN Imputer metodunda ise k tane en yakın komşuya bakarak eksik veriyi doldurmaya çalışır.

Outlier (ayrık) Değerlerin Tespit Edilmesi

Aykırı değerler, bir veri setinde, gözlemlerin çoğundan negatif veya pozitif olabilen ve veri setinde ayırt edicilik oluşturan noktalarıdır. Aykırı değerler, çoğu durumda bilgilendirici ve değerli olabilir. Aynı zamanda, modelin doğruluğunu göstermek için hatalar oluşturan ve istatistiksel hesaplamaların karmaşıklığını artıran yetersiz verilere bile işaret edebilirler.

(Şekil-10) Outiler data için örnek grafik

Belirli bir veri setinde aykırı değerlerin ortaya çıkmasına çeşitli faktörler yol açar. Bunlar manuel hata veya deneysel hatalardır. Manuel hata, sisteme beslenen verilerin çok büyük olması ve insan eli ile girilen bu tür verilerin sık sık manuel hatalara açık olması nedeniyle büyük veri kümelerinde görülen en yaygın hata türlerinden biridir. Veri setinin çıkarılması, uygulanması ve nihai uygulanmasında ki deneysel hatalar aykırı değere sebep olabilir. Aykırı değerleri bulmak için en yaygın olan yöntemlerden birisi de z score’dur.

Z Score

Z score, normal standart sapma kullanılarak verilen veri setinde hesaplanan ortalama veri noktalarının mesafesini hesaplamak için kullanılır. Varsayılan olarak verilerin ortalaması 0 olarak kabul edilir ve standart sapmanın 1 olduğu varsayılır. Daha sonra, merkez değeri türetilen ortalama ile yeniden ölçeklendirilir ve verilen veri kümesine göre standart sapma hesaplanır.

(Şekil-11) Z-Dcore Formula

Bir veri noktasının z skoru 3 standart sapmadan büyükse, veri noktasının diğer veri noktalarından oldukça farklı olduğunu gösterir. Outlier elemesini yapıyorken, iteratif olarak outlier elemesi yapmak oldukça faydalı olacaktır. Bir populasyonda ki ortalama ve standart sapma alınırken, outlier verilerde içeride olacağından ortalama ve standart sapma yanlı olacaktır.

  1. Verideki en büyük ve en küçük değerlere bakmak
  2. Ortalama ve Standart sapma değerlerini belirlemek
  3. X < μ — 3 σ ya da X > μ + 3 σ olanlar outlier olarak belirlemek
  4. Veriden outlier verileri sildikten sonra adım 1’den başlayarak süreci tekrarlamak.

Bu tekrarı yaparken, verinin ne kadarlık kısmının outlier olarak belirlendiği önemli olmaktadır. Aşağıdaki grafikte, standart normal dağılım ve standart sapma değerlerine göre verinin yüzdelikleri gösterilmektedir.

(Şekil-12) Normal dağılım ve standart sapma

Çeyrek Açılık

Outlier bulma yöntemlerden birisi de çeyrekler açıklığını kullanmaktır. Çeyrekler açıklığı veriyi büyükten küçüğe sıralayarak 0.25 aralıklarla değerlerin bulunmasıdır. Burada önemli olan ilk (Q1) ve üçüncü (Q3) çeyreklik kısımdır. Q3 değerinden Q1’i çıkardığımızda çeyrekler açıklığını bulmuş oluruz.

IQR = |Q3-Q1| diyebiliriz.

(Şekil-13) Çeyrek açıklık

Aykırı değerleri tespit etmek için ; üst sınır olarak, Q3 değerinin IQR değerinin 1.5 katı ile toplamını ve alt sınır olarak Q1 değerinden IQR değerinin 1.5 katının çıkarımını belirleyebiliriz. Yani aşağıda ki box plot grafiğinin üzerinden konuşmak gerekirse yaklaşık olarak -20 ve 20 Q1 ve Q3’ü ifade eder. Çeyrekler açıklığı ise 40 olur. Çeyrekler açıkığının 1.5 katı ise 60’tır. Bu yüzden -20–60 = -80 ve 20+80 = 100 olacağı için -80 ve 100 değerleri bizim outlier sınırımız olacaktır.

(Şekil-14) Örnek Box Plot çıktısı

Değişken Seçimi

Değişken seçimi model yapımında kullanılacak en tutarlı, benzeri olmayan ve ilgili özellikleri ayırma işlemidir. Veri kümelerinin boyutu ve çeşitliliği artmaya devam ettikçe, veri kümelerinin boyutunu azaltmak önemlidir. Öznitelik seçiminin temel amacı, tahmine dayalı bir modelin performansını iyileştirmek ve modellemenin hesaplama maliyetini yani zamanını azaltmaktır.

Veri setinde ki gereksiz özelliklerin varlığı, öğrenme kalitesini düşürebilir ve bu özellikler kaldırıldığında daha fazla bellek ve hesaplama süresi elde edilebilir. Kümeleme açısından, alakasız özelliklerin kaldırılması, depolama alanını artırır ve hesaplama süresini azaltır. Ayrıca kümeleme doğruluğunu olumsuz etkilemeyecektir. Tam tersine kümeleme başarısına olumlu katkısı olacaktır.

Değişkenler arası korelasyon, boyut indirgeme, değişkenler üzerinde farklı mapping işlemleri veya istastistiksel teknikler kullanarak kümeleme işlemlerinden önce değişken seçimi yapılabilmektedir. Değişken seçimi ile ilgili önümüzdeki yazımız da dikkat edilmesi gereken bu önemli noktaları aktaracağız.

Kümeleme için Değerlendirme Metrikleri

Makine ögrenmesinde kümeleme, bussines analitik tarafında ise segmentasyon olarak bilinen ürün segmentasyonu sonucu ortaya çıkan ürün gruplarının doğruluğunu değerlendirmek gerekmektedir.

Ürün grupları unsupervised (etiketsiz) şekilde belirlendiği için sayılarını ve dağılımı keskin bir şekilde değerlendirmek her zaman mümkün olmayabilir. Bu yüzden bir değerlendirme metriğine ihtiyaç vardır. Bu değerlendirme metriğine bakarak oluşturulan kümelerin ne kadar homojen ve düzgün bir yapıda dağıldığı incelenir.

(Şekil-15) Örnek sınıflandırılmış data

Örnek vermek gerekirse bu metriklerden bir tanesi de Silhoutte skordur. Bu skor -1 ile 1 arasındadır ve puan ne kadar yüksekse kümeleriniz o kadar iyi tanımlanmış ve belirgindir. Genel olarak kümelerin kendi içinde birbirine olan yakınlığını ve kümeler arası uzaklığını kontrol eder. Silhouette skor formülü aşağıda gösterilmektedir. Verilen formülde a(i) herhangi bir i noktasının içinde bulunduğu noktalama ortalama uzaklığını ifade eder. b(i) ise herhangi bir i noktasının bulunduğu küme dışında ki en yakın küme elamanlarına olan ortalama uzaklığını ifade eder.

(Şekil-16) Silhouette skor formülü

Değerlendirme metriklerinden bir tanesi de Calinski-Harabasz endeksidir. Varyans oranı ölçütü olarak da bilinen Calinski-Harabasz skoru, tüm kümeler için kümeler arası dağılım ve kümeler arası dağılım toplamının oranıdır, puan ne kadar yüksekse performans o kadar iyidir. Kümeler yoğun ve iyi ayrılmış olduğunda puan daha yüksektir. Skor hesaplamak için hızlıdır.

Bir diğer değerlendirme metriği ise Davies-Bouldin score’dur. Bu skor, kümeler arasındaki ortalama ‘benzerliği’ belirtir; burada benzerlik, kümeler arasındaki mesafeyi kümelerin boyutuyla karşılaştıran bir ölçüdür. Daha düşük bir Davies-Bouldin skoru, kümeler arasında daha iyi ayrım olan bir modelle ilgilidir. Davies-Bouldin’in hesaplanması Silhouette skordan daha basittir.

Niş Kümelerin Belirlenmesi

Segmentasyon problemlerinde, genel populasyon altında niş segmentleri bulmak önemli bir konudur. Doğası itibari ile birbiri ile benzer özellik gösteren veri noktaları aynı kümelerde yer almaktadır fakat yoğun benzerliklerin yanında, daha az yoğun olan gözlemler gözden kaçabilmektedir. Bu durumda daha özel aksiyon alınması gereken niş kümeler de gözden kaçmış olabilecektir. Trendify, niş kümeleri de dikkate alabilecek şekilde yeni bir algoritma geliştirmiştir.

Trendify Segmentasyon Algoritması, kümeleri daha iyi bölümlendirmeyi hedefleyen bir algoritmadır. Denenen makine öğrenmesi modellerini kullanarak daha iyi bir sonuç elde etmek için iteratif bir şekilde modelleri verilen veri seti üzerinde deneyerek en iyi sonucu elde etmeye çalışır. Her aşamada hangi modelin başarısı daha yüksek ise o model göre bir segmentasyon yapılır. Eğer ürün grubu yeterli ölçü de ayrışmadıysa tekrar model çalışır ve gruplar optimal seviyeye gelene kadar segmentasyon yapılmaya devam edilir. Modelin başarısı için kümeleme değerlendirme metriklerinden yararlanılır. Her aşamada seçilen modeller sayesinde klasik kümeleme algoritmalarından daha verimli ve etkili sonuçlar elde edilir ve niş kümelerin de görebilecek şekilde bir sonuç verilir.

Aşağıda ki resimde klasik kümeleme algoritmaları ve Trendify segmentasyon algoritması ile kümelenen örnek bir verinin grafikleri gösteriliyor. Çok boyutlu olan veri PCA algoritması ile iki boyutlu hale getirildikten sonra kümelerin grafikleri çizildi. Soldaki ilk grafikte veri 3 kümeye ayrıldı. Sağda ki Trendify segmentasyon algoritmasına göre kümelenen veri ise 6 kümeye ayrıldı. Soldaki grafikteki 1. küme çok yoğun ve verinin kendisine oranla çok sayıda olduğu için 3 ayrı kümeye daha ayrıldı. Yine aynı şekilde 2. küme yoğun ve büyük olduğu için 2 ayrı gruba ayrıldı. Böylece hem veri de daha niş segmentlere ulaşıldı hem de veri daha ayrı ve daha iyi gözlemlenebilir hale geldi.

(Şekil -17) Klasik ve Trendify segmentasyon algoritması karşılaştırma grafiği

Trendify Product segmentasyon algoritması farklı kümeleme modellerini iteratif bir şekilde deneyerek ve hiper parametre optimizasyonları ile en iyi segmentasyon sonucuna ulaşmaya çalışır. Denenen modelleri her aşamada başarı skorlarına göre karşılaştırır ve sizin için en iyi modeli seçer. Model seçiminden sonra elde edilen datayı yeniden parçalama kriterlerine göre değerlendirir ve gerekli olan kümeleri yeniden segmentasyon işlemine sokar. En optimal kümeler bulununcaya kadar bu süreç devam eder. Böylelikle Trendify Ürün Segmentasyonu algoritması sayesinde en verimli ve en yorumlanabilir niş kümeleri elde etmiş olursunuz.

Yayınlanma tarihi : 20.01.2021

Yazar : Mustafa Gencer (Data Scientist , TRENDIFY)

Originally published at https://trendify.com.tr.

--

--

--

We can help you at any point in your data & AI journey

Recommended from Medium

Visualizing browser based model training process using tfjs-vis

What Natural Language Processing Can Do For Your Business?

CopyCat Doctors Can’t Learn, So They Get Machines to do It

TRAFFIC DETECTION ON ROAD

Weights Initialization in Neural Network

Kubernetes & AI — Myth Vs Reality

Why Machine Learning on The Edge?

Deep Learning — Week 2

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Trendify Analytics

Trendify Analytics

More from Medium

Johnnie: Prospectus Draft

2Fast2Hodl integrates with RubySwap

Why WGMI, not WAGMI

EULER.FINANCE іs a revolutionary DEFI tool . Cheap, Safe and Secure. How it works?