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 เป็นหนึ่งในอัลกอริธึมที่ง่ายที่สุดที่ใช้ในการเรียนรู้ของเครื่อง อย่างไรก็ตามมักถูกเรียกว่าขี้เกียจเรียน เหตุผลก็คือเมื่อคุณให้ข้อมูลที่เกี่ยวข้องกับการฝึกทั้งหมดกับอัลกอริธึมนี้ การฝึกตัวเองไม่ได้ผล แทนที่จะเรียนรู้ฟังก์ชันการเลือกปฏิบัติ จะจดจำชุดข้อมูลการฝึกอบรมทั้งหมด ทุกครั้งที่เพิ่มจุดข้อมูลใหม่ อัลกอริธึมนี้จะค้นหาเพื่อนบ้านที่ใกล้ที่สุดในชุดการฝึกทั้งหมด ซึ่งเพิ่มเวลาที่ใช้ในการคาดการณ์อย่างสม่ำเสมอ ซึ่งมักจะทำให้การคำนวณมีราคาแพงและใช้เวลานานมาก