K-Nearest Neighbors (KNN): คืออะไรและนำไปใช้อย่างไรใน Machine Learning
เผยแพร่แล้ว: 2024-12-18K-เพื่อนบ้านที่ใกล้ที่สุด (KNN) เป็นเทคนิคพื้นฐานในการเรียนรู้ของเครื่อง (ML) คู่มือนี้จะช่วยให้คุณเข้าใจ KNN วิธีการทำงาน ตลอดจนการนำไปประยุกต์ใช้ ประโยชน์ และความท้าทาย
สารบัญ
อัลกอริธึมเพื่อนบ้าน k-ที่ใกล้ที่สุดคืออะไร?
KNN ทำงานอย่างไร?
ความแตกต่างระหว่างเพื่อนบ้าน k-ที่ใกล้ที่สุดและอัลกอริธึมอื่นๆ
KNN ถูกนำมาใช้ในการเรียนรู้ของเครื่องอย่างไร
การประยุกต์ใช้ KNN
ข้อดีของเคเอ็นเอ็น
อัลกอริธึมเพื่อนบ้าน k-ที่ใกล้ที่สุดคืออะไร?
อัลกอริธึมเพื่อนบ้าน k ใกล้ที่สุด (KNN) เป็นเทคนิคการเรียนรู้แบบมีผู้สอนที่ใช้สำหรับการจำแนกและการถดถอย KNN กำหนดป้ายกำกับ (การจำแนกประเภท) หรือค่าที่คาดการณ์ (การถดถอย) ของจุดข้อมูลที่กำหนดโดยการประเมินจุดข้อมูลใกล้เคียงในชุดข้อมูล
KNN ทำงานอย่างไร?
KNN ตั้งอยู่บนสมมติฐานที่ว่าจุดข้อมูลที่อยู่ใกล้กันในชุดข้อมูลมักจะมีค่าใกล้เคียงกันหรืออยู่ในหมวดหมู่ที่คล้ายคลึงกัน KNN ใช้แนวคิดที่เรียบง่ายแต่ทรงพลังนี้ในการจัดประเภทจุดข้อมูลใหม่โดยการค้นหาหมายเลขที่กำหนดไว้ล่วงหน้า (ไฮเปอร์พารามิเตอร์ k) ของจุดข้อมูลข้างเคียงภายในชุดข้อมูลการฝึกอบรมที่มีป้ายกำกับ ค่า k นี้เป็นหนึ่งในไฮเปอร์พารามิเตอร์ KNN ซึ่งเป็นตัวแปรการกำหนดค่าที่กำหนดไว้ล่วงหน้าซึ่งผู้ปฏิบัติงาน ML ใช้เพื่อควบคุมวิธีที่อัลกอริทึมเรียนรู้
จากนั้น อัลกอริทึมจะพิจารณาว่าค่าใกล้เคียงใดที่ใกล้กับจุดข้อมูลใหม่มากที่สุด และกำหนดป้ายกำกับหรือหมวดหมู่เดียวกันกับเพื่อนบ้าน ค่า k ที่เลือกจะส่งผลต่อประสิทธิภาพของโมเดล ค่าที่น้อยกว่าจะเพิ่มความไวของสัญญาณรบกวน ในขณะที่ค่าที่มากขึ้นจะเพิ่มความทนทาน แต่อาจทำให้ KNN พลาดรูปแบบเฉพาะที่
ความใกล้ชิดหรือระยะห่างระหว่างจุดข้อมูลคำนวณโดยใช้หน่วยเมตริกที่พัฒนาขึ้นมาเพื่อวัดความคล้ายคลึงกันของจุดในพื้นที่ทางคณิตศาสตร์ หน่วยวัดทั่วไป ได้แก่ ระยะทางแบบยุคลิด ระยะทางแมนฮัตตัน และระยะทาง Minkowski ประสิทธิภาพของ KNN ได้รับผลกระทบจากตัววัดที่เลือก และตัววัดที่แตกต่างกันจะทำงานได้ดีกว่ากับประเภทและขนาดข้อมูลที่แตกต่างกัน
ตัวอย่างเช่น จำนวนมิติข้อมูลในข้อมูลซึ่งเป็นแอตทริบิวต์แต่ละรายการที่อธิบายจุดข้อมูลแต่ละจุด อาจส่งผลต่อประสิทธิภาพของเมตริก ไม่ว่าเมตริกระยะทางที่เลือกจะเป็นอย่างไร เป้าหมายคือการจัดหมวดหมู่หรือคาดการณ์จุดข้อมูลใหม่ตามระยะทางจากจุดข้อมูลอื่นๆ
- ระยะทางแบบยุคลิดคือระยะทางตามแนวเส้นตรงระหว่างจุดสองจุดในอวกาศ และเป็นหน่วยเมตริกที่ใช้บ่อยที่สุด เหมาะที่สุดสำหรับข้อมูลที่มีจำนวนมิติข้อมูลน้อยกว่าและไม่มีค่าผิดปกติที่มีนัยสำคัญ
- ระยะทางในแมนฮัตตันคือผลรวมของความแตกต่างสัมบูรณ์ระหว่างพิกัดของจุดข้อมูลที่กำลังวัด หน่วยวัดนี้มีประโยชน์เมื่อข้อมูลมีมิติสูงหรือเมื่อจุดข้อมูลสร้างโครงสร้างคล้ายตาราง
- ระยะทาง Minkowskiเป็นหน่วยเมตริกที่ปรับได้ซึ่งสามารถทำหน้าที่เหมือนระยะทางแบบยุคลิดหรือแมนฮัตตัน ขึ้นอยู่กับค่าของพารามิเตอร์ที่ปรับได้ การปรับพารามิเตอร์นี้จะควบคุมวิธีการคำนวณระยะทาง ซึ่งมีประโยชน์สำหรับการปรับ KNN กับข้อมูลประเภทต่างๆ
ตัวชี้วัดอื่น ๆ ที่ใช้กันทั่วไปน้อยกว่า ได้แก่ ระยะทาง Chebyshev, Hamming และ Mahalanobis หน่วยวัดเหล่านี้มีความเชี่ยวชาญมากกว่า และเหมาะสมกับประเภทข้อมูลและการแจกแจงเฉพาะ ตัวอย่างเช่น ระยะทางมหาลาโนบิสวัดระยะทางของจุดหนึ่งจากการกระจายจุด โดยคำนึงถึงความสัมพันธ์ระหว่างตัวแปร ด้วยเหตุนี้ ระยะทางของ Mahalanobis จึงเหมาะอย่างยิ่งสำหรับการทำงานกับข้อมูลที่ฟีเจอร์ใช้สเกลต่างกัน
KNN มักถูกเรียกว่าอัลกอริธึมการเรียนรู้แบบ "ขี้เกียจ" เนื่องจากไม่จำเป็นต้องมีการฝึกอบรม ไม่เหมือนอัลกอริธึมอื่นๆ KNN จะจัดเก็บข้อมูลและใช้ข้อมูลดังกล่าวในการตัดสินใจเฉพาะเมื่อจุดข้อมูลใหม่จำเป็นต้องมีการถดถอยหรือการจัดหมวดหมู่เท่านั้น อย่างไรก็ตาม ซึ่งหมายความว่าการคาดการณ์มักจะมีข้อกำหนดด้านการคำนวณสูง เนื่องจากชุดข้อมูลทั้งหมดได้รับการประเมินสำหรับการคาดการณ์แต่ละครั้ง
ความแตกต่างระหว่างเพื่อนบ้าน k-ที่ใกล้ที่สุดและอัลกอริธึมอื่นๆ
KNN เป็นส่วนหนึ่งของกลุ่มเทคนิค ML ที่ได้รับการดูแลขนาดใหญ่ซึ่งมุ่งไปที่การจำแนกประเภทและการถดถอย ซึ่งรวมถึงแผนผังการตัดสินใจ / ฟอเรสต์สุ่ม การถดถอยโลจิสติก และเครื่องจักรเวกเตอร์สนับสนุน (SVM) อย่างไรก็ตาม KNN แตกต่างจากเทคนิคเหล่านี้เนื่องจากความเรียบง่ายและวิธีการจัดการข้อมูลโดยตรง ท่ามกลางปัจจัยอื่นๆ
ต้นไม้ตัดสินใจและป่าสุ่ม
เช่นเดียวกับ KNN แผนผังการตัดสินใจและฟอเรสต์สุ่มใช้ในการจำแนกประเภทและการถดถอย อย่างไรก็ตาม อัลกอริธึมเหล่านี้ใช้กฎที่ชัดเจนซึ่งเรียนรู้จากข้อมูลระหว่างการฝึก ซึ่งแตกต่างจากแนวทางตามระยะทางของ KNN แผนผังการตัดสินใจและฟอเรสต์สุ่มมีแนวโน้มที่จะมีความเร็วในการทำนายที่เร็วกว่าเนื่องจากมีกฎที่ได้รับการฝึกอบรมไว้ล่วงหน้า ซึ่งหมายความว่าเหมาะสมกว่า KNN สำหรับงานคาดการณ์แบบเรียลไทม์และการจัดการชุดข้อมูลขนาดใหญ่
การถดถอยโลจิสติก
การถดถอยโลจิสติกถือว่าข้อมูลมีการกระจายเชิงเส้นและจัดประเภทข้อมูลโดยใช้เส้นตรงหรือไฮเปอร์เพลน (ขอบเขตที่แยกจุดข้อมูลในพื้นที่มิติที่สูงกว่า) เพื่อแยกข้อมูลออกเป็นหมวดหมู่ ในทางกลับกัน KNN ไม่ถือว่ามีการกระจายข้อมูลแบบใดแบบหนึ่ง ด้วยเหตุนี้ KNN จึงสามารถปรับให้เข้ากับข้อมูลที่ซับซ้อนหรือไม่เป็นเชิงเส้นได้ง่ายขึ้น ในขณะที่การถดถอยโลจิสติกเหมาะที่สุดกับข้อมูลเชิงเส้น
รองรับเครื่องเวกเตอร์
แทนที่จะดูระยะทางระหว่างจุดต่างๆ เช่น KNN เครื่องสนับสนุนเวกเตอร์ (SVM) มุ่งเน้นไปที่การสร้างเส้นแบ่งที่ชัดเจนระหว่างกลุ่มจุดข้อมูล โดยมักมีเป้าหมายเพื่อทำให้ช่องว่างระหว่างจุดเหล่านั้นกว้างที่สุดเท่าที่จะเป็นไปได้ SVM ยอดเยี่ยมในการจัดการชุดข้อมูลที่ซับซ้อนพร้อมฟีเจอร์มากมาย หรือเมื่อจำเป็นต้องแยกกลุ่มจุดข้อมูลอย่างชัดเจน ในการเปรียบเทียบ KNN นั้นใช้และเข้าใจง่ายกว่า แต่ทำงานได้ไม่ดีกับชุดข้อมูลขนาดใหญ่
KNN ถูกนำมาใช้ในการเรียนรู้ของเครื่องอย่างไร
อัลกอริธึม ML จำนวนมากสามารถจัดการงานได้เพียงประเภทเดียวเท่านั้น KNN โดดเด่นด้วยความสามารถในการจัดการกับกรณีการใช้งานทั่วไปไม่ใช่เพียงกรณีเดียว แต่มีสองกรณี: การจำแนกประเภทและการถดถอย
การจำแนกประเภท
KNN จำแนกจุดข้อมูลโดยใช้การวัดระยะทางเพื่อกำหนดเพื่อนบ้านที่ใกล้ที่สุด k และกำหนดป้ายกำกับให้กับจุดข้อมูลใหม่ตามป้ายกำกับของเพื่อนบ้าน กรณีการใช้งานการจัดหมวดหมู่ KNN ทั่วไป ได้แก่ การจัดประเภทสแปมอีเมล การจัดกลุ่มลูกค้าเป็นหมวดหมู่ตามประวัติการซื้อ และการจดจำหมายเลขที่เขียนด้วยลายมือ
การถดถอย
KNN ดำเนินการถดถอยโดยการประมาณค่าของจุดข้อมูลตามค่าเฉลี่ย (หรือค่าเฉลี่ยถ่วงน้ำหนัก) ของเพื่อนบ้านที่ใกล้ที่สุด k ตัวอย่างเช่น KNN สามารถคาดการณ์ราคาบ้านตามคุณสมบัติที่คล้ายกันในบริเวณใกล้เคียง ราคาหุ้นตามข้อมูลในอดีตของหุ้นที่คล้ายกัน หรืออุณหภูมิตามข้อมูลสภาพอากาศในอดีตในสถานที่ที่คล้ายกัน
การประยุกต์ใช้อัลกอริทึม KNN ใน ML
เนื่องจากความเรียบง่ายและความสามารถในการดำเนินการทั้งการจำแนกประเภทและการถดถอย KNN จึงมีการใช้งานที่หลากหลาย ซึ่งรวมถึงการจดจำรูปภาพ ระบบการแนะนำ และการจัดหมวดหมู่ข้อความ
การจดจำภาพ
การจดจำรูปภาพเป็นหนึ่งในแอปพลิเคชันทั่วไปของ KNN เนื่องจากความสามารถในการจำแนกประเภท KNN ดำเนินการจดจำรูปภาพโดยการเปรียบเทียบคุณลักษณะในภาพที่ไม่รู้จัก เช่น สีและรูปร่าง กับคุณลักษณะในชุดข้อมูลรูปภาพที่มีป้ายกำกับ สิ่งนี้ทำให้ KNN มีประโยชน์ในด้านต่างๆ เช่น คอมพิวเตอร์วิทัศน์
ระบบแนะนำ
KNN สามารถแนะนำผลิตภัณฑ์หรือเนื้อหาให้กับผู้ใช้โดยการเปรียบเทียบข้อมูลการตั้งค่ากับข้อมูลของผู้ใช้ที่คล้ายคลึงกัน ตัวอย่างเช่น หากผู้ใช้ฟังเพลงแจ๊สคลาสสิกหลายเพลง KNN จะสามารถค้นหาผู้ใช้ที่มีความชื่นชอบคล้ายกันและแนะนำเพลงที่ผู้ใช้เหล่านั้นชอบได้ ด้วยเหตุนี้ KNN จึงสามารถช่วยปรับแต่งประสบการณ์ผู้ใช้ด้วยการแนะนำผลิตภัณฑ์หรือเนื้อหาตามข้อมูลที่คล้ายคลึงกัน
การจำแนกข้อความ
การจัดหมวดหมู่ข้อความพยายามจัดประเภทข้อความที่ไม่มีการจัดหมวดหมู่โดยพิจารณาจากความคล้ายคลึงกับข้อความที่จัดหมวดหมู่ไว้ล่วงหน้า ความสามารถของ KNN ในการประเมินความใกล้เคียงของรูปแบบคำทำให้ KNN เป็นเครื่องมือที่มีประสิทธิภาพสำหรับกรณีการใช้งานนี้ การจัดหมวดหมู่ข้อความมีประโยชน์อย่างยิ่งสำหรับงานต่างๆ เช่น การวิเคราะห์ความรู้สึก โดยที่ข้อความจะถูกจัดประเภทเป็นเชิงบวก ลบ หรือเป็นกลาง หรือกำหนดหมวดหมู่ของบทความข่าว
ข้อดีของอัลกอริทึม KNN ใน ML
KNN มีข้อดีที่โดดเด่นหลายประการ รวมถึงความเรียบง่าย ความสามารถรอบด้าน และการขาดขั้นตอนการฝึกอบรม
ความเรียบง่าย
เมื่อเปรียบเทียบกับอัลกอริธึม ML อื่นๆ KNN เข้าใจและใช้งานได้ง่าย ตรรกะเบื้องหลัง KNN นั้นใช้งานง่าย โดยจะจัดประเภทหรือคาดการณ์ (การถดถอย) จุดข้อมูลใหม่ตามค่าของจุดข้อมูลใกล้เคียง ทำให้เป็นตัวเลือกยอดนิยมสำหรับผู้ปฏิบัติงาน ML โดยเฉพาะผู้เริ่มต้น นอกจากนี้ นอกเหนือจากการเลือกค่าสำหรับ k แล้ว จำเป็นต้องมีการปรับแต่งไฮเปอร์พารามิเตอร์ขั้นต่ำเพื่อใช้ KNN
ความเก่งกาจ
KNN สามารถใช้สำหรับงานจำแนกประเภทและงานการถดถอย ซึ่งหมายความว่าสามารถนำไปใช้กับปัญหาและประเภทของข้อมูลได้หลากหลาย ตั้งแต่การจดจำภาพไปจนถึงการทำนายค่าตัวเลข ต่างจากอัลกอริธึมพิเศษที่จำกัดอยู่ที่งานประเภทเดียว KNN สามารถนำไปใช้กับชุดข้อมูลที่มีป้ายกำกับที่มีโครงสร้างอย่างเหมาะสม
ขั้นตอนการฝึกอบรมที่ชัดเจน
โมเดล ML จำนวนมากต้องใช้เวลาและขั้นตอนการฝึกอบรมที่ต้องใช้ทรัพยากรมากก่อนที่จะมีประโยชน์ ในทางกลับกัน KNN เพียงจัดเก็บข้อมูลการฝึกอบรมและนำไปใช้โดยตรงในเวลาคาดการณ์ ด้วยเหตุนี้ KNN จึงสามารถอัปเดตด้วยข้อมูลใหม่ ซึ่งพร้อมใช้ในการทำนายได้ทันที สิ่งนี้ทำให้ KNN น่าสนใจเป็นพิเศษสำหรับชุดข้อมูลขนาดเล็ก
ข้อเสียของอัลกอริทึม KNN ใน ML
แม้จะมีจุดแข็ง แต่ KNN ก็มาพร้อมกับความท้าทายหลายประการ ซึ่งรวมถึงต้นทุนการประมวลผลและหน่วยความจำที่สูง ความไวต่อสัญญาณรบกวนและคุณสมบัติที่ไม่เกี่ยวข้อง และ "คำสาปแห่งมิติ"
ต้นทุนการคำนวณของการทำนาย
เนื่องจาก KNN คำนวณระยะห่างระหว่างจุดข้อมูลใหม่กับทุกจุดข้อมูลในชุดข้อมูลการฝึกโดยรวมทุกครั้งที่ทำการคาดการณ์ ค่าใช้จ่ายในการคาดการณ์จึงเพิ่มขึ้นอย่างรวดเร็วเมื่อชุดข้อมูลเติบโตขึ้น ซึ่งอาจส่งผลให้คาดการณ์ได้ช้าเมื่อชุดข้อมูลมีขนาดใหญ่ หรือ KNN ทำงานบนฮาร์ดแวร์ไม่เพียงพอ
คำสาปแห่งมิติ
KNN ทนทุกข์ทรมานจากสิ่งที่เรียกว่า "คำสาปแห่งมิติ" ซึ่งจำกัดความสามารถในการจัดการข้อมูลที่มีมิติสูง เมื่อจำนวนคุณลักษณะในชุดข้อมูลเพิ่มขึ้น จุดข้อมูลส่วนใหญ่จะกระจัดกระจายและอยู่ห่างจากกันเกือบเท่ากัน ด้วยเหตุนี้ การวัดระยะทางจึงมีประโยชน์น้อยลง ซึ่งทำให้ KNN ค้นหาเพื่อนบ้านในชุดข้อมูลมิติสูงที่อยู่ใกล้เคียงได้ยาก
หน่วยความจำเข้มข้น
คุณลักษณะเฉพาะของ KNN คือจะจัดเก็บชุดข้อมูลการฝึกอบรมทั้งหมดไว้ในหน่วยความจำเพื่อใช้ในเวลาคาดการณ์ เมื่อต้องจัดการกับหน่วยความจำที่จำกัดหรือชุดข้อมูลขนาดใหญ่ สิ่งนี้อาจเป็นปัญหาและปฏิบัติไม่ได้ อัลกอริธึม ML อื่นๆ หลีกเลี่ยงความท้าทายนี้โดยการย่อและกลั่นกรองข้อมูลการฝึกลงในคุณสมบัติที่เรียนรู้ผ่านการฝึกโมเดลและการปรับพารามิเตอร์ให้เหมาะสม ในทางกลับกัน KNN จะต้องรักษาจุดข้อมูลทุกจุด ซึ่งหมายความว่าหน่วยความจำจะเพิ่มขึ้นเป็นเส้นตรงตามขนาดชุดข้อมูลการฝึกอบรม
ความไวต่อเสียงรบกวนและคุณสมบัติที่ไม่เกี่ยวข้อง
พลังของ KNN อยู่ที่การคำนวณระยะทางที่เรียบง่ายและใช้งานง่าย อย่างไรก็ตาม นอกจากนี้ยังหมายความว่าคุณลักษณะหรือสัญญาณรบกวนที่ไม่สำคัญอาจทำให้เกิดการคำนวณระยะทางที่ทำให้เข้าใจผิด ซึ่งส่งผลเสียต่อความแม่นยำในการทำนาย ด้วยเหตุนี้ การเลือกคุณลักษณะหรือเทคนิคการลดขนาด เช่น การวิเคราะห์องค์ประกอบหลัก (PCA) จึงมักถูกนำมาใช้กับ KNN เพื่อให้แน่ใจว่าคุณลักษณะที่สำคัญมีอิทธิพลมากที่สุดต่อการทำนาย