K-Nearest Neighbors Algorithm ใน R [สุดยอดคู่มือพร้อมตัวอย่าง]
เผยแพร่แล้ว: 2020-03-20อัลกอริทึม KNN ใน R ค่อนข้างเป็นที่นิยมเนื่องจากมีความเก่งกาจและฟังก์ชันการทำงาน ดังนั้น คุณคงเคยได้ยินชื่อของมันมาบ้างแล้ว และหากคุณกำลังศึกษาแมชชีนเลิร์นนิง และคุณต้องสงสัยว่า "KNN ใน R คืออะไร" หรือ “มันทำงานอย่างไร?”
ในบทความนี้ เราจะพบคำตอบสำหรับคำถามเหล่านี้และช่วยให้คุณเข้าใจหัวข้อนี้อย่างถี่ถ้วน เพื่อไม่ให้เป็นการเสียเวลา เรามาดำดิ่งกัน
สารบัญ
อัลกอริทึม KNN คืออะไร?
KNN ย่อมาจาก K Nearest Neighbor เป็นอัลกอริธึมการเรียนรู้ของเครื่องภายใต้การดูแลที่จัดประเภทจุดข้อมูลออกเป็นคลาสเป้าหมายตามคุณสมบัติของจุดข้อมูลที่อยู่ติดกันของจุด
สมมติว่าคุณต้องการให้เครื่องของคุณระบุภาพของแอปเปิ้ลและส้มและแยกความแตกต่างระหว่างภาพเหล่านั้น ในการทำเช่นนั้น คุณจะต้องป้อนชุดข้อมูลของภาพแอปเปิ้ลและสีส้ม จากนั้น คุณจะต้องฝึกโมเดลข้อมูลของคุณโดยปล่อยให้มันตรวจจับผลไม้แต่ละชนิดผ่านคุณสมบัติเฉพาะของพวกมัน เช่น มันสามารถจดจำแอปเปิ้ลผ่านสีแดง และสีส้มผ่านสีของมัน
หลังจากที่คุณได้ฝึกโมเดลข้อมูลของคุณแล้ว คุณสามารถทดสอบโดยให้ชุดข้อมูลใหม่กับรูปภาพอื่นๆ ของแอปเปิลและส้ม ตอนนี้ อัลกอริทึมของ KNN จะแยกแอปเปิ้ลและส้มผ่านการแบ่งประเภทตามคุณลักษณะที่พบในแบบจำลองการฝึก
มันจะเปรียบเทียบคุณสมบัติของจุดข้อมูลกับจุดข้อมูลที่อยู่ใกล้เคียงเพื่อดูว่ามีความคล้ายคลึงกันอย่างไร และจะจำแนกตามการค้นพบเหล่านั้น

