Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
เขียนโค๊ดกับมากะปิ
•
ติดตาม
2 ก.พ. 2022 เวลา 08:00 • การศึกษา
Machine Hee-hee 101 EP8
K-Nearest Neighbor EP 1
สวัสดีครับผู้อ่านทุกท่าน ขอโทษที่หายไปนานครับ
เกิดเหตุขัดข้องนิดหน่อย ผมได้ทำ Lecture ที่ผมเขียนไว้เป็น Demo หาย เลยรู้สึก Fail แต่ตอนนี้ดีขึ้นแล้วครับ พร้อมกลับมาทำใหม่แล้ว
คราวก่อนผมจบกันไปในเรื่อง Decision Tree และ แน่นอนไม่ได้มีแค่ Algorithm เดียว
วันนี้ผมจะมาเสนอ Algorithm อีกอัน คือ KNN
KNN คืออะไร ?
KNN หรือ K-Nearest Neighbor มีความหมายว่า "เพื่อนบ้านที่ใกล้ที่สุด K ตัว"
ความสุดยอดของมันคือ มันจะไปอยู่ ณ ตำแหน่งท่ามกลางช้อมูล และ ทำนายตามข้อมูลที่อยู่ใกล้ที่สุด K ตัว ( K คือ จำนวนที่เราเลือกจะมานำมาเปรียบเทียบ )
เพื่อความเข้าใจ ผมขอแสดงภาพให้เห็นนะครับ
ดาวคือ ตำแหน่งของ Test Data ที่เรา Input
จากภาพเราจะเห็นได้ว่าจะมี สี่เหลี่ยม และ วงกลม ซึ่งพวกนี้เป็น Class/Label โดยตำแหน่งจะมาจาก Feature ( ที่ภาพเป็น 2 Feature เพื่อความเข้าใจง่าย
แต่ความเป็นจริง Feature จะมีมากกว่านั้นและต้องใช้โปรแกรมในการ Plot Graph)
ขั้นตอนการทำงาน KNN ในขี่นตอนฝึก(Train) จะเป็นแค่การอ่านข้อมูลไปเก็บใน Database เท่านั้น เราเรียกการทำงานแบบนี้ว่า "Lazy Learning"
การทำงานของมันจะเริ่มเมื่อมีการ Input ข้อมูล Test data หรือ ชุดข้อมูลทดสอบ
ดังนั้นสิ่งสำคัญที่สุดในการจำแนกคือ ระยะทางระหว่าง Train-Test Data จากในภาพ
ถ้าเราเลือก K = 1 หมายความว่าเราจะหาระยที่ใกล้ที่สุดระหว่าง Train - Test 1 ตัวอย่าง
ถ้าเราเลือก K = 3 หมายความว่าเราจะหาระยะที่ใกล้ที่สุดระหว่าง Train - Test 3 ตัวอย่าง
ถ้า K = 1 Class ที่อยู่ใกล้ที่สุดจะเป็นวงกลม
แต่ถ้า K เป็น 3 Class ที่ใกล้ที่สุดจะได้เป็น วงกลม 1 สี่เหลี่ยม 2 ซึ่งการทำนายจะขึ้นอยู่กับฟังก์ชันที่เลือก แต่โดยเริ่มต้นเราจะใช้ Majority Vote ก็คือเสียงข้างมาก ดังนั้น ถ้าเราอิงตามฟังก์ชันเริ่มต้น ผลลัพธ์จะเป็น สี่เหลี่ยม
NOTE การเลือก K ควรจะเป็นเลขคี่
จากการที่ KNN ต้องการผลเฉลย ดังนั้น KNN จึงจัดเป็น Supervised Learning และนอกจากนั้น KNN สามารถทำนายปัญหาประเภท Classification และ Regression ได้
จากตัวอย่างนี้ Keyword ที่สำคัญของการทำงานคือ "ระยะทาง" ดังนั้น เราจะพูดถึงการหาระยะทาง แต่ก่อนที่เราจะพูดถึง เราจะต้องมาแบ่งปัญหาตาม Feature กันก่อน
อย่างที่เราทราบกันดีว่า Feature จะมี 2 ประเภท คือ ประเภทตัวเลข และ ประเภทจัดหมวดหมู่ (Nominal)
ดังนั้นเราสามารถสรุปวิธีการหาระยะทางตามประเภทของ Feature ได้ดังนี้
Feature ตัวเลข -> Normalization -> Euclidean, Manhattan, Minkowski
Feature จัดหมวดหมู่ -> Hamming, VDM
Note: ตัวเลขต้องมีการทำ Normalization
Normalization คืออะไร ?
Normalization คือ การทำให้ข้อมูลอยู่ในช่วงระหว่าง 0-1 เนื่องจากข้อมูลประเภทตัวเลขนั้นสามารถมีค่าได้ตั้งแต่ - Infinity ถึง +Infinity ซึ่งจะทำให้ระยะตำแหน่งของข้อมูลไม่จัดเป็นกลุ่ม (ค่ากระจาย) ส่งผลต่อการ Predict
โดยสูตร Normalization คือ
●
Xi คือค่าในปัจจุบันของ Feature นั้น ๆ
●
min(X) คือ ค่าที่น้อยที่สุดใน Feature นั้น ๆ
●
Max(X) คือ ค่าที่มากสุดใน Feature นั้น ๆ
ครั้งหน้าเราจะมาพูดถึง สูตรในการหาระยะทาง, วิธีใช้ และ วิธีการหาผลลัพธ์ที่นอกจากการใช้ Majority Vote
เป็นไงกันบ้างครับ สำหรับใครที่ยังไม่เข้าใจก็ไม่ต้องห่วงครับ ผมจะมีตัวอย่าง เพื่อให้ทุกคนเห็นภาพง่ายขึ้น
ในบทความนี้ผมอยากให้ทุกคนเห็นภาพว่า KNN นั้นใช้วิธีการนำ Class ที่อยู่ใกล้ที่สุดมาเป็นตัวอ้างอิงในการทำนาย เท่านั้นเองครับ
สำหรับคนที่สงสัย หรือ อยากให้ข้อมูลเพิ่มเติมสามารถพิมพ์ใน คอมเม้น หรือ ทักใน Inbox ได้นะครับ สำหรับวันนี้สวัสดีครับ
การศึกษา
วิทยาศาสตร์
ความรู้
บันทึก
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2025 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย