Kaggle Yarışma Deneyimim ve Gözlemlerim

Kaggle, machine learning ve big data denilince akla gelen ilk sitelerden birisi. Sebebi de, birçok kurumsal şirketin, Kaggle üzerinden açmış olduğu yarışmalar. Bu yarışmalar genellikle para ödüllü olmakla beraber, bazıları da işe alım amacıyla şirketlerin oluşturmuş olduğu senaryolardan oluşuyor. Bu yarışmalar da çoğu zaman genel machine learning problemleri(classification, regression, clustering vb.) üzerine kuruluyken, kimi zaman optimizasyon problemleri de karşınıza çıkabiliyor. Bu yarışmalara ücretsiz bir şekilde katılmanız için de yapmanız gereken tek şey Kaggle'a üye olmak.

Ben de yakın bir zamanda, ilk yarışmama katıldım ve ilk yarışma tecrübemi ve gözlemlediğim bazı şeyleri paylaşmak istedim. Öncelikle, katıldığım yarışma, ne marketi olduğu konusunda sınıflandıramayacağım, neredeyse her şeyi satan, ülkemizden de bildiğimiz Rossmann'ın sponsor olduğu bir yarışmaydı. Yarışmada, Almanya'da yer alan 1115 adet Rossmann marketinin, belirli bir periyota ait olan satışlarını inceleyerek, geleceğe ait satışlarını tahmin etmek üzerine kurulu, kısacası bir forecasting yarışmasıydı. Günlük veriler, sadece satış rakamlarından oluşmadığı gibi, o gün promosyonun olup olmadığı, veya okulların tatil olup olmadığı gibi çeşitli featurelara sahip verilerdi. Açıkçası ben de yarışmaya ilk başladığımda, forecasting konusunda, standart örneklerin dışında, herhangi bir tecrübeye sahip değildim, o yüzden nasıl ilerlediğimi, yarışma sonunda neleri öğrendiğimi, neleri de yanlış yaptığımı anlatmak istedim.

İlk olarak, yarışmaya başladığımda, yarışma forumlarında insanların neler konuştuğunu gözlemledim ki bu nasıl yol almam gerektiği konusunda aklımda birçok şeyi şekillendirmemi sağladı. Yarışma başlangıcında da gözlemlediğim üzere, genellikle katılımcılar hep aynı yöntemlere yoğunlaşmıştı. Kimisi time series diyince akla ilk gelen şeylerden birisi olan, ARIMA üzerine kurulu olan modelini anlatırken, kimisi de Gradient Boosting ile kurmuş olduğu modelini anlatıyordu. Bunun yanında sadece çözümü hangi model ile kuracaklarını değil, aynı zamanda da featureların önemlerini ve potansiyel yeni featureları konuşuyorlardı ki en önemli kısımlardan birisi de burası. Bunları anlatmamın sebebi de, bence, herhangi bir yarışma hakkında çok bir fikriniz olmasa da, en başlarda diğer yarışmacıların neler üzerine konuştuklarını gözlemlemenin çok önemli olması.

Ben de ilk olarak, featurelar ile uğraşmaya başladım, örneğin her bir güne ait olan satış verilerine ait olan tarihleri(örneğin 6 Şubat 2015) gün(6), ay(2), yıl(2015), kaçıncı haftada yer aldığı(5), hangi çeyrekte yer aldığı(1) gibi böldüm. Bu kısım her veri setine göre değişebileceği için çok detaylandırmayacağım ancak yarışma sonucunda bu kısımla ilgili birkaç şey öğrendim ki en son bu kısma değineceğim.

Daha sonrasında, sırasıyla birçok modeli denedim, sadece forumlarda konuşulanları değil, aynı zamanda time series forecasting üzerine yazılmış olan akademik makaleleri inceledim ki burası çok önemliydi. Okuduğum makalelerde hiçbir şekilde sonuca tek bir model ile gidilmediğini, birden fazla model kullanarak, bu modellerin geometrik ya da harmonik ortalamalarını alarak sonuca varıldığını gördüm. Ki gerçekten burası doğru çıktı, kurmuş olduğum hiçbir tekil model başarılı bir sonuç elde edemedi, yine bunun yanında ARIMA vb. istatistik modellerinin çok başarılı sonuçlar elde ettiğini söylemem daha da zor.

Kurmuş olduğum modeller de çok karmaşık değildi, önce tüm marketler üzerinde birçok feature ile gradient boosting yöntemlerini uyguladım, daha sonra marketleri cluster ederek, her bir cluster üzerinde yine gradient boosting yöntemlerini uyguladım, son olarak da her marketi, tekil olarak, birkaç ekstra feature ile(çünkü tekil olarak incelediğinizde feature sayınız çok azalıyor, örneğin o marketin türü gibi sadece o markete ait olan featureları kullanamıyorsunuz) yine gradient boosting yöntemlerini uygulayarak sonuçlarımı elde ettim, ve bunların geometrik ortalamalarını alınca beklentilerimin çok üstünde bir sonuç alarak, 3303 kişi arasında 101. oldum.

Önceki paragraflarda anlatıklarım, yarışmacıların sonuçlar açıklandıktan sonra yaptıklarını anlattıkları forum başlığını okuyunca doğru yaptım diyebileceğim şeylerdi, ama yanlış veya eksik yaptığım kısımlar da vardı. Örneğin, lineer regression yöntemlerinin nasıl sonuç verdiğini merak edip denemiştim, ama tabii ki tek başına pek iyi sonuç vermemişti, daha sonrasında kendi modellerimle birleştirmeyi denediğimde de herhangi bir gelişme göstermedi, ben de daha sonrasında pek önemsemedim, ancak kazananların yazdıklarını okuyunca bu konuda baya aydınlandım, en üst sıralarda yer alan yarışmacılar, lineer regression yöntemleriyle elde ettikleri sonuçları feature olarak(birden fazla, haftalık, günlük vb.) kendi modellerine eklemişler ve baya iyi sonuç almışlardı, aynı şekilde satışlara ait medyanları, yeni feature olarak, benim düşündüğümden daha fazla gruplandırmışlar, her bir satış gününe ait, ekstra kaynaklardan elde ettikleri, yine benim çok önemsemediğim, her bir güne ait hava durumunu da yeni feature olarak eklemişlerdi. Kısacası baya ufkumu geliştiren şeylerle karşılaştım.

Tüm bunları anlatmamın sebebi de basit, eğer literatüre artık data science olarak geçmiş olan bu dal ile ilgileniyor/ilgilenmeyi planlıyorsanız veya Iris dataset ile uğraşmaktan baymış durumdaysanız, Kaggle yarışmalarına mutlaka göz atın, sadece kitaplardan çalışarak yapamayacağınız çıkarımları, yarışmalarla direkt olarak deneyimliyorsunuz, en azından benim ilk tecrübem bu şekilde oldu.