ในหลายกรณี คุณจะต้องพล็อตจุดบนกราฟ และในการคำนวณระยะห่างระหว่างจุดสองจุด คุณจะต้องใช้สูตรต่างๆ วิธีที่ใช้กันทั่วไปในการคำนวณระยะห่างระหว่างจุดข้อมูลสองจุดคือระยะทางแบบยุคลิด จะคำนวณระยะทางโดยไม่คำนึงถึงคุณสมบัติหรือคุณลักษณะที่มีอยู่ในจุด
คุณสมบัติของอัลกอริทึม KNN
ต่อไปนี้เป็นคุณสมบัติของ KNN Algorithm ใน R:
- เป็นอัลกอริธึมการเรียนรู้ภายใต้การดูแล ซึ่งหมายความว่าใช้ข้อมูลอินพุตที่มีป้ายกำกับเพื่อคาดการณ์เกี่ยวกับผลลัพธ์ของข้อมูล
- มันเป็นอัลกอริธึมการเรียนรู้ของเครื่องที่ตรงไปตรงมา
- คุณสามารถใช้อัลกอริทึม KNN สำหรับปัญหาหลายประเภทได้
- เป็นแบบจำลองที่ไม่มีพารามิเตอร์ ซึ่งหมายความว่าไม่ได้ตั้งสมมติฐานใดๆ เกี่ยวกับข้อมูล ซึ่งทำให้ค่อนข้างมีประโยชน์ในการแก้ปัญหาที่เกี่ยวข้องกับข้อมูลจริง
- จำแนกข้อมูลโดยการเปรียบเทียบจุดข้อมูลกับจุดข้อมูลที่อยู่ใกล้เคียง พูดง่ายๆ ก็คือ การทำงานของอัลกอริทึม KNN นั้นขึ้นอยู่กับความคล้ายคลึงกันของแอตทริบิวต์
- มันอยู่ในหมวดหมู่ของอัลกอริทึมที่ขี้เกียจ อัลกอริธึมที่ขี้เกียจจะจดจำข้อมูลการฝึกอบรมแทนการเรียนรู้ฟังก์ชันการเลือกปฏิบัติจากสิ่งเดียวกัน เรียนรู้เพิ่มเติมเกี่ยวกับประเภทของอัลกอริธึมการเรียนรู้ของเครื่อง
- คุณสามารถใช้ KNN เพื่อแก้ปัญหาการถดถอยและการจัดหมวดหมู่ได้
อัลกอริธึม KNN เป็นกลาง และเนื่องจากคุณลักษณะที่เรากล่าวถึงข้างต้น จึงเป็นตัวเลือกที่ต้องการสำหรับปัญหามากมาย อย่างไรก็ตาม ทุกอย่างมีปัญหา และ KNN ก็ไม่ใช่ข้อยกเว้น
อัลกอริทึมนี้ไม่มีประโยชน์สำหรับการแก้ปัญหาที่ซับซ้อนเกินไป โมเดลของมันไม่มีกระบวนการที่เป็นนามธรรมเช่นกัน สำหรับโมเดลที่เพียงพอ คุณจะต้องใช้ข้อมูลคุณภาพสูงเพราะบางครั้งอาจพลาดข้อมูลเชิงลึกอันมีค่าเนื่องจากเป็นอัลกอริธึมที่ขี้เกียจ รวดเร็ว แต่คุณจะต้องใช้เวลาในการล้างข้อมูลเป็นจำนวนมาก
มันทำงานอย่างไร?
เพื่อให้เข้าใจว่า KNN ใน R ทำงานอย่างไร เราจะมาดูตัวอย่างอื่น
สมมติว่าชุดข้อมูลของคุณมีสองคลาส คลาส 1 มีสี่เหลี่ยม ในขณะที่คลาส 2 มีวงกลม คุณต้องกำหนดจุดข้อมูลใหม่ที่คุณป้อนให้กับหนึ่งในสองคลาสโดยใช้อัลกอริทึมนี้ ในการทำเช่นนี้ คุณจะต้องกำหนดค่าของ 'K' สำหรับอัลกอริทึมของคุณก่อน K หมายถึงจำนวนจุดเพื่อนบ้านที่ใกล้ที่สุดที่อัลกอริทึมจะพิจารณา
พิจารณาว่าคุณป้อน K เป็น 4 ในตัวอย่างนี้ และสำหรับ K = 4 เพื่อนบ้านคือวงกลมสามวงและสี่เหลี่ยมหนึ่งรูป ในกรณีนี้ คุณจะจัดประเภทจุดข้อมูลในคลาส 2 เนื่องจากจำนวนวงกลมรอบจุดนั้นสูงกว่าสี่เหลี่ยม
ถ้าเพื่อนบ้านเป็นสี่เหลี่ยมสามรูปและวงกลมหนึ่งวง ถือว่าคุณจัดอยู่ในประเภทที่ 1 เราได้คุยกันไปแล้วว่าอัลกอริทึมของ KNN คำนวณระยะห่างระหว่างจุดสองจุดเพื่อระบุว่าใครคือเพื่อนบ้านที่ใกล้ที่สุด ใช้ สูตร ระยะทางแบบยุคลิด เพื่อการนี้

