CNN ve RNN Tabanlı Anomali Tespiti

CNN ve RNN Tabanlı Anomali Tespiti

Bu makalede, CNN ve RNN’lerin farklı türlerdeki veri setlerinde anomali tespiti için nasıl kullanılabileceği ele alınacaktır.
Yasemin Arslan01 Eyl 2024

metin, el yazısı, yazı tipi içeren bir resim

Açıklama otomatik olarak oluşturuldu

Created by DALL-E

 

Anomali tespiti, çeşitli veri setlerinde normalden sapmaların, olağandışı olayların veya beklenmeyen desenlerin belirlenmesi sürecidir. Bu tür anomaliler, finans, sağlık, siber güvenlik, üretim ve daha birçok alanda kritik öneme sahiptir. Son yıllarda, Derin Öğrenme teknikleri, özellikle Convolutional Neural Networks (CNN) ve Recurrent Neural Networks (RNN), anomali tespiti görevlerinde etkileyici sonuçlar elde etmiştir. Bu makalede, CNN ve RNN’lerin farklı türlerdeki veri setlerinde anomali tespiti için nasıl kullanılabileceği ele alınacaktır.

 

1. Convolutional Neural Networks (CNN) ile Anomali Tespiti

1.1. Görüntü Verilerinde Anomali Tespiti

CNN’ler, özellikle görüntü verilerinin analizinde ve işlenmesinde oldukça etkilidir. CNN’ler, görüntülerdeki özellikleri otomatik olarak öğrenebilir ve bu sayede anomali tespiti görevlerinde kullanılabilir. Örneğin, bir üretim hattında üretilen parçaların kalite kontrolü sırasında, normal ve kusurlu parçaların görüntüleri kullanılarak bir CNN modeli eğitilebilir. Model, normal parçaların özelliklerini öğrenir ve bu özelliklerden sapma gösteren parçaları anomali olarak belirler.

 

1.2. Zaman Serisi Verilerinde Anomali Tespiti

Geleneksel olarak CNN’ler, zaman serisi verileriyle doğrudan ilişkili değildir, ancak 1D Convolutional Neural Networks kullanarak zaman serisi verileri üzerinde de etkili anomali tespiti yapılabilir. Bu yaklaşımda, zaman serisi verileri 1D konvolüsyon katmanları kullanılarak işlenir ve anomaliler tespit edilir. Örneğin, finansal zaman serisi verilerinde ani fiyat değişiklikleri veya siber güvenlik alanında ağ trafiğindeki olağandışı etkinlikler bu şekilde tespit edilebilir.

 

2. Recurrent Neural Networks (RNN) ile Anomali Tespiti

2.1. Zaman Serisi Verilerinde Anomali Tespiti

RNN’ler, özellikle zaman serisi verileri ve ardışık veri noktalarının analizi için uygundur. RNN’ler, önceki zaman adımlarındaki bilgileri hatırlayarak gelecekteki adımları tahmin edebilir. Bu özellikleri sayesinde, anomali tespitinde de etkili bir şekilde kullanılabilirler. Örneğin, üretim süreçlerinde kullanılan makinelerin sensör verileri analiz edilerek anomali tespiti yapılabilir. LSTM (Long Short-Term Memory) ve GRU (Gated Recurrent Unit) gibi gelişmiş RNN türleri, uzun süreli bağımlılıkları daha iyi öğrenerek daha hassas anomali tespiti sağlar.

 

2.2. Metin ve Dil Verilerinde Anomali Tespiti

RNN’ler, dil modelleri ve metin verileri üzerinde de güçlüdür. Doğal dil işleme (NLP) alanında, metin verilerindeki anomalilerin tespiti, sahte haberlerin tespiti veya spam e-posta filtrasyonu gibi uygulamalar için RNN’ler kullanılabilir. Model, normal dil kullanımını öğrenir ve bu normdan sapma gösteren metinleri anomali olarak işaretler.

 

3. CNN ve RNN Kombinasyonları ile Anomali Tespiti

Bazı durumlarda, CNN ve RNN’nin birlikte kullanılması, daha etkili anomali tespiti sağlayabilir. Özellikle video verileri gibi hem zamansal hem de mekansal bilgileri içeren verilerde, CNN-RNN kombinasyonları oldukça başarılıdır. Örneğin, güvenlik kameralarından gelen video akışlarında, CNN katmanları görüntülerdeki mekansal özellikleri öğrenirken, RNN katmanları zamansal bağımlılıkları öğrenir. Bu sayede, videolardaki anormal hareketler veya olaylar daha etkili bir şekilde tespit edilebilir.

 

4. Uygulama Alanları

4.1. Sağlık

CNN ve RNN tabanlı anomali tespiti, sağlık alanında teşhis ve hasta takibi için kullanılabilir. Örneğin, MRI veya CT taramaları gibi tıbbi görüntülerdeki anormalliklerin tespiti veya hastaların vital bulgularındaki anormal değişikliklerin izlenmesi.

 

4.2. Finans

Finansal piyasalarda, hileli işlemlerin tespiti veya borsa fiyatlarındaki ani dalgalanmaların belirlenmesi için bu yöntemler kullanılabilir.

 

4.3. Siber Güvenlik

