Gerçek Hayat Uygulamalarıyla Veri Bilimi: Alış Veriş Merkezi Müşteri Segmentasyonu (Knime ile)

Gökhan Gerdan
4 min readAug 20, 2019
Image source: https://marketingarmor.com/wp-content/uploads/elementor/thumbs/TCS-Illustration-31-nz179fd4chwsmxvr0uz0p9editg5d0d233l0qeisug.jpg

Merhaba, bu yazımda Kaggle’da bulunan Mall Customer veri setine Knime ortamında yaptığım Kümeleme (Segmentasyon) uygulamasının aşamalarını ekran görüntüleri kullanarak anlatacağım. Böylece hiç programlama bilgisine sahip olmadan nasıl kümeleme yapabileceğinizi öğrenmiş olacaksınız.

Not: Eğer daha önce hiç Knime kullanmadıysanız fikir sahibi olmak için Yeni Başlayanlar için Knime ile Kaggle Yarışmalarına Katılma Rehberi yazıma göz atabilirsiniz. Bu yazımda Knime platformunun kullanımı hakkında daha az detay ile devam edeceğim.

Veri setini bu linkten indirdikten sonra, Knime platformunu açıp akışa bir CSV Reader düğümü ekleyelim. Konfigürasyonların aşağıdaki ekran görüntüsünde görüldüğü gibi olmasına dikkat edin.

Okuduğumuz veri aşağıdaki gibi görünecektir.

Burada ilk sütun olan CustomerID, müşterileri birbirinden ayırıcı bir özellik değildir çünkü her müşteri için eşsiz bir tanımlayıcıdır. Yani bu sütuna ihtiyacımız yoktur. Baktığımız zaman Gender sütunu haricindeki sütunlar sayısalken yalnızca gender sütunu kategoriktir. Gender sütununu da sayısallaştımamız için kullanabileceğimiz iki yöntem vardır. Bunlardan biri Label Encoder, diğeri de One Hot Encoder’dır. Gender sütunu Male ve Female olmak üzere yalnız iki değer alabildiği için Label Encoder yöntemi yeterli olacaktır. Label Encoder uygulamak için Knime da CSV Reader düğümümüzün yanına Category To Number düğümü eklememiz gerekiyor. Konfigürasyonları aşağıdaki gibi olmalıdır.

Bu düğümün çıktısı ise aşağıdaki gibi olacaktır.

Gördüğümüz gibi Male, 0 değerini ve Female ise 1 değerini alarak sayısallaştı. Şimdi de tüm verilerimiz sayısallaştığına göre verilerimizi normalize etmemiz gerekiyor. Burada kullanacağımız yöntem ise Min-Max Normalization’dır. Bu yöntemi Knime’da verimize uygulamak için Normalizer düğümü ekleyelim ve konfigürasyonlarını aşağıdaki gibi yaparak çalıştıralım.

Burada CustomerID sütununu hariç tuttuk ve diğer sütunlarımızı 0–1 arasına normalize ettik. Elde ettiğimiz sonuç aşağıdaki gibidir.

Artık verimizi kümelemek için K-Means algoritmasını kullanabiliriz. Başlamadan önce Scatter Matrix düğümünü kullanarak verimize farklı boyutlardan bakalım.

Normalde küme sayısını belirlemek için farklı yöntemler varken bu yazımda bu yöntemlerden bahsetmeyeceğim. Bu yazımda yalnızca yukarıdaki grafikleri yorumlayarak kaç küme elde etmek istediğimize karar vereceğiz. Burada içerisinde Gender olan grafikler beklendiği gibi iki kümeye ayrılmış gibi görünüyor, Spending Score ve Annual Income olan grafikler 5 kümeye ayrılmış gibi görünüyor, diğerleri ise 2–3 kümeye ayrılabilir gibi görünüyor. Ben burada küme sayısını 3 seçerek k-Means uygulamayı deneyeceğim sizler de farklı küme sayılarıyla çıkan sonuçlara bakabilirsiniz. k-Means düğümünü ekledikten sonra konfigürasyonları aşağıdaki gibi yapın.

K-Means sonucunda ortaya çıkan kümelerde aşağıdaki gibidir.

Peki bu sonuç nasıl kullanılabilir. Bu işlem sonucunda müşterilerinizi özelliklerine göre birbirinden ayırdınız ve sonuç olarak 3 küme elde ettiniz. Eğer siz de bu uygulamayı kendi işletmenizin verisi üzerinde deneyecekseniz mesela çıkan sonuca göre her bir müşteri kümeniz için ayrı tanıtım, reklam kampanyaları düzenleyebilirsiniz. Bu kümeleri farklı verilerle de birleştirip yorumlayarak farklı sonuçlara varabilirsiniz.

Bu yazımda basitçe Knime ile bir kümeleme uygulamasının nasıl yapılacağını göstermek istedim bu yüzden modelin optimizasyonu ile ilgili bir şeyden bahsetmedim bir sonraki yazımda Knime ile döngüler (loop) kullanarak makine öğrenimi modellerimizi nasıl optimize edebileceğimizden bahsedeceğim.

Hazırladığımız Knime akışının ekran görüntüsü aşağıdadır.

Sorularınız için:
gokhang1327@gmail.com

--

--