آرمان صالحی
آرمان صالحی
خواندن ۴ دقیقه·۲ روز پیش

One-Class SVM for Anomaly Detection

در این مقاله به موضوع تشخیص ناهنجاری ها (Anomaly Detection) بوسیله الگوریتم One-Class SVM میپردازیم و مدل بهینه سازی این الگوریتم را در قالب ریاضیات و همچنین کتابخانه های زبان Python بررسی خواهیم کرد.

فهرست مطالب

- تعریف ناهنجاری

- تعریف الگوریتم SVM و مدل بهینه سازی آن

  • توابع Kernel
  • حاشیه (Margin) و Support Vector

- تعریف الگوریتم One-Class SVM و مدل بهینه سازی آن

- مقایسه الگوریتم های SVM و One-Class SVM

- تشخیص ناهنجاری با استفاده از تکنیک های Outlier Detection و Novelty Detection

- مزایا و معایب الگوریتم One-Class SVM

تعریف ناهنجاری

ناهنجاری به داده‌هایی اطلاق می‌شود که به طور قابل‌توجهی از رفتار یا الگوی کلی داده‌های عادی فاصله دارند. به عنوان مثال، تراکنش بانکی غیرعادی در یک حساب معمولاً به عنوان یک ناهنجاری شناسایی می‌شود. چنین داده‌هایی ممکن است نشان‌دهنده خطاهای سیستمی، رفتارهای غیرمعمول یا وقایع استثنایی باشند. شناسایی ناهنجاری‌ها در حوزه‌هایی مانند امنیت سایبری، تشخیص تقلب در تراکنش‌های مالی، و شناسایی بیماری‌های پزشکی اهمیت بسزایی دارد.

تعریف الگوریتم SVM و مدل بهینه‌سازی آن

ماشین بردار پشتیبان (SVM) یک الگوریتم یادگیری نظارت‌شده است که برای دسته‌بندی و رگرسیون مورد استفاده قرار می‌گیرد. هدف این الگوریتم یافتن یک ابرصفحه بهینه است که بتواند داده‌ها را به بهترین شکل ممکن تفکیک کند. این ابرصفحه باید حداکثر حاشیه ممکن بین نمونه‌های هر کلاس را تضمین کند، به گونه‌ای که داده‌ها با فاصله‌ای مناسب از این صفحه قرار گیرند.

همانطور که در شکل مشخص است اندازه تابع برای ابر صفحه برابر صفر است و برای هر یک از کلاس های سمت چپ و راست تابع مقدار 1- و 1+ را در نظر میگیریم؛ همچنین میدانیم که بردار W در تابع ابرصفحه همان بردار نرمال است.

حاشیه (Margin) و Support Vector

-حاشیه (Margin): فاصله بین ابرصفحه تصمیم‌گیری و نزدیک‌ترین نمونه‌های هر کلاس است. SVM تلاش می‌کند این حاشیه را بیشینه کند تا جداسازی دقیق‌تری انجام شود. در این قسمت یک مفهوم دیگری به اسم Soft Margin نیز وجود دارد که به سیستم امکان خطا و نادیده گرفتن داده های نویز را میدهد تا در نهایت پیش بینی و عملکرد بهتری داشته باشیم و ابر صفحه بهینه تری را رسم کند، برای این منظور از متغیر کمکی Slack استفاده میکنیم.

وجود داده نویز موجب شده نتوانیم یک ابر صفحه بهینه میان کلاس ها ایجاد کنیم
وجود داده نویز موجب شده نتوانیم یک ابر صفحه بهینه میان کلاس ها ایجاد کنیم

- بردار پشتیبان (Support Vector): نمونه‌هایی هستند که در مرز حاشیه قرار دارند و تعیین‌کننده موقعیت ابرصفحه هستند.

تابع بهینه سازی ابر صفحه در SVM
تابع بهینه سازی ابر صفحه در SVM

توابع Kernel

توابع کرنل ابزارهایی هستند که SVM را قادر می‌سازند تا در فضاهای غیرخطی نیز به خوبی عمل کند. این توابع ضرب داخلی داده‌ها را در یک فضای ویژگی بالاتر محاسبه می‌کنند تا امکان ایجاد مرزهای تصمیم‌گیری پیچیده‌تر فراهم شود. کرنل‌های متداول عبارت‌اند از:

