X
تبلیغات
وکیل جرایم سایبری

IDS: Intrusion Detection System

اعتبار سنجی ضربدری k-fold (K-Fold Cross Validation )

اعتبار سنجی ضربدری (Cross Validation) یکی از مهمترین تکنیک هایی است که به طور گسترده توسط دانشمندان علم داده مورد استفاده قرار می گیرد.مسائله ای که در هنگام کار  با مدل های یادگیری ماشین (machine learning model ) وجود دارد این است که شما می نمی توانید کارایی مدل خود را تا زمانی که کارایی آن را بر روی یک مجموعه داده مستقل تست نکرده اید بدست آورید ( مجموعه داده ای که برای آموزش training مدل یادگیری ماشین مورد استفاده قرار نگرفته باشد).
اعتبار سنجی ضربدری برای کمک به تخمین کارایی مدل یادگیری ماشین می باشد و یکی از معروف ترین انواع اعتبار سنجی ضربدری اعتبار سنجی k-fold می باشد.
اعتبار سنجی ضربدری چیست ؟
اعتبار سنجی ضربدری یک تکنیک بسیار مفید برای ارزیابی کارایی مدل های یادگیری ماشین است.این روش کمک می کند متوجه شویم  به چه صورت  مدل یادگیری ماشین که ایجاد کرده ایم  به یک مجموعه داده مستقل تعمیم داده می شود.ممکن است شما از این تکنیک برای پیش بینی و تخمین زدن دقت و کارایی مدل خود در دنیای واقعی  استفاده کنید.زمانی که یک  مسائله یادگیری ماشین به ما داده می شود ، معمولا با دو مجموعه داده سر کار داریم که داده های شناخته شده (training data set  ) و داده های ناشناخته (test data set ) می باشند.با استفاده از ارزیابی ضربدری Cross Validation می توانیم مدل یادگیری ماشین خود  را در فاز آموزش (training ) برای چک نمودن کارایی و بدست آوردن یک ایده و نظر از چگونگی تعمیم مدل یادگیری ماشین خود به داده های مستقل تست نماییم ( testing ).در واقع ارزیابی و صحت مدل یادگیری ماشین خود را در همان مرحله آموزشی انجام می دهیم.
در اعتبار سنجی ضربدری ابتدا مجبور هستیم تا مجموعه داده آزمایشی اصلی را به دو بخش تقسیم کنیم :
  •     مجموعه آموزشی اعتبار سنجی ضربدری Cross validation training set
  •     مجموعه آزمایشی اعتبار سنجی ضربدری یا مجموعه اعتبار سنجی Cross validation testing set
در این روش مدل یادگیری ماشین ما در مجموعه آموزشی اعتبار سنجی ضربدری آموزشی می بیند و پیشبینی ها و کارایی مدل در  برابر مجموعه اعتبار سنجی validation set مورد ارزیابی قرار می گیرد. شما نسبت به اینکه دقت و کارایی پیش بینی های مدل یادگیری ماشینتان چقدر دقیق است آگاه می شوید. در واقع پیش بینی های مدل شما در مجموعه ارزیابی و برچسب های واقعی داده در مجموعه اعتبارسنجی validation set. مورد ارزیابی قرار می گیرد. برای کاهش واریانس ، چندین مرحله اعتبار سنجی ضربدری با استفاده  از مجموعه های آموزشی (training ) اعتبار سنجی ضربدری و مجموعه های آزمایشی ( testing ) اعتبار سنجی ضربدری انجام می گیرد.در نهایت نتیجه همه مراحل میانگینی برای تخمین صحت و کارایی مدل یادگیری ماشین ما خواهد بود

اعتبار سنجی ضربدری k-fold
اعتبار سنجی ضربدری k-fold یکی از عمومی ترین انواع اعتبار سنجی ضربدری می باشد که به طور گسترده ای در یادگیری ماشین مورد استفاده می باشد. اعتبار سنجی ضربدری k-fold با استفاده از گام های زیر انجام می شود.

۱- مجموعه داده اصلی را به k زیر مجموعه مساوی تقسیم می کنیم.هر زیر مجموعه یک fold نامیده می شود.اجازه بدهید که فولدها را به صورت f1,f2,….,fk نام گذاری نماییم.

    ۱-    For i=1 to i=k

    فولد fi  را به عنوان مجموعه اعتبارسنجی نگاه می داریم و همه k-1 فولد باقی مانده را  در مجموعه آموزشی اعتبار سنجی ضربدری Cross validating training set نگاه داری می کنیم.
    ۲- مدل یادگیری ماشین خود با استفاده از مجموعه آموزشی اعتبارسنجی ضربدری آموزش می دهیم و سپس دقت و کارایی مدل خود را با استفاده از  اعتبار سنجی نتایج پیشبینی در مقابل مجموعه اعتبار سنجی Validation sert محاسبه می نماییم
۲-حالا دفت و کارایی مدل یادگیری ماشین خود را با استفاده از بدست آوردن میانگین همه دقت هاو صحت های بدست آمده از همه موارد k از اعتبار سنجی ضربدری تخمین می زنیم
در متد اعتبار سنجی ضربدری k-fold ، همه ورودی ها در محموعه داده آموزشی برای هم آموزش و همچنین اعتبار سنجی validating به کار می رود ، هر ورودی تنها یک بار برای اعتبار سنجی مورد استفاده قرار می گیرد.
نکته اینکه معمولا برای k عدد ۱۰ در نظر گرفته می شود ، اما این یک قانون نیست و k می تواند هر عددی در نظر گرفته شود

منبع :

ارزیابی دسته بندی ها ( Classifier Evaluation )

اگر شما با مسائل مربوط به تجزیه و تحلیل داده ها سر و کار دارید احتمالا با دسته بندی های مختلف classifier ، مجموعه های ویژگی مختلف و حتی شاید مجموعه های پارامتر متفاوت دست و پنجه نرم می کنید و در نهایت به جایی می رسید که باید درباره ارزیابی کارهای خود فکر کنید.دسته بندی که من ایجاد کرده ام چقدر خوب کار می کند ؟ چیزی که قرار است به آن بپردازیم این عبارت است که چگونه باید کارایی دسته بندی خود را اندازه گیری کنیم
یک جواب آشکار برای این سوال استفاده از صحت و درستی accuracy دسته بندی ماست.تعداد نمونه هایی که به درستی دسته بندی شده اند.ما یک دسته بند داریم که نمونه هایی آزمایشی را دریافت می کند و یک دسته را برای هر کدام از نمونه ها فرض می کند(قرار می دهد) در واقع به هر یک از داده هایی که داریم یک دسته در نظر می گیرد و آنها را در یک گروه قرار می دهد.در هر نمونه آزمایشی حدسی که دسته بند زده است یا صحیح است یا اشتباه.ما به سادگی تعداد تصمیمات صحیحی که دسته بند مان گرفته است را شماره می کنیم و بر تعداد کل نمونه های آزمایشی تقسیم می کنیم و نتیجه حاصل دقت دسته بند ما خواهد بود.این خیلی ساده است ، اکثر غریب به اتفاق نتایج تحقیقاتی دقت accuracy را گزارش می دهند و بسیار از پروژه های عملی نیز به همین صورت عمل می کند.این یک رویه و معیار پیش فرض است.
اشتباه این روش کجاست ؟ دقت و کارایی یکی از ساده ترین روش های اندازه گیری است که باعث سردرگرمی و اشتباه در بسیاری از مسائل دنیای واقعی است.در حقیقت بهترین راه حل استفاده از دقت و کارایی و یک معیار فراگیری برای ارزیابی است.

اشتباه روش دقت و کارایی در کجاست ؟
برای نشان دادن مسائل ، اجازه بدهید با یک مثال با دو کلاس و دسته شروع کنیم.هر دسته بند برای  حوزه این مسائله نمونه ایی از دو کلاس را مشاهده میک ند و خروجی نیز یکی از دو امکان Y یا N است صرف نظر از مجموعه آزمایشی و دسته بندی خاص مسائله شما می توانید هر یک از تصمیمات زیر را بگیرید :
۱- نمونه های مثبتی که به عنوان مثبت دسته بندی شده اند( نمونه های صحیحی که به درستی دسته بندی شده اند ) که true positive نامیده می شوند
۲- نمونه های مثبتی که به اشتباه ، منفی دسته بندی شده اند(نمونه های صحیحی که به اشتباه به صورت اشتباه دسته بندی شده اند) false negative
۳-یک نمونه  منفی که به عنوان منفی دسته بندی شده  ( نمونه های اشتباهی که به درستی به صورت اشتباه دسته بندی شده اند)
true negative
۴-یک نمونه منفی به صورت نادرست به عنوان مثبت دسته بندی شده است( نمونه اشتباهی که به اشتباه به عنوان صحیح  دسته بندی شده است)false  positive
 می توانیم یک ماتریکس ۲×۲ با ستونهای با عنوان دسته های صحیح ( واقعی) و سطرحهایی به عنوان دسته های فرض شده ( آنهایی که حد زده ایم و به نمونه آزمایشی نسبت داده ایم)ایجاد کنیم.این ماترکیس معروف به confusion matrix یا contingency table (جدول احتمال) می باشد.نمونه آن ار در زیر می بینیم :بدنه ماریکس شامل شمارش تعداد دسته بندی های صحیح و شمارش تعداد دسته بندی های ناصحیح می باشد.
