کد متلب شناسایی ایمیل های اسپم با تئوری بیز

در این محصول ما اسپم و فیلترکردن آن با استفاده از روش Naive Bayesian  را انجام داده ایم و در واقع هدف ما در این کار شناسایی ایمیل های اسپم با تئوری بیز می باشد. ما دسته بندی ایمیل ها به دو گروه اسپم و غیر اسپم را با استفاده از تئوری بیز در متلب شبیه سازی و کدنویسی کرده ایم و جهت آموزش در دسترس عموم قرار داده ایم.

 

ایمیل های اسپم:

  • پیغامهایی در Inbox شما هستند که شما آن ها را نخواسته و زمانی را برای بیرون انداختن آنها صرف می کنید.
  • در مقابل آن : نامه های الکترونیکی معتبر قرار میگیرند
  • ۷۵-۸۰% از حجم نامه های الکترونیکی را اسپم ها (spam) تشکیل می دهند
  • باعث ایجاد ترافیک شده و فضای حافظه و قدرت محاسباتی را از بین می برد

برخی از اهداف ایمیل های اسپم:

  • بیشتر به منظور اهداف اقتصادی است
  • تبلیغ برای یک کالای خاص، سرویس خاص و یا یک ایده خاص
  • فریب کاربران برای استفاده از اطلاعات محرمانه آنها ß phishing
  • انتقال یک نرم افزار خرابکار به کامیپوتر کاربر (مثلاً ویروس)
  • ایجاد یک خرابی به صورت موقتی در Mail-Server
  • ایجاد ترافیک
  • پخش مطالب غیراخلاقی

اسپم ها دائما در حال تغییر محتوا و شکل هستند، برای اینکه توسط آنتی اسپم ها شناسایی نشوند.

 

  • در یادگیری ماشینی برای عمل دسته بندی (Classification) از نمونه داده هایی (ایمیل هایی) که از قبل فراهم شده است(داده آموزش یا training) و هر یک دسته (کلاس،برچسب) مشخص دارد، استفاده کرده و دسته (کلاس) یک نمونه جدید (نمونه تست) را تعیین می کنیم.

 

فیلترینگ اسپم بیزی یک روش آماری برای فیلترینگ ایمیل است.این روش از دسته‌بندی کننده نایو بیز (Naive Bayes) برای تشخیص ایمیل‌های اسپم استفاده می‌کند.

در حالت کلی روال کار فیلترینگ اسپم بیزی را میتوان بصورت زیر تعریف کرد:

کلمات مشخص در ایمیل‌های غیر اسپم و اسپم دارای احتمال خاصی هستند. برای مثال اکثر کاربران در ایمیل‌های اسپم با کلمه “Viagra” برخورد می‌کنند اما به ندرت در ایمیل‌های عادی با این کلمه برخورد می‌کنند. فیلتر از قبل این احتمالات را نمی‌داند و باید آن‌ها را یاد بگیرد و برای خود بسازد. برای یادگیری فیلتر، کاربر باید به طور دستی مشخص کند که آیا ایمیل جدید اسپم است یا نه. فیلتر در هنگام یادگیری برای تمام کلمات، احتمال را محاسبه و آن‌ها را در دو دسته مختلف اسپم و غیر اسپم در پایگاه دادهٔ خود قرار می‌دهد. برای مثال فیلترهای اسپم بیزی احتمال بسیار بالایی برای کلمات “Viagra” و “refinance” در نظر می‌گیرند اما احتمال بسیار پایینی برای کلماتی که در ایمیل‌های صحیح دیده می‌شود محاسبه می‌کنند، نظیر نام و نام خانوادگی یا نام دوستانتان.

بعد ازیادگیری، احتمال کلمه‌های ایمیل (به وسیلهٔ توابع احتمال) برای مشخص کردن این که ایمیل در چه دسته‌ای قرار می‌گیرد استفاده می‌شود. هر کلمه در ایمیل به احتمال اسپم بودن ایمیل کمک می‌کند، بنابراین کلمات پر تکرار در ایمیل‌ها نقش مهمی در تشخیص اسپم بودن ایمیل دارند. به این کمک کردن احتمال posterior گویند که براساس قضیه بیز محاسبه می‌گردد. سپس برای تمام کلمات احتمال اسپم بودن ایمیل محاسبه می‌گردد و اگر کل احتمالات از مقدار آستانه (۹۵۵٪) بیشتر شد، فیلتر برچسب اسپم بودن به آن ایمیل می‌زند.

 

