17 Eylül 2017 Pazar

Kobiler İçin Knime ile Kayıp Müşteri Analizi

Kobiler için Knime ile Kayıp Müşteri Analizi

Knime Churn Analysis


Kobi'lerimizin dış ticaret içinde yararlanabileceği bir başka analiz olan "Churn Analysis" yani Kayıp Müşteri Analizinden bahsetmek istiyorum.

Churn Analizi Nedir? Müşteri Kayıp Oranı (Churn Rate), müşterilerin bir ürünü ya da hizmeti kullanmayı bırakma olasılığı olarak tanımlanabilir.

Bildiğiniz gibi yeni müşteri bulmak bir sorun, elindeki müşteriyi tutmak ayrı bir sorun olarak karşımıza çıkmakta. Müşteri verilerini, bizlerden aldıkları hizmetler, yaptıkları şikayetleri, şikayetlerin kaç günde çözüldüğü bilgisini ne kadar derin tutarsak, bizden ayrılması muhtemel müşteriler bulma ve o müşterilere özel teklifler yapıp, onları sistem içinde tutma şansımız o kadar artacaktır.

Özellikle abone bazında iş yapan firmalar bu analizi kullanmakta ve verim elde etmektedirler. 

Bu gün çok basit olarak Knime üzerinden kayıp müşteri analizi nasıl yapılır onu göstermeye çalışacağım. Bu konuyu takip edebilmeniz için temel Knime bilgisine sahip olmanız lazım. Bu anlatım için, knime workflow, node sistemini bilmeniz yeterli.İlk yapmamız gereken Knime programını açmak. Sonrasında yeni bir work flow oluşturmak.
Burada örnek dosyamızı tanımlamamız lazım. Öncelikle onu "File Reader" node ile tanımlıyoruz. churn.csv dosyası aşağıdaki ayarlar ile çağrılıyor. Bu ayarları her node için, node üstüne gelerek sağ tıkla "Configure" kısmından ayarlayabilirsiniz.





Yukarıdaki ayarları yaptıktan sonra "Apply" diyelim. Sonrasında node üstüne gelip sağ tıklama ile açılan pencereden "Execute" komutu ile çalıştıralım. Şu anda artık 3000 den fazla veriye sahip olan setimiz yüklenmiştir.

Veriyi inceleyelim; File Reader üzerinde sağ tık ile en aşağıda olan "File Table" tıklayalım. Açılan sayfa bize verimizi, ve içeriğini gösterecektir. "Spec" üst bölmesine bastığımızda;


Veriyi oluşturan kolonlar ve kolon çeşitlerini, her kolonun aldığı en az ve en fazla değerli göreceksiniz. Veriye baktığımızda verinin bir telefon operatörüne ait olduğunu görmekteyiz. Verinin en altında ise Müşterinin Kayıp müşteri olup olmadığı ile ilgili bölüm var. "Churn?" kolonu bize kayıp müşterileri vermekte. Burada "True" cevabı bize müşteriyi kaybettiğimizi söylemekte. 

Burada bir önemli konu var, bu analizin çalışması için Churn? kısmının "String" olması gerekmekte. Bazen bizler verileri girerken bu bölümü numara olarak da doldurabiliriz. 0-1 verebiliriz. Öyle bir durumda veri "String" değil ise ona string yapmamız gerekmekte. Bizim veride öyle bir sorun yok.




İkinci aşama verimizi daha anlaşılır kılma için onu renklendiriyoruz. Yani Churn? kolonu üstünden veriyi renklendireceğiz. Bunun için önce "Color Manager" node yüklüyoruz. İki node arasını da birbirine bağlıyoruz.



Kolon kısmından "Churn?" seçip atayacağımız renkleri belirliyoruz. "True" sistemden çıkan müşterileri temsil ettiği için, ben kırmızı rengi seçtim. Seçimleri iki değer içinde seçip, "Apply" basıyoruz.

Bir sonraki aşama kayıp müşteri analizi yapabilmemiz için, karar ağacı oluşturacağız. Bunun için öncelikle verimizi ikiye bölmeli, bir kısmı ile veri öğrenilmeli, diğer kısmı ile de öğrenilen algoritma test edilmeli. Bunun için veriyi ikiye ayıracağız. Bunu bizim adımıza "Partitioning" node ekliyoruz.



