Knime Giriş

Bir işi yarım bırakmayı sevmiyorum

İş yerinde, Mart-Nisan ayları arasında İç Piyasa Fon Kullandırım projesine dahil oldum. Projedeki amacım, değişkenlerin belge kontrol süresi üzerindeki etkisini ölçmekti; yani hangi değişken, belge kontrol süresi üzerinde ne kadar etkiliydi, anlamak istiyorduk. Tabi tasarım model aslında belliydi, benden istenen ise sadece veriler ile bunu desteklemekti. Bunun için de gerekli olan, veri seti ve genel iş akışıydı. (Genel iş akışının altını çiziyorum çünkü doğru bir model kurduysanız işin alt detayını zaten çıkan çıktılardan sonra araştırmanız gerekir 😉)  Onun için çok fazla gerekli olmayan iş bilgisiyle de kafamı karıştırmak istemedim.  Gel zaman, git zaman bunu çeşitli departmanlara danışarak regresyon ile yapabileceğimize karar verdik. Ben de oturdum, çoklu değişkenli regresyon yöntemiyle SPSS de bunu ispatlamak için çalışmalara başladım. Akşamları her gün 1-2 saatimi youtube’da SPSS videolarına ve ders kaynaklarına ayırmaya başladım. 2 ay boyunca veri setimize ne tür taklalar attırırsak attıralım R square’de %10 geçemedik 😀 Tabi 2 ay emek verip, ulaştığımız sonuç: Regresyon ile bu verilerin analiz edilemeyeceği gerçeğiydi. Evet, tüm yenilginin faturasını kendime kestim çünkü numeric değişkenlerden oluşmayan data seti ile regresyon analizinin sonuç üretmesi zaten beklenemezdi (Lojistik regresyon hariç). Bundan sonrası için alternatif yöntemler pek de düşünülmeden, başarısızlığın nedenine veri eksikliği yazılıp, projenin analiz kısmı kapatılmıştı. Lakin benim tarafımda henüz kapanmamıştı 😊 Eğer elinizde string/flag/kategorik gibi değişkenleriniz ağırlıklı ise R square’in %10 da kalması zaten çok normaldi. Hatta bu bile bir başarıydı 😉  Tabii bunu temmuz ayında Y. Lisans’ın Big Data dersinde anladım. Bu tarz dataların classification algoritmalar ile çözülmesi gerekiyordu.  

Knime Giriş

Okunuşu Naym’dır. Alman lisanslı olduğundan Nayn (Nein) diye espri yapmaya çalışanlar olabiliyor, siz boşverin onları, tebessüm edin, geçin. 😊

Knime programı, veri madenciliği programları arasında çok popüler olmasa da geleceği oldukça parlak bence. Programın kullanımının kolay ve ücretsiz olması, onu öne çıkaran en önemli özelliklerden birisi bence…

Örnek üzerinden modelimizi kurar isek:

Modelimizdeki ilk Node’mız XLS File Reader yardımıyla verileri sisteme okutmak. Zaten gerekli seçimleri yapıp, execute ettiğimizde, sistem sizin gösterdiğiniz tüm verileri alacaktır. Burada karşılaşılan genel problem, satır başlıklarını sisteme alırken sorun yaşanabilmektedir. Configure kısmında “Tables contains column names in row Number 1” seçeneğinin işaretli olduğundan emin olmanız gerekir.

Aşağıdaki şekilde Column filter node kullanarak 46 değişkenden, belirlediğimiz 30 değişkene düşürdük. Zaten data type baktığınızda da dataların büyük bir bölümünün string olduğunu görürüz.

Kullanacağımız Random Forest algoritmasının daha iyi sonuç vermesi için, Numeric Binner ile medyanın altında kalanlar için İyi, üstünde kalanlar için de Kötü olarak kategorize edip toplamda 2 tür class oluşturduk.

Verileri, partitioning node yardımıyla %65 train için %35 test için ayırdık. Ama sonrası için veri setindeki dengesiz dağılımları önlemek için smote özelliğini kullanma gereği duyduk.  Aslında açılımına bakarak da ne yapmak istediğimizi çok rahat anlayabilirsiniz. “Synthetic Minority Oversampling Technique” ile dengesiz dağılımın önüne geçmek için sentetik datalar ürettik. Bu şekilde az olan petrol ve benzeri  azınlık gruplar dengelenip, model için daha doğru öğrenme sağladık. Bazı algoritmalar, ZeroR değerine göre performans odaklı davranıp, hiç öğrenme yapmadan da %95’lere varan yüksek sonuçlar üretebiliyor. Dolayısıyla bu gibi durumların önüne geçmek için Knime’ın Smote özelliğini kullandık.

