Ana içeriğe atla

Büyük Boyutlu Veri İle Sınıflandırma Problemi

 Büyük Boyutlu Veri İle Sınıflandırma Problemi
Veri madenciliği ve makine öğrenmesinde en sık çözülen problem tipleri içinde yer alan sınıflandırma, kullanılan yöntemler açısından oldukça çeşitlilik gösterir. Karar ağaçlarından, regresyona, yapay sinir ağlarından, clustering (öbekleme/gruplama/kümeleme) e bir çok farklı yöntem ile çözülme imkanı olan sınıflandırma problemlerinde klasik yöntemlerin işe yaramadığı problemlerle haşır neşir olduğumuz bir dönemin içerisindeyiz.
Bunun temel sebebi, sınıflandırma problemlerinin genel öğreticili öğrenme kategorisinde ele alınması ama veri boyutunun büyümesi ile eldeki verinin test ve eğitim seti olarak bölünmesi, bu setlerin geneli ifade etmesindeki güçlük nedeni ile imkansız hale gelmesidir. Bir de büyük verinin temel özelliklerinden olan hızlı bir değişimin gerçekleşiyor olması klasik çözümleri iyice işlevsiz bırakıyor.
Geçenlerde ülkemizin tanınmış bir e-ticaret sitesi için yaptığım Proof Of Concept (POC) çalışmasında, site üzerinden müşterilere sunulan ürünlerde kategorilerin sağlıklı bir şekilde belirlenememesi problemi ile ilgili olarak bir ürün sınıflandırma çalışması gerçekleştirdim.  Dünyanın e-ticarette en büyüklerinden olan Walmart'da da aynı problem için geliştirilen, Chimera sistemi konusundaki yazıyı bugün okuduğumda, o çalışmayı yaparken tespit ettiğim problemin temel zorluklarının nasıl aşılması gerektiği konusunda iyi bir örnek görünce sizlerle paylaşmak istedim. Öyleki, klasik veri madenciliği projelerinin neden yetersiz kaldığı konusunda somut bir örnek olması bakımından değerli kanaatimce.
Ben yaptığım çalışmada konu bağlamında karşılaştığım güçlüklerden aklıma gelenleri madde madde yazacağım, her maddede Chimera ile ilgili yazıdan ingilizce alıntı yaparak karşılaştırma yapabilmenizi sağlayacağımı umuyorum.
  • Veri seti ürünlerin kısa tanım başlıklarını içermekteydi.
"So the only field that classification really can rely on is ‘Title’."
  • Ürünlerde ait olduğu sınıf şudur şeklinde herhangi bir etiketleme yoktu.
"Creating training data manually is time-consuming – a good analyst can classify about 100 items a day. (Matches to the correct category can take some research – where do you put a ‘Dynomax Exhaust 17656 Thrush Welded Muffler’ when you have 150 automotive categories and none of them are ‘Mufflers’?)."
  • Sampling yapma imkanı var gibi görünmüyordu, çünkü hem güvenilir tam bir sınıflandırma yoktu, hem de veriye sürekli yeni sınıflar ekleniyordu.
"Many learning solutions assume that we can take a random sample from the universe of items, manually label the sample to create training data, then train a classifier. At this scale, however, we do not even know the universe of items, as product descriptions keep “trickling in”, a few tens of thousands or hundreds of thousands at a time… concept drift becomes common (e.g., the notion “computer cables” keeps drifting because new types of computer cables keep appearing). "
  • Önce hiyerarşik sınıflandırma algoritmasını  kullandım ama sınıflandırmayı doğru yapıp yapmadığımı kontrol edecek bir mekanizmanın eksikliğini hissettim. Kendim görsel olarak elimdeki az veriye görsel olarak bakarak sonuçların iyi olduğunu değerlendirdim. Ama verinin gerçek boyutu karşısında bunun ciddi bir problem olacağının farkında olarak.
"If you can’t get enough training data, perhaps a rules-based approach will work instead? “But writing rules to cover all 5000+ product types is a very slow and daunting process. In fact, we did not find it to be scalable.”"
  • Son olarak, R ile yaptığım hiyerarşik clustering büyük boyutlu bir matrise dayandığı için algoritmik çözümünün maliyeti O(n2) olunca, bu yöntemin eldeki çalışma verisi ile kendimce iyi sonuçlar üretmesine rağmen, gerçek veri boyutu ile sonuç almanın pratik olmadığını farkettim. Bunun üzerine alternatiflere baktığımda Spark MMlib kütüphanesi 'ne v1.6.0 ile giren Bisecting K-means in kullanılabileceğini gördüm. Fakat yine de problemi çözmede yeterli olmayacağını, sonuçların doğru/yanlış değerlendirmesinin nasıl yapılacağı konusunun açıkta kaldığını gördüm.