از طریق این جدول دقت و کارایی به راحتی با جمع قطرها و تقسیم آن بر کل مقادیر جدول  بدست می آید :
Accuracy=True Positive+true negative/True Positive+True Negative+False positive+False Negative


مشکل با عدم تعادل دسته(کلاس ، طبقه )
دقت و کارایی با همه نمونها رفتار مشابهی دارد و تنها درصدی از پاسخ های صحیح را گزارش می دهد. دقت و کارایی زمانی می تواند مفید باشد که ما با مجموعه های داده متعادل ( یا تقریبا متعادل) سر و کار داشته باشیم.چیزی مثل 50/50 و اگر بیشتر از این بود و تعادلی وجود نداشت دقت و کارایی  accuracyما را گمراه می کنند.مجموعه داده ای را فرض می کنیم که با نسبت 99:1 از منفی ها و مثبت ها تشکیل شده است.به سادگی می توان حدس زد که دسته ای را که 99٪ دقت و کارایی را در بر دارد چه دسته است.
در دنیای واقعی ، حوزه مسائل غیر متعادل یک قانون و واقعیت است تا یک استثنا. خارج از محیط آکادمیک هرگز با یک مجموعه داده متعادل برخورد نخواهید کرد.دلیل آن هم بسیار آشکار و سر راست است.در بسیاری از موارد ، یادگیری ماشین برای پردازش جمعیت هایی شامل تعداد زیادی نمونه منفی ( ناخوشایند) و تعداد کمتری نمونه مثبت ( مورد دلخواه خوشایند )مورد استفاده قرار میگیرد.نمونه ای برای چنین حوزه هایی تشخیص تقلب هستند  ( ۱٪ تقلب یک مسائله و مشکل خیلی بزرگ است ) ، غربالگری HIV (در آمریکا حدود 0.4٪ است) ، پیش بینی تشخیص خرابی دیسک درایو (تقریبا 1٪ در سال )، نرخ خرابی دستگاه ههای یک کارخانه ( 0.1٪) و موارد بسیاری دیگر که در اینجا آورده نشده است.همانطور که در مثال ها می بینید عدم تعادل در هر کجا وجود دارد پس تقریبا با هیچ مجموعه داده ای روبه رو نخواهیم بود که در آن تعادل وجود داشته باشد .
چگونه این عدم تعادل در مجموعه های داده ارزیابی دسته بندی ما را پیچیده می کند. در ادامه با یک مثال مسائله را روشنتر می نماییم. می خواهیم کدام بدانیم که احتمالا کدام یک از مشتریان به زودی قرارداد خود را کنسل می نماید. نیمه بالایی دیاگرام جمعیت آموزشی Training population را نشان می دهد.ما جمعیت را به دو نیمه یکی مثبت و دیگری منفی متعادل نموده ایم و در نهایت دو دسته A و B را آموزش می دهیم.هر کدام از آنها میزان درصد خطای مشابهی را ایجاد می کند ، بنابراین در این مجموعه داده خاص دقت و کارایی آنها یکسان است، همانگونه که بوسیله ناحیه قرمز در نیمه بالایی نمایش داده شده است.
دیاگرام نیمه پایینی دو دسته مشابه در محیط آزمایشی testing را نمایش می دهد که در آن جمعیت از مردم که انصراف می دهند ۱۰ ٪ و جمعیتی که انصراف نمی دهند ۹۰٪ می باشد.این نمونه بسیار به واقعیت نزدیک تر است.توجه کنید که حالا A از وضعیت بسیار بدتری برخوردار است زیرا خطاهای مربوط به آن False Positive هستند.( مقادیری که صحیح نیستند ولی به اشتباه مثبت ارزیابی شده اند).دو درس از این مثال می توان گرفت.اول اینکه باید در مورد دسته بندی خود بیشتر از آنچه دقت accuracy به ما می گوید بدانیم و دوم اینکه صرف نظر از جمعیتی که شما عملیات آموزش را در آن انجام داده اید ، باید همیشه در یک جمعیت واقعی نیز آزمایش انجام داده و دسته بندی های خود را مورد امتجان قرار دهید.
مسائله با هزینه های خطا ( اشتباه ) :
مسائله دومی نیز وجود دارد.فرض کنید بر روی دامنه مسائله کلیک بر روی آگهی های تبلیغاتی مطالعه انجام می دهیم. نرخ مورد اتظار ( دسته پیشین class prior ) کلیک تقریبا 0.09٪ است. این بدان معناست که دسته بندی که بدون قید شرط می گوید نه کاربر کلیک نخواهد کرد دارای دقت 99.91٪ است.چه چیزی در خصوص این تفسیر اشتباه است. به طور جدی هیچ چیز .این کارایی بسیار عالی است البته اگر دقت و کارایی accuracy همان چیز باشد که گفته شد و مورد توجه ماست.اما مسائله این است که ما به بعضی از کلاس ها توجه بیشتری نسبت به بقیه داریم.در این مورد به آن 0.09٪ درصدی از مردمی که روی پیام های تبلیغی کلیک می کنند خیلی بیشتر از آن 99.91٪ درصدی که کلیک نمی کنند توجه داریم. برای اینکه در خصوص این موضوع دقیقتر شویم در خصوص اشتباهاتی که ممکن است انجام دهیم بیشتر دقت می کنیم.یک پیام تبلیغاتی را به مردمی نمایش می دهیم که روی آن کلیک نمی کنند  ( False Positive در ماتریکس بالا ) خیلی بد نیست اما نمایش تبلیغات به مردمی که روی آن کلیک خواهند کرد (False Negative ) خیلی بدتر است.هدف قرار دادن صحیح مردم برای یک پیام تبلیغاتی هدف نهایی ما برای ساخت یک دسته بند در اولین قدم است.
هزینه های خطای مختلف در اغلب حوزه ها وجود دارد.در تشخیص دارو ، هزینه تشخیص سرطان هنگامی که موجود نبودن آن( واقعی نبودن آن) نسبت به از دست دادن یک نمونه درست متفاوت است.در دسته بندی اسناد ، هزینه بازیابی یک سند غیر ضروری از هزینه از دست دادن یک سند مرتبط و مورد نظر ما متفاوت است.
در مورد مجموعه های داده عمومی چطور ؟ ( مجموعه داده هایی که برای منظور یادگیری ماشین تهیه شده اند)
اگر شما با پایگاه داده هایی شبیه مجموعه داده های UCI کار کنید ،ممکن است متوجه شوید که مجموعه های داده مشکلاتی را که تا کنون ذکر شد را ندارند ، دسته ها معمولا متعادل هستند و ههنگامی که اطلاعات مربوط به هزینه خطا تهیه می شود ، ه نظر می رسد که دقیق و بدون مشکل هستند.در حالی که این مجموعه های داده از مسائل واقعی بدست آمده اند و تولید شده اند ، در اغلب اوقات قبل از نهایی شدن پاک سازی شده اند و به طور مصنوعی متعادل گردیده و دارای هزینه های خطای دقیق هستند.
معیار های ارزیابی دیگر
در این نقطه قانع شده ایم که بدست آوردن دقت و کارایی دسته بندی با روش های ساده ای که ذکر شد معیار اندازه گیری ضعیفی برای حوزه ها مسائل  در دنیای واقعی هستند پس به همین دلیل معیارهای ارزیابی دیگری بدین منظور توسعه داده شد و این نکته مهم را به خاطر می سپاریم که همه چیز به سادی روشی که در confusion matrix گفته شد نیست.
در ذیل به چند معیار که ممکن است با آن برخورد داشته باشیم ذکر می شود :
true positive rate = TP/(TP+FN) = 1 − false negative rate
false positive rate = FP/(FP+TN) = 1 − true negative rate
sensitivity = true positive rate
specificity = true negative rate
positive predictive value = TP/(TP+FP)
recall = TP / (TP+FN) = true positive rate
precision = TP / (TP+FP)
F-score (میانگین هارمونیک)precision and recall -
F=2*( precision * recall / precision + recall)
G-score (میانگین هندسی-گئومتریک)precision and recall -
در این قسمت مثال هایی از false positive و false negative می آوریم.
امنیت فرودگاه : یک false poitive هنگامی رخ می دهد که تعدادی آیتم مثل کلید و یا سکه به اشتباه به عنوان سلاح در نظر گرفته شد و دستگاه امنیتی شروع به بوق زدن می کند.
کنترل کیفیت : false positive زمانی رخ می هد که یک آیتم با کیفیت خوب دور انداخته شود و false negative هنگامی است که آیتم با کیفیت پایین پذیرش شود
یک نرم افزار آنتی ویروس : false positive زمانی رخ می دهد که فایل های نرمال به عنوان ویروس در نظر گرفته شوند
غربالگری پژشکی : انجام یک تست پزشکی کم هزینه برای گروه بزرگی ازمردم می تواند false positive های بسیاری را رقم بزند ( به شما بگوید بیمار هستید در صورتی که نیستید ) و از شما بخواهد که تست های بیشتری را انجام بدهید.

