در این مقاله به موضوع تشخیص ناهنجاری ها (Anomaly Detection) بوسیله الگوریتم One-Class SVM میپردازیم و مدل بهینه سازی این الگوریتم را در قالب ریاضیات و همچنین کتابخانه های زبان Python بررسی خواهیم کرد.
فهرست مطالب
- تعریف ناهنجاری
- تعریف الگوریتم SVM و مدل بهینه سازی آن
- تعریف الگوریتم 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): نمونههایی هستند که در مرز حاشیه قرار دارند و تعیینکننده موقعیت ابرصفحه هستند.
توابع Kernel
توابع کرنل ابزارهایی هستند که SVM را قادر میسازند تا در فضاهای غیرخطی نیز به خوبی عمل کند. این توابع ضرب داخلی دادهها را در یک فضای ویژگی بالاتر محاسبه میکنند تا امکان ایجاد مرزهای تصمیمگیری پیچیدهتر فراهم شود. کرنلهای متداول عبارتاند از:
- کرنل خطی: مناسب برای دادههای قابل تفکیک خطی.
- کرنل چندجملهای: برای دادههای با روابط غیرخطی کاربرد دارد.
- کرنل گاوسی (RBF): برای دادههای پیچیده با الگوهای غیرخطی مناسب است.
- کرنل سیگموید: در برخی از کاربردهای خاص، مانند شبکههای عصبی، استفاده میشود.
تعریف الگوریتم One-Class SVM و مدل بهینهسازی آن
الگوریتم One-Class SVM برای شناسایی ناهنجاریها یا نمونههای جدید است. این الگوریتم با استفاده از دادههای نرمال، یک مرز تصمیمگیری یا ابرصفحه ایجاد میکند که دادههای نرمال را از دادههای غیرمعمول جدا میکند. برای مثال، این الگوریتم میتواند در شناسایی تراکنشهای غیرعادی در بانکداری یا تشخیص حملات سایبری مورد استفاده قرار گیرد.
تفاوت در مدل بهینهسازی
مدل بهینهسازی در One-Class SVM به گونهای طراحی شده که:
- مرز تصمیمگیری را به گونهای تعیین کند که دادههای نرمال در سمت درستی از ابرصفحه قرار گیرند.
- اثر دادههای غیرنرمال یا نقاط پرت را به حداقل برساند.
یکی از تفاوتهای کلیدی، وزندهی متفاوت مجموع اسلکها (Slack Variables) است که حساسیت مدل به ناهنجاریها را تنظیم میکند. همچنین، پارامتر p که نشاندهنده افست ابرصفحه از مبدأ است، نقش مهمی در تعیین موقعیت مرز تصمیمگیری ایفا میکند.
مقایسه الگوریتمهای SVM و One-Class SVM
- هدف:
- دادههای ورودی:
- حاشیه (Margin):
تشخیص ناهنجاری با استفاده از تکنیکهای Outlier Detection و Novelty Detection
- تکنیک Outlier Detection: این تکنیک به شناسایی نقاطی میپردازد که از الگوی کلی دادههای مشاهدهشده فاصله دارند. معمولاً در تحلیل دادههای موجود به کار میرود.
کد Python
-تکنیک Novelty Detection: این روش بر شناسایی نمونههای جدید و ناشناختهای تمرکز دارد که در دادههای آموزشی دیده نشدهاند. این تکنیک برای محیطهای پویا و دادههای متغیر مناسب است.
کد Python
مزایا و معایب One-Class SVM
مزایا
معایب