Modelimizde kullandığımız Random Forest algoritması ile %76 bir accuracy elde ettik. Aslında veri setimizde gerekli dönüşüm/manipülasyon yapsaydık %80’lere çıkabileceğimize de eminim.

Confusion matrix bakarsak; Satırlar: Belge kontrol süresi / Sütünler: Prediction edilen sonuçlardır. Aşağıdaki matrix okuyacak olursak; 1545 “İyi” iken biz de “İyi” olarak tahmin etmişiz lakin; 498 “İyi” iken biz “Kötü” olarak tahmin etmişiz.

ROC eğrisinin 0,5’den büyük olması beklenir, yani eğrinin y=x doğrusunun üstünde olması istenir ki bizim kurduğumuz modelde de zaten 0,81 değeri ile gayet başarılıdır.

Peki nedir Random Forest algoritması?

Bu algoritmayı, decision tree algoritmasının altında gruplandırabiliriz. Karar ağacı öğrenmesinde, bir ağaç yapısı oluşturularak ağacın yaprakları seviyesinde sınıf etiketleri ve bu yapraklara giden ve başlangıçtan çıkan kollar ile özellikler üzerinde tek bir ağaç yapısı kurulur. Fakat Random forest algoritmasında ise birden fazla ağaç ilişkisi kurulur. Algoritmanın hesaplanmasında, information gain ve entropy değerleri üzerinden nitelikler oluşturulur. Yani bir değişkenin oluşturacağı bağıntı sayısı ne kadar fazla ise information gain o kadar yüksek, entropy(belirsizlik) değeri de o kadar düşüktür. Information gain yüksek olan değişkenden dallanma başlar. Buna göre de karar ağacı oluşturulur. Fakat ben, Knime da simple tree yapısına bakmak yerine split değerine bakıyorum çünkü bir değişken ne kadar çok split edilmiş ise information gain de o kadar yüksektir yorumunu yapıyorum.

Sonuç olarak: Aşağıdaki şekilde de gösterildiği üzere: %76 accuracy ile “Mal Cinsi Üst Kategorisi” 29 split değerine göre “Belge kontrol süresini” en çok etkileyen değişkenimizdir. En başta da belirttiğim üzere, Mal Cinsinin, belge kontrol süresini en çok etkileyen değişken olmasını bekliyorduk, öyle de oldu 🙂 

(Özetle: Yarım kalan proje Ağustos ayında tamamlanmıştır 😊)

Kendime Not:
Bazen, sorunların üstesinden gelmek için zamana ihtiyaç duyarsınız. Ta ki yeni şeyler görüp, öğrenip, hatalarınızdan yeni dersler çıkarana kadar…
Bilirsiniz ki ancak o zaman kaldığınız yerden devam edebilirsiniz ve ileriye baktığınızda hayatınızda aşamayacağınız hiçbir problemin olmadığını görürsünüz. 
Siz yeter ki umudunuzu kaybetmeyin 😉

Geleceğe Mektup

Tarih: 10.09.2017

Merhaba…

Geleceğe mektuplar gönderen Annen, mutlaka benden de bahsetmiştir 😊…

Bu yazıyı okuduğunda nerede ve nasıl bir hayatımız olacak inan ben de gerçekten merak ediyorum.

Bir çocuğun gözünden bugünü sana anlatırsam, şu an yaşadığımız yılda Google’suz bir hayat düşünemiyoruz. Bizi birbirimize bağlayan sosyal ağ şimdilik Facebook. Biraz daha entel olanlarımız da Twitter ’da… Tükenmez kalem efsanesi hala devam ediyor, bildiğin üzere her aldığımızda tükeniyorlar. Ajda Pekkan kimlikte 71, görünüşte halaaa 41 yaşında (Maşallah) 😉 Uçan kaykaylar hala yok ama drone teknolojisinden beklentim yüksek, yakın bir gelecekte, drone’lar 5000 yıldır kullandığımız tekerleğin saltanatına son verecek gibi duruyor. Hayalimdeki Araba şimdilik Volvo S90, tabi bu araçları kullanmak için sınava girip bir de ehliyet almak gerekiyor. Fakat şu an bile sürücüsüz araçların Amerika ve Norveç’te testlerinin yapıldığını düşünürsek muhtemelen senin zamanında ehliyete gerek de kalmayacak. Günümüzün teknolojik gelişmeleri böyle iken, kültürümüz için sana aynı şeyleri söyleyemeyeceğim, Plaza denen bir kültürümüz var, Starbucks’dan kahve almadan masamıza oturmuyor, toplum için kitap okuyup, toplum için yaşıyoruz. Kılık kıyafetimizi pahalı ve lüks markalardan seçip, daha egolu ve güzel gözükmek için instagramda paylaşıyoruz. Bir günde sahte dostluklar, sahte arkadaşlıklar kurup, sabahlara kadar mesajlaşıp, hemen sıkılıp, birinden ötekine geçiyoruz. Menfaatimiz için selam verip, gülünmeyecek esprilere gülüp, sevmediğimiz insanlarla öğlen yemek yiyip, kariyerimiz için maskeler takıyoruz. Bizler size böyle bir kültür devrediyoruz. Bunun bir adı yok. Bu bir süreç, kimimize göre bütün bunlar yozlaştığımızın göstergesiyken, kimimize göre de sadece kültürel bir değişimdi. Anlayacağın her şey bu kadar basitti.