آنها می گویند که شما انجام داده اید آنها می گویند که شما انجام داده اید
False Negativeآنها صحیح می گویندشما واقعا انجام داده اید
آنها صحیح می گویندfalse positiveشما واقعا انجام نداده اید

معرفی Snort به عنوان یک نرم افزار تشخیص نفوذ پر پایه شبکه

snort یک سیستم تشخیص نفوذ بر پایه شبکه می‌باشد که از متد تشخیص امضا استفاده می نماید و بسته های داده شبکه را برای شناسایی حملات شناخته شده و تطبیق آن‌ها کنترل می کند.snort دارای ویژگی‌هایی است که در ذیل به برخی از آن‌ها اشاره می‌کنم :

۱- Snort قابلیت شخصی سازی و تنظیم دارد.همه عملکردهای داخلی snort ، فایل‌های مربوط به تنظیمات و قوانین مربوط به شناسایی تشیخص نفوذ قابل شخصی سازی می‌باشد و این قابلیت را به کاربر می‌دهد تا snort را بر اساس نیاز های خاص خود و ساختار شبکه خود تنظیم نماید.حتی کاربر می‌تواند در نهایت با استفاده از قابلیت تعریف قوانینی که خود بوجود می‌آورد با حملات جدید نیز مقابله نماید.
۲- گستردگی استفاده از آن. بسیار زیاد  است به طوری که آمار ماهانه دانلود آن به دهها هزار می رسد.
۳- snort یک نرم‌افزار چند سیستم عاملی است و به راحتی بر روی سیستم عامل های مختلف اجرا می شود.

