Machine Learning(EP.5) —การคำนวณเพื่อนบ้านใกล้สุด (K-nearest Neighbors)

KongRuksiam Studio
2 min readJan 22, 2020

--

K-Nearest Neighbors (K-NN) เป็นวิธีการแบ่งคลาสสำหรับใช้จัดหมวดหมู่ข้อมูล (Classification)ใช้หลักการเปรียบเทียบข้อมูลที่สนใจกับข้อมูลอื่นว่ามีความคล้ายคลึงมากน้อยเพียงใด หากข้อมูลที่กำลังสนใจนั้นอยู่ใกล้ข้อมูลใดมากที่สุด ระบบจะให้คำตอบเป็นเหมือนคำตอบของข้อมูลที่อยู่ใกล้ที่สุดนั้นลักษณะการทำงานแบบไม่ได้ใช้ข้อมูลชุดเรียนรู้ (training data) ในการสร้างแบบจำลองแต่จะใช้ข้อมูลนี้มาเป็นตัวแบบจำลองเลย

  • เทคนิคนี้จะตัดสินใจว่าข้อมูลมีความคล้ายคลึงหรือใกล้เคียงกับคลาสใด โดยการตรวจจสอบข้อมูลบางจำนวน (K)
  • เหมาะสำหรับข้อมูลแบบตัวเลขเพื่อหาวิธีการวัดระยะห่างของแต่ละ Attribute ในข้อมูลให้ได้
รูปภาพที่เกี่ยวข้อง
ลักษณะการทำงานของ KNN

ลักษณะการทำงาน

**ขอเปลี่ยนชื่อ Class ในแผนภาพเพื่ออธิบายการทำงาน
Class 1 = Class A (สี่เหลี่ยม)
Class 2= Class B(สามเหลี่ยม)

1.ทำการเปรียบเทียบจุดใหม่วงกลมสีเขียว (New Point) กับจุดทั้งหมด (Point)ใน Training Set เพื่อหาจุดใกล้เคียงกับจุดใหม่
2.กำหนดจำนวนจุดใกล้เคียงกับจุดใหม่จำนวน K จุด
3.หาก K=1 แสดงว่าให้นำจุดที่ใกล้เคียงกับจุดใหม่ 1 จุดมาพิจารณานั่นคือ Class A มากำหนดค่า Class ให้จุดใหม่เป็น Class A เหมือนกัน
3.หาก K=3 แสดงว่าให้นำจุดที่ใกล้เคียงกับจุดใหม่ 3 จุดมาพิจารณานั่นคือ Class A 1 จุด กับ Class B อีก 2 จุดมาคำนวณผลรวมค่าที่ใกล้เคียง ผลปรากฎว่า Class B มี 2 จุดค่าผลรวมความใกล้เคียงมากกว่า Class A ดังนั้นจุดใหม่จะถูกกำหนดให้เป็น Class B

Operation

  • Distance Function เป็นการคำนวณระยะห่างเพื่อวัดความคล้ายคลึงของข้อมูล
  • Combination Function เป็นการรวมผลลัพธ์ที่ได้จากค่า Distance โดยเรียงลำดับจากน้อยไปมาก หลังจากนั้นดูค่า K ว่ากำหนดเป็นเท่าใด แล้วนำลำดับที่เรียงได้มาเทียบกับ Class ข้อมูลที่เรียงแล้วนำมาตอบ

ข้อดีของ KNN
1.หากเงื่อนไขในการตัดสินใจมีความซับซ้อนวิธีนี้สามารถนำไปสร้างโมเดลที่มีประสิทธิภาพได้

ข้อเสียของ KNN
1.ใช้เวลาคำนวณนาน
2.ถ้า Attribute มีจำนวนมากจะเกิดข้อผิดพลาดในการคำนวณค่า
3.คำนวณค่าได้เฉพาะข้อมูลประเภท Nominal เช่น ข้อมูลเพศชาย-หญิง อาชีพ

🌎 ติดตามข่าวสารเพิ่มเติมได้ที่
Facebook | YouTube | TikTok

--

--

KongRuksiam Studio
KongRuksiam Studio

Written by KongRuksiam Studio

เรียนรู้การเขียนโปรแกรมนอกห้องเรียน

No responses yet