Autoencoders ব্যবহার করে Anomaly Detection

Autoencoders - পাইথন ডিপ লার্নিং (Python Deep Learning) - Machine Learning

374

Autoencoders হল একটি ধরনের নিউরাল নেটওয়ার্ক যা একটি ডেটা রিডাকশন টেকনিক হিসেবে কাজ করে। এটি মূলত ডেটার এনকোডিং এবং ডিকোডিং প্রক্রিয়ার মাধ্যমে ডেটার গঠনকে শেখে, এবং সেই গঠনকে পুনরুদ্ধার করতে সক্ষম হয়। Anomaly Detection (অস্বাভাবিকতা শনাক্তকরণ) হল এমন একটি প্রক্রিয়া যেখানে অস্বাভাবিক বা এক্সেপ্টশনাল প্যাটার্ন (অন্যথায় "অ্যানোমালি") চিহ্নিত করা হয়।

Autoencoders, তাদের গঠনগত প্রকৃতির কারণে, Anomaly Detection টাস্কে অত্যন্ত কার্যকরী, কারণ তারা নরমাল ডেটার গঠন শেখে এবং এরপর অস্বাভাবিক ডেটা সনাক্ত করতে সক্ষম হয়। যখন একটি নতুন ডেটা ইনপুট হিসেবে দেওয়া হয়, Autoencoder মডেলটি তা পুনঃপ্রস্তুত (reconstruct) করার চেষ্টা করে, এবং যদি পুনঃপ্রস্তুতকৃত ডেটার সাথে আসল ডেটার মধ্যে পার্থক্য (error) অনেক বেশি হয়, তবে সেটি একটি অ্যানোমালি হিসেবে চিহ্নিত করা হয়।


Autoencoders এবং Anomaly Detection এর প্রক্রিয়া:

Autoencoder দুটি প্রধান অংশ নিয়ে গঠিত:

  1. Encoder: ইনপুট ডেটাকে একটি ছোট (কমপ্যাক্ট) ভেক্টরে রূপান্তরিত করে।
  2. Decoder: সেই কমপ্যাক্ট ভেক্টর থেকে মূল ডেটাকে পুনঃনির্মাণ (reconstruct) করে।

Anomaly Detection এর প্রক্রিয়া:

  1. Training with Normal Data:
    • প্রথমে, Autoencoder মডেলটি শুধুমাত্র নরমাল ডেটা (যে ডেটার মধ্যে অস্বাভাবিক কিছু নেই) ব্যবহার করে প্রশিক্ষিত হয়।
    • Encoder ডেটার মূল বৈশিষ্ট্য শিখে এবং Decoder সেই বৈশিষ্ট্য ব্যবহার করে ডেটা পুনঃনির্মাণ করে।
  2. Reconstruction Error Calculation:
    • মডেলটি পুনঃপ্রস্তুত করার সময়, আসল ডেটা এবং পুনঃপ্রস্তুত ডেটার মধ্যে reconstruction error হিসাব করা হয়। এটি সাধারণত Mean Squared Error (MSE) বা Mean Absolute Error (MAE) দিয়ে মাপা হয়।
    • যদি পুনঃপ্রস্তুত ডেটার সাথে আসল ডেটার মধ্যে পার্থক্য (error) খুব বেশি হয়, তবে এটি একটি অ্যানোমালি হিসেবে চিহ্নিত হয়।
  3. Threshold Setting:
    • একটি থ্রেশহোল্ড (threshold) নির্ধারণ করা হয় যা পুনঃপ্রস্তুতকৃত ডেটা এবং আসল ডেটার মধ্যে যে error গ্রহণযোগ্য, তার সীমা নির্ধারণ করে।
    • Low reconstruction error ইন্ডিকেট করে যে ডেটাটি নরমাল, এবং high reconstruction error ইন্ডিকেট করে যে ডেটাটি অস্বাভাবিক (অ্যানোমালি)।

Autoencoders ব্যবহার করে Anomaly Detection এর জন্য কোড উদাহরণ:

এখানে একটি সাধারণ Autoencoder মডেল তৈরি করা হয়েছে যা TensorFlow/Keras ব্যবহার করে অ্যানোমালি ডিটেকশন টাস্কের জন্য ট্রেনিং করা হবে। আমরা একটি সিম্পল ডেটাসেট (যেমন MNIST) ব্যবহার করব:

import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

# 1. MNIST ডেটা লোড করা
(x_train, _), (x_test, _) = tf.keras.datasets.mnist.load_data()
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

# 2. ডেটাকে ফ্ল্যাট করা (28x28 পিক্সেল -> 784)
x_train = x_train.reshape((x_train.shape[0], -1))
x_test = x_test.reshape((x_test.shape[0], -1))

