ML’e Son Adım 🚀: Özellik Mühendisliği
“Uygulamalı makine öğrenmesi temel olarak özellik mühendisliğidir”
- Andrew Ng
Merhabalar, Andrew Ng’nin sözleriyle Özellik Mühendisliği bölümüne hoş geldiniz. Bu sözlerle başlamak istedim çünkü bu konunun öneminin bir kez daha hatırlatmak istedim.
Makine öğrenmesi projesinde model kurmadan elimizdeki veriyi iyi anlamalı, iyi analiz etmeli modele hazır hale getirmeliyiz ve tabii bu adımlar model kurmaktan daha çok vakit aldığı bir gerçek. Şimdi sırayla bu adımlara yakından bakalım. Öncelikle Özellik Mühendisliği Nedir? Sorusu ile başlayalım.
Özellik Mühendisliği
Özellikler/Değişkenler üzerinden gerçekleştirilen çalışmalardır. Ham veriden değişken üretmek ve çıkarmaktır. Bu tanım biraz Feature Extract’ın konusu da kapsıyor ona da biradan geleceğiz.
Peki Özellik Mühendisliğini öğrendik, Veri Ön İşleme Nedir?
Veri Ön İşleme
Çalışmalar öncesi verinin uygun hale getirilmesi sürecidir. Yani veri seti üzerinde yapılan bir takım düzeltme, eksik veriyi tamamlama, tekrarlanan verileri kaldırma, dönüştürme, bütünleştirme, temizleme, normalleştirme, boyut indirgeme vb. işlemlerdir. Birazdan daha derine iniyor olacağız.
Yukarıdaki şemada veri yolculuğunu görebilirsiniz.
Şimdi elimize bir veri seti geldiğinde, uygunluk olması durumunda yapılacak işlemleri ele alacağım.
Aykırı Değer (Outliar)
Verideki genel eğilimin oldukça dışına çıkan değerlere aykırı değer denir. Özellikle doğrusal problemlerde aykırı değerlerin etkileri daha şiddetlidir. Ağaç yöntemlerinde bu etkiler oldukça düşüktür.
Peki aykırı değerler neye göre belirlenir?
1-Sektör Bilgisi
Örn: Ev fiyatları tahmin modelinde 1000m2 evin olması, bu durumda tercihe bağlı bu veri setinden düşürülebilir.
2-Standart Sapma Yaklaşımı
Örn: Bir değişkenin ortalaması alınır, mesela 10 olsun ardından standart sapması alınır, standart sapmaya da 5 diyelim, şimdi ortalama baz alınarak , ortalamanın 5 birim aşağısı ve yukarısı aykırı değer muamelelisi görebilir.
3-Z-Skoru yaklaşımı
Burada ise ilgili değişken standart normal dağılıma uyarlanır yani standartlaştırılır.
4- Boxplot (Interquartile Range -IQR) Yöntemi
Bu yöntem diğerlerine göre daha sık kullanılır ve tercih edilir. Bu yöntemde veri setimizdeki değerleri büyükten küçüğe doğru sıralıyoruz. Q1(%25'liğe gelen değer) ve Q3(%75'liğe gelen değer) değerlerinin arasındaki farkı alıyoruz. Bu değer bizim IQR (Interquartile Range) değerimiz oluyor.
En düşük ve en yüksek sınırları belirliyoruz. En düşük sınırımız Q1–1,5*IQR, en yüksek sınırımız ise Q3+1,5*IQR olarak belirliyoruz ve bu değerlerden büyük ya da küçük olanları aykırı değer olarak kabul ederiz.
Şimdi gelelim aykırı değerlerden kurtulmaya.
1-Silme
Direk veri setinden aykırı değerleri silebiliriz ama az veri setinde bu pek de sağlıklı olmayacaktır.
2-Baskılama yöntemi
Silme yerine veriyi kaybetmemek için baskılama yöntemine başvurabiliriz. Bu yöntemde ise belirlediğimiz eşik değerlerle aykırı değerleri değiştirebiliriz.
Çok değişkenli Aykırı Değer Analizi
Tek başına aykırı olamayacak bazı değerler birlikte ele alındığında bu durum aykırılık yaratıyor olabilir. İşte bundan dolayı aykırı değerlere çok değişkenli olarak bakmak gerekir.
Bunun için Local Outliar Factor(LOF) yöntemi kullanılır. LOF yöntemi gözlemleri bulundukları konumda yoğunluk tabanlı skorlayarak buna göre aykırı değer olabilecek değerleri tanıma imkanı sağlar.
Eksik Değerler (Missing Values)
Gözlemelerde eksiklik olması durumunu ifade eder. NaN, NA olarak karşı çıkan değerlerdir diğer bir ifade ile. Aşağıda da gözlemleyebilirsiniz.
Gelelim Eksik Değer Problemi Nasıl Çözülür? Sorusuna.
1-Silme
Yine silme yöntemi karşımıza çıkıyor ancak veri kaybetme tehlikesi ile karşı karşıyayız.
2-Değer Atama Yöntemleri
Diğer bir yöntem değer atama. Bu yöntemde eksik değerleri veri setinin mod, medyan, ortalama değerleriyle değiştirerek yeni değerler atayabiliriz, yaygın bir yöntemdir.
3-Tahmine Dayalı Yöntemeler
Makine öğrenmesine dayalı değer atama yöntemleridir.
Encoding
Encoding, değişkenlerin temsil şekillerinin değiştirilmesidir.
Label encoding, elimizdeki kategorik değişkenin sınıflarını 0–1 (Binary Encoding) şeklinde veya değişkenlerin üstünlüğü varsa 0–1–2–3–4… şeklinde kullanacak olduğumuz yöntemlerin anlayacağı dile çevirme işlemidir.
One-Hot Encoding
Değişkenlerin bir biri üzerinde üstünlüğü yoksa ölçüm probleminden kurtulmak için one-hot encoding uygulanır. Yani bir kategorik değişkenlerin sınıfları yeni değişkenlere dönüştürme işlemidir. Ama burada dikkat edilmesi gereken bir şey var ki o da dummy değişken tuzağına düşmemek.
Bu yüzden One-Hot Encoding’i uygularken kullanacak olduğumuz metotlarda drop first diyerek ilk sınıfı drop ederek ortaya çıkabilecek olan dummy değişken tuzağından kurtuluruz. Dummy değişken tuzağı ne demek derseniz ise oluşturmuş olduğumuz değişkenlere dummy (kukla) değişkenler denir.
Bu kukla değişkenler birbiri üzerinde oluşturulabilir olursa bu durumda ortaya bir ölçme problemi çıkmaktadır. Birbiri üzerinden oluşturulan değişkenler yüksek bir korelasyona sebep olacaktır. Bundan dolayı dummy değişken oluşturulurken ilk sınıf veri setinden düşürülür ve birbiri üzerinden oluşturma durumu ortadan kaldırılmaya çalışılır.
Rare Encoding
Veri setindeki bir kategorik değişkenin sınıflarındaki az değerleri(nadir değerleri) kendimizin belirlediği bir eşik değerine göre (oran ya da frekans) bir araya getirme işlemidir.
Yukarıda görüldüğü gibi D,E,G,H,L değişkenleri bir araya getirilmiş RARE(D,E,G,H,L) değişkeni oluşturulmuş.
Özellik Ölçeklendirme (Feature Scaling)
Özellik ölçeklendirmedeki temel amacı değişkenler arasındaki ölçüm farklılığını gidermektir. Neden?
- Kullanılacak olan yöntemlere değişkenleri gönderirken onlara eşit muamele yapılmasını gerektiğini bildirmemiz gerekiyor. Bundan dolayı bir standartlaştırmaya ihtiyacımız var.
- Özellikle Gradient Descent kullanılan algoritmaların train sürelerini kısaltmak için ölçeklendirmeye ihtiyacımız var.
- Uzaklık temelli yöntemlerde büyük değerlere sahip değişkenler dominantlık sergilemektedir yani ezicilik sergilemektedir. Özellikle KNN/ K-Means ve PCA gibi uzaklık temelli ya da benzer-benzemezlik temelli bazı yöntemler kullanılıyor olduğunda burada ölçeklerin birbirinden farklı olması durumu yapılacak olan uzaklık-yakınlık, benzerlik-benzemezlik hesaplarında yanlılığa sebep olmaktadır.
Dolayısıyla yapacak olduğumuz işlem değişkenleri standartlaştırma işlemidir ve bunun sebebi eşit şartlarda yaklaşmak, eğitim süresini hızlandırmak ve özellikle uzaklık temelli yöntemlerde yanlılığın önüne geçmek. Ama ağaca dayı yöntemlerde bir istisna var mıdır derseniz var derim. Ağaca dayalı yöntemlerin birçoğu eksik değerden, aykırı değerden ve standartlaştırılmadan etkilenmezler. Ama elimizdeki projelerin çoğunluğunda ölçeklendirmeyi tercih edebiliriz.
Feature Scaling Metodları
1-MinMax Scaling
Verinin 0 ile 1 arasında değerler aldığı bir durumdur. Burada ‘outlier’ denilen dışta kalan verilere karşı hassasiyet durumu vardır, bu yüzden bu değerlerin fazla olduğu bir durumda iyi bir performans gösteremeyebilir.
2- Robust Scaler
Aykırı değerlere sahip verilerde daha iyi sonuçlar verebilir. Değerler IQR aralığına oturtulur.
3- Standard Scaler
Ortalama değerin 0, standart sapmanın ise 1 değerini aldığı, dağılımın normale yaklaştığı bir metottur.
Feature Extraction
Ham veriden değişken üretmektir. İki kapsamda düşünülebilir.
- Yapısal verilerden değişkenler türetmek
Elimizde zaten belirli bir yapıda olan mevcut değişkenler üzerinden veri veya değişken türetmektir.
2. Yapısal olmayan verilerden değişkenler türetmek
Yapısal olmayan görüntü, ses, yazı verilerden özellik türetmektir. Neden böyle özellikleri türetmek istiyoruz? Numerik değerlerle çalışabiliyoruz ancak elimizde resim, yazı, ses olduğunda bazı öğrenme algoritmalarını kullanmak için bu yapısal olmayan şeyleri matematiksel anlaşılabilecek şeyleri yani numerik temsillere dönüştürmemiz gerekir.
Not: Makine öğrenmesinde ağaca dayalı yöntemlerin birçoğu eksik değerlerden, aykırı değerlerden, standartlaştırmalardan etkilenmezler.
Uzun bir yazı oldu ama gerçek verilerle uğraşırken bu işlemlerin daha uzun zaman aldığını, alması gerektiğini itiraf etmeliyim :)
Kaynak olarak katılımcısı olduğum Data Scientist Bootcamp kurs içeriği kullanılmıştır. Vahit Keskin’e teşekkürü borç bilirim.
Linkedin’den ulaşmak isterseniz :) yaseminderyadilli