Bırakın Veri Konuşsun: Makine Öğrenmesi Modeli Kurmadan Önce Verinizi Gerçekten Tanıyor musunuz?

Çoğumuz bir makine öğrenmesi projesine başladığımızda ilk olarak algoritmalara odaklanırız. Ben de tam olarak böyle yapıyordum. Ancak bir modeli kurmadan önce veriyi anlamaya zaman ayırmak sağlıklı bir makine öğrenmesi sürecinin önemli parçalarından biridir.
Bu yazıda “Veri nedir ?” gibi temel kavramlardan başlayarak kaliteli verinin ve veri kalitesini artırma süreçlerinin neden önemli olduğunu ele alacağım.

Veri nedir? 
Veri (data), genel olarak ham gözlemlerdir. Bu haliyle bir anlam ifade etmeyebilir ancak uygun  bağlam ve analizle değer kazanıp anlamlı bilgiye dönüşebilir. Karar verme süreçlerini destekleyebilir. Veriye basit bir örnek olarak  “27” sayısını verebiliriz. Tek başına bir sayıdan fazlası değilken bir bağlam içinde anlam kazanıp anlamlı  bilgiye dönüşür. Örneğin “Haftanın sıcaklık ortalaması 27 derecedir ”  bilgisi gibi.  
Kaliteli ve doğru toplanmış veri, kararların yalnızca sezgiye değil, istatistiksel kanıtlara dayanmasını destekler.  
Veri seti ise, en basit tanımıyla ham verilerin analize uygun şekilde düzenlenmiş, satır ve sütunlardan oluşan bir koleksiyonudur. Her satır bir gözlemi,her sütun ise  gözleme ait  bir özelliği temsil eder. 
Günümüzde veri yalnızca veri biliminin değil, makine öğrenmesi (Machine Learning) ve yapay zeka (Artificial Intelligence) gibi büyük miktarda eğitim verisine ihtiyaç duyulan alanların da odağı olmuş durumda. Büyük organizasyonlar doğru makine öğrenmesi modelleri geliştirmek ve performansını iyileştirmek için  büyük hacimli eğitim verisine ihtiyaç duyuyor ve  topluyor.  


Veri setine sahip olmak neden yeterli değildir ? 
Verileri daha organize hale getirmek için veri seti şarttır ancak elimizde bir veri setimizin olması, onun kullanıma hazır olduğu anlamına gelmez. Aslında, bir veri setine sahip olmakla onu anlayabilmek aynı şey değildir. Henüz veri setimizin yapısını,kalitesini, hangi problemlere sahip olduğunu bilmiyoruz yani veri setini tanımıyoruz. 


Bir veri setini gerçekten tanımak ne anlama geliyor olabilir ? 
Bir veri setini yalnızca  göz gezdirerek  anlayamayız. Anlamak için veriyi okuyabilmek (data literacy) gerekir. Veriyi okuyup yorumlayabilme, analiz edebilme, sorgulayabilme ve güvenilir sonuçlar çıkarıp,  bu sonuçları etkili biçimde bir başkasına aktarabilme gibi  beceriler veriyle çalışan herkes için güçlü bir veri okuryazarlığı temeli oluşturur.

 
Neden veriyi anlamak model seçiminden önce geliyor? 
Bu konuda çok basit bir mantık var : ”Ortaya çıkan model, beslendiği verinin kalitesinden daha  iyi değil, en fazla ona eşit olabilir”.  
Bunu size bilinen bir örnekle anlatmak istiyorum. Mutfakta olduğunuzu hayal edin,önünüzde dünyanın en iyi fırını (makine öğrenmesi modeli) de olsa, tarifin içine koyacağınız malzemeler (veri) bozuk, küflü veya yanlışsa ortaya tatmin edici bir yemek çıkması zordur. 
Aynı mantığı matematikte de görürüz. Bildiğiniz gibi matematiksel bir fonksiyonun çıktısı, girdisine bağlıdır.  Bir modelin üreteceği sonuç da girdisine bağlıdır. Daha yüksek kalitede girdi daha yüksek kalitede sonuç verir.   
İşte bu yüzden bir veri setinizin olması her zaman yeterli değildir,veri setinizin ne kadar kaliteli ve güvenilir olduğu da güvenilebilir yapay zeka modelleri geliştirmek için önem taşır. Bu yüzden veri kalitesini artırmak, model geliştirmeden önce  üzerinde durulması gereken konulardan biridir denilebilir. 
Neyse ki veri kalitesi şansa bağlı değil. Uygun yöntemlerle veri daha güvenilir ve analiz için daha hazır hale getirilebilir. 


Veri Model Eğitimi İçin Nasıl Hazırlanır? 
Elimizdeki ham veriyi model eğitimine hazır hale getirmek için veri biliminde standartlaşmış güçlü adımlar vardır: Keşifçi Veri Analizi (EDA) ile verinin anatomisini çıkarmak, Veri Temizleme (Data Cleaning) ile eksik ve hatalı kayıtlardan arındırmak  ve Özellik Mühendisliği (Feature Engineering) ile veriye yeni anlamlar kazandırmak. Gelin şimdi veriyi  kusursuza yaklaştırarak modele hazırlayan bu adımlara yakından bakalım. 
Neredeyse her veri seti keşfedilmeyi bekleyen örüntüler içerir. Bu Nedenle yeni bir veri setiyle çalışmaya başlandığında önceliğin veriyi tanımak olması iyi bir fikir olabilir. Böylece veri içindeki yapı gözlemlenebilir ve hakkında ilk  yorumlar  yapılabilir.  


Peki Keşifçi Veri Analizi ( EDA-Exploratory Data Analysis) nedir ? 
EDA’nın yaklaşımını belirten şu cümlede söylendiği gibi “Let the data speak for itself! (Bırakın önce veri kendi adına konuşsun !)” Bu cümle EDA’nın temel felsefesini özetleyebilir. 
 
Temel olarak, veri içindeki karakteristik özellikleri görmemizi kolaylaştırmayı sağlar. Bu da tüm süreç  boyunca bize yardım edecek içgörülere sahip olmak anlamına gelebilir. 
Keşifçi veri analizi  iteratif bir süreçtir, gerçek projelerin  çoğu genelde bu yapıyı takip ederek ilerler: 
İlk olarak veri setinin genel yapısı incelenir; kaç gözlem ve değişken bulunduğu, veri tipleri ve temel özellikler anlaşılmaya çalışılır. Ardından eksik değerler, tekrarlayan kayıtlar veya tutarsız kategoriler gibi veri kalitesini etkileyebilecek sorunlar araştırılır. Sayısal çıkarımlar ve görselleştirmeler yardımıyla dağılımlar, aykırı değerler ve değişkenler arasındaki ilişkiler keşfedilir. Son olarak elde edilen tüm gözlemler bir araya getirilerek veri hakkında ilk çıkarımlar oluşturulur ve sonraki adımlara yön verecek fikirler geliştirilir. 
Anlatılanları daha somut hale getirmek için örnek bir  veri seti üzerinden ilerleyelim. Gerçek projelerde veri setleri çok daha büyük ve karmaşık olabilir; uygulanacak yöntemler veri setinin özelliklerine, iş problemine ve modelin gereksinimlerine göre farklılık gösterebilir ancak uygulanan temel yaklaşım aynıdır.   
Örnek veri setimizde yaş (Age), müşteri değerlendirmesi (Review), maaş (Salary) ve satın alma durumu (Purchased) gibi değişkenler yer almaktadır.  
Şimdi bunu örneklendirelim. İlk olarak müşterilerin yaş dağılımını, satın alma durumuna göre görselleştirerek veriyi tanımaya çalışıyoruz. Böylece belirli yaş gruplarında satın alma davranışının farklılaşıp farklılaşmadığı gibi durumlara dair ilk gözlemlerimizi elde edebiliyoruz. 
   
EDA sırasında veri setinin yapısını anlamaya ve dikkat edilmesi gereken yerleri belirlemeye başladık. Sıradaki adım ise Data Cleaning (veri temizliği) olarak adlandırılan tespit edilen sorunlar üzerinde çalışma aşamasıdır.  


Data Cleaning nedir ? 
Veri temizliği genel olarak, tekrarlayan kayıtların ve tutarsız değerlerin kaldırılması, veri tiplerinin düzenlenmesi  ile gerekiyorsa aykırı değerlerin değerlendirilmesi, eksik değerlerin ele alınması gibi adımları kapsayan temel bir süreçtir. Böylece EDA ile keşfedilen veriyi düzenleyerek daha kullanılabilir  ve kaliteli hale yaklaştırabiliriz  
Örneğin kullandığımız mini veri setinde "Age" ve "Review" değişkenlerinde eksik değerler bulunduğunu düşünelim. Veri temizleme aşamasında bu eksik gözlemler uygun yöntemlerle doldurularak veri setinin analiz ve modelleme için daha güvenilir hale gelmesi sağlanır. Eksik gözlemler analiz sonucunu etkileyebileceği ve birçok makine öğrenmesi modeli eksik gözlemle çalışamadığı için model eğitimi öncesinde duruma ve veri setine uygun şekilde ele alınmalıdır. 
 
Veri temizliği, veri doğruluğunu ve güvenilirliğini sağlama açısından önemli bir adımdır. Amaç sadece sorunları gidermek değildir. Veri temizliği, hem analizler  hem modeller için  güvenilir ve  tutarlı bir veri seti oluşturmaya yardımcı olur, veriye dayalı karar süreçlerinin verimliliğini destekleyebilir.  
Veriyi keşfedip düzenledikten sonra sıra özellik mühendisliğine geliyor. 


Feature Engineering nedir ? 
Veride nelerin sorunlu olabileceğini gördük, gerçekten sorunlu kısımları düzenledik şimdi  veri üzerinde güncelleme ve değişiklik yapabilecek durumdayız. Veri içinde bazı özellikler tek başına yeterli bilgi taşımayabileceği için mevcut özelliklerden yeni bilgiler üretmek veya gereksiz özellikleri çıkarmak gibi güncellemelerle modelin daha anlamlı örüntülerden öğrenmesine yardımcı olabiliriz.  
Veri setimizde müşteri değerlendirmeleri "Poor", "Average" ve "Good" gibi kategorik ifadelerden oluşmaktadır. Birçok makine öğrenmesi algoritması metinsel kategorilerle doğrudan çalışamadığı için bu değerler sayısal karşılıklarına dönüştürülür. Bu dönüşüm, özellik mühendisliğinin en temel örneklerinden biridir.   
 
Tüm bu standartlara ek olarak kendi çalışmalarımda edindiğim en faydalı alışkanlıklardan biri, elde edilen içgörüleri not almak, veriye sürekli soru sorarak anlamaya çalışmak ve bir veri sözlüğü oluşturmak oldu.  


Garbage In Garbage Out Nedir? 
Veri kalitesinin son derece önemli olduğunu gördük. Garbage In Garbage Out (GIGO- Çöp Girerse Çöp Çıkar) fikri de verinin neden olabildiğince kaliteli olması gerektiğini çok güzel yansıtan bir yaklaşımdır. “Kusurlu girdi verisi aynı derecede kusurlu çıktı verecektir” fikrini temsil eder. 
Bir algoritma, “kötü” veriyi sihirli şekilde düzeltemez, sadece ne verirseniz ondan öğrenir. 


Sonuç 
Sonuç olarak, sağlıklı makine öğrenmesi projesi süreçleri model eğitmekle değil, veriyi anlamakla başlar.  Veriyi doğru anlamanın, model seçiminden daha büyük etkiye sahip olabileceği düşünülmektedir. 
Bir sonraki makine öğrenmesi projenizde, modele geçmeden önce verinizi gerçekten tanımak için zaman ayırmayı deneyin! 
 

Ebru Arık