Ağ trafiğindeki olağandışı etkinliklerin tespiti, siber saldırıların önlenmesi ve güvenlik ihlallerinin erken uyarı sistemleri ile belirlenmesi için CNN ve RNN modelleri kullanılabilir.

 

4.4. Üretim ve Endüstri

Üretim hatlarındaki makinelerin sensör verileri analiz edilerek, olası arızaların önceden tespiti ve bakım süreçlerinin optimize edilmesi sağlanabilir.

CNN ve RNN tabanlı anomali tespiti, çeşitli veri türlerinde ve uygulama alanlarında büyük potansiyele sahiptir. Her iki model türü de kendine özgü avantajlara sahiptir ve belirli senaryolarda bir arada kullanılarak daha kapsamlı ve etkili anomali tespiti sağlanabilir. Gelecekte, bu alandaki gelişmeler, daha hassas ve güvenilir anomali tespit sistemlerinin geliştirilmesine katkıda bulunacaktır.

 

ZAMAN SERİSİ VERİLERİNDE ANOMALİ TESPİTİ UYGULAMA

 

1.Gerekli Kütüphaneleri Yükleme

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import LSTM, Dense
from sklearn.preprocessing import MinMaxScaler

 

2. Sentetik Veri Oluşturma

# Normal veri oluşturma
np.random.seed(42)
normal_data = np.sin(np.linspace(0, 50, 1000)) + np.random.normal(0, 0.5, 1000)

# Anomali veri ekleme
anomaly_data = normal_data.copy()
anomaly_data[600:620] += 5  # Anomali ekleme

# Veriyi pandas DataFrame'e çevirme
data = pd.DataFrame(anomaly_data, columns=['value'])
data['timestamp'] = pd.date_range(start='1/1/2020', periods=len(data), freq='H')
data.set_index('timestamp', inplace=True)

# Veriyi görselleştirme
plt.figure(figsize=(15, 5))
plt.plot(data.index, data['value'])
plt.title("Zaman Serisi Verisi (Anomaliler İçerir)")
plt.xlabel("Zaman")
plt.ylabel("Değer")
plt.show()

 

3. Veriyi Ölçeklendirme

scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

def create_dataset(data, time_step=1):
    X, y = [], []
    for i in range(len(data)-time_step-1):
        a = data[i:(i+time_step), 0]
        X.append(a)
        y.append(data[i + time_step, 0])
    return np.array(X), np.array(y)

time_step = 10
X, y = create_dataset(scaled_data, time_step)
X = X.reshape(X.shape[0], X.shape[1], 1)

train_size = int(len(X) * 0.67)
test_size = len(X) - train_size
X_train, X_test = X[0:train_size], X[train_size:len(X)]
y_train, y_test = y[0:train_size], y[train_size:len(y)]

 

4. LSTM Modelini Oluşturma ve Eğitme

model = Sequential()
model.add(LSTM(50, return_sequences=True, input_shape=(time_step, 1)))
model.add(LSTM(50, return_sequences=False))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error')

model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test), verbose=1)

 

5. Anomali Tespiti İçin Tahmin ve Görselleştirme

train_predict = model.predict(X_train)
test_predict = model.predict(X_test)

# Veriyi eski ölçeğine döndürme
train_predict = scaler.inverse_transform(train_predict)
test_predict = scaler.inverse_transform(test_predict)
y_train = scaler.inverse_transform([y_train])
y_test = scaler.inverse_transform([y_test])

# Hata hesaplama
train_error = np.abs(y_train[0] - train_predict[:, 0])
test_error = np.abs(y_test[0] - test_predict[:, 0])

# Anomali tespiti
threshold = 1.0
anomalies_train = train_error > threshold
anomalies_test = test_error > threshold

# Görselleştirme
plt.figure(figsize=(15, 5))
plt.plot(data.index[:len(y_train[0])], y_train[0], label='Gerçek (Eğitim)')
plt.plot(data.index[:len(y_train[0])], train_predict[:, 0], label='Tahmin (Eğitim)')
plt.scatter(data.index[:len(y_train[0])][anomalies_train], y_train[0][anomalies_train], color='red', label='Anomaliler (Eğitim)')
plt.title("Eğitim Verisi ve Anomaliler")
plt.xlabel("Zaman")
plt.ylabel("Değer")
plt.legend()
plt.show()

plt.figure(figsize=(15, 5))
plt.plot(data.index[len(y_train[0]):], y_test[0], label='Gerçek (Test)')
plt.plot(data.index[len(y_train[0]):], test_predict[:, 0], label='Tahmin (Test)')
plt.scatter(data.index[len(y_train[0]):][anomalies_test], y_test[0][anomalies_test], color='red', label='Anomaliler (Test)')
plt.title("Test Verisi ve Anomaliler")
plt.xlabel("Zaman")
plt.ylabel("Değer")
plt.legend()
plt.show()

Bu örnek kod, LSTM tabanlı bir model kullanarak zaman serisi verilerinde anomalileri tespit etmeyi göstermektedir. Veriyi ölçeklendirdik, modelimizi eğittik ve ardından tahminler yaparak anomalileri belirledik. Aynı yaklaşım, CNN tabanlı modeller ve diğer veri türleri için de uyarlanabilir.

Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.