Color Manager nodu ile Partitioning nodu yukarıda gösterilen şekilde bağlıyoruz. Bağlantı yapıldıktan sonra, node artık ayarlamaya hazır. Ayarlardan verimizi %80 öğrenme, %20 test seti olarak ikiye ayırıyoruz.




Artık verimiz ikiye ayrıldı. Partitioning Node baktığımızda iki adet çıkışı olduğunu görüyoruz. Üsteki küçük üçgen %80 kısmın çıkışı, alttaki üçgen ise %20 veri çıkışı temsil etmekte. Artık karar ağacı öğrenmesini gerçekleşmek için "Decision Tree Learner" node yükleyebiliriz. Bu mode bizim makinemizin eldeki veriler ile öğrenmesini sağlayacak. Onun için bu node "Partitioning" node üst bölümüne bağlanmalı.





Node ayarlarını aşağıdaki gibi yapıyoruz:



Apply deyip, node çalıştırıyoruz. %80 verimiz ile yapılan "Churn?" kolonu temel alınarak yapılan öğrenme "Execute" ile çalıştırdığında gerçekleşmiş olacak.

Çalıştırma bittiğinde node üzerinde sağ tıklayarak karar ağacımızı "Decision Tree View" sekmeksinden görebiliriz.



Karar ağacımız yukarıda görülmekte. Görüldüğü gibi + işaretlerine basılarak, aşağıya doğru dallanmakta.
Şimdi makinemizin öğrendiği karar ağacı şemasının ne kadar doğru olduğunu test etmemiz gerekmekte. Bunun içinde test için ayırdığımız %20 verimizi kullanacağız.

"Decision Tree Predictor" nodu bize bu test imkanını veriyor. Node yükleyelim. Node giriş kısmı iki bölümden oluşmakta. "Decision Tree Learner" ile bu node mavi kısımlarından birbirine bağlayalım. "Decision Tree Predictor" node alt girişi boş kaldı. Bunu da "Partitioning" node alt kısmı ile bağlayalım. Node üzerinde hiçbir değişiklik yapmadan nodu çalıştıralım.

Şu anda tahminleri ve yaptığımız öğrenmenin doğruluğuna bakabiliriz. Görüleceği üzerine bu öğrenme verimize üç kolon daha ekledi.





Elde ettiğimiz öğrenmenin ne kadar başarılı olduğunu öğrenmek için "Score" node ekliyoruz ve sonuca bağlıyoruz. Score node içinde ilk kolonu "Tahmin edilen Churn" ikinci kolonu ise gerçek "Churn" girip node çalıştırıyoruz.



Şimdi node üzerine sağ tıklayıp; Accuracy Statistic kısmında verimiz değerlendirebiliriz. Bu tabloda yapılan öğrenmenin eldeki veriler ile %88,4 doğruluk ile çalıştığını tespit etmiş bulunmaktayız.



Buraya kadar öğrenme gerçekleşti ve test edildi. Gerçek hayatta ne işimize yarayacak diye sorduğunuzu duyar gibiyim.

Artık elimizde bir algoritma var, bu algoritma - öğrenmeyi mevcut müşterilerimize uygulayıp kayıp müşteri olma olasılığı olup olmadığını görebiliriz. "JPMML Classifer" nodu getirip, "Decision Tree Learner" ile bağlıyoruz ( Mavi-Mavi).



Sonrasında gerçek sorgu yapmak istediğimiz müşteri bilgilerini bir excel veya csv dosyası ile yüklüyoruz. Bu veri içinde herhangi bir churn verisi yok.



Bu müşteri bilgilerini "JPMML Classifer" bağlıyoruz ve çalıştırıyoruz. "JPMML" node sonuçlarına baktığımızda;



Öğrenme algoritmasının çalıştığı, mevcut müşteri için tahminleme yapıldığını, bu örnek için %95 olasılık ile müşterinin kayıp müşteri olacağı bilgisi bize veriliyor. Artık bu müşteri için pazarlama departmanı önlem alabilir, kayıp müşteri olmaması adına değişik teklifler sunabilir.

Gerçek hayatta bu bilgiler müşteri ekranında beliriyor. Bunu da öğrenme yaptıktan sonra müşteri ekranına eklemek çok kolay.
Umarım yararlı olmuştur.
Veri setleri için lütfen benim ile iletişime geçiniz.



1 yorum: