LOF (Local Outlier Factor), yerel aykırı değer faktörü anlamına gelir. LOF algoritması, veri kümesindeki her bir veri noktasının yerel yoğunluk profiline dayanarak aykırı değerleri tespit etmek için kullanılan bir aykırı değer tespit algoritmasıdır.
LOF algoritması, bir veri noktasının çevresel komşuluk yapısını değerlendirir ve bu noktanın yerel yoğunluk seviyesini hesaplar. Bir veri noktasının yerel yoğunluğu, çevresindeki diğer noktalara olan yakınlığına göre belirlenir. Eğer bir veri noktası çevresindeki diğer noktalara göre beklenenden uzak bir şekilde izole ise, bu nokta bir aykırı değer olarak etiketlenir.
LOF algoritmasının temel prensibi şu adımlarla çalışır:
- Her veri noktası için, belirli bir komşuluk yarıçapı içindeki diğer noktaların sayısı belirlenir. Bu komşuluk yarıçapı, kullanıcı tarafından belirlenir veya otomatik olarak belirlenir.
- Her bir veri noktasının LOF değeri hesaplanır. LOF değeri, bir veri noktasının çevresel komşularının yoğunluğu ile kendi yoğunluğu arasındaki oranı ifade eder. Daha yüksek LOF değerleri, o veri noktasının aykırı olduğunu gösterir.
- LOF değerleri incelenir ve kullanıcının belirlediği bir eşik değere göre aykırı değerler tespit edilir.
LOF algoritması, veri madenciliği ve aykırı değer tespiti gibi alanlarda yaygın olarak kullanılan bir algoritmadır. Aykırı değerlerin tespiti ve analizi, dolaylı olarak hile tespiti, dolandırıcılık analizi, ağ güvenliği, sağlık analizi ve daha pek çok uygulama alanında kullanılabilir.
“Diamonds” veri setinde LOF algoritması ile aykırı değerleri tespit edelim. “diamonds” veri seti, seaborn kütüphanesinde yer alan örnek bir veri setidir ve içinde elmasların özelliklerini içeren bilgiler bulunmaktadır.
Öncelikle, “diamonds” veri setini yükleyip inceleyelim ve LOF algoritması ile aykırı değerleri tespit edelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import seaborn as sns import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors import LocalOutlierFactor # diamonds veri setini yükle df_diamonds = sns.load_dataset('diamonds') # Veriyi incele print(df_diamonds.head()) # Kullanacağımız sütunları seç (örneğin, carat ve price) selected_columns = ['carat', 'price'] data = df_diamonds[selected_columns] # LOF modelini oluştur lof_model = LocalOutlierFactor(n_neighbors=20, contamination=0.05) # Aykırı değerleri tespit et outliers = lof_model.fit_predict(data) # Aykırı değerlerin indekslerini al outliers_indices = np.where(outliers == -1) # Aykırı değerleri görselleştir plt.scatter(data['carat'], data['price'], color='blue', label='Normal') plt.scatter(data.iloc[outliers_indices]['carat'], data.iloc[outliers_indices]['price'], color='red', label='Aykırı') plt.xlabel('Carat') plt.ylabel('Price') plt.legend() plt.title('LOF ile Aykırı Değerler') plt.show() |
Bu kod örneğinde, “carat” (kütle) ve “price” (fiyat) sütunlarını kullanarak LOF algoritması ile aykırı değerleri tespit ediyoruz ve scatter plot ile görselleştiriyoruz. Aykırı değerler, kırmızı renkle işaretlenmiştir. Aykırı değerlerin tespiti için kullanılan LOF parametrelerini (örneğin, n_neighbors ve contamination) değiştirerek sonuçları gözlemleyebilirsiniz.
İlk Yorumu Siz Yapın