ขั้นตอนวิธีการค้นหาเพื่อนบ้านใกล้สุด k ตัว

ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด (K-Nearest Neighbour Algorithm) เป็นวิธีที่ใช้ในการจัดแบ่งคลาส โดยเทคนิคนี้จะตัดสินใจว่า คลาสใดที่จะแทนเงื่อนไขหรือกรณีใหม่ๆ ได้บ้าง โดยการตรวจสอบจำนวนบางจำนวน (“K” ในขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด) ของกรณีหรือเงื่อนไขที่เหมือนกันหรือใกล้เคียงกันมากที่สุด โดยจะหาผลรวม (Count Up) ของจำนวนเงื่อนไข หรือกรณีต่างๆ สำหรับแต่ละคลาส และกำหนดเงื่อนไขใหม่ๆ ให้คลาสที่เหมือนกันกับคลาสที่ใกล้เคียงกันมากที่สุด

**ตัวอย่าง**
ตัวอย่างการจัดกลุ่มข้อมูลของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด
กำหนดให้จุดที่พิจารณาคือ วงกลมสีเขียว ควรจัดกลุ่มให้จุดที่สนใจไปอยู่ใน คลาสแรกของสี่เหลี่ยมสีน้ำเงิน หรือ คลาสสองของสามเหลี่ยมสีแดง- ถ้า k=3 แล้ว วงกลมสีเขียวจะอยู่ในคลาสสอง เพราะมี สี่เหลี่ยม 1 รูป และ สามเหลี่ยม 2 รูป อยู่ในวงกลมวงใน- ถ้า k=5 แล้ว วงกลมสีเขียวจะอยู่ในคลาสแรก เพราะมี สี่เหลี่ยม 3 รูป และ สามเหลี่ยม 2 รูป อยู่ในวงกลมวงนอก

**ขั้นตอนวิธี**
การนำเทคนิคของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดไปใช้นั้น เป็นการหาระยะห่างระหว่างแต่ละตัวแปร (Attribute) ในข้อมูล จากนั้นก็คำนวณค่าออกมา ซึ่งวิธีนี้จะเหมาะสำหรับข้อมูลแบบตัวเลข แต่ตัวแปรที่เป็นค่าแบบไม่ต่อเนื่องนั้นก็สามารถทำได้ เพียงแต่ต้องการการจัดการแบบพิเศษเพิ่มขึ้น อย่างเช่น ถ้าเป็นเรื่องของสี เราจะใช้อะไรวัดความแตกต่างระหว่างสีน้ำเงินกับสีเขียว ต่อจากนั้นเราต้องมีวิธีในการรวมค่าระยะห่างของ Attribute ทุกค่าที่วัดมาได้ เมื่อสามารถคำนวณระยะห่างระหว่างเงื่อนไขหรือกรณีต่างๆ ได้ จากนั้นก็เลือกชุดของเงื่อนไขที่ใช้จัดคลาส มาเป็นฐานสำหรับการจัดคลาสในเงื่อนไขใหม่ๆ ได้แล้วเราจะตัดสินได้ว่าขอบเขตของจุดข้างเคียงที่ควรเป็นนั้น ควรมีขนาดใหญ่เท่าไร และอาจมีการตัดสินใจได้ด้วยว่าจะนับจำนวนจุดข้างเคียงตัวมันได้อย่างไร โดยขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดมีขั้นตอนโดยสรุป ดังนี้
# กำหนดขนาดของ K (ควรกำหนดให้เป็นเลขคี่)
# คำนวณระยะห่าง (Distance) ของข้อมูลที่ต้องการพิจารณากับกลุ่มข้อมูลตัวอย่าง
# จัดเรียงลำดับของระยะห่าง และเลือกพิจารณาชุดข้อมูลที่ใกล้จุดที่ต้องการพิจารณาตามจำนวน K ที่กาหนดไว้
# พิจารณาข้อมูลจำนวน k ชุด และสังเกตว่ากลุ่ม (class) ไหนที่ใกล้จุดที่พิจารณาเป็นจำนวนมากที่สุด
# กำหนด class ให้กับจุดที่พิจารณา (class) ที่ใกล้จุดพิจารณามากที่สุด

**การดำเนินการหลัก**
 ฟังก์ชันระยะทาง (Distance Function)  เป็นการคำนวณค่าระยะห่างระหว่างสองเรคคอร์ด เพื่อที่จะมาวัดความคล้ายคลึงกันของข้อมูล- ฟังก์ชันการแจกแจง (Combination Function)  เป็นการรวมกันของผลลัพธ์ที่ได้จากการคำนวณค่าระยะห่าง (Distance) โดยทำการเรียงลำดับค่าระยะห่าง (Distance) จากน้อยไปมาก หลังจากนั้นดูจากค่า “K” ว่ากำหนดเป็นเท่าไร แล้วนำลำดับที่เรียงได้มาเทียบกับคลาสข้อมูลที่เรียงแล้วนำมาตอบ

**คุณสมบัติของฟังก์ชันระยะทาง (Distance Function)**
 ค่าระยะทาง (ความห่าง) ที่คำนวณได้ต้องไม่ติดลบ- ถ้าตำแหน่งเดียวกัน ฟังก์ชันต้องเป็นศูนย์ (ค่าเหมือนกัน)- การคำนวณวัดระยะทางไปกลับต้องเท่ากัน

**การคำนวณค่าฟังก์ชันระยะทาง**
 ใส่ค่าสัมบูรณ์ (Absolute) ให้กับค่าระยะห่าง : |A-B|      - ยกกำลังสองให้กับค่าระยะห่าง : (A-B)2- ทำการปรับให้เป็นค่ามาตรฐาน: | (A-mean)/(SD) - (B-mean)/(SD)|

**การรวมค่าระยะทาง (Distance) ในเรคคอร์ด (Record)**
 การวัดระยะแบบแมนฮัตตัน (Manhattan distance) เป็นการนำค่าที่คำนวณได้ในหนึ่งเรคคอร์ด (Record) มารวมกัน- ระยะทางแบบยุคลิด (Euclidean distance) เป็นการหารากที่สอง (Square Root) ในแต่ละตัวแปร (attribute) แล้วนำมารวมกัน แล้วนำค่าที่คำนวณได้ในหนึ่งเรคคอร์ด (Record) มารวมกัน

**ตัวอย่าง**
การใช้ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด.
จากตัวอย่างข้างต้น กำหนดให้ k= 5
ดังนั้น สังเกตได้ว่า ระยะทางที่ใกล้กับจุด (3,3) มากที่สุด คือ 5 มีลำดับ คือ D1 (+), D2 (+), D3 (-), D4 (-), D9 (-)
จากระยะทางที่ใกล้ที่สุดทั้ง 5 ให้สังเกตว่ากลุ่ม (class) ที่มีจำนวนมากที่สุด ปรากฏว่าคือ class (-) ดังนั้น จึงกำหนดกลุ่ม (class) ให้กับจุด (3,3) คือ class (-)

**ตัวอย่างการประยุกต์ใช้งาน**
	ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด ได้มีการนำไปใช้ประโยชน์ในหลากหลายด้าน ได้แก่
- การวิเคราะห์รูปแบบการบุกรุกเครือข่ายคอมพิวเตอร์ โดยขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด กล่าวคือ มีการประยุกต์ใช้ในการตรวจสอบความปลอดภัยในเครือข่ายระบบคอมพิวเตอร์ ซึ่งจะใช้ตัวแปร K ในการวิเคราะห์ข้อมูล และจำแนกประเภทของข้อมูลที่มีขนาดใหญ่ๆ ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด สามารถใช้ในการวิเคราะห์ข้อมูลได้เป็นอย่างดี
- ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด เป็นเทคนิคหนึ่งของ Data Mining ที่ใช้ในการแก้ปัญหาแบบ classification ในการผลิต ผลิตภัณฑ์ด้าน Data Mining ในปัจจุบัน
- ประยุกต์ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดและการคำนวณอย่างอ่อน (Soft Computing) เพื่อใช้ประมาณค่าสูญหายของข้อมูล โดยจะใช้ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดในการหาสมาชิกที่มีความใกล้ชิดกับข้อมูลที่สูญหายมา k ตัว แล้วนำจำนวน k มาหารเพื่อประมาณค่า และได้ปรับปรุงตัวหารด้วยการนำ หลักการคำนวณอย่างอ่อน (Soft Computing) เข้ามาช่วยในการปรับค่า k เรียกวิธีการนี้ว่า ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดอย่างอ่อน (Soft K-Nearest Neighbour)
- ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด ใช้ในการหามัธยฐานของตัวเลข n ตัวที่ต่างกัน โดยมีประสิทธิภาพการทำงานเป็น O (n)

