Machine Learning(EP.4)- ตัวจำแนกแบบไบรารี่ (Binary Classifier)
ตัวจำแนกแบบไบนารี (Binary Classifier) เป็นวิธีการแบ่งข้อมูลออกเป็น 2 กลุ่ม (Binary Class) จากภาพตัวอย่างจะแบ่งข้อมูลออกเป็น 2 กลุ่ม คือ กลุ่มสีแดงและกลุ่มสีน้ำเงิน (Class สีแดง และ Class สีน้ำเงิน)โดยใช้เส้น Hyperplane
(เส้นสมมุติ | เส้น Linear Regression) แบ่งกลุ่มข้อมูลทั้ง 2 กลุ่มแยกออกจากกัน
ภายใน LAB จะยกตัวอย่างเพื่อให้เห็นการแบ่งกลุ่มของข้อมูลโดยใช้ MNIST Dataset ว่าข้อมูลกลุ่มใดแสดงกลุ่มตัวเลข 0–9 โดยข้อมูลทั้งหมดจะมี 70,000 ชุดจะต้องเขียนโปรแกรมแบ่งข้อมูลออกเป็น 2 ส่วนได้แก่
- Training Set 60,000 ชุด
- Test Set 10,000 ชุด
จากบทที่ 1 :การแบ่งชุดข้อมูล MNIST Dataset
- ข้อมูลชุดเรียนรู้ (Training Set) จัดเรียงและแบ่งกลุ่มเป็น Class 0 — Class 9
- ข้อมูลชุดทดสอบ (Test Set) จัดเรียงและแบ่งกลุ่มเป็น Class 0 — Class 9
Gradient Descent Algorithm (GD)— อัลกอริทึมสำหรับใช้หาจุดต่ำสุดหรือสูงสุดของฟังก์ชั่นที่กำหนดขึ้นมาโดยใช้วิธีการวนหาค่าที่ทำให้ได้ค่าต่ำสุดจากการคำนวณความชัน ณ จุดที่เราอยู่แล้วพยายามเดินไปทางตรงข้ามกับกับความชันนั้น
จากแผนภาพอธิบายได้ดังนี้
หากเรายืนอยู่บนยอดภูเขาไฟ(สีแดง) เราก็จะวนหาทางลงเพื่อเดินทางไปยังทะเล (สีน้ำเงิน)แต่ทะเลมีหลายบริเวณ หากเราเดินทางลงมาจากจุดที่ต่างกันก็จะเห็นทะเลคนละแบบ เช่นเราอยู่ที่จุด A ก็จะเจอทะเลที่น้ำไม่ลึกมาก (Local Minima) ถ้าเราเดินอีกฝั่งหนึ่งก็จะเจอทะเลอีกแบบคือ ทะเลน้ำลึก (Global Minina)
ความซับซ้อนของอัลกอริทึม
- Best case คือ จำนวนการวนรอบที่น้อยที่สุด
- Worst case คือ จำนวนวนรอบที่มากที่สุด
รูปแบบการใช้งาน
- คำนวนข้อมูลทั้งหมดทีเดียว (Full Batch Gradient Descent Algorithm)
- คำนวนข้อมูลแค่บางส่วน (Stochastic Gradient Descent Algorithm)
จาก LAB ตัวอย่างเนื้อหา Linear Regression การหาอุณหภุมิสูงสุดต่ำสุด เรื่องการวัดประสิทธิภาพโมเดลยังมี Error อยู่พอสมควรซึ่งวัดได้จากค่า MSE (Mean Square Error) ตัว Gradient Descent จะช่วยทำให้โมเดลของเรามีค่า Loss Function ลงไปยังจุดที่ใกล้ 0 มากที่สุด (จุดต่ำสุด) เพื่อให้ได้โมเดลที่มีประสิทธิภาพมากยิ่งขึ้น
ใน LAB จะยกตัวอย่างจะใช้งาน Stochastic Gradient Descent (SGD) ภายในเนื้อหา Binary Classifier ในการทำนายผลข้อมูลของตัวเลขอารบิก
สามารถเข้าดูเนื้อหา คลิกที่นี่!
ทำไมต้องใช้ Stochastic Gradient Descent ใน LAB
ทำนายผลข้อมูลของตัวเลขอารบิก
การวัดประสิทธิภาพ
Cross-validation Test การทดสอบประสิทธิภาพของโมเดลด้วยวิธี Cross-validation นี้จะทําการแบ่งข้อมูลออกเป็นหลายๆส่วน (k) เช่นกำหนดให้ k-fold=3 แสดงว่ามีการแบ่งข้อมูลออกเป็น 3 ส่วน หรือการทดลอง 3 ครั้งโดยผลลัพธ์ที่ได้จะบอก ผลการทดลองครั้งที่ 1 , 2 และ 3 ตามลำดับ
การประเมินประสิทธิภาพด้วยอัลกอริทึม Confusion Matrix
import matplotlib.pyplot as plt
import itertools
def displayConfusionMatrix(cm,cmap=plt.cm.GnBu):
classes=["Other Number","Number 5"]
plt.imshow(cm,interpolation='nearest',cmap=cmap)
plt.title("Confusion Matrix")
plt.colorbar()
trick_marks=np.arange(len(classes))
plt.xticks(trick_marks,classes)
plt.yticks(trick_marks,classes)
thresh=cm.max()/2
for i , j in itertools.product(range(cm.shape[0]),range(cm.shape[1])):
plt.text(j,i,format(cm[i,j],'d'),
horizontalalignment='center',
color='white' if cm[i,j]>thresh else 'black')
plt.tight_layout()
plt.ylabel('Actually')
plt.xlabel('Prediction')
plt.show()
ใน Machine Learning หลังจากที่เราเราเทรนโมเดลใช้ในงานต่าง ๆจะมีการคำนวน Metrics เพื่อแสดงผลให้ทราบว่าโมเดลนั้น ๆ ทำงานได้ดีแค่ไหนซึ่งจะยกตัวอย่างโดยใช้ Accuracy, Precision, Recall และ F1 Score
ถ้าค่าความแม่นยำมากกว่า 90% ขึ้นไปสำหรับข้อมูลขนาดเล็กๆก็ถือว่าโมเดลมีประสิทธิภาพดี แต่ในบางกรณีข้อมูลของเรามีจำนวนเยอะมากความแม่นยำก็อาจจะลดลงบ้างถือเป็นเรื่องปกติ
ในส่วนของ Accuracy, Precision, Recall และ F1 Score จะอาศัยข้อมูลจาก Confusion Matrix มาคำนวณค่า
คำจำกัดความ
True Positive (TP) — ทายว่าถูกต้อง แล้วตอบตรงตามที่ทายไว้
True Negative (TN) — ทายว่าไม่ถูกต้อง แล้วตอบตรงตามที่ทายไว้
False Positive (FP) — ทายว่าถูกต้อง แต่คำตอบคือไม่ถูกต้อง
False Negative (FN)- ทายว่าไม่ถูกต้อง แต่คำตอบคือถูกต้อง
บทความที่เกี่ยวข้อง
EP.1 — ชุดข้อมูล (DataSet)
EP.2 — รู้จักกับข้อมูลชุดเรียนรู้และข้อมูลชุดทดสอบ
EP.3 — Linear Regression
EP.4 — Binary Classifier
EP.5 — K-nearest Neighbors
EP.6 — Naive Bayes
EP.7 — การวิเคราะห์องค์ประกอบหลัก (PCA)
EP.8 — การจัดกลุ่มด้วย K-Means(K-Means Clustering)
EP.9 — การจดจำใบหน้า (Face Recognition)
EP.10 — การจดจำตัวอักษร (Character Recognition)