Aykırı değer bir veri setinde diğer gözlemlerden çok farklı veya çok uzak gözlemlere denir. Aykırı değer bir çok farklı nedenden ötürü ortaya çıkabilir. Örneğin bir kişi bir formda yaşını yazarken bir sıfır fazladan yazdığını düşünelim. Veri setinde ki yaş sütununda bu değer aykırı değer olarak adlandırılır. Aykırı değer barındıran gözlemler veri setindeki değişkenlerin bazı istatistiklerini doğrudan etkiler. Örneğin yaş sütunu bir aykırı değer barındırıyor ise aykırı değer yaş değişkeninin aralığını, ortalamasını ve varyansını doğrudan etkiler. Bu nedenle aykırı değerler herhangi bir veri bilimi projelerinde, makine öğrenmesi modellerinde yanlılığa ya da düşük başarım sonuçlarına neden olur. Keşifsel veri analizi (exploratory information evaluation) sırasında aykırı değerler tespit edilmeli ve aykırı değer problemi ileriki aşamalara geçmeden çözülmelidir.
Yukarıda da bahsettiğim gibi aykırı değerlerin tespiti veri bilimi projeleri için önemlidir. Aykırı değer tespiti için bir çok farklı yöntem vardır. Bu yöntemleri aşağıda görebilirsiniz.
Görsel Yöntemler
Keşifsel veri analizi sırasında veri setleri bir çok farklı grafikle görselleştirilir. Her bir değişken için ayrı bir şekilde oluşturulan grafikler veri seti hakkında bir çok bilgi verir. Bu yöntemlerden ilki kutu grafikleridir(field plot). Kutu grafikleri değişkenin en yüksek(max), en düşük(min), ortanca(median) ve çeyreklikleri(quartiles) doğrudan gösterir. Kutu grafiği en düşük ve en yüksek değer hakkında bilgi verdiği için aykırı değerleri doğrudan görebiliriz. Bir diğer görselleştirme yöntemi ise saçılım grafiğidir(scatter plot). Saçılım grafiğinde her bir gözlem bir nokta olarak gösterilir. Veri setinde aykırı bir değer var ise diğer gözlemlerden ayrı bir şekilde grafik üzerinde görüneceği için aykırı değer tespitinde önemli bir yöntemdir. Histogram grafikleri sayısal değişkenleri görselleştirirken belli aralıklarda sütunlara ayırıp sütunların frekanslarını görselleştirdiği için tekrar çok aykırı bir değer varsa diğer verilerden daha ayrı bir noktada görüneceği için aykırı değerler çok hızlı bir şekilde tespit edilebilir. Yazının en altına eklediğim Github repository linkine tıklayarak Python dilinde yaptığım örnek görselleştirmeleri görebilirsiniz.
İstatistiksel Yöntemler
İstatiksel yöntemler kullanılarak aykırı değerler tespit edilebilir. Aykırı değer tespiti için bir çok farklı istatistiksel yöntemler kullanılabilir.
Bunların en başında z-score gelir. Z-score, bir değerin ortalamaya ne kadar(kaç standart sapma) uzakta olduğunu ölçer. Eğer değer çok uzaktaysa aykırı değer olarak kabul edilir. Z-score ile aykırı değer tespiti oldukça kolay ve hızlıdır. Z-score regular dağılım varsayımı gerektirir ve çok değişkenli verilerde kullanılamaz.
Bir diğer yöntem ise Çeyrekler Arası Açıklığa (Interquartile Vary) bakmaktır. 1. çeyrek (1st quartile) ve 2. çeyrek(2nd quartile) arasında veri setinin yarısı bulunmaktadır. Bu aralığın 1.5 katı dışında kalan veriler aykırı değer olarak kabul edilir. Dayanıklı ve dağılıma bağımlı değildir. Küçük veri setlerinde de zayıftır.
Bir diğer yöntem ise Mahalanobis mesafesidir. Mahalanobis mesafesi çok değişkenli verilerde her bir gözlemin merkeze olan uzaklığı kovaryans yapısını dikkate alarak ölçer. Bu mesafe büyük ise aykırı değer kabul edilir.
Makine Öğrenmesi Tabanlı Yöntemler
Makine öğrenmesi yöntemleri kullanarak da aykırı değerler tespit edilebilir. Aykırı değer tespit edebilmek için bir çok farklı yöntem vardır.
Örneğin İzole Orman(Isolation Forest), aykırı değerler veri kümesinden daha kolay ve az ayrım ile izole edilebilir. Rasgele ormanlar(random forest) üzerinde çalışır. Sayısal veriler üzerinde çalışır. Hızlıdır, ve yüksek boyutlarda etkilidir.
Bir diğer yöntem ise Tek-Sınıf SVM(One-Class SVM)’dir, veri uzayında tüm regular gözlemleri kapsayan bir sınır belirlenir. Sınır dışında kalan her gözlem aykırıdır. Bu yöntemin teorik temeli güçlüdür fakat büyük veri setlerinde yavaş olabilir. Sayısal veriler üzerinde çalışır.
Bir diğeri ise DBSCAN(Density-Based mostly Spatial Clustering of Purposes with Noise) yöntemidir. Yeterli yoğunluktaki veri noktaları kümelenir. Yoğunluk dışında kalan noktalar aykırı değer olarak kabul edilir.
Son yöntem ise Autoencoder’dır. Autoencoder veriyi sıkıştırıp yeniden üretir. Aykırı değerler yüksek yeniden yapılandırma hatası verir çünkü mannequin onları öğrenemez. Karmaşık ilişkileri öğrenebilir fakat büyük verilerde daha verimli çalışır.
Yazının bu kısmında aykırı değerler ile başa çıkma yöntemlerinden bahsedeceğim. Aykırı değerler ile başa çıkarken amacımız aykırı değerlerin etkisini tamamı ile kaldırmak veya mümkün olduğunca azaltmaktır. Burada tüm yöntemleri anlatmayacağım fakat anlattığım her yöntemin uygulamasının yazının en altında paylaştığım Github Repository linkinde bulabilirsiniz.
Silme (Elimination)
İlk akla gelen yöntem aykırı değerin veri setinden çıkarılmasıdır. Aykırı değer veri setinden çıkarıldığında makine öğrenmesi yöntemleri daha iyi sonuçlar verir fakat bu yöntem küçük veri setlerinde örneklem sayısını yüksek oranda azaltacağı için çok fazla kullanılmaz. Büyük bir veri setiniz var ise aykırı değerleri veri setinden silebilirsiniz.
Dönüştürme (Transformation)
Bir diğer yöntem veri setinin dönüştürülmesidir. Veri setinin dönüştürülmesi veri setini simetrik hale getireceği için aykırı değerlerin etkisi büyük ölçüde azalır. Dönüşümlere örnekleri aşağıda listeledim:
- Log Dönüşümü: Logaritmik dönüşüm, büyük değerleri sıkıştırarak veri dağılımını simetrik hale getirir. Özellikle sağa çarpık (right-skewed) veriler için kullanılır. Sıfırdan büyük pozitif sayılar üzerinde uygulanabilir.
- Karekök Dönüşümü: Karekök dönüşümü, pozitif değerleri yumuşatarak uç değerlerin etkisini azaltır. Verinin varyansını azaltmak ve daha regular dağılıma yaklaştırmak için kullanılır. Negatif veya sıfır değerlerde uygulanamaz.
- Field-Cox Dönüşümü: Field-Cox dönüşümü, farklı λ (lambda) parametreleri ile log ve karekök dönüşümünün genelleştirilmiş halidir. Amaç veriyi regular dağılıma mümkün olduğunca yaklaştırmaktır. Sadece pozitif değerlerde çalışır ve parametre λ optimize edilerek belirlenir.
Yerine Koyma (Imputation)
Son yöntem ise yerine koymadır. Bu yöntemde aykırı değerler kayıp verilermiş gibi davranılır ve çeşitli istatistikler ile aykırı değerler doldurularak etkileri azaltılır. Kayıp veri doldurma yöntemlerini anlattığım medium makaleme buradan ulaşabilirsiniz.
Yazıda bahsettiğim Gihub Repository’sine buradan ulaşabilirsiniz.