**สรุป**
	ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด เป็นอัลกอลิทึมที่ใช้ในการจัดกลุ่มข้อมูล โดยการจัดข้อมูลที่อยู่ใกล้กันให้เป็นกลุ่มเดียวกันซึ่งเทคนิคนี้จะทำให้ตัดสินใจได้ว่า คลาสไหนที่จะแทนเงื่อนไขหรือกรณีใหม่ๆได้บ้าง โดยการตรวจสอบจำนวน K ซึ่งถ้าหากเงื่อนไขของการตัดสินใจมีความซับซ้อน วิธีนี้สามารถสร้างโมเดลที่มีประสิทธิภาพได้  แต่ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดจะใช้ระยะเวลาในการคำนวณนาน ถ้าตัวแปร (Attribute) มีจำนวนมากจะเกิดปัญหาในการคำนวณค่า และค่อนข้างใช้ปริมาณงานในการคำนวณสูงมากบนคอมพิวเตอร์ เพราะเวลาที่ใช้สำหรับการคำนวณจะ                          เพิ่มขึ้นแบบแฟคทอเรียลตามจำนวนจุดทั้งหมด ดังนั้นเพื่อจะเพิ่มความรวดเร็วสำหรับเทคนิคขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดให้มากขึ้น ข้อมูลทั้งหมดที่ใช้บ่อยจะต้องถูกเก็บไว้ในหน่วยความจำ (Memory) โดยวิธีการเข้าถึงหน่วยความจำพื้นฐานอย่างมีเหตุผล (Memory-Based Reasoning) ซึ่งจะเป็นวิธีที่นำมาอ้างถึงเป็นประจำ ในการจัดเก็บกลุ่มคลาสของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดในหน่วยความจำ และ ถ้าหากข้อมูลที่ต้องการหาคำตอบมีตัวแปรอิสระเพียงไม่กี่ตัวแล้ว จะทำให้เราสามารถเข้าใจ โมเดลขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด ได้ง่ายขึ้น ตัวแปรเหล่านี้ยังมีประโยชน์สำหรับนำมาสร้างโมเดลต่างๆ ที่เกี่ยวข้องกับชนิดของข้อมูลที่ไม่เป็นมาตรฐาน เช่น ข้อความ (Text) เพียงแต่อาจต้องมีมาตรฐานการวัดค่าสำหรับชนิดของข้อมูลดังกล่าวที่เหมาะสมด้วย นอกจากนี้ประสิทธิภาพของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดนี้ จะขึ้นอยู่กับจำนวนระยะห่าง การอธิบายระหว่างข้อมูลทั้งคู่ ที่สามารถแบ่งแยกอย่างมีประสิทธิภาพระหว่างข้อมูลปกติ และข้อมูลผิดปกติ การอธิบายจำนวนระยะห่างระหว่างขอมูลเป็นความท้าทายอย่างมากเมื่อข้อมูลมีความซับซ้อน อย่างเช่น ข้อมูลกราฟ และข้อมูลแบบลำดับ เป็นต้น

**ปัญหาที่เกี่ยวข้อง**
 ต้นไม้ K-D- การทำเหมืองข้อมูล

**Video ที่เกี่ยวข้อง**
  K-nearest neighbor classification date=2009-08-31 -  Dualtree K-Nearest Neighborfix-attempted=yes -  Random 3D Nearest Neighbor Networks-  Random 2D Nearest Neighbor Networks-  Nearest Neighbor Graph Connections

**ดูเพิ่ม**
 http://www.scholarpedia.org/article/K-nearest_neighbor- http://www.statsoft.com/textbook/k-nearest-neighbors/#distanceweighting- http://cgm.cs.mcgill.ca/~soss/cs644/projects/simard/ date=2011-10-22 - http://www.docstoc.com/docs/42043096/Automatic-Face-Recognition-System-using-P-tree-and-K-Nearest-Neighbor

**อ้างอิง**
 Gregory Shakhnarovich, Trevor Darrell, Piotr Indyk. “Nearest-Neighbor Methods in Learning and Vision: Theory and Practice (Neural Information Processing series) ” - Pattern Synthesis, Compact Data Representation and other Schemes. “Improvements to Nearest Neighbor Classifier” - Gregory Shakhnarovich, Piotr Indyk , Trevor Darrell. “Nearest-Neighbor Methods In Learning And Vision: Theory And Practice) ” - Frances Browne. “The Nearest Neighbor: and Other Stories” 

**แหล่งข้อมูล**
หมวดหมู่:ขั้นตอนวิธีการค้นหา
หมวดหมู่:การเรียนรู้ของเครื่อง
หมวดหมู่:การจำแนกเชิงสถิติ
หมวดหมู่:ขั้นตอนวิธีการจำแนก