สูตรสำหรับระยะทางแบบยุคลิดมีดังนี้:
d(p,q) = d(q,p) = ( q 1 – p 1 ) 2 +( q 2 – p 2 ) 2 … ( q n – p n ) 2
ที่นี่ p = (p1, p2, p3, …. pn) และ q = (q1, q2, q3, … qn) ในสมการนี้ 'd' หมายถึงระยะห่างแบบยุคลิดระหว่างจุด p และ q
อย่างที่คุณเห็น มันค่อนข้างง่าย และความเรียบง่ายทำให้ใช้งานได้หลากหลาย เนื่องจากเป็นอัลกอริธึมที่ได้รับความนิยมมากที่สุดแห่งหนึ่ง คุณสามารถใช้สำหรับปัญหาต่างๆ
ตัวอย่าง KNN ใน R
คุณอาจสงสัยว่าเราจะเห็นแอปพลิเคชันของอัลกอริทึม KNN ในชีวิตจริงได้ที่ไหน เพื่อที่คุณจะต้องดูที่อเมซอน
ความสำเร็จที่ยิ่งใหญ่ของ Amazon นั้นขึ้นอยู่กับหลายปัจจัย แต่สิ่งหนึ่งที่โดดเด่นในหมู่พวกเขาคือการใช้เทคโนโลยีขั้นสูง หนึ่งในเทคโนโลยีเหล่านั้นคือการเรียนรู้ของเครื่อง ระบบ การ แนะนำของพวกเขาช่วยให้พวกเขา สร้างรายได้หลายร้อยล้าน และระบบการแนะนำนี้ใช้อัลกอริทึม KNN เพื่อจุดประสงค์นี้
อ่านเพิ่มเติม: แนวคิดโครงการการเรียนรู้ของเครื่อง