"Since none of the approaches (manual classification, machine learning, and rules) can solve the problem in isolation, Walmarts Chimera system uses all three in combination: Chimera uses a combination of machine learning, hand-crafted rules, developers, analysts, and crowd workers to form a solution that continuously improves over time, and that keeps precision high while trying to improve recall."

Sonuç

Toparlayacak olursak, verinin büyüklüğü çözümü farklı yapmak gerektiği konusunda bizleri zorluyor. Bunu probleme özgü olarak yapmak için klasik düşünce kalıplarından çıkıp "büyük düşünmek" gerekiyor sanırım :)

Not: Kapaktaki fotoğrafın konusu BT dünyası ile ilgili olmasa da, e-ticarette ürün sınıflandırmanın önemi üzerine güzel bir yazı. Öneririm.

Yorumlar

Bu blogdaki popüler yayınlar

SAS Nedir?

Anthony Barr, James Goodnight, John Sall ve Jane Helwig isimli dört kişi tarafından 1976 yılında Statistical Analysis System i smi ile kurulan fakat yazılım alanında ürettiği ürünlerle bu sınırları aşan SAS (SAS Institute) günümüzde borsaya açık olmayan dünyanın en büyük yazılım şirketlerinin başında geliyor. Hiç kuşkusuz bu dörtlüden en önemlisi, Harvard Business School tarafından* 20 inci yüzyılın en önemli iş liderleri listesinde gösterilen ve aynı zamanda şirketin CEO su olan James "Jim" Goodnight dır. İstatistik alanında doktorası olan Goodnight ayrı bir yazı konusu olmayı hakeden renkli bir kişilik. SAS denince ilk akla gelen öncelikle istatistik ve iş zekası alanlarında marketin önemli oyuncularının başında gelen ve "Bilmenin gücü (Power to know)" nü uzun yıllardır müşterilerinin hizmetine sunan Amerika Kuzey Karolayna merkezli dev bir yazılım şirketi olduğudur. Detaylarda ise genetik, tarım, finans, telekom, uzay, ilaç, kimya, bankacılık gibi birçok farkl

Veri kalitesi işlemlerinde bulanık mantığın (Fuzzy logic) kullanılması

Bulanık mantık (Fuzzy Logic) üzerine 1995 yılında bitirdiğim yüksek lisans tezinde, bulanık mantık ile çalışan bir uzman sistem yapmıştım. O zamanlar bulanık mantık, bilişim teknolojileri alanında yeni yeni emekleme dönemindeydi. Özellikle veritabanlarında bilgi keşfi çalışmaları için kullanılması yönünde oldukça çok akademik çalışma yapılmaktaydı. Günümüzde Bilgi Teknolojileri (BT) sektöründe bulanık mantık dahil diğer bilgi belirsizliği modellerini, BT profesyonelleri "kullanıyor" dememiz zor. Fakat en zor alanlardan biri olan ve gün geçtikçe önemi artan veri kalitesinin arttırılması konusunda yapılan çalışmalarda, bulanık mantık terimi oldukça sık ismi geçen bir terim haline geldi. Bu nedenle yazımızın konusu bu terimin genel anlamından çok veri kalitesinde kullanımı konusunda olacak. Veri kalitesi çalışmalarında fuzzy logic kelimelerini ilk duyduğumda kelimelerin bulanık küme teorisinde kullanılması geldi. Örneğin; çok gürültülü kelimesinin bulanık kümesinin kurulmas

Veriden Bilgiye Dönüşüm Sürecinin Temelleri

Merhaba, Ağırlıklı olarak Telekom sektöründe uzun yıllardır çalışmakta olan birisi olarak, büyük şirketlerdeki verinin ilk çıkış noktalarından, raporlarda yer alması ve karar destek sistemlerinde görünmesine kadar giden süreçler hakkında önemli bir bilgi birikimim oldu. Bu bilgi birikimi farklı noktalardan bakışı gerektirir ve az sayıda profesyonel, bu bakışa sahip olma ayrıcalığını taşır. Sürekli değişen Bilgi Teknolojileri (BT)  araçları ve yüksek rekabet ortamı içinde bu bilgi ve tecrübeyi sürekli güncel tutmakta ayrı bir gayret gerektirir. Tabii ki bu tecrübede kullanılan araçların yeri yadsınamaz. Atalarımız alet işler el övünür derken haklı bir noktaya temas etmişler. Fakat bu bizde, aletin işin en önemli parçası olduğu şeklinde bir yanılsama yaratmasın. Peki, işin en önemli kısmı nedir öyleyse? Bu soruya yanıt vermeden önce sürece biraz yakından bakmakta fayda var. Gerçekte birbirine benzeyen büyük şirket yada kurumlarda (yazının devamında ikisi içinde büyük org