Anomali Tespiti 3. Bölüm (Çoklu Anomali Tespiti)
Merhabalar, anomali tespiti serisinin 3. bölümü olarak çoklu anomali tespitini yani bir değişken için değil de birden fazla değişkenlere bağımlı olacak şekilde yapılan anomali tespitine değineceğim. Çoklu anomali tepsitinde temel olarak kullanılan algoritmalardan Local Outlier Foctor ve Isolation Forest yöntemlerine göz atacağız. İyi okumalar dilerim.
a) Local Outlier Factor (LOF)
Değişkenlerin birbiri arasındaki ilişkilerde hangi noktalara daha çok benzemediğini bulmaya çalışır. Bir kaç metrik üzerinden formülü yazıkmaktadır. Önceklikle metriklerden sonra ise formüle geçerek uygulama gerçekleştirelim.
K-Mesafesi (K-Distance)
Öncelikle k değeri hesaplama yaparken kaç değere bakacağımızı söyler. Burada k değerini seçmek önemlidir. Çünkü k’yı çok büyük seçersek anomali değer tespitinde çok büyük bir alan üzerinden işlem yapacağı için anomali değerleri atlayabilir. Çok küçük seçersek bu sefer de çok küçük bir alandan sorumlu olduğu için anomalilere duyarlı hale gelir.
K-mesafesi ise bir A noktasını baz alarak A’ya göre k kadar komşunun her biri için uzaklık değerleri (öklid, manhattan …) ölçülmelidir. Sonrasında bu uzaklık değerleri küçükten büyüğe sıralanı. Bu sıralamada k’nıncı değer k-mesafesini vermektedir.
Basit bir örnek üzerinden k-mesafesini gösterelim.
A’adında bir noktamız olsun ve k = 3 olduğunu varsayalım. A’nın en yakın k kadar komşu noktaları da a1,a2,a3 olsun.
İki boyutlu gözlemde bu şekilde bir dağılıma sahip olsunlar. Şimdi yapmamız gereken ise diğer noktaların (a1,a2,a3) A mesafesine uzaklıklarını hesaplamak. Bundan sonrasını python üzerinden yapalım.
Uzaklıklara bakıp küçükten büyüğe doğru sıraladığımızda
a1 = a3 < a2 olacaktır. Bu sıralamadan k’nıncı yani 3. değer ise A’nın a2'e olan uzaklığıdır. Yani k-mesafesini 3.1622776601683795 yuvalarsak 3.16 bulmuş oluruz.
Erişilebilirlik Mesafesi (Reachability distance)
Erişebilirlik mesafesi ise normal ölçülen mesafe ile k-mesafesini arasından büyük olanın seçildiği mesafedir.
reachability_distance(A,B) = max(k_distance, distance(A,B))
Yukarıdaki işlemler üzerinden a1, a2, a3 noktalarının her biri için erişilebilirlik mesafelerini hesaplayalım.
Görüldüğü üzere hep k-mesafesi büyük olduğu için erişilebilirlik mesafesi hep k-mesafesi oldu. Bunun aksi bir durumu göstermek gerekirse:
Bu resimde y’nin erişilebilirlik mesafesi k-mesafesi kadarken z’nin kendi mesafesi kadardır.
Yerel erişilebilirlik yoğunluğu ( Local reachability density)
A noktası için işlem yapacak olursak A noktasına göre k sayısı dahilinde olan sayıların erişilebilirlik değerleri toplamlarının k değerine bölünmesi sonucunda elde ettiğimiz değerin tersi bize yerel erişilebilirlik yoğunluğunu (LRD) vermektedir.
Şimdi ise A değeri için yerel erişilebilirlik yoğunluğunu hesaplayalım.
Local Outlier Factor (LOF)
Bu işlemde A noktasının LRD’si ile komşu noktalarının LRD’si kıyaslanacaktır. Bu işlemi de aşağıdaki formül ile gerçekleştireceğiz.
Uygulayıp görelim.
Komşu noktalar için LRD değerlerini bulduğumuza göre artık A için LOF değerini bulabiliriz.
A’nın LOF değerini hesaplamış olduk. Bunu her bir nokta için yapıp her birinin LOF değerini hesapladıktan sonra genel olarak LOF değeri 1'in altında olan noktalar iyi bir ilişkiye üstündekiler için de 1.5 altı idare eder, 1.5 üstü olanlara da anomali değer diyebiliriz. Tabi ki bu sayılar veriden ve kişiden kişiye değişebilir.
b) Isolation Forest
Isolation Forest anomali değerlerinin normal değerlerden az ve önemli ölçüde farklı olduğu gerçeğini kullanır. Karar ağaçları temelinde Isalation Forest oluşturulur. Ağaçta bir dal oluşturmak için önce rastgele bir özellik seçilir. Daha sonra, bu özellik için rastgele bir bölünmüş değer (min ve max değer arasında) seçilir. Eğer verilen gözlem bu özelliğin daha düşük bir değerine sahipse, seçilen gözlem sol dalı, yoksa sağ dalı takip eder. Bu işleme tek bir nokta izole edilene veya belirlenen maksimum derinliğe ulaşılana kadar devam edilir.
Anomali skoru, ormandaki tüm ağaçlar ve bu ağaçlarda noktanın ulaştığı derinlik esas alınarak oluşturulur.
Şimdi ise Isolation Forest ile anomali tespiti durumunu uygulayarak gösterelim.
Veri setimizi ekleyelim. Verisetimiz bazı parametreler üzerinden şarap kalitesi analizi için oluşturulmuş bir veri setidir.
Şimdi ise gereksiz öznitelikleri çıkartarak PCA ile 2 ve 3 boyutta görselleştirerek Isolation Forest yapmadan önceki haline bir bakalım.
PCA yapmadan önce Standardizasyon işlemini gerçekleştirelim.
PCA’in çözümleme durumunu inceleyelim.
Neden PCA yapmadan önce Standardizasyon yaptık, yapmasaydık ne olurdu?
Görüldüğü beklediğimiz azalan sayıda değil de farklı yerlerde artış gösteren PCA oranları aldık. Bunun nedeni verilerin varyansının farklı olması bundan dolayı bir zemin eşit değerlendirilmemesi. Bu durumu düzelmek için standardizasyon yaparız çünkü standardizasyon verileri ortalamada toplayarak varyansı 1 yapar yani hepsini eşit olarak kabul ederek sabit bir değişkenlik kazandırır. Bütün değerleri aynı oran skalasında ele alır.
Şimdi ise görselleştirmemizi gerçekleştirelim.
Şimdi veriye baktığımıza göre Isolation Forest uygulayalım ve sonrasında anomali tespitin yapılacağına bakalım.
Isolation Forest işleminin nasıl yapıldığını görmek için grafik kullanarak gözlemleyelim.
Okuduğunuz için teşekkür ederim. Herkese iyi günler.
Referanslar
- https://analyticsvidhya.com/blog/2021/07/anomaly-detection-using-isolation-forest-a-complete-guide/
- https://towardsdatascience.com/anomaly-detection-with-isolation-forest-visualization-23cd75c281e2
- https://towardsdatascience.com/outlier-detection-with-isolation-forest-3d190448d45e
- https://www.veribilimiokulu.com/local-outlier-factor-ile-anormallik-tespiti/