ما در این شبیه سازی از آنجا که تمرکزمان بر روی فهم روال کار بوده است ، فیلترینگ اسپم بیزی را بصورت ساده پیاده سازی کرده ایم و قادر است ایمیل های اسپم و غیر اسپم را شناسایی کند.

 

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

 

-ابتدا تعدادی ایمیل اسپم و ایمیل معتبر را در نظر میگیریم  (برای سادگی کار هر ایمیل را بصورت تعدادی حرف در نظر گرفته ایم)

-یک دیکشنری از تعدادی لغت را در نظر میگیریم که مدل با استفاده از این لغات ، ایمیل ها را دسته بندی کند  (برای سادگی لغات را نیز بصورت حرف در نظر گرفته ایم)

-حال به سراغ مرحله آموزش الگوریتم میرویم. در این مرحله ، الگوریتم یاد میگیرد که هر کلمه اگر در یک ایمیل باشد به چه احتمالی ان ایمیل اسپم یا غیر اسپم می باشد.

 

ابتدا برای کلمات موجود در دیکشنری مشخص میکنیم که آن کلمه در هر کدام از ایمیل ها وجود دارد یا خیر. برای این کار یک ماتریس که به تعداد کلمات سطر و به تعداد ایمیل ها ستون دارد میسازیم. اگر یک کلمه در ایمیل باشد خانه متناظر ان را یک وگرنه صفر قرار میدهیم. که اصطلاحا به این ماتریس، ماتریس بردار ویژگی گفته میشود.

در ادامه احتمال هر یک از کلمات موجود در دیکشنری را محاسبه میکنیم. یعنی احتمال اینکه کلمه i ام در یک ایمیل اسپم باشد را محاسبه میکنیم و همچنین احتمال اینکه کلمه i ام در یک ایمیل غیر اسپم باشد را محاسبه میکنیم.

 

حال ایمیل جدید را بررسی میکنیم که آیا اسپم است یا خیر. طبق روش بیز باید احتمال زیر را محاسبه کنیم یعنی احتمال اینکه ایمیل جدید اسپم باشد و احتمال اینکه ایمیل جدید غیراسپم باشد. در نهایت هر کدام از این دو احتمال که مقدار بیشتری داشته باشد ایمیل جدید در همان کلاس خواهد بود.

 

تصویری از کد و خروجی :

کد متلب شناسایی ایمیل های اسپم با تئوری بیز

نکته: در راستای سادگی کار ما هر ایمیل را بصورت یک بردار در خود کد تعریف کرده ایم. ما میتوانیم به برنامه این قابلیت را اضافه کنیم که ایمیل ها را از فایل بخواند و دسته بندی کند.(در صورت نیاز به توسعه برنامه با ما تماس بگیرید)

 

در نهایت برنامه میتواند کلاس ایمیل جدید یا همان ایمیل تست را مشخص کند :

کد متلب شناسایی ایمیل های اسپم با تئوری بیز

جهت دریافت این محصول (کد متلب شناسایی ایمیل های اسپم با تئوری بیز) از لینک زیر اقدام کرده و بصورت آنلاین محصول را خریداری و دانلود نمایید:

به همراه فایل کد ، یک فایل توضیحات کد نیز در اختیار شما قرار میگیرد تا بتوانید روال کد و کار را یاد گرفته و درک کنید.

 

کليک جهت خريد کالا ، به منظور پذيرش قوانين و مقررات سايت مي باشد .

شماره تماس : ۰۹۱۲۰۵۶۳۲۶۴

ایمیل: matlab24ir@gmail.com

نظر خود را اینجا بنویسید!

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

telegramchanel کانال تلگرام  با عضویت در کانال تلگرام از مطالب آموزشی و مطالب جدید وب سایت مطلع شوید

@matlab24Dotir

جهت عضویت کلیک کنید