# 3. Autoencoder মডেল তৈরি করা
input_dim = x_train.shape[1]  # 784 পিক্সেল
encoding_dim = 32  # এনকোডারের আউটপুট সাইজ

input_layer = Input(shape=(input_dim,))
encoded = Dense(encoding_dim, activation='relu')(input_layer)
decoded = Dense(input_dim, activation='sigmoid')(encoded)

autoencoder = Model(input_layer, decoded)

# 4. Autoencoder কম্পাইল করা
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

# 5. মডেল ট্রেনিং করা
autoencoder.fit(x_train, x_train, epochs=50, batch_size=256, validation_data=(x_test, x_test))

# 6. মডেল ব্যবহার করে পুনঃপ্রস্তুত করা
x_train_pred = autoencoder.predict(x_train)
x_test_pred = autoencoder.predict(x_test)

# 7. Reconstruction error হিসাব করা
train_error = np.mean(np.abs(x_train - x_train_pred), axis=1)
test_error = np.mean(np.abs(x_test - x_test_pred), axis=1)

# 8. থ্রেশহোল্ড সেট করা এবং অ্যানোমালি শনাক্ত করা
threshold = np.percentile(train_error, 95)  # 95th percentile

# অ্যানোমালি শনাক্তকরণ
anomalies = test_error > threshold

# ফলাফল দেখানো
print(f"Number of anomalies detected: {np.sum(anomalies)}")

কোড ব্যাখ্যা:

  1. ডেটা লোড এবং প্রিপ্রসেসিং:
    • আমরা MNIST ডেটাসেট ব্যবহার করছি, যা হাতের লেখা ডিজিটের ছবি ধারণ করে। ডেটা 0 থেকে 1 এর মধ্যে স্কেল করা হয় এবং 28x28 পিক্সেল ইমেজগুলোকে 784 (28x28) দৈর্ঘ্যের ভেক্টরে রূপান্তরিত করা হয়।
  2. Autoencoder মডেল তৈরি:
    • একটি সিম্পল autoencoder তৈরি করা হয়েছে যেখানে ইনপুট এবং আউটপুট লেয়ার উভয়ই 784 ডিমেনশনাল। এর মধ্যে একটি encoding layer রয়েছে, যা ডেটাকে কমপ্যাক্ট করে।
  3. Loss function:
    • আমরা binary_crossentropy loss function ব্যবহার করছি কারণ ডেটা বাইনারি স্কেলড (0 থেকে 1) রয়েছে এবং এই ধরনের ডেটার জন্য এটি সাধারণত কার্যকরী।
  4. Reconstruction Error:
    • Autoencoder মডেলটি ইনপুট ডেটা পুনঃপ্রস্তুত (reconstruct) করার চেষ্টা করে এবং reconstruction error হিসাব করে। এখানে আমরা Mean Absolute Error (MAE) ব্যবহার করছি, যা ইনপুট এবং আউটপুটের মধ্যে পার্থক্যকে পরিমাপ করে।
  5. Threshold and Anomaly Detection:
    • আমরা ট্রেনিং ডেটার উপর ভিত্তি করে একটি threshold (উদাহরণস্বরূপ, 95th percentile error) সেট করেছি, এবং যদি টেস্ট ডেটার reconstruction error সেই থ্রেশহোল্ডের উপরে হয়, তাহলে সেটি অ্যানোমালি হিসেবে চিহ্নিত হয়।

Advantages of Using Autoencoders for Anomaly Detection:

  1. Unsupervised Learning:
    • Autoencoders অস্বাভাবিকতা শনাক্ত করার জন্য unsupervised learning পদ্ধতি ব্যবহার করে, তাই অ্যানোমালি লেবেলিংয়ের জন্য অতিরিক্ত ডেটা প্রয়োজন হয় না।
  2. Effective in Complex Data:
    • Autoencoders জটিল ডেটার মধ্যে প্যাটার্ন শিখতে সক্ষম, তাই বিভিন্ন ধরনের অ্যানোমালি শনাক্ত করতে পারে।
  3. Flexibility:
    • এটি যে কোনো ডেটার উপর কার্যকরী হতে পারে, যেমন ইমেজ, টাইম সিরিজ, এবং অন্যান্য ধরনের বৈশিষ্ট্যপূর্ণ ডেটা।

সারাংশ:

Autoencoders দিয়ে Anomaly Detection একটি শক্তিশালী পদ্ধতি। তারা নরমাল ডেটা থেকে গঠন শেখে এবং অস্বাভাবিক (anomalous) ডেটা শনাক্ত করতে পারে যখন পুনঃপ্রস্তুতকৃত ডেটার সাথে আসল ডেটার মধ্যে বড় পার্থক্য থাকে। এটির মাধ্যমে Unsupervised Learning ভিত্তিতে অ্যানোমালি শনাক্তকরণ সহজ এবং কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...