K-NN หรือ K-Nearest Neighbors เป็นหนึ่งในอัลกอริธึมการเรียนรู้ของเครื่องที่ง่ายและมีประสิทธิภาพในการจัดประเภทข้อมูล ยิ่งไปกว่านั้น K-NN ยังสามารถนำไปใช้ในหลายบริบทของการเรียนรู้ของเครื่อง เช่น การแบ่งประเภทข้อมูล (Classification) และการทำนายค่า (Regression)
ในบทความนี้เราจะมาทำความรู้จักกับ K-NN ในรูปแบบที่เข้าใจง่าย โดยใช้การเขียนโปรแกรมในภาษา VBA (Visual Basic for Applications) ซึ่งเป็นภาษาโปรแกรมที่ใช้กันอย่างแพร่หลาย โดยเฉพาะในกลุ่ม Microsoft Office เช่น Excel
K-NN ทำงานโดยการคำนวณระยะห่างระหว่างข้อมูลที่ไม่ทราบประเภท (Unlabeled Data) และข้อมูลที่มีประเภท (Labeled Data) วิธีการคำนวณระยะห่างที่นิยมใช้มีหลายวิธี เช่น Euclidean distance หนึ่งในสูตรที่ใช้หาค่าระยะห่างระหว่างจุดสองจุด (x1, y1) และ (x2, y2) คือ:
\[ d = \sqrt{(x2 - x1)^2 + (y2 - y1)^2} \]
เมื่อเราคำนวณระยะห่างทั้งหมดระหว่างข้อมูลที่ไม่ทราบประเภทและข้อมูลที่มีประเภทแล้ว เราสามารถเลือก K จุดที่ใกล้ที่สุด (Nearest Neighbors) และทำการจัดประเภทให้กับข้อมูลใหม่ โดยการดูว่าจำนวนที่สุด (Majority Vote) ในกลุ่ม K จุดนั้นเป็นประเภทใด
การกำหนดค่า K
การเลือกค่าของ K เป็นเรื่องสำคัญมาก ถ้าค่านี้เล็กเกินไป อาจทำให้เกิด Overfitting ขณะที่ถ้าค่ามากเกินไปอาจทำให้เกิด Underfitting ค่าที่เหมาะสมที่สุดจึงมักต้องมีการหาทดลองเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
เรามาดูตัวอย่างการทำงานของ K-NN ด้วยภาษา VBA กันครับ ในตัวอย่างนี้เราจะสร้างเวิร์คชีตใน Excel ที่เราจะใช้ในการจัดประเภทข้อมูลง่ายๆ โดยจะใช้ข้อมูลที่มีอยู่จริง เช่น ข้อมูลพืชผล (Fruits) ว่าจะแบ่งประเภทเป็น "ส้ม" หรือ "แอปเปิ้ล"
1. สร้างข้อมูล
เราจะสร้างข้อมูลใน Excel โดยให้มี 4 คอลัมน์ ได้แก่:
| สี | ขนาด | น้ำหนัก | ประเภท |
|-------|-------|---------|------------|
| เหลือง | 5 | 150 | ส้ม |
| แดง | 4 | 120 | แอปเปิ้ล |
| เหลือง | 6 | 160 | ส้ม |
| แดง | 3 | 90 | แอปเปิ้ล |
2. เขียนโค้ด VBA
ไปที่แท็บ `Developer` ใน Excel แล้วคลิก `Visual Basic` จากนั้นสร้าง Module ใหม่และใส่โค้ดต่อไปนี้:
3. อธิบายโค้ด
1. EuclideanDistance: ฟังก์ชันนี้จะคำนวณระยะห่างระหว่างจุดสองจุด 2. KNN: ฟังก์ชันหลักที่ใช้ในการประเมินประเภทของข้อมูลใหม่ 3. MostFrequent: ฟังก์ชันช่วยในการเลือกประเภทที่มีมากที่สุดใน K จุดที่เลือก4. ยูสเคสในโลกจริง
K-NN สามารถนำไปใช้ในหลายบริบท เช่น:
- การแพทย์: ในการวินิจฉัยโรค โดยอาจใช้ข้อมูลประวัติการรักษาและอาการของผู้ป่วยก่อนหน้าเพื่อตรวจสอบว่าอาการที่ปรากฏอยู่คือโรคชนิดไหน - การตลาด: การพยากรณ์พฤติกรรมของลูกค้าโดยพิจารณาจากข้อมูลลูกค้าที่มีอยู่ เช่น เพศ อายุ และการซื้อขายที่ผ่านมา
K-NN เป็นอัลกอริธึมที่ง่ายและเข้าใจได้ในวงการของการเรียนรู้ของเครื่อง ในการเรียนรู้ K-NN จะไม่เพียงแต่ทำให้คุณเข้าใจการจัดประเภทข้อมูล แต่จะช่วยให้คุณมีทักษะในการวิเคราะห์ข้อมูลที่มีคุณภาพ
หากคุณสนใจที่จะเรียนรู้การเขียนโปรแกรมและการประยุกต์ใช้ K-NN หรือการเรียนรู้ของเครื่องในทางปฏิบัติ ขอเชิญชวนให้มาศึกษาที่ EPT (Expert-Programming-Tutor) ซึ่งเราให้ความรู้และทักษะที่คุณต้องการอย่างมีคุณภาพและสนุกสนาน!
เริ่มต้นการเรียนรู้ได้เลยที่ EPT!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM