สวัสดีครับหลังจากบทความที่ผ่านมาได้อธิบายเรื่องของหลักการทำงาน 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 ไปในสมการ
โดยเราจะเอาข้อมูล email จริงๆมาจากบริษัท Enron Corporation มา Train กัน ตามลิงค์นี้ http://www2.aueb.gr/users/ion/data/enron-spam/ ซึ่งเราจะโหลดไฟล์ Enron1,Enron2,...,Enron6 แล้วแตกไฟล์ออกมาเก็บไว้ใน Folder ที่ชื่อว่า Enron ดังนี้ครับ
- ทำการ Download Enron File
"มาเริ่มเขียนโคดกัน"เราจะมาเขียนโคดกันด้วยภาษา C# โดยใช้ Naive Bayes Classification มาแยกว่า ข้อความในเมล์ใหนน่าจะเป็น Spam หรือ ไม่เป็น Spam กันครับ ซึ่งสามารถศึกษาและโหลดโคดเต็มได้ที่ https://github.com/CakeNuthep/EmailSpamDetectionWithNaiveBayes
ไม่มีความคิดเห็น:
แสดงความคิดเห็น