สมมติว่าคุณซื้อกางเกงยีนส์ Wrangler's สีดำพร้อมแจ็กเก็ตหนังใน Amazon ไม่กี่สัปดาห์ต่อมา อีกคนซื้อกางเกงยีนส์ตัวเดียวกันจาก Amazon แต่ไม่ซื้อแจ็กเก็ตหนังตัวนั้น อเมซอนจะแนะนำให้คนนี้ซื้อแจ็คเก็ตเพราะเขาแสดงรูปแบบการซื้อที่คล้ายกับของคุณ
ดังนั้น ระบบการแนะนำของ Amazon จึงทำงานโดยพิจารณาจากรูปแบบการซื้อของผู้คน และเพื่อให้เข้าใจถึงความคล้ายคลึงนี้ คุณสามารถใช้อัลกอริทึม KNN ตามหลักการนี้ได้ ตอนนี้คุณรู้พื้นฐานของอัลกอริทึมนี้แล้ว เช่นเดียวกับแอปพลิเคชันในโลกแห่งความเป็นจริง มีตัวอย่างการใช้งานอื่นๆ อีกมากมาย แต่สำหรับตอนนี้ มาดูตัวอย่างนี้กัน
เรียนรู้ หลักสูตรวิทยาศาสตร์ข้อมูล จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
สรุปความคิด
อัลกอริทึม KNN ใน R มีประโยชน์หลายอย่าง และหลังจากอ่านบทความนี้แล้ว เรามั่นใจว่าคุณคงคุ้นเคยกับอัลกอริทึมนี้แล้ว หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับอัลกอริธึมการเรียนรู้ของเครื่อง คุณควรดูรายละเอียด หลักสูตรการเรียนรู้ ของ เครื่อง
คุณจะได้เรียนรู้มากมายเกี่ยวกับแมชชีนเลิร์นนิงและอัลกอริธึมต่างๆ ที่ใช้ในการเรียนรู้ นอกเหนือจากแง่มุมอื่นๆ
ภาษาโปรแกรม R ใช้สำหรับอะไร?
ภาษาโปรแกรม R ถูกสร้างขึ้นสำหรับการคำนวณที่เกี่ยวข้องกับสถิติและการแสดงข้อมูล ปัจจุบัน R ถูกใช้อย่างกว้างขวางโดยนักสถิติ นักวิทยาศาสตร์ข้อมูล นักวิเคราะห์ข้อมูล และธุรกิจ แกนหลักของ R มาพร้อมกับฟังก์ชันทางสถิติมากมายในตัว ดังนั้นไลบรารีของบุคคลที่สามจึงไม่จำเป็นสำหรับการวิเคราะห์ข้อมูลหลักส่วนใหญ่ที่ R สามารถทำได้ ไม่เหมือนกับภาษาโปรแกรมคอมพิวเตอร์อื่นๆ R ไม่ใช่ภาษาเอนกประสงค์ ดังนั้นจึงใช้เป็นหลักเพื่อให้ได้ฟังก์ชันเฉพาะที่ทำได้ดีเป็นพิเศษ อย่างไรก็ตาม R ถูกใช้อย่างกว้างขวางในธุรกิจต่างๆ ในทุกอุตสาหกรรมเพื่อดึงข้อมูลเชิงลึกที่เป็นประโยชน์จากข้อมูลรายวันปริมาณมหาศาลที่สร้างโดยผู้ใช้
ข้อดีของการเขียนโปรแกรมด้วย R คืออะไร?
ภาษาการเขียนโปรแกรม R มีข้อดีหลายประการสำหรับโปรแกรมเมอร์มือใหม่และผู้เชี่ยวชาญ ประโยชน์หลัก ได้แก่ คุณลักษณะและความสะดวกในการสร้างแบบจำลองทางสถิติและการคำนวณ ถัดมา R คือภาษาโปรแกรมโอเพ่นซอร์สที่รองรับการคำนวณแบบกระจายขนาน ทุกคนสามารถใช้งานได้โดยไม่ต้องซื้อใบอนุญาตหรือค่าธรรมเนียมการใช้งาน นอกจากนี้ยังมาพร้อมกับไลบรารีขนาดใหญ่เพื่อรองรับฟังก์ชันการทำงานต่างๆ และเฟรมเวิร์กที่ไม่ขึ้นกับแพลตฟอร์มยังช่วยเพิ่มความสะดวกอีกด้วย R ยังสามารถใช้สำหรับการล้างข้อมูลอย่างมีประสิทธิภาพ การขูดเว็บ และฟังก์ชันการโต้แย้งข้อมูล และนิยมใช้ในการพัฒนาโมเดลการเรียนรู้ของเครื่อง
ทำไม KNN จึงเรียกว่า Lazy Learner Algorithm?
K-Nearest Neighbors Algorithm เป็นหนึ่งในอัลกอริธึมที่ง่ายที่สุดที่ใช้ในการเรียนรู้ของเครื่อง อย่างไรก็ตามมักถูกเรียกว่าขี้เกียจเรียน เหตุผลก็คือเมื่อคุณให้ข้อมูลที่เกี่ยวข้องกับการฝึกทั้งหมดกับอัลกอริธึมนี้ การฝึกตัวเองไม่ได้ผล แทนที่จะเรียนรู้ฟังก์ชันการเลือกปฏิบัติ จะจดจำชุดข้อมูลการฝึกอบรมทั้งหมด ทุกครั้งที่เพิ่มจุดข้อมูลใหม่ อัลกอริธึมนี้จะค้นหาเพื่อนบ้านที่ใกล้ที่สุดในชุดการฝึกทั้งหมด ซึ่งเพิ่มเวลาที่ใช้ในการคาดการณ์อย่างสม่ำเสมอ ซึ่งมักจะทำให้การคำนวณมีราคาแพงและใช้เวลานานมาก