วันเสาร์ที่ 7 กันยายน พ.ศ. 2562

Mail Spam Detection


      สวัสดีครับหลังจากบทความที่ผ่านมาได้อธิบายเรื่องของหลักการทำงาน Naive Bayes Classification (http://cakeknowledgeblogs.blogspot.com/2019/08/naive-bayes-classification-1.html) วันนี้จะนำความรู้ที่ได้ศึกษามาลองสร้างโปรแกรมสำหรับทำการตรวจสอบเมลล์ที่เป็น Spam กันครับ

"แล้วเมลล์ที่เป็น Spam คืออะไร"
เมลล์ที่เป็น spam (Spam mail) คือ เมลล์ที่ไม่พึงประสงค์อย่างหนึ่ง ซึ่งวัตถุประสงค์ที่ส่งอีเมลล์ลักษณะนี้เพื่อเป็น  การก่อกวน, หรือแม่กระทั้งเป็นการโจมตี โดยการแนบไวรัสมาจากเมลล์ ซึ่งอาจทำให้เกิดความเสียหายแก้ข้อมูลต่อคนที่ไปเปิดอีเมลล์

"แล้วเราจะรู้ได้ไงว่า mail นั้นเป็น spam"
ในการหา mail ใหนว่าเป็น Spam เราสามารถหาได้โดยการนำเอาข้อความทั้งหมดในเมลล์ มาทำการตรวจสอบว่าเป็น spam หรือไม่โดยวิธีในการตรวจสอบนั้นเราจะใช้ Naive Bayes Classification มาช่วยนั่นเอง

โดยสมการ Naive Bayes นั้นจะเป็นดังนี้ครับ


สามารถแปลงเป็นสมการสำหรับตรวจสอบ เมลล์ spam ได้ดังนี้


จากสมการจะเห็นว่าจะเป็นการคูณกันระหว่างความน่าจะเป็นซึ่งหากความน่าจะเป็นมีหลายค่าจะทำให้ผลคูณมีค่าใกล้ศูนย์ จนอาจทำให้คอมพิวเตอร์ปัดเศษกลายเป็น 0 ดังนั้นในการป้องกันเหตุการณ์ดังกล่าวเราจึงใส่ Log ไปในสมการ


 จากคุณสมบัติของผลคูณ Log เท่ากับ ผลรวมของ Log คือ LogMN = LogM + LogN เราจึงสามารถแปลงสมการได้ดังนี้

โดยเราจะเอาข้อมูล email จริงๆมาจากบริษัท Enron Corporation มา Train กัน ตามลิงค์นี้ http://www2.aueb.gr/users/ion/data/enron-spam/  ซึ่งเราจะโหลดไฟล์ Enron1,Enron2,...,Enron6 แล้วแตกไฟล์ออกมาเก็บไว้ใน Folder ที่ชื่อว่า Enron ดังนี้ครับ

- ทำการ Download Enron File




 - นำไฟล์ที่โหลดได้มาแตกไฟล์และเก็บลงใน Folder ที่ชื่อว่า Enron



"มาเริ่มเขียนโคดกัน"
เราจะมาเขียนโคดกันด้วยภาษา C# โดยใช้ Naive Bayes Classification มาแยกว่า ข้อความในเมล์ใหนน่าจะเป็น Spam หรือ ไม่เป็น Spam กันครับ ซึ่งสามารถศึกษาและโหลดโคดเต็มได้ที่ https://github.com/CakeNuthep/EmailSpamDetectionWithNaiveBayes

reference

ไม่มีความคิดเห็น:

แสดงความคิดเห็น