การทำนายว่า ธนบัตรปลอม หรือไม่ ด้วยSupport Vector Machine (SVM)
วันนี้ขอนำเสนอ อัลกอริทึมที่ทรงพลังที่สุด อีกหนึ่งอันในกิ่ง Supervised Learning ครับ ในบทความนี้จะทำการเปรียบเทียบ ประสิทธิภาพของ อัลกอริทึม จำนวน 3 อัลกอริทึม ได้แก่ Decision tree, Logistic Regression และ SVM ซึ่งจะเห็นว่า Support Vector Machine มีประสิทธิภาพดีที่สุดอย่างเห็นได้ชัด
Support Vector Machine เป็นอัลกอริทึมที่สามารถนำมาช่วยแก้ปัญหาการจำแนกข้อมูล ใช้ในการวิเคราะห์ข้อมูลและจำแนกข้อมูล โดยอาศัยหลักการของการหาสัมประสิทธิ์ของสมการเพื่อสร้างเส้นแบ่งแยกกลุ่มข้อมูลที่ถูกป้อนเข้าสู่กระบวนการสอนให้ระบบเรียนรู้ โดยเน้นไปยังเส้นแบ่งแยกแยะกลุ่มข้อมูลได้ดีที่สุด
หน้าที่ของ นักวิทยาศาสตร์ข้อมูล คือการทำนายว่า ธนบัตร(bank note) เป็น ธนบัตร จริงหรือปลอม โดยจำแนกจาก แอตทริบิวต์ ของ ธนบัตร ได้แก่ skewness of the wavelet transformed image, variance of the image, entropy of the image, and curtosis of the image.
เนื่องด้วย แอตทริบิวต์ที่ต้องการทำนาย คือ Class มีสองค่าคือ 0 กับ 1 ซึ่งเป็นปัญหาแบบ Binary Classification ซึ่งเราสามารถ เลือกใช้ Decision tree, Logistic Regression หรือ linear SVM/Gausian SVM
ขั้นตอนที่ 1: ทำการประกาศ X และ y เพื่อใช้ในการทำนาย จากนั้น ทำการแบ่ง Train data และTest data ออกจากกัน
ขั้นตอนที่ 2: ใช้ SVM และดูประสิทธิภาพจาก confusion_matrix
ขั้นตอนที่ 3: ใช้ Decision Tree และดูประสิทธิภาพจาก confusion_matrix
ขั้นตอนที่ 4: ใช้ gaussian kernel svm และดูประสิทธิภาพจาก confusion_matrix
ขั้นตอนที่ 5: ใช้ Logistic Regression และดูประสิทธิภาพจาก confusion_matrix
จะเห็นได้ว่า gaussian kernel svm (หรือ ใน Sklearn เรียกว่า Radial-basis function kernel
-RBF) ให้ประสิทธิภาพดีที่สุด รองลงมาก็คือ Linear SVC
โดย RBF สามารถหาความรู้เพิ่มเติมจาก https://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.kernels.RBF.html ตัวอย่าง source code เช่น