İzolasyon Ormanı ile Anormallik Tespiti - Python Uygulaması

Begüm Özkısaoğlu Aksu
Machine Learning Turkiye
4 min readJul 30, 2022

Herkese merhaba 🖐 Bu yazımda anormali tespit için “İzolasyon Ormanı” yönteminden bahsedeceğim. İyi okumalar 🙂

Makine Öğreniminde Anormallik Algılama

Anormallik algılama algoritmalarının Veri Analitiği ile Veri Bilimi alanlarında önemli kullanım durumları mevcuttur. Buna örnek verecek olursak kredi kartı dolandırıcılığını tespit etme ve önleme, sensör kayıtlarında sıra dışıları tespit ederek arıza, alarm sistemleri kurma, tıbbi tanı vb. alanlarında kullanıldığını görmekteyiz.

Büyük ve gerçek veri setleri ile çalışıldığında sadece verilere bakarak anlamlı bir analiz yapmak mümkün değildir. Zor ve karmaşık yapılara sahip olabilirler. Bu nedenle de anormallik tespit uygulamaları makine öğrenmesin de önemli bir yeri vardır.

İzolasyon Ormanı

İzolasyon ormanı, teori olarak karar ağacı algoritmasına dayanmaktadır. Ve verilerde bulunan aykırı değerleri izole ederek anormalliği algılamak için kullanılan denetimsiz bir öğrenme algoritması olarak tanımlanmaktadır. Veri seti içerisinden rastgele bir öznitelik seçilerek, bu özelliğin maksimum ve minimum değerleri arasında rastgele bir değer ve bu değer üzerinden aykırı değeri izole etmektedir.

Algoritma Adımları:

  1. Rastgele bir öznitelik q ve bir p değeri seçilir,
  2. q<p kullanarak X’i iki alt kümeye bölünür. Alt kümeler, T’de bir sol alt ağaca ve bir sağ alt ağaca karşılık gelmektedir.
  3. Geçerli düğümde yalnızca bir örnek bulunana veya geçerli düğümdeki tüm değerler aynı değerlere sahip olana kadar, 1–2 adımları yineleme olarak tekrarlanır.

Diğer aykırı değer tespit yöntemlerinde olduğu gibi bir anormallik skoru hesaplanmalıdır. İzolasyon ormanında bu skor şu şekilde belirlenir:

Burada:

h(x) = x veri noktasının yol uzunluğu,

E(h(x)) = Yol uzunluğunun beklenen veya ortalama değeri,

c(n) = Bir İkili Arama Ağacında başarısız aramanın ortalama yol uzunluğunu,

n = Harici düğümlerin sayısını temsil etmektedir.

İkili Arama Ağacı(BTS) ‘na benzer İzolasyon Ormanı ağacı düğümünün sonlanması, yol uzunluğu açısından BTS ağacında başarısız aramaya benzemektedir.

Belirli bir nokta için anormallik skoru s(x,n) hesaplandıktan sonra, şu kriterlerle anormallik tespit edilir:

  1. s(x,n) 1'e yakınsa, x anormaldir.
  2. s(x,n) 0.5'ten küçükse, x normaldir.
  3. Veri kümesindeki tüm noktalar için s(x,m) 0.5'e yakınsa, veriler herhangi bir anormallik içermemektedir.

İzolasyon Ormanı algoritmasında, ağaçlar tüm veri kümesinden değil de, örneklenmiş bir veri kümesinden oluşturulduğunda iyi çalışmaktadır.

Python Örneği

İzolasyon Ormanı algoritması için Scikit-learn’de bir modül bulunmaktadır.

Bu analizde veri setini kendimiz oluşturacağız. Bunun için Scikit-learn’den make_blobs fonksiyonunu kullanacağız ve rastgele aykırı değerler ekleyeceğiz.

Algoritmamızı eğitime sokuyoruz.

Anormallikleri tahmin ediyoruz. Tahmin işlevi, X’teki her örneğe 1 veya -1 değerini atayacaktır. 1 değeri noktanın normal olduğunu, -1 değeri ise bunun bir anormallik olduğunu gösterir.

Artık tahmin işlemini de yaptığımıza göre görsel açıdan incelemesine geçebiliriz.

Bu görselde anormal olarak etiketlenen noktalar kırmızı, normal noktalar ise mavidir. Şimdi ise anormallik skorları göz önüne alarak algoritmanın performansını biraz daha iyi anlayalım.

Bunun için score_samples işlevini kullanıyoruz. Bu yöntemi kullandığımızda oluşturulan skorlar negatif değerlere karşılık geleceği için tutarlılık adına skorları -1 ile çarpıyoruz.

Bu görselleştirmede, ortadaki kırmızı kümeye daha yakın olan noktaların daha düşük anormallik skorlarına ve daha uzaktaki noktaların ise daha yüksek anormallik skorlarına sahip olduğunu söyleyebiliriz.

Bu yazımda anormali tespit için “İzolasyon Ormanı” yönteminden ayrıntılı olarak bahsettim. Ve daha sonrasında daha iyi anlaşılması için Python’da basit bir uygulama yaptık. Uygulamanın tüm kodlarına buradan ulaşabilirsiniz.

--

--