- کرنل خطی: مناسب برای داده‌های قابل تفکیک خطی.

- کرنل چندجمله‌ای: برای داده‌های با روابط غیرخطی کاربرد دارد.

- کرنل گاوسی (RBF): برای داده‌های پیچیده با الگوهای غیرخطی مناسب است.

- کرنل سیگموید: در برخی از کاربردهای خاص، مانند شبکه‌های عصبی، استفاده می‌شود.

تعریف الگوریتم One-Class SVM و مدل بهینه‌سازی آن

الگوریتم One-Class SVM برای شناسایی ناهنجاری‌ها یا نمونه‌های جدید است. این الگوریتم با استفاده از داده‌های نرمال، یک مرز تصمیم‌گیری یا ابرصفحه ایجاد می‌کند که داده‌های نرمال را از داده‌های غیرمعمول جدا می‌کند. برای مثال، این الگوریتم می‌تواند در شناسایی تراکنش‌های غیرعادی در بانکداری یا تشخیص حملات سایبری مورد استفاده قرار گیرد.

تابع بهینه سازی ابر صفحه در One-Class SVM
تابع بهینه سازی ابر صفحه در One-Class SVM

تفاوت در مدل بهینه‌سازی

مدل بهینه‌سازی در One-Class SVM به گونه‌ای طراحی شده که:

- مرز تصمیم‌گیری را به گونه‌ای تعیین کند که داده‌های نرمال در سمت درستی از ابرصفحه قرار گیرند.

- اثر داده‌های غیرنرمال یا نقاط پرت را به حداقل برساند.

یکی از تفاوت‌های کلیدی، وزن‌دهی متفاوت مجموع اسلک‌ها (Slack Variables) است که حساسیت مدل به ناهنجاری‌ها را تنظیم می‌کند. همچنین، پارامتر p که نشان‌دهنده افست ابرصفحه از مبدأ است، نقش مهمی در تعیین موقعیت مرز تصمیم‌گیری ایفا می‌کند.

مقایسه الگوریتم‌های SVM و One-Class SVM

- هدف:

    • الگوریتم SVM برای دسته‌بندی داده‌ها بین چندین کلاس طراحی شده است.
    • الگوریتم One-Class SVM برای شناسایی داده‌های غیرمعمول یا نمونه‌های ناشناخته کاربرد دارد.

- داده‌های ورودی:

    • الگوریتم SVM نیاز به داده‌های برچسب‌دار از تمام کلاس‌ها دارد.
    • الگوریتم One-Class SVM تنها از داده‌های نرمال برای آموزش استفاده می‌کند.

- حاشیه (Margin):

    • در SVM برای جدا کردن کلاس‌ها تعریف می‌شود.
    • در One-Class SVM برای جدا کردن داده‌های نرمال از داده‌های ناهنجار استفاده می‌شود.


تشخیص ناهنجاری با استفاده از تکنیک‌های Outlier Detection و Novelty Detection

- تکنیک Outlier Detection: این تکنیک به شناسایی نقاطی می‌پردازد که از الگوی کلی داده‌های مشاهده‌شده فاصله دارند. معمولاً در تحلیل داده‌های موجود به کار می‌رود.

کد Python

-تکنیک Novelty Detection: این روش بر شناسایی نمونه‌های جدید و ناشناخته‌ای تمرکز دارد که در داده‌های آموزشی دیده نشده‌اند. این تکنیک برای محیط‌های پویا و داده‌های متغیر مناسب است.

کد Python

مزایا و معایب One-Class SVM

مزایا

  1. توانایی یادگیری از داده‌های بدون برچسب ناهنجاری.
  2. انعطاف‌پذیری بالا با استفاده از توابع کرنل برای داده‌های غیرخطی.
  3. عملکرد مناسب در شناسایی الگوهای نادر و نقاط غیرمعمول.

معایب

  1. حساسیت بالا به انتخاب پارامترها، مانند نوع کرنل و مقادیر مربوط به اسلک، که ممکن است به تنظیمات دقیقی نیاز داشته باشد.
  2. نیاز به تنظیم مدل برای دستیابی به عملکرد بهینه.
  3. پیچیدگی محاسباتی بالا، خصوصاً در مجموعه داده‌های بزرگ.



machine learningsvm
شاید از این پست‌ها خوشتان بیاید