Eminim bu anlattıklarıma yıllar içinde bir cevabın olacak ama bazen okuyarak değil de bazı şeyleri yaşayarak öğreneceksin. Mesela; ilişkilerini ne sadece mantık üzerine ne de duyguların üzerine inşa etmen gerektiğini… Mantık, çizgileri ve belirli bir şekli olan Toprak gibidir, ama ona su değmeden, duyguların dokunmadan ne eğip bükebilir, ne de şekil verebilirsin. Demem o ki, sen su olup ağladığında, o karşına geçip senin göz yaşlarını, elleriyle silip Toprak olabilmişse, geriye ikinizin elleriyle çamura şekil vermek kalmış demektir.  Ama asıl mesele şu ki, sen bu topraktan çömlek yapmak istiyor musun, istemiyor musun önce ona karar ver?

Vee sen, sen ol, bir başkasının fikri ve düşüncesine göre birisini ne daha çok sev ne de nefret edip ceza ver. Sen, önce sen ol. Unutma bu hayat senin… Aksi halde; hayatında çok kandırılıp hayal kırıklığı yaşarsın, önce duygularının kölesi olursun, bir an kendi hayatında mutlu ve yaramazı oynar, bir an küser kendi hayatında yalnızı oynarsın … “Oynarsın” diyorum çünkü sen, sadece sana söylenenleri yaparsın… O nedenle karakterini oluşturup, hayata karşı duruşunu koyman çok önemlidir. Bunu anladığın zaman, herkes sana daha çok güvenecek ve attığın her adımda hiç kimse umurunda bile olmayacak… Buna emin ol…

Kendini, kendinle zaman geçirmeyi yalnızlık sanmayacağın şekilde yetiştir. Seni, içindeki yaratıcıyla buluşturacak en güzel ve en sağlam köprüyü inşaat et. Bu keşif benim için, bazen derinden gelen bir müziği dinlemektir bazen de enstrümanın tellerine vurmaktır. Geceleyin herkesten gizlice kalkıp odanın penceresinden, yıldızları ve gökyüzünü izlemektir hem hiçliği hem de sonsuzluğu aynı anda keşfetmektir. Senin gibi olmayan bir canlıya dokunmak, sevmek, ellerimle beslemek ve ona kendinden bir isim vermektir. Ağaçlarla konuşmaktır, kentte büyümüş çoğu insan için ağaç sadece bir ağaç iken senin için öyle olmasın, yakınından geçtiğin her ağacın ismini bil mesela. Bütün bunları anlatıyorum çünkü sen de büyüdükçe diğer insanlar gibi bencilce bir hayatı benimseyeceksin, her şeyin senin etrafında döndüğünü zannedeceksin, onlara benzememen için, karşındaki sıradan canlı bile olsa onun da duygularının olduğunu bil ve alay etmemen gerektiğini öğren.

Benim için galiba teslimat süresi en uzun mektup bu olacak, bu sefer PTT’yi suçlamayacağım söz veriyorum. 😊 Mektup ne zaman eline geçer bilmiyorum ama sen beni anlasan da anlamasan da beni yine de bul… 😊 Öncesinden haber verirsen kakaolu kek ve az ekşimsi şerbet yapabilirim 😊 (Şerbet konusunda iddialı değilim ama merak etme o zamana kadar daha iyisini yapabilir olurum 😊). Tabii kabul edersen bir de küçük bir hediyem olur.

                      Tarih: 31.08.2017

Gözlerinden öpüyorum küçük yaramaz 😊

Unutma ki sen önce bir bireysin, annen ve babandan ziyade hepimiz gibi önce bu hayatın bir evladısın.  Sakın ola, hayatını ihtiyacından fazla mal mülk edinerek tüketme, bil ki bu dünya da hepimiz kiracıyız.  Mühim olan hayatı öğrenerek, keşfederek, dokunarak ve tüm damarlarında hissederek yaşamaktır.

Ne kadar büyürsen büyü, her zaman hayallerinin peşinden koşan çocuk olarak kal.  

Annenin ve babanın elini asla bırakma…

(Yanlış anlama her dediklerini yap demiyorum 😉)

Gürkan ŞAMAN (😉)

Genel kategorisine gönderildi