۴-snort به طور مداوم در حال به روز رسانی است.نسخه های جدید ، قوانین حدید برای شناسایی حملات جدید همگی به طور مداوم از طریق وب سایت www.snort.org قابل بارگزاری هستند.


قسمت‌های تشکل دهنده Snort
هدف طراحان Snort تولید یک نرم‌افزار متن باز با کیفیت بالا بوده است که به نظر بسیاری از کارشناسان در این امر موفق بوده اند.در پروسه طراحی Snort توسعه دهندگان انرژی خود را برای استفاده از ابزارهای موجود و توسعه توانایی‌های این ابزارهای برای تولید چیزهای جدید متمرکز نموده اند.حالا فکر می‌کنید مثلاً کدام ابزار موجود.یکی از ابزارهای بسیار کابردی درسیستم های مبتنی بر یونیکس و لینوکس TcpDump می باشد.که وظیفه آن دریافت بسته های داده در شبکه می باشد.خالق snort آقای Marty Roesch از این قابلیت Tcp Dump برای گرفتن بسته ها استفاده نمود و قابلیت آنالیز این بسته ها برای مجموعه‌ای از امضاهای حملات را به آن اضافه نمود.snort از اجزای مختلفی تشکیل شده است که هر جزء وظایف مربوط به خود را انجام می‌دهد که در شکل زیر اجزای آن را مشاهده می نمایید.

قوانین Snort برای خلاف بسیاری از محصولات تجاری مشابه بسیار انعطاف پذیر هستند و کاربر به راحتی می تواند قوانین دلخواه خود را برای شناسایی حملات مورد نظرش تعریف نماید .برای مثال در ذیل  قانون تعریف شده برای شناسایی تروجان SubSeven آورده می شود :
alert tcp $EXTERNAL_NET 27374 -> $HOME_NET any (msg:"BACKDOOR subseven 22"; flags: A+; content: "|0d0a5b52504c5d3030320d0a|"; reference:arachnids,485; reference:url,www.hackfix.org/subseven/; sid:103; classtype:misc-activity; rev:4;)
محتویات قبل از پرانتر به عنوان rule header شناخته می شود و محتویات داخل پرانتر به عنوان انتخاب های قانون Rule Options شناخته می شود.
<< 1 2 3 4 5 ... 9 >>